@websolutespa/bom-llm 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/umd/index.js +127 -10
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/umd/index.js
CHANGED
|
@@ -28409,10 +28409,17 @@ void main(void) {
|
|
|
28409
28409
|
marked.use({
|
|
28410
28410
|
renderer: {
|
|
28411
28411
|
link(href, title, text) {
|
|
28412
|
-
return `<a href="${href}" target="_blank"
|
|
28412
|
+
return `<a class="llm__text-link" href="${href}" target="_blank"
|
|
28413
|
+
${title ? `title="${title}"` : ''}
|
|
28414
|
+
onclick="javascript:event.preventDefault(),window.open(event.currentTarget.href);">
|
|
28415
|
+
${text}
|
|
28416
|
+
</a>`;
|
|
28413
28417
|
},
|
|
28414
28418
|
image(href, title, text) {
|
|
28415
|
-
return `<a class="llm__text-img" href="${href}" target="_blank"
|
|
28419
|
+
return `<a class="llm__text-img" href="${href}" target="_blank"
|
|
28420
|
+
onclick="javascript:event.preventDefault(),window.open(event.currentTarget.href);">
|
|
28421
|
+
<img src="${href}"${title ? ` title="${title}"` : ''} alt="${text}" />
|
|
28422
|
+
</a>`;
|
|
28416
28423
|
}
|
|
28417
28424
|
}
|
|
28418
28425
|
});
|
|
@@ -29370,20 +29377,130 @@ void main(void) {
|
|
|
29370
29377
|
instance: llm
|
|
29371
29378
|
}))
|
|
29372
29379
|
}));
|
|
29373
|
-
const
|
|
29374
|
-
|
|
29375
|
-
|
|
29376
|
-
|
|
29377
|
-
|
|
29378
|
-
|
|
29379
|
-
|
|
29380
|
-
|
|
29380
|
+
const renderEmbed = node => {
|
|
29381
|
+
if (!node.hasAttribute('data-llm')) {
|
|
29382
|
+
node.setAttribute('data-llm', '');
|
|
29383
|
+
const root = client.createRoot(node);
|
|
29384
|
+
root.render(jsxRuntimeExports.jsx(React.StrictMode, {
|
|
29385
|
+
children: jsxRuntimeExports.jsx(App, Object.assign({}, props, {
|
|
29386
|
+
embedded: true
|
|
29387
|
+
}))
|
|
29388
|
+
}));
|
|
29389
|
+
}
|
|
29390
|
+
};
|
|
29391
|
+
// observe embeds
|
|
29392
|
+
const onIntersection = node => {
|
|
29393
|
+
// console.log('onIntersection', node);
|
|
29394
|
+
renderEmbed(node);
|
|
29395
|
+
};
|
|
29396
|
+
const targetElement = document;
|
|
29397
|
+
const intersectionObserver = observeIntersections(targetElement, onIntersection);
|
|
29398
|
+
const embeds = Array.from(document.querySelectorAll('llm-embed')).filter(element => !element.hasAttribute('data-llm'));
|
|
29399
|
+
embeds.forEach(element => intersectionObserver.observe(element));
|
|
29400
|
+
observeMutations(targetElement, _ref => {
|
|
29401
|
+
let {
|
|
29402
|
+
addedNodes,
|
|
29403
|
+
removedNodes
|
|
29404
|
+
} = _ref;
|
|
29405
|
+
// console.log('addedNodes', addedNodes);
|
|
29406
|
+
const addedElements = Array.from(addedNodes).filter(x => x.nodeType === Node.ELEMENT_NODE);
|
|
29407
|
+
// console.log('addedElements', addedElements);
|
|
29408
|
+
const elements = queryElements(addedElements);
|
|
29409
|
+
// console.log('elements', elements);
|
|
29410
|
+
elements.forEach(element => intersectionObserver.observe(element));
|
|
29381
29411
|
});
|
|
29412
|
+
const elements = queryElements(targetElement);
|
|
29413
|
+
elements.forEach(element => intersectionObserver.observe(element));
|
|
29414
|
+
// return dispose;
|
|
29382
29415
|
return llm;
|
|
29383
29416
|
}
|
|
29384
29417
|
if (typeof window !== 'undefined') {
|
|
29385
29418
|
window.bomLlm = bomLlm;
|
|
29386
29419
|
}
|
|
29420
|
+
function observeIntersections(targetElement, callback) {
|
|
29421
|
+
if (targetElement === void 0) {
|
|
29422
|
+
targetElement = document;
|
|
29423
|
+
}
|
|
29424
|
+
if (callback === void 0) {
|
|
29425
|
+
callback = target => {};
|
|
29426
|
+
}
|
|
29427
|
+
let observer;
|
|
29428
|
+
if ('IntersectionObserver' in window) {
|
|
29429
|
+
const observerOptions = {
|
|
29430
|
+
root: targetElement.parentElement ? targetElement.parentElement : targetElement,
|
|
29431
|
+
rootMargin: '50px',
|
|
29432
|
+
threshold: [0.01, 0.99]
|
|
29433
|
+
};
|
|
29434
|
+
observer = new IntersectionObserver((entries, observer) => {
|
|
29435
|
+
entries.forEach(entry => {
|
|
29436
|
+
if (entry.isIntersecting) {
|
|
29437
|
+
callback(entry.target);
|
|
29438
|
+
observer.unobserve(entry.target);
|
|
29439
|
+
}
|
|
29440
|
+
});
|
|
29441
|
+
}, observerOptions);
|
|
29442
|
+
} else {
|
|
29443
|
+
observer = {
|
|
29444
|
+
observe: callback,
|
|
29445
|
+
disconnect: () => {}
|
|
29446
|
+
};
|
|
29447
|
+
}
|
|
29448
|
+
return observer;
|
|
29449
|
+
}
|
|
29450
|
+
function observeMutations(targetElement, callback) {
|
|
29451
|
+
if (targetElement === void 0) {
|
|
29452
|
+
targetElement = document;
|
|
29453
|
+
}
|
|
29454
|
+
if (callback === void 0) {
|
|
29455
|
+
callback = mutation => {};
|
|
29456
|
+
}
|
|
29457
|
+
let observer;
|
|
29458
|
+
if ('MutationObserver' in window) {
|
|
29459
|
+
const config = {
|
|
29460
|
+
attributes: false,
|
|
29461
|
+
childList: true,
|
|
29462
|
+
subtree: true
|
|
29463
|
+
};
|
|
29464
|
+
observer = new MutationObserver((mutationList, observer) => {
|
|
29465
|
+
for (const mutation of mutationList) {
|
|
29466
|
+
if (mutation.type === 'childList') {
|
|
29467
|
+
callback(mutation);
|
|
29468
|
+
}
|
|
29469
|
+
/*
|
|
29470
|
+
else if (mutation.type === 'attributes') {
|
|
29471
|
+
console.log(`The ${mutation.attributeName} attribute was modified.`);
|
|
29472
|
+
}
|
|
29473
|
+
*/
|
|
29474
|
+
}
|
|
29475
|
+
});
|
|
29476
|
+
observer.observe(targetElement, config);
|
|
29477
|
+
} else {
|
|
29478
|
+
observer = {
|
|
29479
|
+
disconnect: () => {}
|
|
29480
|
+
};
|
|
29481
|
+
}
|
|
29482
|
+
return observer;
|
|
29483
|
+
}
|
|
29484
|
+
function queryElements(elements) {
|
|
29485
|
+
const filteredElements = [];
|
|
29486
|
+
const iterable = Array.isArray(elements) ? elements : isIterable(elements) ? elements : [elements];
|
|
29487
|
+
for (const element of iterable) {
|
|
29488
|
+
const childElements = element.querySelectorAll('llm-embed');
|
|
29489
|
+
for (const childElement of childElements) {
|
|
29490
|
+
if (!childElement.hasAttribute('data-llm')) {
|
|
29491
|
+
filteredElements.push(childElement);
|
|
29492
|
+
}
|
|
29493
|
+
}
|
|
29494
|
+
// console.log('element.tagName', element.tagName);
|
|
29495
|
+
if (element.tagName.toLowerCase() === 'llm-embed' && !element.hasAttribute('data-llm')) {
|
|
29496
|
+
filteredElements.push(element);
|
|
29497
|
+
}
|
|
29498
|
+
}
|
|
29499
|
+
return filteredElements;
|
|
29500
|
+
}
|
|
29501
|
+
function isIterable(element) {
|
|
29502
|
+
return element != null && typeof element[Symbol.iterator] === 'function';
|
|
29503
|
+
}
|
|
29387
29504
|
|
|
29388
29505
|
exports.bomLlm = bomLlm;
|
|
29389
29506
|
|