@sinequa/assistant 3.9.5 → 3.9.6-rc2
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/chat/chat-message/chat-message.component.d.ts +17 -25
- package/chat/chat-message/i18n/de.json +11 -0
- package/chat/chat-reference/chat-reference.component.d.ts +18 -8
- package/chat/chat-reference/i18n/de.json +4 -0
- package/chat/chat-settings-v3/i18n/de.json +14 -0
- package/chat/chat.component.d.ts +2 -1
- package/chat/debug-message/debug-message-details/debug-message-details.component.d.ts +2 -3
- package/chat/debug-message/i18n/de.json +3 -0
- package/chat/dialogs/i18n/de.json +19 -0
- package/chat/directives/copy-to-clipboard.directive.d.ts +8 -0
- package/chat/documents-upload/document-list/document-list.component.d.ts +4 -9
- package/chat/documents-upload/document-overview/document-overview.component.d.ts +3 -17
- package/chat/documents-upload/document-upload/document-upload.component.d.ts +3 -8
- package/chat/documents-upload/documents-upload.service.d.ts +7 -16
- package/chat/documents-upload/i18n/de.json +24 -0
- package/chat/i18n/de.json +42 -0
- package/chat/markdown-it-plugins/code-block.plugin.d.ts +2 -0
- package/chat/markdown-it-plugins/image-reference.plugin.d.ts +3 -0
- package/chat/markdown-it-plugins/link.plugin.d.ts +5 -0
- package/chat/markdown-it-plugins/page-reference.plugin.d.ts +3 -0
- package/chat/markdown-it-plugins/reference.plugin.d.ts +7 -0
- package/chat/public-api.d.ts +2 -1
- package/chat/references/i18n/de.json +6 -0
- package/chat/references/references.component.d.ts +43 -0
- package/chat/saved-chats/i18n/de.json +5 -0
- package/chat/services/app.service.d.ts +2 -1
- package/chat/services/custom-elements.service.d.ts +13 -0
- package/chat/smart-renderer/smart-renderer.d.ts +23 -0
- package/chat/token-progress-bar/i18n/de.json +4 -0
- package/chat/tooltip/tooltip.directive.d.ts +2 -2
- package/chat/types.d.ts +8 -42
- package/esm2022/chat/chat-message/chat-message.component.mjs +33 -135
- package/esm2022/chat/chat-reference/chat-reference.component.mjs +60 -26
- package/esm2022/chat/chat-settings-v3/chat-settings-v3.component.mjs +1 -1
- package/esm2022/chat/chat.component.mjs +48 -12
- package/esm2022/chat/chat.service.mjs +3 -2
- package/esm2022/chat/debug-message/debug-message-details/debug-message-details.component.mjs +2 -2
- package/esm2022/chat/debug-message/debug-message.service.mjs +4 -7
- package/esm2022/chat/directives/copy-to-clipboard.directive.mjs +68 -0
- package/esm2022/chat/documents-upload/document-list/document-list.component.mjs +21 -22
- package/esm2022/chat/documents-upload/document-overview/document-overview.component.mjs +8 -31
- package/esm2022/chat/documents-upload/document-upload/document-upload.component.mjs +12 -14
- package/esm2022/chat/documents-upload/documents-upload.service.mjs +25 -44
- package/esm2022/chat/markdown-it-plugins/code-block.plugin.mjs +14 -0
- package/esm2022/chat/markdown-it-plugins/image-reference.plugin.mjs +58 -0
- package/esm2022/chat/markdown-it-plugins/link.plugin.mjs +15 -0
- package/esm2022/chat/markdown-it-plugins/page-reference.plugin.mjs +60 -0
- package/esm2022/chat/markdown-it-plugins/reference.plugin.mjs +68 -0
- package/esm2022/chat/public-api.mjs +3 -2
- package/esm2022/chat/references/references.component.mjs +290 -0
- package/esm2022/chat/saved-chats/saved-chats.component.mjs +4 -3
- package/esm2022/chat/saved-chats/saved-chats.service.mjs +9 -12
- package/esm2022/chat/services/app.service.mjs +8 -2
- package/esm2022/chat/services/assistant-configuration.service.mjs +9 -18
- package/esm2022/chat/services/assistant-metadata.service.mjs +3 -3
- package/esm2022/chat/services/assistant-tokens-tracking.service.mjs +3 -6
- package/esm2022/chat/services/custom-elements.service.mjs +43 -0
- package/esm2022/chat/smart-renderer/smart-renderer.mjs +103 -0
- package/esm2022/chat/tooltip/tooltip.directive.mjs +9 -9
- package/esm2022/chat/types.mjs +2 -5
- package/fesm2022/sinequa-assistant-chat.mjs +908 -497
- package/fesm2022/sinequa-assistant-chat.mjs.map +1 -1
- package/package.json +4 -6
- package/chat/prompt.component.d.ts +0 -25
- package/chat/unified-plugins/embedded-image-reference.plugin.d.ts +0 -3
- package/chat/unified-plugins/embedded-page-reference.plugin.d.ts +0 -3
- package/esm2022/chat/prompt.component.mjs +0 -88
- package/esm2022/chat/unified-plugins/embedded-image-reference.plugin.mjs +0 -56
- package/esm2022/chat/unified-plugins/embedded-page-reference.plugin.mjs +0 -57
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export const EMBEDDED_IMAGE_NAME = "embedded-image-reference";
|
|
2
|
+
const EMBEDDED_IMAGE_REGEX = /\[(Img-([0-9]+(?:\.[0-9]+){2}))\]/g;
|
|
3
|
+
export function markdownItImageReferencePlugin(md) {
|
|
4
|
+
md.core.ruler.after("inline", EMBEDDED_IMAGE_NAME, (state) => {
|
|
5
|
+
const getEmbeddedImageReference = state?.env?.getEmbeddedImageReference;
|
|
6
|
+
state.tokens.forEach((blockToken) => {
|
|
7
|
+
if (blockToken.type !== "inline" || !blockToken.children)
|
|
8
|
+
return;
|
|
9
|
+
const newChildren = [];
|
|
10
|
+
blockToken.children.forEach((token) => {
|
|
11
|
+
if (token.type !== "text") {
|
|
12
|
+
newChildren.push(token);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let lastIndex = 0;
|
|
16
|
+
let match;
|
|
17
|
+
const text = token.content;
|
|
18
|
+
EMBEDDED_IMAGE_REGEX.lastIndex = 0; // Reset regex state
|
|
19
|
+
while ((match = EMBEDDED_IMAGE_REGEX.exec(text)) !== null) {
|
|
20
|
+
// Add leading text
|
|
21
|
+
if (match.index > lastIndex) {
|
|
22
|
+
const t = new state.Token("text", "", 0);
|
|
23
|
+
t.content = text.slice(lastIndex, match.index);
|
|
24
|
+
newChildren.push(t);
|
|
25
|
+
}
|
|
26
|
+
// Add embedded image reference token
|
|
27
|
+
const refToken = new state.Token(EMBEDDED_IMAGE_NAME, "", 0);
|
|
28
|
+
refToken.content = match[2]; // e.g., "1.2.3"
|
|
29
|
+
refToken.meta = { full: match[1] }; // e.g., "Img-1.2.3"
|
|
30
|
+
refToken.attrs = [];
|
|
31
|
+
if (getEmbeddedImageReference) {
|
|
32
|
+
const attachment = getEmbeddedImageReference(match[2]);
|
|
33
|
+
if (attachment) {
|
|
34
|
+
refToken.attrs.push(['attachment', btoa(encodeURIComponent(JSON.stringify(attachment)))]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
newChildren.push(refToken);
|
|
38
|
+
lastIndex = match.index + match[0].length;
|
|
39
|
+
}
|
|
40
|
+
// Add trailing text
|
|
41
|
+
if (lastIndex < text.length) {
|
|
42
|
+
const t = new state.Token("text", "", 0);
|
|
43
|
+
t.content = text.slice(lastIndex);
|
|
44
|
+
newChildren.push(t);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
blockToken.children = newChildren;
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
// Optional: renderer for the custom token
|
|
51
|
+
md.renderer.rules[EMBEDDED_IMAGE_NAME] = (tokens, idx) => {
|
|
52
|
+
const imgId = tokens[idx].content;
|
|
53
|
+
const attrs = tokens[idx].attrs || [];
|
|
54
|
+
const attachment = attrs[0];
|
|
55
|
+
return `<image-reference id="${imgId}" attachment="${attachment ? attachment[1] : ''}" class="embedded-image-ref">Img-${imgId}</image-reference>`;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVmZXJlbmNlLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L21hcmtkb3duLWl0LXBsdWdpbnMvaW1hZ2UtcmVmZXJlbmNlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRywwQkFBMEIsQ0FBQztBQUM5RCxNQUFNLG9CQUFvQixHQUFHLG9DQUFvQyxDQUFDO0FBRWxFLE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxFQUFjO0lBQzNELEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMzRCxNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUseUJBQXlCLENBQUM7UUFDeEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNsQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7Z0JBQUUsT0FBTztZQUVqRSxNQUFNLFdBQVcsR0FBWSxFQUFFLENBQUM7WUFFaEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4QixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLEtBQTZCLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBRTNCLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxDQUFDLENB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QUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgTWFya2Rvd25JdCBmcm9tIFwibWFya2Rvd24taXRcIjtcclxuaW1wb3J0IFRva2VuIGZyb20gJ21hcmtkb3duLWl0L2xpYi90b2tlbi5tanMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVNQkVEREVEX0lNQUdFX05BTUUgPSBcImVtYmVkZGVkLWltYWdlLXJlZmVyZW5jZVwiO1xyXG5jb25zdCBFTUJFRERFRF9JTUFHRV9SRUdFWCA9IC9cXFsoSW1nLShbMC05XSsoPzpcXC5bMC05XSspezJ9KSlcXF0vZztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkl0SW1hZ2VSZWZlcmVuY2VQbHVnaW4obWQ6IE1hcmtkb3duSXQpIHtcclxuICBtZC5jb3JlLnJ1bGVyLmFmdGVyKFwiaW5saW5lXCIsIEVNQkVEREVEX0lNQUdFX05BTUUsIChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgZ2V0RW1iZWRkZWRJbWFnZVJlZmVyZW5jZSA9IHN0YXRlPy5lbnY/LmdldEVtYmVkZGVkSW1hZ2VSZWZlcmVuY2U7XHJcbiAgICBzdGF0ZS50b2tlbnMuZm9yRWFjaCgoYmxvY2tUb2tlbikgPT4ge1xyXG4gICAgICBpZiAoYmxvY2tUb2tlbi50eXBlICE9PSBcImlubGluZVwiIHx8ICFibG9ja1Rva2VuLmNoaWxkcmVuKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBuZXdDaGlsZHJlbjogVG9rZW5bXSA9IFtdO1xyXG5cclxuICAgICAgYmxvY2tUb2tlbi5jaGlsZHJlbi5mb3JFYWNoKCh0b2tlbikgPT4ge1xyXG4gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBcInRleHRcIikge1xyXG4gICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0b2tlbik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRva2VuLmNvbnRlbnQ7XHJcblxyXG4gICAgICAgIEVNQkVEREVEX0lNQUdFX1JFR0VYLmxhc3RJbmRleCA9IDA7IC8vIFJlc2V0IHJlZ2V4IHN0YXRlXHJcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IEVNQkVEREVEX0lNQUdFX1JFR0VYLmV4ZWModGV4dCkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBBZGQgbGVhZGluZyB0ZXh0XHJcbiAgICAgICAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0SW5kZXgpIHtcclxuICAgICAgICAgICAgY29uc3QgdCA9IG5ldyBzdGF0ZS5Ub2tlbihcInRleHRcIiwgXCJcIiwgMCk7XHJcbiAgICAgICAgICAgIHQuY29udGVudCA9IHRleHQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCk7XHJcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2godCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQWRkIGVtYmVkZGVkIGltYWdlIHJlZmVyZW5jZSB0b2tlblxyXG4gICAgICAgICAgY29uc3QgcmVmVG9rZW4gPSBuZXcgc3RhdGUuVG9rZW4oRU1CRURERURfSU1BR0VfTkFNRSwgXCJcIiwgMCk7XHJcbiAgICAgICAgICByZWZUb2tlbi5jb250ZW50ID0gbWF0Y2hbMl07IC8vIGUuZy4sIFwiMS4yLjNcIlxyXG4gICAgICAgICAgcmVmVG9rZW4ubWV0YSA9IHsgZnVsbDogbWF0Y2hbMV0gfTsgLy8gZS5nLiwgXCJJbWctMS4yLjNcIlxyXG4gICAgICAgICAgcmVmVG9rZW4uYXR0cnMgPSBbXTtcclxuICAgICAgICAgIGlmIChnZXRFbWJlZGRlZEltYWdlUmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBnZXRFbWJlZGRlZEltYWdlUmVmZXJlbmNlKG1hdGNoWzJdKTtcclxuICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQpIHtcclxuICAgICAgICAgICAgICByZWZUb2tlbi5hdHRycy5wdXNoKFsnYXR0YWNobWVudCcsIGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGF0dGFjaG1lbnQpKSldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChyZWZUb2tlbik7XHJcblxyXG4gICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgdHJhaWxpbmcgdGV4dFxyXG4gICAgICAgIGlmIChsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgdCA9IG5ldyBzdGF0ZS5Ub2tlbihcInRleHRcIiwgXCJcIiwgMCk7XHJcbiAgICAgICAgICB0LmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCk7XHJcbiAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBibG9ja1Rva2VuLmNoaWxkcmVuID0gbmV3Q2hpbGRyZW47XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgLy8gT3B0aW9uYWw6IHJlbmRlcmVyIGZvciB0aGUgY3VzdG9tIHRva2VuXHJcbiAgbWQucmVuZGVyZXIucnVsZXNbRU1CRURERURfSU1BR0VfTkFNRV0gPSAodG9rZW5zLCBpZHgpID0+IHtcclxuICAgIGNvbnN0IGltZ0lkID0gdG9rZW5zW2lkeF0uY29udGVudDtcclxuICAgIGNvbnN0IGF0dHJzID0gdG9rZW5zW2lkeF0uYXR0cnMgfHwgW107XHJcbiAgICBjb25zdCBhdHRhY2htZW50ID0gYXR0cnNbMF07XHJcbiAgICByZXR1cm4gYDxpbWFnZS1yZWZlcmVuY2UgaWQ9XCIke2ltZ0lkfVwiIGF0dGFjaG1lbnQ9XCIke2F0dGFjaG1lbnQgPyBhdHRhY2htZW50WzFdIDogJyd9XCIgY2xhc3M9XCJlbWJlZGRlZC1pbWFnZS1yZWZcIj5JbWctJHtpbWdJZH08L2ltYWdlLXJlZmVyZW5jZT5gO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This plugin overrides the default link renderer to add `target="_blank"` and `rel="noopener noreferrer"` to all links.
|
|
3
|
+
*/
|
|
4
|
+
export function markdownItLinkPlugin(md) {
|
|
5
|
+
const defaultRender = md.renderer.rules.link_open || function (tokens, idx, options, env, self) {
|
|
6
|
+
return self.renderToken(tokens, idx, options);
|
|
7
|
+
};
|
|
8
|
+
md.renderer.rules.link_open = function (tokens, idx, options, env, self) {
|
|
9
|
+
tokens[idx].attrPush(['target', '_blank']);
|
|
10
|
+
tokens[idx].attrPush(['rel', 'noopener noreferrer']);
|
|
11
|
+
// pass token to default renderer.
|
|
12
|
+
return defaultRender(tokens, idx, options, env, self);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9tYXJrZG93bi1pdC1wbHVnaW5zL2xpbmsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQWM7SUFDakQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLFVBQVMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUk7UUFDM0YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0lBRUYsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFVBQVMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUk7UUFDcEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBRXJELGtDQUFrQztRQUNsQyxPQUFPLGFBQWEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1hcmtkb3duSXQgZnJvbSBcIm1hcmtkb3duLWl0XCI7XHJcblxyXG4vKipcclxuICogVGhpcyBwbHVnaW4gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGxpbmsgcmVuZGVyZXIgdG8gYWRkIGB0YXJnZXQ9XCJfYmxhbmtcImAgYW5kIGByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJgIHRvIGFsbCBsaW5rcy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkl0TGlua1BsdWdpbihtZDogTWFya2Rvd25JdCkge1xyXG4gIGNvbnN0IGRlZmF1bHRSZW5kZXIgPSBtZC5yZW5kZXJlci5ydWxlcy5saW5rX29wZW4gfHwgZnVuY3Rpb24odG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2VsZikge1xyXG4gICAgcmV0dXJuIHNlbGYucmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpO1xyXG4gIH07XHJcblxyXG4gIG1kLnJlbmRlcmVyLnJ1bGVzLmxpbmtfb3BlbiA9IGZ1bmN0aW9uKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNlbGYpIHtcclxuICAgIHRva2Vuc1tpZHhdLmF0dHJQdXNoKFsndGFyZ2V0JywgJ19ibGFuayddKTtcclxuICAgIHRva2Vuc1tpZHhdLmF0dHJQdXNoKFsncmVsJywgJ25vb3BlbmVyIG5vcmVmZXJyZXInXSk7XHJcblxyXG4gICAgLy8gcGFzcyB0b2tlbiB0byBkZWZhdWx0IHJlbmRlcmVyLlxyXG4gICAgcmV0dXJuIGRlZmF1bHRSZW5kZXIodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2VsZik7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export const EMBEDDED_PAGE_NAME = "embedded-page-reference";
|
|
2
|
+
const EMBEDDED_PAGE_REGEX = /\[(Page-(\d+\.\d+))\]/g;
|
|
3
|
+
export function markdownItPageReferencePlugin(md) {
|
|
4
|
+
md.core.ruler.after("inline", "embedded-page-reference", (state) => {
|
|
5
|
+
const getEmbeddedPageReference = state?.env?.getEmbeddedPageReference;
|
|
6
|
+
state.tokens.forEach((blockToken) => {
|
|
7
|
+
if (blockToken.type !== "inline" || !blockToken.children)
|
|
8
|
+
return;
|
|
9
|
+
const newChildren = [];
|
|
10
|
+
blockToken.children.forEach((token) => {
|
|
11
|
+
if (token.type !== "text") {
|
|
12
|
+
newChildren.push(token);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let lastIndex = 0;
|
|
16
|
+
let match;
|
|
17
|
+
const text = token.content;
|
|
18
|
+
EMBEDDED_PAGE_REGEX.lastIndex = 0; // Reset regex state
|
|
19
|
+
while ((match = EMBEDDED_PAGE_REGEX.exec(text)) !== null) {
|
|
20
|
+
// Add leading text
|
|
21
|
+
if (match.index > lastIndex) {
|
|
22
|
+
const t = new state.Token("text", "", 0);
|
|
23
|
+
t.content = text.slice(lastIndex, match.index);
|
|
24
|
+
newChildren.push(t);
|
|
25
|
+
}
|
|
26
|
+
// Add embedded page reference token
|
|
27
|
+
const refToken = new state.Token(EMBEDDED_PAGE_NAME, "", 0);
|
|
28
|
+
refToken.content = match[2]; // e.g., "1.2"
|
|
29
|
+
refToken.meta = { full: match[1] }; // e.g., "Page-1.2"
|
|
30
|
+
refToken.attrs = [];
|
|
31
|
+
if (getEmbeddedPageReference) {
|
|
32
|
+
const attachment = getEmbeddedPageReference(match[2]);
|
|
33
|
+
if (attachment) {
|
|
34
|
+
refToken.attrs.push(['attachment', btoa(encodeURIComponent(JSON.stringify(attachment)))]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
newChildren.push(refToken);
|
|
38
|
+
lastIndex = match.index + match[0].length;
|
|
39
|
+
}
|
|
40
|
+
// Add trailing text
|
|
41
|
+
if (lastIndex < text.length) {
|
|
42
|
+
const t = new state.Token("text", "", 0);
|
|
43
|
+
t.content = text.slice(lastIndex);
|
|
44
|
+
newChildren.push(t);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
blockToken.children = newChildren;
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
// Optional: renderer for the custom token
|
|
51
|
+
md.renderer.rules[EMBEDDED_PAGE_NAME] = (tokens, idx) => {
|
|
52
|
+
const page = tokens[idx].content;
|
|
53
|
+
// const getEmbeddedPageReference = tokens[idx].meta?.getEmbeddedPageReference;
|
|
54
|
+
// const attachment = getEmbeddedPageReference ? getEmbeddedPageReference(page) : null;
|
|
55
|
+
const attrs = tokens[idx].attrs || [];
|
|
56
|
+
const attachment = attrs[0];
|
|
57
|
+
return `<page-reference id=${page} attachment=${attachment[1]} class="embedded-page-ref">Page-${page}</page-reference>`;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1yZWZlcmVuY2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvbWFya2Rvd24taXQtcGx1Z2lucy9wYWdlLXJlZmVyZW5jZS5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBQUM7QUFDNUQsTUFBTSxtQkFBbUIsR0FBRyx3QkFBd0IsQ0FBQztBQUVyRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsRUFBYztJQUMxRCxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLHlCQUF5QixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDakUsTUFBTSx3QkFBd0IsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixDQUFDO1FBQ3RFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRO2dCQUFFLE9BQU87WUFFakUsTUFBTSxXQUFXLEdBQVksRUFBRSxDQUFDO1lBRWhDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDMUIsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEIsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxLQUE2QixDQUFDO2dCQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUUzQixtQkFBbUIsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFD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ZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE1hcmtkb3duSXQgZnJvbSBcIm1hcmtkb3duLWl0XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSAnbWFya2Rvd24taXQvbGliL3Rva2VuLm1qcyc7XG5cbmV4cG9ydCBjb25zdCBFTUJFRERFRF9QQUdFX05BTUUgPSBcImVtYmVkZGVkLXBhZ2UtcmVmZXJlbmNlXCI7XG5jb25zdCBFTUJFRERFRF9QQUdFX1JFR0VYID0gL1xcWyhQYWdlLShcXGQrXFwuXFxkKykpXFxdL2c7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkl0UGFnZVJlZmVyZW5jZVBsdWdpbihtZDogTWFya2Rvd25JdCkge1xuICBtZC5jb3JlLnJ1bGVyLmFmdGVyKFwiaW5saW5lXCIsIFwiZW1iZWRkZWQtcGFnZS1yZWZlcmVuY2VcIiwgKHN0YXRlKSA9PiB7XG4gICAgY29uc3QgZ2V0RW1iZWRkZWRQYWdlUmVmZXJlbmNlID0gc3RhdGU/LmVudj8uZ2V0RW1iZWRkZWRQYWdlUmVmZXJlbmNlO1xuICAgIHN0YXRlLnRva2Vucy5mb3JFYWNoKChibG9ja1Rva2VuKSA9PiB7XG4gICAgICBpZiAoYmxvY2tUb2tlbi50eXBlICE9PSBcImlubGluZVwiIHx8ICFibG9ja1Rva2VuLmNoaWxkcmVuKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IG5ld0NoaWxkcmVuOiBUb2tlbltdID0gW107XG5cbiAgICAgIGJsb2NrVG9rZW4uY2hpbGRyZW4uZm9yRWFjaCgodG9rZW4pID0+IHtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFwidGV4dFwiKSB7XG4gICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0b2tlbik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XG4gICAgICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRva2VuLmNvbnRlbnQ7XG5cbiAgICAgICAgRU1CRURERURfUEFHRV9SRUdFWC5sYXN0SW5kZXggPSAwOyAvLyBSZXNldCByZWdleCBzdGF0ZVxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gRU1CRURERURfUEFHRV9SRUdFWC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIEFkZCBsZWFkaW5nIHRleHRcbiAgICAgICAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBuZXcgc3RhdGUuVG9rZW4oXCJ0ZXh0XCIsIFwiXCIsIDApO1xuICAgICAgICAgICAgdC5jb250ZW50ID0gdGV4dC5zbGljZShsYXN0SW5kZXgsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2godCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIGVtYmVkZGVkIHBhZ2UgcmVmZXJlbmNlIHRva2VuXG4gICAgICAgICAgY29uc3QgcmVmVG9rZW4gPSBuZXcgc3RhdGUuVG9rZW4oRU1CRURERURfUEFHRV9OQU1FLCBcIlwiLCAwKTtcbiAgICAgICAgICByZWZUb2tlbi5jb250ZW50ID0gbWF0Y2hbMl07IC8vIGUuZy4sIFwiMS4yXCJcbiAgICAgICAgICByZWZUb2tlbi5tZXRhID0geyBmdWxsOiBtYXRjaFsxXSB9OyAvLyBlLmcuLCBcIlBhZ2UtMS4yXCJcbiAgICAgICAgICByZWZUb2tlbi5hdHRycyA9IFtdO1xuICAgICAgICAgIGlmIChnZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBnZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2UobWF0Y2hbMl0pO1xuICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQpIHtcbiAgICAgICAgICAgICAgcmVmVG9rZW4uYXR0cnMucHVzaChbJ2F0dGFjaG1lbnQnLCBidG9hKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShhdHRhY2htZW50KSkpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gocmVmVG9rZW4pO1xuXG4gICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdHJhaWxpbmcgdGV4dFxuICAgICAgICBpZiAobGFzdEluZGV4IDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB0ID0gbmV3IHN0YXRlLlRva2VuKFwidGV4dFwiLCBcIlwiLCAwKTtcbiAgICAgICAgICB0LmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCk7XG4gICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGJsb2NrVG9rZW4uY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gT3B0aW9uYWw6IHJlbmRlcmVyIGZvciB0aGUgY3VzdG9tIHRva2VuXG4gIG1kLnJlbmRlcmVyLnJ1bGVzW0VNQkVEREVEX1BBR0VfTkFNRV0gPSAodG9rZW5zLCBpZHgpID0+IHtcbiAgICBjb25zdCBwYWdlID0gdG9rZW5zW2lkeF0uY29udGVudDtcbiAgICAvLyBjb25zdCBnZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2UgPSB0b2tlbnNbaWR4XS5tZXRhPy5nZXRFbWJlZGRlZFBhZ2VSZWZlcmVuY2U7XG4gICAgLy8gY29uc3QgYXR0YWNobWVudCA9IGdldEVtYmVkZGVkUGFnZVJlZmVyZW5jZSA/IGdldEVtYmVkZGVkUGFnZVJlZmVyZW5jZShwYWdlKSA6IG51bGw7XG4gICAgY29uc3QgYXR0cnMgPSB0b2tlbnNbaWR4XS5hdHRycyB8fCBbXTtcbiAgICBjb25zdCBhdHRhY2htZW50ID0gYXR0cnNbMF07XG4gICAgcmV0dXJuIGA8cGFnZS1yZWZlcmVuY2UgaWQ9JHtwYWdlfSBhdHRhY2htZW50PSR7YXR0YWNobWVudFsxXX0gY2xhc3M9XCJlbWJlZGRlZC1wYWdlLXJlZlwiPlBhZ2UtJHtwYWdlfTwvcGFnZS1yZWZlcmVuY2U+YDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A markdown-it plugin to convert [n] where n is a number into a <reference id="n">n</reference> HTML tag.
|
|
3
|
+
*
|
|
4
|
+
* For example, [123] will be converted to <reference id="123">123</reference>.
|
|
5
|
+
*/
|
|
6
|
+
export function markdownItReferencePlugin(md) {
|
|
7
|
+
function referenceifyNumber(state, silent) {
|
|
8
|
+
const referencesMap = state.env.referencesMap || new Map();
|
|
9
|
+
const rank = state.env.rank || null;
|
|
10
|
+
const char = state.src.charCodeAt(state.pos);
|
|
11
|
+
// Check if the current character is '['
|
|
12
|
+
if (char !== 0x5B /* [ */) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const start = state.pos + 1;
|
|
16
|
+
let end = -1;
|
|
17
|
+
// Find the closing ']'
|
|
18
|
+
for (let i = start; i < state.src.length; i++) {
|
|
19
|
+
if (state.src.charCodeAt(i) === 0x5D /* ] */) {
|
|
20
|
+
end = i;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (end === -1 || end === start) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const content = state.src.slice(start, end);
|
|
28
|
+
// Match if content is a number or number.number (optionally allow whitespace)
|
|
29
|
+
if (!/^\s*\d+(?:\.\d+)?\s*$/.test(content.trim())) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (!silent) {
|
|
33
|
+
const n = content.trim();
|
|
34
|
+
// Open <reference>
|
|
35
|
+
const attachment = referencesMap.get(n) || n;
|
|
36
|
+
if (attachment) {
|
|
37
|
+
// add attachment if found in the references map from env (set in the component)
|
|
38
|
+
state.env.references(n.split('.')[0]);
|
|
39
|
+
const tokenOpen = state.push('reference_open', 'reference-component', 1);
|
|
40
|
+
// base64 encode the attachment if needed
|
|
41
|
+
if (typeof attachment === 'object') {
|
|
42
|
+
tokenOpen.attrs = [
|
|
43
|
+
['id', n],
|
|
44
|
+
['rank', rank],
|
|
45
|
+
['attachment', btoa(encodeURIComponent(JSON.stringify(attachment)))]
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
// Text content
|
|
49
|
+
const tokenText = state.push('text', '', 0);
|
|
50
|
+
tokenText.content = n;
|
|
51
|
+
// Close </reference>
|
|
52
|
+
state.push('reference_close', 'reference-component', -1);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// If no attachment found, just create a span text node
|
|
56
|
+
const token = state.push('reference_open', 'span', 1);
|
|
57
|
+
token.attrs = [['class', 'reference']];
|
|
58
|
+
const tokenText = state.push('text', '', 0);
|
|
59
|
+
tokenText.content = n;
|
|
60
|
+
state.push('reference_close', 'span', -1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
state.pos = end + 1;
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
md.inline.ruler.after('text', 'referenceify_number', referenceifyNumber);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L21hcmtkb3duLWl0LXBsdWdpbnMvcmVmZXJlbmNlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEVBQWM7SUFDdEQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUN2QyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0Msd0NBQXdDO1FBQ3hDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUViLHVCQUF1QjtRQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM5QyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDN0MsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDUixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXpCLG1CQUFtQjtZQUNuQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFHLFVBQVUsRUFBQyxDQUFDO2dCQUNiLGdGQUFnRjtnQkFDaEYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSx5Q0FBeUM7Z0JBQ3pDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ25DLFNBQVMsQ0FBQyxLQUFLLEdBQUc7d0JBQ2hCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDVCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7d0JBQ2QsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNyRSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsZUFBZTtnQkFDZixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUV0QixxQkFBcUI7Z0JBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sdURBQXVEO2dCQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBNYXJrZG93bkl0IGZyb20gXCJtYXJrZG93bi1pdFwiO1xyXG4vKipcclxuICogQSBtYXJrZG93bi1pdCBwbHVnaW4gdG8gY29udmVydCBbbl0gd2hlcmUgbiBpcyBhIG51bWJlciBpbnRvIGEgPHJlZmVyZW5jZSBpZD1cIm5cIj5uPC9yZWZlcmVuY2U+IEhUTUwgdGFnLlxyXG4gKlxyXG4gKiBGb3IgZXhhbXBsZSwgWzEyM10gd2lsbCBiZSBjb252ZXJ0ZWQgdG8gPHJlZmVyZW5jZSBpZD1cIjEyM1wiPjEyMzwvcmVmZXJlbmNlPi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkl0UmVmZXJlbmNlUGx1Z2luKG1kOiBNYXJrZG93bkl0KSB7XHJcbiAgZnVuY3Rpb24gcmVmZXJlbmNlaWZ5TnVtYmVyKHN0YXRlLCBzaWxlbnQpIHtcclxuICAgIGNvbnN0IHJlZmVyZW5jZXNNYXAgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc01hcCB8fCBuZXcgTWFwKCk7XHJcbiAgICBjb25zdCByYW5rID0gc3RhdGUuZW52LnJhbmsgfHwgbnVsbDtcclxuICAgIGNvbnN0IGNoYXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyAnWydcclxuICAgIGlmIChjaGFyICE9PSAweDVCIC8qIFsgKi8pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0ID0gc3RhdGUucG9zICsgMTtcclxuICAgIGxldCBlbmQgPSAtMTtcclxuXHJcbiAgICAvLyBGaW5kIHRoZSBjbG9zaW5nICddJ1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgc3RhdGUuc3JjLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChpKSA9PT0gMHg1RCAvKiBdICovKSB7XHJcbiAgICAgICAgZW5kID0gaTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbmQgPT09IC0xIHx8IGVuZCA9PT0gc3RhcnQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgLy8gTWF0Y2ggaWYgY29udGVudCBpcyBhIG51bWJlciBvciBudW1iZXIubnVtYmVyIChvcHRpb25hbGx5IGFsbG93IHdoaXRlc3BhY2UpXHJcbiAgICBpZiAoIS9eXFxzKlxcZCsoPzpcXC5cXGQrKT9cXHMqJC8udGVzdChjb250ZW50LnRyaW0oKSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIGNvbnN0IG4gPSBjb250ZW50LnRyaW0oKTtcclxuXHJcbiAgICAgIC8vIE9wZW4gPHJlZmVyZW5jZT5cclxuICAgICAgY29uc3QgYXR0YWNobWVudCA9IHJlZmVyZW5jZXNNYXAuZ2V0KG4pIHx8IG47XHJcbiAgICAgIGlmKGF0dGFjaG1lbnQpe1xyXG4gICAgICAgIC8vIGFkZCBhdHRhY2htZW50IGlmIGZvdW5kIGluIHRoZSByZWZlcmVuY2VzIG1hcCBmcm9tIGVudiAoc2V0IGluIHRoZSBjb21wb25lbnQpXHJcbiAgICAgICAgc3RhdGUuZW52LnJlZmVyZW5jZXMobi5zcGxpdCgnLicpWzBdKTtcclxuICAgICAgICBjb25zdCB0b2tlbk9wZW4gPSBzdGF0ZS5wdXNoKCdyZWZlcmVuY2Vfb3BlbicsICdyZWZlcmVuY2UtY29tcG9uZW50JywgMSk7XHJcbiAgICAgICAgLy8gYmFzZTY0IGVuY29kZSB0aGUgYXR0YWNobWVudCBpZiBuZWVkZWRcclxuICAgICAgICBpZiAodHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICB0b2tlbk9wZW4uYXR0cnMgPSBbXHJcbiAgICAgICAgICAgIFsnaWQnLCBuXSxcclxuICAgICAgICAgICAgWydyYW5rJywgcmFua10sXHJcbiAgICAgICAgICAgIFsnYXR0YWNobWVudCcsIGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGF0dGFjaG1lbnQpKSldXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVGV4dCBjb250ZW50XHJcbiAgICAgICAgY29uc3QgdG9rZW5UZXh0ID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcclxuICAgICAgICB0b2tlblRleHQuY29udGVudCA9IG47XHJcblxyXG4gICAgICAgIC8vIENsb3NlIDwvcmVmZXJlbmNlPlxyXG4gICAgICAgIHN0YXRlLnB1c2goJ3JlZmVyZW5jZV9jbG9zZScsICdyZWZlcmVuY2UtY29tcG9uZW50JywgLTEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIElmIG5vIGF0dGFjaG1lbnQgZm91bmQsIGp1c3QgY3JlYXRlIGEgc3BhbiB0ZXh0IG5vZGVcclxuICAgICAgICBjb25zdCB0b2tlbiA9IHN0YXRlLnB1c2goJ3JlZmVyZW5jZV9vcGVuJywgJ3NwYW4nLCAxKTtcclxuICAgICAgICB0b2tlbi5hdHRycyA9IFtbJ2NsYXNzJywgJ3JlZmVyZW5jZSddXTtcclxuICAgICAgICBjb25zdCB0b2tlblRleHQgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApO1xyXG4gICAgICAgIHRva2VuVGV4dC5jb250ZW50ID0gbjtcclxuICAgICAgICBzdGF0ZS5wdXNoKCdyZWZlcmVuY2VfY2xvc2UnLCAnc3BhbicsIC0xKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRlLnBvcyA9IGVuZCArIDE7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG1kLmlubGluZS5ydWxlci5hZnRlcigndGV4dCcsICdyZWZlcmVuY2VpZnlfbnVtYmVyJywgcmVmZXJlbmNlaWZ5TnVtYmVyKTtcclxufVxyXG4iXX0=
|
|
@@ -6,11 +6,12 @@ export * from './initials-avatar/initials-avatar.component';
|
|
|
6
6
|
export * from './format-icon/format-icon.component';
|
|
7
7
|
export * from './types';
|
|
8
8
|
export * from './instance-manager.service';
|
|
9
|
-
export * from './prompt.component';
|
|
10
9
|
export * from './documents-upload/document-upload/document-upload.component';
|
|
11
10
|
export * from './documents-upload/document-list/document-list.component';
|
|
12
11
|
export * from './documents-upload/documents-upload.service';
|
|
13
12
|
export * from './documents-upload/documents-upload.model';
|
|
14
13
|
export * from './documents-upload/document-overview/document-overview.component';
|
|
15
14
|
export * from './services/notification.service';
|
|
16
|
-
|
|
15
|
+
export * from './services/custom-elements.service';
|
|
16
|
+
export * from './references/references.component';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxpQ0FBaUMsQ0FBQztBQUdoRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoYXQtc2V0dGluZ3MtdjMvY2hhdC1zZXR0aW5ncy12My5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGF0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NoYXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NhdmVkLWNoYXRzL3NhdmVkLWNoYXRzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWxzLWF2YXRhci9pbml0aWFscy1hdmF0YXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LWljb24vZm9ybWF0LWljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0YW5jZS1tYW5hZ2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LXVwbG9hZC9kb2N1bWVudC11cGxvYWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnRzLXVwbG9hZC9kb2N1bWVudC1saXN0L2RvY3VtZW50LWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZG9jdW1lbnRzLXVwbG9hZC9kb2N1bWVudHMtdXBsb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50cy11cGxvYWQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2N1bWVudHMtdXBsb2FkL2RvY3VtZW50LW92ZXJ2aWV3L2RvY3VtZW50LW92ZXJ2aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcblxuXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2N1c3RvbS1lbGVtZW50cy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7Il19
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { Component, ElementRef, inject, Input } from "@angular/core";
|
|
2
|
+
import { ChatReferenceComponent } from "../chat-reference/chat-reference.component";
|
|
3
|
+
import { CopyToClipboardDirective } from "../directives/copy-to-clipboard.directive";
|
|
4
|
+
import { TooltipDirective } from "../tooltip/tooltip.directive";
|
|
5
|
+
import { InlineImageReferenceComponent } from "./inline-image-reference";
|
|
6
|
+
import { InlinePageReferenceComponent } from "./inline-page-reference";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/*
|
|
9
|
+
* Web Element Reference Components
|
|
10
|
+
* Those components are used to display a reference (page, image, document) in the chat interface.
|
|
11
|
+
* It uses a tooltip to show additional information about the reference.
|
|
12
|
+
* The component emits custom events when the user interacts with it.
|
|
13
|
+
*/
|
|
14
|
+
export class ReferenceComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.ref = {};
|
|
17
|
+
}
|
|
18
|
+
ngOnChanges() {
|
|
19
|
+
if (!this.attachment)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
const obj = JSON.parse(decodeURIComponent(atob(this.attachment)));
|
|
23
|
+
this.ref = obj;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error("Error parsing attachment", error, this.attachment);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onOpenPreview(attachment, partId) {
|
|
30
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
31
|
+
dispatchEvent(new CustomEvent("onOpenPreview", {
|
|
32
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
onOpenDocument(attachment, partId) {
|
|
36
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
37
|
+
dispatchEvent(new CustomEvent("onOpenDocument", {
|
|
38
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReferenceComponent, isStandalone: true, selector: "reference", inputs: { id: "id", attachment: "attachment", rank: "rank" }, providers: [], usesOnChanges: true, ngImport: i0, template: `
|
|
43
|
+
<a
|
|
44
|
+
class="reference"
|
|
45
|
+
role="button"
|
|
46
|
+
[sqTooltip]="ref"
|
|
47
|
+
[sqTooltipTemplate]="tooltipTpl"
|
|
48
|
+
[hoverableTooltip]="true"
|
|
49
|
+
(click)="onOpenPreview(ref)"
|
|
50
|
+
>{{ id }}</a>
|
|
51
|
+
|
|
52
|
+
<!-- tooltip template -->
|
|
53
|
+
<ng-template #tooltipTpl>
|
|
54
|
+
<sq-chat-reference
|
|
55
|
+
class="expanded"
|
|
56
|
+
[attachment]="ref"
|
|
57
|
+
[reference]="ref.contextId"
|
|
58
|
+
[partId]="ref.$partId"
|
|
59
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
60
|
+
(openDocument)="onOpenDocument($event, $event.$partId)"
|
|
61
|
+
></sq-chat-reference>
|
|
62
|
+
</ng-template>
|
|
63
|
+
`, isInline: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "component", type: ChatReferenceComponent, selector: "sq-chat-reference", inputs: ["reference", "attachment", "partId", "referenceMap", "images", "pages"], outputs: ["openDocument", "openPreview"] }] }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReferenceComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: "reference", imports: [TooltipDirective, ChatReferenceComponent], providers: [], template: `
|
|
68
|
+
<a
|
|
69
|
+
class="reference"
|
|
70
|
+
role="button"
|
|
71
|
+
[sqTooltip]="ref"
|
|
72
|
+
[sqTooltipTemplate]="tooltipTpl"
|
|
73
|
+
[hoverableTooltip]="true"
|
|
74
|
+
(click)="onOpenPreview(ref)"
|
|
75
|
+
>{{ id }}</a>
|
|
76
|
+
|
|
77
|
+
<!-- tooltip template -->
|
|
78
|
+
<ng-template #tooltipTpl>
|
|
79
|
+
<sq-chat-reference
|
|
80
|
+
class="expanded"
|
|
81
|
+
[attachment]="ref"
|
|
82
|
+
[reference]="ref.contextId"
|
|
83
|
+
[partId]="ref.$partId"
|
|
84
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
85
|
+
(openDocument)="onOpenDocument($event, $event.$partId)"
|
|
86
|
+
></sq-chat-reference>
|
|
87
|
+
</ng-template>
|
|
88
|
+
`, standalone: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"] }]
|
|
89
|
+
}], propDecorators: { id: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], attachment: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], rank: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}] } });
|
|
96
|
+
export class PageReferenceComponent {
|
|
97
|
+
constructor() {
|
|
98
|
+
this.ref = {};
|
|
99
|
+
}
|
|
100
|
+
ngOnChanges() {
|
|
101
|
+
if (!this.attachment)
|
|
102
|
+
return;
|
|
103
|
+
try {
|
|
104
|
+
const obj = JSON.parse(decodeURIComponent(atob(this.attachment)));
|
|
105
|
+
this.ref = obj;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error("Error parsing attachment", error, this.attachment);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
onOpenPreview(attachment, partId) {
|
|
112
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
113
|
+
dispatchEvent(new CustomEvent("onOpenPreview", {
|
|
114
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
onOpenDocument(attachment, partId) {
|
|
118
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
119
|
+
dispatchEvent(new CustomEvent("onOpenDocument", {
|
|
120
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PageReferenceComponent, isStandalone: true, selector: "page-reference", inputs: { id: "id", attachment: "attachment" }, providers: [], usesOnChanges: true, ngImport: i0, template: `
|
|
125
|
+
<span
|
|
126
|
+
class="reference"
|
|
127
|
+
[sqTooltip]="{ obj: ref, id }"
|
|
128
|
+
[sqTooltipTemplate]="pageTooltipTpl"
|
|
129
|
+
[hoverableTooltip]="true"
|
|
130
|
+
>
|
|
131
|
+
Page-{{ id }}
|
|
132
|
+
</span>
|
|
133
|
+
<ng-template #pageTooltipTpl let-ref>
|
|
134
|
+
<InlinePageReference
|
|
135
|
+
style="max-width: 30vw;"
|
|
136
|
+
[id]="ref.id"
|
|
137
|
+
[ref]="ref.obj"
|
|
138
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
139
|
+
(openDocument)="onOpenPreview($event, $event.$partId)"
|
|
140
|
+
/>
|
|
141
|
+
</ng-template>
|
|
142
|
+
`, isInline: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "component", type: InlinePageReferenceComponent, selector: "InlinePageReference", inputs: ["id", "ref"], outputs: ["openPreview", "openDocument", "openModal"] }] }); }
|
|
143
|
+
}
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageReferenceComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: "page-reference", imports: [TooltipDirective, InlinePageReferenceComponent], providers: [], template: `
|
|
147
|
+
<span
|
|
148
|
+
class="reference"
|
|
149
|
+
[sqTooltip]="{ obj: ref, id }"
|
|
150
|
+
[sqTooltipTemplate]="pageTooltipTpl"
|
|
151
|
+
[hoverableTooltip]="true"
|
|
152
|
+
>
|
|
153
|
+
Page-{{ id }}
|
|
154
|
+
</span>
|
|
155
|
+
<ng-template #pageTooltipTpl let-ref>
|
|
156
|
+
<InlinePageReference
|
|
157
|
+
style="max-width: 30vw;"
|
|
158
|
+
[id]="ref.id"
|
|
159
|
+
[ref]="ref.obj"
|
|
160
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
161
|
+
(openDocument)="onOpenPreview($event, $event.$partId)"
|
|
162
|
+
/>
|
|
163
|
+
</ng-template>
|
|
164
|
+
`, standalone: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"] }]
|
|
165
|
+
}], propDecorators: { id: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], attachment: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}] } });
|
|
170
|
+
export class ImageReferenceComponent {
|
|
171
|
+
constructor() {
|
|
172
|
+
this.ref = {};
|
|
173
|
+
}
|
|
174
|
+
ngOnChanges() {
|
|
175
|
+
if (!this.attachment)
|
|
176
|
+
return;
|
|
177
|
+
try {
|
|
178
|
+
const obj = JSON.parse(decodeURIComponent(atob(this.attachment)));
|
|
179
|
+
this.ref = obj;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.error("Error parsing attachment", error, this.attachment);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
onOpenPreview(attachment, partId) {
|
|
186
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
187
|
+
dispatchEvent(new CustomEvent("onOpenPreview", {
|
|
188
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
onOpenDocument(attachment, partId) {
|
|
192
|
+
// Émettre un événement personnalisé pour le web element using the service
|
|
193
|
+
dispatchEvent(new CustomEvent("onOpenDocument", {
|
|
194
|
+
detail: { reference: attachment, partId: partId || this.id },
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImageReferenceComponent, isStandalone: true, selector: "image-reference", inputs: { id: "id", attachment: "attachment" }, providers: [], usesOnChanges: true, ngImport: i0, template: `
|
|
199
|
+
<span
|
|
200
|
+
class="reference"
|
|
201
|
+
[sqTooltip]="{ obj: ref, id }"
|
|
202
|
+
[sqTooltipTemplate]="imageTooltipTpl"
|
|
203
|
+
[hoverableTooltip]="true"
|
|
204
|
+
>
|
|
205
|
+
Img-{{ this.id }}
|
|
206
|
+
</span>
|
|
207
|
+
<ng-template #imageTooltipTpl let-ref>
|
|
208
|
+
<InlineImageReference
|
|
209
|
+
style="max-width: 30vw;"
|
|
210
|
+
[id]="ref.id"
|
|
211
|
+
[ref]="ref.obj"
|
|
212
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
213
|
+
(openDocument)="onOpenDocument($event, $event.$partId)"
|
|
214
|
+
/>
|
|
215
|
+
</ng-template>
|
|
216
|
+
`, isInline: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[sqTooltip]", inputs: ["sqTooltip", "sqTooltipData", "sqTooltipTemplate", "placement", "fallbackPlacements", "delay", "hoverableTooltip", "tooltipClass"] }, { kind: "component", type: InlineImageReferenceComponent, selector: "InlineImageReference", inputs: ["id", "ref"], outputs: ["openPreview", "openDocument", "openModal"] }] }); }
|
|
217
|
+
}
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageReferenceComponent, decorators: [{
|
|
219
|
+
type: Component,
|
|
220
|
+
args: [{ selector: "image-reference", imports: [TooltipDirective, InlineImageReferenceComponent], providers: [], template: `
|
|
221
|
+
<span
|
|
222
|
+
class="reference"
|
|
223
|
+
[sqTooltip]="{ obj: ref, id }"
|
|
224
|
+
[sqTooltipTemplate]="imageTooltipTpl"
|
|
225
|
+
[hoverableTooltip]="true"
|
|
226
|
+
>
|
|
227
|
+
Img-{{ this.id }}
|
|
228
|
+
</span>
|
|
229
|
+
<ng-template #imageTooltipTpl let-ref>
|
|
230
|
+
<InlineImageReference
|
|
231
|
+
style="max-width: 30vw;"
|
|
232
|
+
[id]="ref.id"
|
|
233
|
+
[ref]="ref.obj"
|
|
234
|
+
(openPreview)="onOpenPreview($event, $event.$partId)"
|
|
235
|
+
(openDocument)="onOpenDocument($event, $event.$partId)"
|
|
236
|
+
/>
|
|
237
|
+
</ng-template>
|
|
238
|
+
`, standalone: true, styles: ["div{border:1px solid #ccc;padding:8px;border-radius:4px;display:flex;gap:8px;flex-direction:column}\n"] }]
|
|
239
|
+
}], propDecorators: { id: [{
|
|
240
|
+
type: Input
|
|
241
|
+
}], attachment: [{
|
|
242
|
+
type: Input
|
|
243
|
+
}] } });
|
|
244
|
+
export class CodeBlockReferenceComponent {
|
|
245
|
+
constructor() {
|
|
246
|
+
this.langname = "";
|
|
247
|
+
this.el = inject(ElementRef);
|
|
248
|
+
this.encodeCode = '';
|
|
249
|
+
}
|
|
250
|
+
ngAfterViewInit() {
|
|
251
|
+
// get the code content
|
|
252
|
+
const codeEl = this.el.nativeElement.querySelector("code");
|
|
253
|
+
const code = codeEl ? codeEl.textContent : "";
|
|
254
|
+
this.encodeCode = encodeURIComponent(code);
|
|
255
|
+
}
|
|
256
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeBlockReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CodeBlockReferenceComponent, isStandalone: true, selector: "code-block-reference", inputs: { langname: "langname" }, ngImport: i0, template: `
|
|
258
|
+
<div class="card mb-2">
|
|
259
|
+
<div class="card-header d-flex justify-content-end align-items-center">
|
|
260
|
+
<span class="me-auto">{{ langname || 'code'}}</span>
|
|
261
|
+
<button class="btn btn-light btn-sm" copy-to-clipboard [text]="encodeCode">
|
|
262
|
+
<svg data-testid="geist-icon" height="16" stroke-linejoin="round" viewBox="0 0 16 16" width="16" aria-hidden="true" style="color: currentcolor;"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z" fill="currentColor"></path></svg>
|
|
263
|
+
</button>
|
|
264
|
+
</div>
|
|
265
|
+
<ng-content></ng-content>
|
|
266
|
+
</div>
|
|
267
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CopyToClipboardDirective, selector: "[copy-to-clipboard]", inputs: ["text"] }] }); }
|
|
268
|
+
}
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CodeBlockReferenceComponent, decorators: [{
|
|
270
|
+
type: Component,
|
|
271
|
+
args: [{
|
|
272
|
+
selector: "code-block-reference",
|
|
273
|
+
imports: [CopyToClipboardDirective],
|
|
274
|
+
template: `
|
|
275
|
+
<div class="card mb-2">
|
|
276
|
+
<div class="card-header d-flex justify-content-end align-items-center">
|
|
277
|
+
<span class="me-auto">{{ langname || 'code'}}</span>
|
|
278
|
+
<button class="btn btn-light btn-sm" copy-to-clipboard [text]="encodeCode">
|
|
279
|
+
<svg data-testid="geist-icon" height="16" stroke-linejoin="round" viewBox="0 0 16 16" width="16" aria-hidden="true" style="color: currentcolor;"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z" fill="currentColor"></path></svg>
|
|
280
|
+
</button>
|
|
281
|
+
</div>
|
|
282
|
+
<ng-content></ng-content>
|
|
283
|
+
</div>
|
|
284
|
+
`,
|
|
285
|
+
standalone: true,
|
|
286
|
+
}]
|
|
287
|
+
}], propDecorators: { langname: [{
|
|
288
|
+
type: Input
|
|
289
|
+
}] } });
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9yZWZlcmVuY2VzL3JlZmVyZW5jZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXZFOzs7OztHQUtHO0FBaUNILE1BQU0sT0FBTyxrQkFBa0I7SUEvQi9CO1FBcUNFLFFBQUcsR0FBeUIsRUFBMkIsQ0FBQztLQTZCekQ7SUEzQkMsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFpQyxF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RSxZQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsY0FDVyxJQUFJOzhCQU9QLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLOztBQWlEUixNQUFNLE9BQU8sMkJBQTJCO0lBaEJ4QztRQWlCVyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztLQVFqQjtJQU5DLGVBQWU7UUFDYix1QkFBdUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0FYVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixrSEFiNUI7Ozs7Ozs7Ozs7R0FVVCw0REFYUyx3QkFBd0I7OzRGQWN2QiwyQkFBMkI7a0JBaEJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7R0FVVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ2hhdFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jaGF0LXJlZmVyZW5jZS9jaGF0LXJlZmVyZW5jZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQ29weVRvQ2xpcGJvYXJkRGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RpcmVjdGl2ZXMvY29weS10by1jbGlwYm9hcmQuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tIFwiLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBDaGF0Q29udGV4dEF0dGFjaG1lbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgfSBmcm9tIFwiLi4vdHlwZXMvbWVzc2FnZS1yZWZlcmVuY2UudHlwZXNcIjtcclxuaW1wb3J0IHsgSW5saW5lSW1hZ2VSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tIFwiLi9pbmxpbmUtaW1hZ2UtcmVmZXJlbmNlXCI7XHJcbmltcG9ydCB7IElubGluZVBhZ2VSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tIFwiLi9pbmxpbmUtcGFnZS1yZWZlcmVuY2VcIjtcclxuXHJcbi8qXHJcbiAqIFdlYiBFbGVtZW50IFJlZmVyZW5jZSBDb21wb25lbnRzXHJcbiAqIFRob3NlIGNvbXBvbmVudHMgYXJlIHVzZWQgdG8gZGlzcGxheSBhIHJlZmVyZW5jZSAocGFnZSwgaW1hZ2UsIGRvY3VtZW50KSBpbiB0aGUgY2hhdCBpbnRlcmZhY2UuXHJcbiAqIEl0IHVzZXMgYSB0b29sdGlwIHRvIHNob3cgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVmZXJlbmNlLlxyXG4gKiBUaGUgY29tcG9uZW50IGVtaXRzIGN1c3RvbSBldmVudHMgd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBpdC5cclxuICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJyZWZlcmVuY2VcIixcclxuICBpbXBvcnRzOiBbVG9vbHRpcERpcmVjdGl2ZSwgQ2hhdFJlZmVyZW5jZUNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxhXHJcbiAgICBjbGFzcz1cInJlZmVyZW5jZVwiXHJcbiAgICByb2xlPVwiYnV0dG9uXCJcclxuICAgIFtzcVRvb2x0aXBdPVwicmVmXCJcclxuICAgIFtzcVRvb2x0aXBUZW1wbGF0ZV09XCJ0b29sdGlwVHBsXCJcclxuICAgIFtob3ZlcmFibGVUb29sdGlwXT1cInRydWVcIlxyXG4gICAgKGNsaWNrKT1cIm9uT3BlblByZXZpZXcocmVmKVwiXHJcbiAgICA+e3sgaWQgfX08L2E+XHJcblxyXG4gICAgPCEtLSB0b29sdGlwIHRlbXBsYXRlIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0b29sdGlwVHBsPlxyXG4gICAgICA8c3EtY2hhdC1yZWZlcmVuY2VcclxuICAgICAgICBjbGFzcz1cImV4cGFuZGVkXCJcclxuICAgICAgICBbYXR0YWNobWVudF09XCJyZWZcIlxyXG4gICAgICAgIFtyZWZlcmVuY2VdPVwicmVmLmNvbnRleHRJZFwiXHJcbiAgICAgICAgW3BhcnRJZF09XCJyZWYuJHBhcnRJZFwiXHJcbiAgICAgICAgKG9wZW5QcmV2aWV3KT1cIm9uT3BlblByZXZpZXcoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxyXG4gICAgICAgIChvcGVuRG9jdW1lbnQpPVwib25PcGVuRG9jdW1lbnQoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxyXG4gICAgICA+PC9zcS1jaGF0LXJlZmVyZW5jZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHN0eWxlczogYFxyXG4gIGRpdiB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweDtib3JkZXItcmFkaXVzOiA0cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgLy8gamUgc3VpcyBvYmxpZ8OpIGQndXRpbGlzZXIgbGVzIGTDqWNvcmF0ZXVycyBASW5wdXQoKSBjYXIgQW5ndWxhciBuZSBzdXBwb3J0ZSBwYXMgbGVzIGlucHV0cyAoc2lnbmFsKSBkYW5zIGxlcyB3ZWIgZWxlbWVudHMgZW4gQW5ndWxhciB2MThcclxuICBASW5wdXQoKSBpZDtcclxuICBASW5wdXQoKSBhdHRhY2htZW50O1xyXG4gIEBJbnB1dCgpIHJhbms6IG51bWJlcjtcclxuXHJcbiAgcmVmOkNoYXRDb250ZXh0QXR0YWNobWVudCA9IHt9IGFzIENoYXRDb250ZXh0QXR0YWNobWVudDtcclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuYXR0YWNobWVudCkgcmV0dXJuO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoYXRvYih0aGlzLmF0dGFjaG1lbnQpKSk7XHJcbiAgICAgIHRoaXMucmVmID0gb2JqO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHBhcnNpbmcgYXR0YWNobWVudFwiLCBlcnJvciwgdGhpcy5hdHRhY2htZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3BlblByZXZpZXcoYXR0YWNobWVudDogQ2hhdENvbnRleHRBdHRhY2htZW50LCBwYXJ0SWQ/OiBudW1iZXIpIHtcclxuICAgIC8vIMOJbWV0dHJlIHVuIMOpdsOpbmVtZW50IHBlcnNvbm5hbGlzw6kgcG91ciBsZSB3ZWIgZWxlbWVudCB1c2luZyB0aGUgc2VydmljZVxyXG4gICAgZGlzcGF0Y2hFdmVudChcclxuICAgICAgbmV3IEN1c3RvbUV2ZW50KFwib25PcGVuUHJldmlld1wiLCB7XHJcbiAgICAgICAgZGV0YWlsOiB7IHJlZmVyZW5jZTogYXR0YWNobWVudCwgcGFydElkOiBwYXJ0SWQgfHwgdGhpcy5pZCB9LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uT3BlbkRvY3VtZW50KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XHJcbiAgICAvLyDDiW1ldHRyZSB1biDDqXbDqW5lbWVudCBwZXJzb25uYWxpc8OpIHBvdXIgbGUgd2ViIGVsZW1lbnQgdXNpbmcgdGhlIHNlcnZpY2VcclxuICAgIGRpc3BhdGNoRXZlbnQoXHJcbiAgICAgIG5ldyBDdXN0b21FdmVudChcIm9uT3BlbkRvY3VtZW50XCIsIHtcclxuICAgICAgICBkZXRhaWw6IHsgcmVmZXJlbmNlOiBhdHRhY2htZW50LCBwYXJ0SWQ6IHBhcnRJZCB8fCB0aGlzLmlkIH0sXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicGFnZS1yZWZlcmVuY2VcIixcclxuICBpbXBvcnRzOiBbVG9vbHRpcERpcmVjdGl2ZSwgSW5saW5lUGFnZVJlZmVyZW5jZUNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNwYW5cclxuICAgICAgY2xhc3M9XCJyZWZlcmVuY2VcIlxyXG4gICAgICBbc3FUb29sdGlwXT1cInsgb2JqOiByZWYsIGlkIH1cIlxyXG4gICAgICBbc3FUb29sdGlwVGVtcGxhdGVdPVwicGFnZVRvb2x0aXBUcGxcIlxyXG4gICAgICBbaG92ZXJhYmxlVG9vbHRpcF09XCJ0cnVlXCJcclxuICAgID5cclxuICAgICAgUGFnZS17eyBpZCB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG5nLXRlbXBsYXRlICNwYWdlVG9vbHRpcFRwbCBsZXQtcmVmPlxyXG4gICAgICA8SW5saW5lUGFnZVJlZmVyZW5jZVxyXG4gICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAzMHZ3O1wiXHJcbiAgICAgICAgW2lkXT1cInJlZi5pZFwiXHJcbiAgICAgICAgW3JlZl09XCJyZWYub2JqXCJcclxuICAgICAgICAob3BlblByZXZpZXcpPVwib25PcGVuUHJldmlldygkZXZlbnQsICRldmVudC4kcGFydElkKVwiXHJcbiAgICAgICAgKG9wZW5Eb2N1bWVudCk9XCJvbk9wZW5QcmV2aWV3KCRldmVudCwgJGV2ZW50LiRwYXJ0SWQpXCJcclxuICAgICAgLz5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgYCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHN0eWxlczogYFxyXG4gIGRpdiB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweDtib3JkZXItcmFkaXVzOiA0cHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIC8vIGplIHN1aXMgb2JsaWfDqSBkJ3V0aWxpc2VyIGxlcyBkw6ljb3JhdGV1cnMgQElucHV0KCkgY2FyIEFuZ3VsYXIgbmUgc3VwcG9ydGUgcGFzIGxlcyBpbnB1dHMgKHNpZ25hbCkgZGFucyBsZXMgd2ViIGVsZW1lbnRzIGVuIEFuZ3VsYXIgdjE4XHJcbiAgQElucHV0KCkgaWQ7XHJcbiAgQElucHV0KCkgYXR0YWNobWVudDtcclxuXHJcbiAgcmVmOiBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgPSB7fSBhcyBNZXNzYWdlSW1hZ2VSZWZlcmVuY2U7XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmF0dGFjaG1lbnQpIHJldHVybjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGF0b2IodGhpcy5hdHRhY2htZW50KSkpO1xyXG4gICAgICB0aGlzLnJlZiA9IG9iajtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGF0dGFjaG1lbnRcIiwgZXJyb3IsIHRoaXMuYXR0YWNobWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9wZW5QcmV2aWV3KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XHJcbiAgICAvLyDDiW1ldHRyZSB1biDDqXbDqW5lbWVudCBwZXJzb25uYWxpc8OpIHBvdXIgbGUgd2ViIGVsZW1lbnQgdXNpbmcgdGhlIHNlcnZpY2VcclxuICAgIGRpc3BhdGNoRXZlbnQoXHJcbiAgICAgIG5ldyBDdXN0b21FdmVudChcIm9uT3BlblByZXZpZXdcIiwge1xyXG4gICAgICAgIGRldGFpbDogeyByZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZDogcGFydElkIHx8IHRoaXMuaWQgfSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Eb2N1bWVudChhdHRhY2htZW50OiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcikge1xyXG4gICAgLy8gw4ltZXR0cmUgdW4gw6l2w6luZW1lbnQgcGVyc29ubmFsaXPDqSBwb3VyIGxlIHdlYiBlbGVtZW50IHVzaW5nIHRoZSBzZXJ2aWNlXHJcbiAgICBkaXNwYXRjaEV2ZW50KFxyXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJvbk9wZW5Eb2N1bWVudFwiLCB7XHJcbiAgICAgICAgZGV0YWlsOiB7IHJlZmVyZW5jZTogYXR0YWNobWVudCwgcGFydElkOiBwYXJ0SWQgfHwgdGhpcy5pZCB9LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImltYWdlLXJlZmVyZW5jZVwiLFxyXG4gIGltcG9ydHM6IFtUb29sdGlwRGlyZWN0aXZlLCBJbmxpbmVJbWFnZVJlZmVyZW5jZUNvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHNwYW5cclxuICAgICAgY2xhc3M9XCJyZWZlcmVuY2VcIlxyXG4gICAgICBbc3FUb29sdGlwXT1cInsgb2JqOiByZWYsIGlkIH1cIlxyXG4gICAgICBbc3FUb29sdGlwVGVtcGxhdGVdPVwiaW1hZ2VUb29sdGlwVHBsXCJcclxuICAgICAgW2hvdmVyYWJsZVRvb2x0aXBdPVwidHJ1ZVwiXHJcbiAgICA+XHJcbiAgICAgIEltZy17eyB0aGlzLmlkIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bmctdGVtcGxhdGUgI2ltYWdlVG9vbHRpcFRwbCBsZXQtcmVmPlxyXG4gICAgICA8SW5saW5lSW1hZ2VSZWZlcmVuY2VcclxuICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMzB2dztcIlxyXG4gICAgICAgIFtpZF09XCJyZWYuaWRcIlxyXG4gICAgICAgIFtyZWZdPVwicmVmLm9ialwiXHJcbiAgICAgICAgKG9wZW5QcmV2aWV3KT1cIm9uT3BlblByZXZpZXcoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxyXG4gICAgICAgIChvcGVuRG9jdW1lbnQpPVwib25PcGVuRG9jdW1lbnQoJGV2ZW50LCAkZXZlbnQuJHBhcnRJZClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc3R5bGVzOiBgXHJcbiAgZGl2IHsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogOHB4O2JvcmRlci1yYWRpdXM6IDRweDsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH1cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1hZ2VSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIC8vIGplIHN1aXMgb2JsaWfDqSBkJ3V0aWxpc2VyIGxlcyBkw6ljb3JhdGV1cnMgQElucHV0KCkgY2FyIEFuZ3VsYXIgbmUgc3VwcG9ydGUgcGFzIGxlcyBpbnB1dHMgKHNpZ25hbCkgZGFucyBsZXMgd2ViIGVsZW1lbnRzIGVuIEFuZ3VsYXIgdjE4XHJcbiAgQElucHV0KCkgaWQ7XHJcbiAgQElucHV0KCkgYXR0YWNobWVudDtcclxuXHJcbiAgcmVmOiBNZXNzYWdlSW1hZ2VSZWZlcmVuY2UgPSB7fSBhcyBNZXNzYWdlSW1hZ2VSZWZlcmVuY2U7XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmF0dGFjaG1lbnQpIHJldHVybjtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGF0b2IodGhpcy5hdHRhY2htZW50KSkpO1xyXG4gICAgICB0aGlzLnJlZiA9IG9iajtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGF0dGFjaG1lbnRcIiwgZXJyb3IsIHRoaXMuYXR0YWNobWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9wZW5QcmV2aWV3KGF0dGFjaG1lbnQ6IENoYXRDb250ZXh0QXR0YWNobWVudCwgcGFydElkPzogbnVtYmVyKSB7XHJcbiAgICAvLyDDiW1ldHRyZSB1biDDqXbDqW5lbWVudCBwZXJzb25uYWxpc8OpIHBvdXIgbGUgd2ViIGVsZW1lbnQgdXNpbmcgdGhlIHNlcnZpY2VcclxuICAgIGRpc3BhdGNoRXZlbnQoXHJcbiAgICAgIG5ldyBDdXN0b21FdmVudChcIm9uT3BlblByZXZpZXdcIiwge1xyXG4gICAgICAgIGRldGFpbDogeyByZWZlcmVuY2U6IGF0dGFjaG1lbnQsIHBhcnRJZDogcGFydElkIHx8IHRoaXMuaWQgfSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Eb2N1bWVudChhdHRhY2htZW50OiBDaGF0Q29udGV4dEF0dGFjaG1lbnQsIHBhcnRJZD86IG51bWJlcikge1xyXG4gICAgLy8gw4ltZXR0cmUgdW4gw6l2w6luZW1lbnQgcGVyc29ubmFsaXPDqSBwb3VyIGxlIHdlYiBlbGVtZW50IHVzaW5nIHRoZSBzZXJ2aWNlXHJcbiAgICBkaXNwYXRjaEV2ZW50KFxyXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJvbk9wZW5Eb2N1bWVudFwiLCB7XHJcbiAgICAgICAgZGV0YWlsOiB7IHJlZmVyZW5jZTogYXR0YWNobWVudCwgcGFydElkOiBwYXJ0SWQgfHwgdGhpcy5pZCB9LFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvZGUtYmxvY2stcmVmZXJlbmNlXCIsXHJcbiAgaW1wb3J0czogW0NvcHlUb0NsaXBib2FyZERpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWUtYXV0b1wiPnt7IGxhbmduYW1lIHx8ICdjb2RlJ319PC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIGNvcHktdG8tY2xpcGJvYXJkIFt0ZXh0XT1cImVuY29kZUNvZGVcIj5cclxuICAgICAgICAgIDxzdmcgZGF0YS10ZXN0aWQ9XCJnZWlzdC1pY29uXCIgaGVpZ2h0PVwiMTZcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB3aWR0aD1cIjE2XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJjb2xvcjogY3VycmVudGNvbG9yO1wiPjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yLjc1IDAuNUMxLjc4MzUgMC41IDEgMS4yODM1IDEgMi4yNVY5Ljc1QzEgMTAuNzE2NSAxLjc4MzUgMTEuNSAyLjc1IDExLjVIMy43NUg0LjVWMTBIMy43NUgyLjc1QzIuNjExOTMgMTAgMi41IDkuODg4MDcgMi41IDkuNzVWMi4yNUMyLjUgMi4xMTE5MyAyLjYxMTkzIDIgMi43NSAySDguMjVDOC4zODgwNyAyIDguNSAyLjExMTkzIDguNSAyLjI1VjNIMTBWMi4yNUMxMCAxLjI4MzUgOS4yMTY1IDAuNSA4LjI1IDAuNUgyLjc1Wk03Ljc1IDQuNUM2Ljc4MzUgNC41IDYgNS4yODM1IDYgNi4yNVYxMy43NUM2IDE0LjcxNjUgNi43ODM1IDE1LjUgNy43NSAxNS41SDEzLjI1QzE0LjIxNjUgMTUuNSAxNSAxNC43MTY1IDE1IDEzLjc1VjYuMjVDMTUgNS4yODM1IDE0LjIxNjUgNC41IDEzLjI1IDQuNUg3Ljc1Wk03LjUgNi4yNUM3LjUgNi4xMTE5MyA3LjYxMTkzIDYgNy43NSA2SDEzLjI1QzEzLjM4ODEgNiAxMy41IDYuMTExOTMgMTMuNSA2LjI1VjEzLjc1QzEzLjUgMTMuODg4MSAxMy4zODgxIDE0IDEzLjI1IDE0SDcuNzVDNy42MTE5MyAxNCA3LjUgMTMuODg4MSA3LjUgMTMuNzVWNi4yNVpcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPjwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29kZUJsb2NrUmVmZXJlbmNlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBsYW5nbmFtZSA9IFwiXCI7XHJcblxyXG4gIGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIGVuY29kZUNvZGUgPSAnJztcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgLy8gZ2V0IHRoZSBjb2RlIGNvbnRlbnRcclxuICAgIGNvbnN0IGNvZGVFbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiY29kZVwiKTtcclxuICAgIGNvbnN0IGNvZGUgPSBjb2RlRWwgPyBjb2RlRWwudGV4dENvbnRlbnQgOiBcIlwiO1xyXG4gICAgdGhpcy5lbmNvZGVDb2RlID0gZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|