/*
* decaffeinate suggestions:
* DS002: Fix invalid constructor
* DS101: Remove unnecessary use of Array.from
* DS102: Remove unnecessary code created because of implicit returns
* DS206: Consider reworking classes to avoid initClass
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
*/
//= require views/pages/base
const Cls = (app.views.JqueryPage = class JqueryPage extends app.views.BasePage {
constructor(...args) {
this.onIframeLoaded = this.onIframeLoaded.bind(this);
super(...args);
}
static initClass() {
this.demoClassName = '_jquery-demo';
}
afterRender() {
// Prevent jQuery Mobile's demo iframes from scrolling the page
for (var iframe of Array.from(this.findAllByTag('iframe'))) {
iframe.style.display = 'none';
$.on(iframe, 'load', this.onIframeLoaded);
}
return this.runExamples();
}
onIframeLoaded(event) {
event.target.style.display = '';
$.off(event.target, 'load', this.onIframeLoaded);
}
runExamples() {
for (var el of Array.from(this.findAllByClass('entry-example'))) {
try { this.runExample(el); } catch (error) {}
}
}
runExample(el) {
let iframe;
const source = el.getElementsByClassName('syntaxhighlighter')[0];
if (!source || (source.innerHTML.indexOf('!doctype') === -1)) { return; }
if (!(iframe = el.getElementsByClassName(this.constructor.demoClassName)[0])) {
iframe = document.createElement('iframe');
iframe.className = this.constructor.demoClassName;
iframe.width = '100%';
iframe.height = 200;
el.appendChild(iframe);
}
const doc = iframe.contentDocument;
doc.write(this.fixIframeSource(source.textContent));
doc.close();
}
fixIframeSource(source) {
source = source.replace('"/resources/', '"https://api.jquery.com/resources/'); // attr(), keydown()
source = source.replace('', `\
\
`
);
return source.replace(/