DuyTa's picture
Upload folder using huggingface_hub
bc20498 verified
raw
history blame
3.75 kB
'use strict';
const stickyModule = (m => /* c8 ignore start */ m.__esModule ? m.default : m /* c8 ignore stop */)(require('sticky-module'));
const { $$ } = require('basic-devtools');
const { handle } = require('./script-handler.js');
const { assign } = require('./utils.js');
const { selectors, prefixes } = require('./interpreters.js');
const { CUSTOM_SELECTORS, handleCustomType } = require('./custom.js');
const { listener, addAllListeners } = require('./listeners.js');
const { customObserver: $customObserver, define: $define, whenDefined: $whenDefined } = require('./custom.js');
const { env: $env } = require('./listeners.js');
const { Hook: $Hook, XWorker: $XWorker } = require('./xworker.js');
// avoid multiple initialization of the same library
const [
{
customObserver,
define,
whenDefined,
env,
Hook,
XWorker
},
alreadyLive
] = stickyModule(
'polyscript',
{
customObserver: $customObserver,
define: $define,
whenDefined: $whenDefined,
env: $env,
Hook: $Hook,
XWorker: $XWorker
}
);
exports.customObserver = customObserver;
exports.define = define;
exports.whenDefined = whenDefined;
exports.env = env;
exports.Hook = Hook;
exports.XWorker = XWorker;
(m => Object.keys(m).map(k => k !== 'default' && (exports[k] = m[k])))
(require('./errors.js'));
if (!alreadyLive) {
const mo = new MutationObserver((records) => {
const selector = selectors.join(',');
for (const { type, target, attributeName, addedNodes } of records) {
// attributes are tested via integration / e2e
/* c8 ignore start */
if (type === 'attributes') {
const i = attributeName.lastIndexOf('-') + 1;
if (i) {
const prefix = attributeName.slice(0, i);
for (const p of prefixes) {
if (prefix === p) {
const type = attributeName.slice(i);
if (type !== 'env') {
const method = target.hasAttribute(attributeName)
? 'add'
: 'remove';
target[`${method}EventListener`](type, listener);
}
break;
}
}
}
continue;
}
for (const node of addedNodes) {
if (node.nodeType === 1) {
addAllListeners(node);
if (selector && node.matches(selector)) handle(node);
else bootstrap(selector, node, true);
}
}
/* c8 ignore stop */
}
});
/* c8 ignore start */
const bootstrap = (selector, node, shouldHandle) => {
if (selector) $$(selector, node).forEach(handle);
selector = CUSTOM_SELECTORS.join(',');
if (selector) {
if (shouldHandle) handleCustomType(node);
$$(selector, node).forEach(handleCustomType);
}
};
/* c8 ignore stop */
const observe = (root) => {
mo.observe(root, { childList: true, subtree: true, attributes: true });
return root;
};
const { attachShadow } = Element.prototype;
assign(Element.prototype, {
attachShadow(init) {
return observe(attachShadow.call(this, init));
},
});
// give 3rd party a chance to apply changes before this happens
queueMicrotask(() => {
addAllListeners(observe(document));
bootstrap(selectors.join(','), document, false);
});
}