Contenido
Desdémona, un cadáver exquisito
// ------------------------------------------------------------------------------------------------------------------------------- // PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes if(figureEl.nodeType !== 1) { continue; }
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute('data-size').split('x');
// create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) };
if(figureEl.children.length > 1) {
//
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute('src');
}
item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); }
return items; };
// find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); };
// triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); });
if(!clickedListItem) { return; }
// find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; };
// parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {};
if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; }
};
// PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function initPhotoSwipeFromDOM('.my-gallery'); // ====================================== // FIN SCRIPTS PHOTOSWIPE // ======================================
¿Qué pudo haber sucedido?, se preguntan los miembros de El coro de los otros, colectivo que acepta el reto de Teatro UNAM para iniciar el proyecto de Residencia expuesta. En éste tenemos la posibilidad de disfrutar del proceso de creación de una obra a partir de la libertad en la escritura, el cadáver exquisito de los surrealistas como dinámica básica en la elaboración del texto y las imágenes.
https://www.proceso.com.mx/653990/teatro-forum-contra-la-violencia-hacia-las-mujeres
Han hecho ya tres ejercicios y un par de ensayos abiertos al público. En el primero vertieron los textos y trabajaron el movimiento Patricia Yáñez (Desdémona) y Antonio Becerril (Otelo). La cotidianidad y la intimidad de una casa queda a vistas y desde ahí recrean lo poético de los textos con movimientos inmediatos o dancísticos. Son varios espacios, diferente iluminación y una búsqueda de trascender lo mundano. La multimedia de Miriam Romero colabora en esta imaginación colectiva, duplicando imágenes, creando espejos o insertando transiciones de mar de sangre. Erika Gómez, responsable del arte y diseño, da al espacio esa idea de irrealidad, un baño con luz verde, un pasillo iluminado o una serie de focos debajo de un sillón.
Los actores son sus propios directores y se sumergen en lo creado previamente en los cadáveres exquisitos, para amalgamar un primer acercamiento a lo que será el final de la aventura. En este primer ensayo, integran la escritura automática y las preguntas de investigación escénica con las que partieron. Colaboradores invitados y en algún momento el público dan forma a lo vertido por ellos. Aceptan y exploran la alternativa virtual, pero no desisten de la idea de que, en algún momento, esta propuesta escénica podrá existir en la comparecencia con los otros.
https://www.proceso.com.mx/649454/opinion-analisis-cultura-teatro-estela-lenero-franco-cuttin-it-sobre-la-mutilacion-genital-femenina
Es fabuloso ver estos procesos de creación, con la confabulación sonora de Juan Pablo Villa que impregna de atmósferas concretas y abstractas el momento de la elaboración del texto, y por el hecho de ser testigos de esa asociación de ideas desarrolladas lúdicamente por los actores y los invitados, a través de una pantalla compartida y un tiempo determinado.
El proceso de “Arquitectura del cadáver” es como un juego en el que se tienen reglas específicas que pareciera que limitan, pero que en realidad proporcionan una gran libertad de creación y de sentido.
Es un proyecto para dejar al desnudo el proceso a través de bitácoras, ensayos y finalmente funciones. Todo en la plataforma de teatrounam.
Desdémona frente al cadáver sorprende por su riqueza y se aprecia como un proceso que no termina, que continuará, semana a semana, con ensayos al público hasta llegar al estreno el 23 de octubre. El final es incierto, pero lo más cierto es el camino que El coro de los otros recorre con ese rigor creativo y esa imaginación en movimiento que los espectadores podemos disfrutar.
https://www.proceso.com.mx/648348/tuvimos-un-cuerpo-obra-de-stefanie-izquierdo
Comentarios
// Obtener todos los elementos con clase .col-md-12 var colElements = document.querySelectorAll('.col-md-12');
// Iterar sobre cada elemento colElements.forEach(function(element) { // Verificar si tiene un hijo inmediato con clase .titulo-region var tituloRegion = element.querySelector('.titulo-region');
if (tituloRegion) { // Agregar la clase .is-sticky al elemento padre element.classList.add('is-sticky'); } });
// Obtener el elemento article dentro de .fila-especial-v2 .p50 var articleElement = document.querySelector('.home .fila-especial-v2 .p50 article');
// Obtener el texto del elemento .z-foto .bajada p var bajadaText = articleElement.querySelector('.z-foto .bajada p').textContent;
// Crear un nuevo elemento para mostrar el texto obtenido var textoElement = document.createElement('p'); textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article var tituloElement = articleElement.querySelector('.z-txt .titulo');
// Insertar el nuevo elemento al final del article articleElement.appendChild(textoElement);
Cortesía de Proceso.
Dejanos un comentario: