Spaces:
Running
Running
| (function () { | |
| var BASE_URL = 'https://a11oy.szl-holdings.com'; | |
| class A11oySpace extends HTMLElement { | |
| constructor() { | |
| super(); | |
| this._iframe = null; | |
| this._connected = false; | |
| } | |
| connectedCallback() { | |
| var space = this.getAttribute('space') || ''; | |
| var tenant = this.getAttribute('tenant') || 'szl'; | |
| var height = this.getAttribute('height') || '400'; | |
| var iframe = document.createElement('iframe'); | |
| iframe.src = BASE_URL + '/a11oy/embed/' + encodeURIComponent(space) + '?tenant=' + encodeURIComponent(tenant); | |
| iframe.width = '100%'; | |
| iframe.height = height; | |
| iframe.frameBorder = '0'; | |
| iframe.allow = 'clipboard-read; clipboard-write'; | |
| iframe.style.border = 'none'; | |
| iframe.style.borderRadius = '10px'; | |
| iframe.title = 'A11oy Atelier Space: ' + space; | |
| this._iframe = iframe; | |
| this.appendChild(iframe); | |
| var self = this; | |
| iframe.addEventListener('load', function () { | |
| iframe.contentWindow.postMessage( | |
| { type: 'a11oy-space-handshake', spaceSlug: space }, | |
| BASE_URL | |
| ); | |
| }); | |
| window.addEventListener('message', function handler(e) { | |
| if (e.origin !== BASE_URL) return; | |
| if (e.data && e.data.type === 'a11oy-space-ack' && e.data.spaceSlug === space) { | |
| self._connected = true; | |
| self.dispatchEvent(new CustomEvent('a11oy-ready', { detail: e.data })); | |
| } | |
| if (e.data && e.data.type === 'a11oy-space-line') { | |
| self.dispatchEvent(new CustomEvent('a11oy-line', { detail: e.data })); | |
| } | |
| if (e.data && e.data.type === 'a11oy-space-done') { | |
| self.dispatchEvent(new CustomEvent('a11oy-done', { detail: e.data })); | |
| } | |
| }); | |
| } | |
| run() { | |
| if (this._iframe && this._iframe.contentWindow) { | |
| var space = this.getAttribute('space') || ''; | |
| this._iframe.contentWindow.postMessage( | |
| { type: 'a11oy-space-run', spaceSlug: space }, | |
| BASE_URL | |
| ); | |
| } | |
| } | |
| disconnectedCallback() { | |
| if (this._iframe) { | |
| this.removeChild(this._iframe); | |
| this._iframe = null; | |
| } | |
| } | |
| } | |
| if (!customElements.get('a11oy-space')) { | |
| customElements.define('a11oy-space', A11oySpace); | |
| } | |
| })(); | |