@diplodoc/transform 4.66.0 → 4.68.0
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/README.md +56 -3
- package/dist/css/_yfm-only.css +3 -1
- package/dist/css/_yfm-only.css.map +3 -3
- package/dist/css/_yfm-only.min.css +1 -1
- package/dist/css/_yfm-only.min.css.map +3 -3
- package/dist/css/base.css +18 -0
- package/dist/css/base.css.map +3 -3
- package/dist/css/base.min.css +1 -1
- package/dist/css/base.min.css.map +3 -3
- package/dist/css/print.css.map +3 -3
- package/dist/css/yfm.css +21 -1
- package/dist/css/yfm.css.map +3 -3
- package/dist/css/yfm.min.css +1 -1
- package/dist/css/yfm.min.css.map +3 -3
- package/dist/js/base.js +2 -22
- package/dist/js/base.js.map +1 -1
- package/dist/js/base.min.js +3 -3
- package/dist/js/base.min.js.map +2 -2
- package/dist/js/yfm.js +27 -57
- package/dist/js/yfm.js.map +3 -3
- package/dist/js/yfm.min.js +3 -3
- package/dist/js/yfm.min.js.map +3 -3
- package/dist/scss/_common.scss +26 -4
- package/dist/scss/_note.scss +10 -8
- package/dist/scss/print/code.scss +1 -1
- package/dist/scss/print/common.scss +3 -2
- package/dist/scss/print/table.scss +3 -2
- package/dist/scss/print/term.scss +1 -1
- package/lib/frontmatter.d.ts +1 -1
- package/lib/frontmatter.js.map +1 -1
- package/lib/getObject.js.map +1 -1
- package/lib/headings.js.map +1 -1
- package/lib/highlight.js +1 -1
- package/lib/highlight.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/liquid/conditions.js.map +1 -1
- package/lib/liquid/cycles.js +1 -1
- package/lib/liquid/cycles.js.map +1 -1
- package/lib/liquid/evaluation.js +21 -11
- package/lib/liquid/evaluation.js.map +1 -1
- package/lib/liquid/filters.js +3 -4
- package/lib/liquid/filters.js.map +1 -1
- package/lib/liquid/index.js +3 -4
- package/lib/liquid/index.js.map +1 -1
- package/lib/liquid/legacyConditions.js.map +1 -1
- package/lib/liquid/lexical.js +5 -5
- package/lib/liquid/lexical.js.map +1 -1
- package/lib/liquid/services/argv.d.ts +1 -1
- package/lib/liquid/services/argv.js +3 -4
- package/lib/liquid/services/argv.js.map +1 -1
- package/lib/liquid/sourceMap.d.ts +2 -2
- package/lib/liquid/sourceMap.js +3 -4
- package/lib/liquid/sourceMap.js.map +1 -1
- package/lib/liquid/substitutions.js.map +1 -1
- package/lib/liquid/utils.d.ts +1 -1
- package/lib/liquid/utils.js +2 -3
- package/lib/liquid/utils.js.map +1 -1
- package/lib/log.d.ts +1 -1
- package/lib/log.js +1 -1
- package/lib/log.js.map +1 -1
- package/lib/md.d.ts +5 -5
- package/lib/md.js +31 -22
- package/lib/md.js.map +1 -1
- package/lib/plugins/anchors/collect.js.map +1 -1
- package/lib/plugins/anchors/index.js.map +1 -1
- package/lib/plugins/block-anchor/block-anchor.js +3 -3
- package/lib/plugins/block-anchor/block-anchor.js.map +1 -1
- package/lib/plugins/block-anchor/index.js +1 -1
- package/lib/plugins/block-anchor/index.js.map +1 -1
- package/lib/plugins/changelog/collect.d.ts +1 -1
- package/lib/plugins/changelog/collect.js.map +1 -1
- package/lib/plugins/changelog/index.js +6 -3
- package/lib/plugins/changelog/index.js.map +1 -1
- package/lib/plugins/checkbox/checkbox.d.ts +1 -1
- package/lib/plugins/checkbox/checkbox.js.map +1 -1
- package/lib/plugins/code.js.map +1 -1
- package/lib/plugins/cut.d.ts +1 -1
- package/lib/plugins/deflist.d.ts +1 -1
- package/lib/plugins/images/collect.d.ts +1 -1
- package/lib/plugins/images/collect.js.map +1 -1
- package/lib/plugins/images/index.d.ts +1 -1
- package/lib/plugins/images/index.js +16 -7
- package/lib/plugins/images/index.js.map +1 -1
- package/lib/plugins/imsize/const.js +1 -1
- package/lib/plugins/imsize/const.js.map +1 -1
- package/lib/plugins/imsize/helpers.js +1 -2
- package/lib/plugins/imsize/helpers.js.map +1 -1
- package/lib/plugins/imsize/plugin.d.ts +1 -1
- package/lib/plugins/imsize/plugin.js.map +1 -1
- package/lib/plugins/includes/collect.js +11 -3
- package/lib/plugins/includes/collect.js.map +1 -1
- package/lib/plugins/includes/index.d.ts +1 -1
- package/lib/plugins/includes/index.js +5 -3
- package/lib/plugins/includes/index.js.map +1 -1
- package/lib/plugins/includes/types.d.ts +1 -1
- package/lib/plugins/links/collect.d.ts +1 -1
- package/lib/plugins/links/collect.js +1 -1
- package/lib/plugins/links/collect.js.map +1 -1
- package/lib/plugins/links/index.d.ts +1 -1
- package/lib/plugins/links/index.js +35 -12
- package/lib/plugins/links/index.js.map +1 -1
- package/lib/plugins/meta.js.map +1 -1
- package/lib/plugins/monospace.js +1 -1
- package/lib/plugins/monospace.js.map +1 -1
- package/lib/plugins/notes/index.d.ts +1 -1
- package/lib/plugins/notes/index.js +1 -1
- package/lib/plugins/notes/index.js.map +1 -1
- package/lib/plugins/ol-attr-conversion.js.map +1 -1
- package/lib/plugins/sup.d.ts +1 -1
- package/lib/plugins/table/index.js +7 -18
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/types.d.ts +1 -1
- package/lib/plugins/tabs.d.ts +3 -3
- package/lib/plugins/term/index.js.map +1 -1
- package/lib/plugins/term/termDefinitions.js +1 -2
- package/lib/plugins/term/termDefinitions.js.map +1 -1
- package/lib/plugins/utils.d.ts +1 -1
- package/lib/plugins/utils.js +3 -3
- package/lib/plugins/utils.js.map +1 -1
- package/lib/plugins/video/const.js +1 -1
- package/lib/plugins/video/const.js.map +1 -1
- package/lib/plugins/video/index.js +1 -1
- package/lib/plugins/video/index.js.map +1 -1
- package/lib/plugins/video/parsers.js +9 -10
- package/lib/plugins/video/parsers.js.map +1 -1
- package/lib/plugins/video/types.d.ts +8 -8
- package/lib/plugins/video/utils.js.map +1 -1
- package/lib/plugins.d.ts +1 -1
- package/lib/preprocessors/included/index.js.map +1 -1
- package/lib/preprocessors/index.d.ts +1 -1
- package/lib/preprocessors/index.js +1 -2
- package/lib/preprocessors/index.js.map +1 -1
- package/lib/sanitize.d.ts +1 -1
- package/lib/sanitize.js +54 -26
- package/lib/sanitize.js.map +1 -1
- package/lib/title.js.map +1 -1
- package/lib/typings.d.ts +10 -10
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +16 -13
- package/lib/utils.js.map +1 -1
- package/lib/utilsFS.d.ts +2 -1
- package/lib/utilsFS.js +45 -15
- package/lib/utilsFS.js.map +1 -1
- package/lib/yfmlint/index.js +4 -1
- package/lib/yfmlint/index.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm001.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm002.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm003.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm004.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm005.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm006.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm007.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm008.js.map +1 -1
- package/lib/yfmlint/markdownlint-custom-rule/yfm009.js.map +1 -1
- package/lib/yfmlint/utils.js +6 -6
- package/lib/yfmlint/utils.js.map +1 -1
- package/lib/yfmlint/yfmlint.js +60 -60
- package/lib/yfmlint/yfmlint.js.map +1 -1
- package/package.json +13 -13
- package/src/scss/_common.scss +26 -4
- package/src/scss/_note.scss +10 -8
- package/src/scss/print/code.scss +1 -1
- package/src/scss/print/common.scss +3 -2
- package/src/scss/print/table.scss +3 -2
- package/src/scss/print/term.scss +1 -1
- package/src/transform/highlight.ts +1 -1
- package/src/transform/liquid/evaluation.ts +2 -2
- package/src/transform/plugins/block-anchor/index.ts +1 -1
- package/src/transform/plugins/changelog/index.ts +1 -1
- package/src/transform/plugins/images/index.ts +8 -6
- package/src/transform/plugins/includes/collect.ts +1 -1
- package/src/transform/plugins/includes/index.ts +5 -3
- package/src/transform/plugins/links/index.ts +7 -3
- package/src/transform/plugins/notes/index.ts +1 -1
- package/src/transform/plugins/video/types.ts +1 -1
- package/src/transform/sanitize.ts +1 -1
- package/src/transform/utils.ts +2 -2
- package/src/transform/utilsFS.ts +33 -6
- package/src/transform/yfmlint/index.ts +5 -1
- package/src/transform/yfmlint/utils.ts +4 -4
package/dist/js/base.js
CHANGED
|
@@ -25,26 +25,6 @@
|
|
|
25
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
|
-
var __async = (__this, __arguments, generator) => {
|
|
29
|
-
return new Promise((resolve, reject) => {
|
|
30
|
-
var fulfilled = (value) => {
|
|
31
|
-
try {
|
|
32
|
-
step(generator.next(value));
|
|
33
|
-
} catch (e) {
|
|
34
|
-
reject(e);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
var rejected = (value) => {
|
|
38
|
-
try {
|
|
39
|
-
step(generator.throw(value));
|
|
40
|
-
} catch (e) {
|
|
41
|
-
reject(e);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
45
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
28
|
|
|
49
29
|
// node_modules/get-root-node-polyfill/index.js
|
|
50
30
|
var require_get_root_node_polyfill = __commonJS({
|
|
@@ -105,7 +85,7 @@
|
|
|
105
85
|
const target = getEventTarget(event);
|
|
106
86
|
return !target || !target.matches;
|
|
107
87
|
};
|
|
108
|
-
var copyToClipboard = (text) =>
|
|
88
|
+
var copyToClipboard = async (text) => {
|
|
109
89
|
if (!text) {
|
|
110
90
|
return;
|
|
111
91
|
}
|
|
@@ -119,7 +99,7 @@
|
|
|
119
99
|
textarea.select();
|
|
120
100
|
document.execCommand("copy");
|
|
121
101
|
document.body.removeChild(textarea);
|
|
122
|
-
}
|
|
102
|
+
};
|
|
123
103
|
|
|
124
104
|
// src/js/code.ts
|
|
125
105
|
var BUTTON_SELECTOR = ".yfm-clipboard-button";
|
package/dist/js/base.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../node_modules/get-root-node-polyfill/index.js", "../../src/js/polyfill.js", "../../src/js/utils.ts", "../../src/js/code.ts", "../../src/js/anchor.ts", "../../src/js/inline-code/constant.ts", "../../src/js/term/utils.ts", "../../src/js/inline-code/utils.ts", "../../src/js/inline-code/index.ts"],
|
|
4
4
|
"sourcesContent": ["'use strict';\n\n// Node getRootNode(optional GetRootNodeOptions options);\n\n/**\n * Returns the context object\u2019s shadow-including root if options\u2019s composed is true.\n * Returns the context object\u2019s root otherwise.\n *\n * The root of an object is itself, if its parent is null, or else it is the root of its parent.\n *\n * The shadow-including root of an object is its root\u2019s host\u2019s shadow-including root,\n * if the object\u2019s root is a shadow root, and its root otherwise.\n *\n * https://dom.spec.whatwg.org/#dom-node-getrootnode\n *\n * @memberof Node.prototype\n * @param {!Object} [opt = {}] - Options.\n * @param {!boolean} [opt.composed] - See above description.\n * @returns {!Node} The root node.\n */\nfunction getRootNode(opt) {\n var composed = typeof opt === 'object' && Boolean(opt.composed);\n\n return composed ? getShadowIncludingRoot(this) : getRoot(this);\n}\n\nfunction getShadowIncludingRoot(node) {\n var root = getRoot(node);\n\n if (isShadowRoot(root)) {\n return getShadowIncludingRoot(root.host);\n }\n\n return root;\n}\n\nfunction getRoot(node) {\n if (node.parentNode != null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\nfunction isShadowRoot(node) {\n return node.nodeName === '#document-fragment' && node.constructor.name === 'ShadowRoot';\n}\n\nif (typeof module === 'object' && module.exports) {\n module.exports = getRootNode;\n}\n", "import getRootNode from 'get-root-node-polyfill';\n\nif (typeof document !== 'undefined') {\n // matches polyfill for old edge\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function matches(selector) {\n const rootNode = e.getRootNode ? e.getRootNode() : getRootNode.call(e);\n const matches = rootNode.querySelectorAll(selector);\n const th = this;\n return Array.prototype.some.call(matches, (e) => {\n return e === th;\n });\n };\n }\n // eslint-disable-next-line no-undef\n })(Element.prototype);\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const copyToClipboard = async (text: string) => {\n if (!text) {\n return;\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n }\n\n const textarea = document.createElement('textarea');\n textarea.setAttribute('style', 'position: absolute; left: 1000%');\n textarea.textContent = text;\n document.body.append(textarea);\n\n textarea.select();\n document.execCommand('copy');\n\n document.body.removeChild(textarea);\n};\n", "import {copyToClipboard, getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\n\n // @ts-expect-error\n const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);\n\n if (!icon) {\n return;\n }\n\n icon.beginElement();\n}\n\nfunction buttonCopyFn(target: HTMLElement) {\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n\n if (!code) {\n return;\n }\n\n // Get all text nodes and filter out line numbers\n const textContent = Array.from(code.childNodes)\n .filter((node) => {\n // Skip line number spans\n if (node instanceof HTMLElement && node.classList.contains('yfm-line-number')) {\n return false;\n }\n return true;\n })\n .map((node) => node.textContent)\n .join('');\n\n copyToClipboard(textContent.trim()).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n const button = target.matches(BUTTON_SELECTOR);\n\n if (isCustom(event) || !button) {\n return;\n }\n\n buttonCopyFn(target);\n });\n}\n", "import {copyToClipboard, getEventTarget, isCustom} from './utils';\n\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(ANCHOR_BUTTON_SELECTOR)) {\n return;\n }\n\n const href = target.getAttribute('data-href') || '';\n const link = new URL(href, window.location.href).toString();\n\n copyToClipboard(link);\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const INLINE_CODE = '.yfm-clipboard-inline-code';\n\nexport const INLINE_CODE_ID = 'tooltip_inline_clipboard_dialog';\n\nexport const INLINE_CODE_CLASS = 'yfm inline_code_tooltip';\n\nexport const OPEN_CLASS = 'open';\n\nexport const LANG_TOKEN: Record<Lang, string> = {\n ru: '\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E',\n en: 'Copied',\n ar: '\u062A\u0645 \u0627\u0644\u0646\u0633\u062E',\n cs: 'Zkop\u00EDrov\u00E1no',\n fr: 'Copi\u00E9',\n es: 'Copiado',\n he: '\u05D4\u05D5\u05E2\u05EA\u05E7',\n bg: '\u041A\u043E\u043F\u0438\u0440\u0430\u043D\u043E',\n et: 'Kopeeritud',\n el: '\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03AC\u03C6\u03B7\u03BA\u03B5',\n pt: 'Copiado',\n zh: '\u5DF2\u590D\u5236',\n 'zh-tw': '\u5DF2\u8907\u88FD',\n kk: '\u041A\u04E9\u0448\u0456\u0440\u0456\u043B\u0434\u0456',\n tr: 'Kopyaland\u0131',\n uz: 'Nusxalandi',\n};\n", "export const Selector = {\n TITLE: '.yfm .yfm-term_title',\n CONTENT: '.yfm .yfm-term_dfn',\n};\nexport const openClass = 'open';\nexport const openDefinitionClass = Selector.CONTENT.replace(/\\./g, '') + ' ' + openClass;\nlet isListenerNeeded = true;\n\nexport function setDefinitionId(definitionElement: HTMLElement, termElement: HTMLElement): void {\n const termId = termElement.getAttribute('id') || Math.random().toString(36).substr(2, 8);\n definitionElement?.setAttribute('term-id', termId);\n}\n\nexport function setDefinitonAriaAttributes(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const ariaLive = termElement.getAttribute('aria-live') || 'polite';\n definitionElement?.setAttribute('aria-live', ariaLive);\n definitionElement?.setAttribute('aria-modal', 'true');\n}\n\nexport function setDefinitionPosition(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const {\n x: termX,\n y: termY,\n right: termRight,\n left: termLeft,\n width: termWidth,\n height: termHeight,\n } = termElement.getBoundingClientRect();\n\n const termParent = termParentElement(termElement);\n\n if (!termParent) {\n return;\n }\n\n const {right: termParentRight, left: termParentLeft} = termParent.getBoundingClientRect();\n\n if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {\n closeDefinition(definitionElement);\n return;\n }\n\n if (isListenerNeeded && termParent) {\n termParent.addEventListener('scroll', termOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(definitionElement.getAttribute('relativeX'));\n const relativeY = Number(definitionElement.getAttribute('relativeY'));\n\n if (relativeX === termX && relativeY === termY) {\n return;\n }\n\n definitionElement.setAttribute('relativeX', String(termX));\n definitionElement.setAttribute('relativeY', String(termY));\n\n const offsetTop = termHeight + 5;\n const definitionParent = definitionElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = definitionElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(termElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n const offsetRight = 5;\n const shiftLeft = definitionOutOfScreenOnRight\n ? definitionRightCoordinate - document.body.clientWidth + offsetRight\n : 0;\n const offsetLeft =\n getCoords(termElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument;\n\n const isShiftLeftNeeded = offsetLeft + definitionWidth >= document.body.clientWidth;\n\n definitionElement.style.top =\n Number(getCoords(termElement).top + offsetTop - customHeaderTop) + 'px';\n definitionElement.style.left = Number(offsetLeft - (isShiftLeftNeeded ? shiftLeft : 0)) + 'px';\n}\n\nfunction termOnResize() {\n const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n if (!openedDefinition) {\n return;\n }\n const termId = openedDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n return;\n }\n\n setDefinitionPosition(openedDefinition, termElement);\n}\n\nfunction termParentElement(term: HTMLElement | null) {\n if (!term) {\n return null;\n }\n\n const closestScrollableParent = term.closest('table') || term.closest('code');\n\n return closestScrollableParent || term.parentElement;\n}\n\nexport function openDefinition(target: HTMLElement) {\n const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n const termId = target.getAttribute('id');\n const termKey = target.getAttribute('term-key');\n const definitionElement = document.getElementById(termKey + '_element');\n\n const isSameTerm = openedDefinition && termId === openedDefinition.getAttribute('term-id');\n if (isSameTerm) {\n closeDefinition(openedDefinition);\n return;\n }\n\n const isTargetDefinitionContent = target.closest(\n [Selector.CONTENT.replace(' ', ''), openClass].join('.'),\n );\n\n if (openedDefinition && !isTargetDefinitionContent) {\n closeDefinition(openedDefinition);\n }\n\n if (!target.matches(Selector.TITLE) || !definitionElement) {\n return;\n }\n\n setDefinitionId(definitionElement, target);\n setDefinitonAriaAttributes(definitionElement, target);\n setDefinitionPosition(definitionElement, target);\n\n definitionElement.classList.toggle(openClass);\n\n trapFocus(definitionElement);\n}\n\nexport function closeDefinition(definition: HTMLElement) {\n definition.classList.remove(openClass);\n const term = getTermByDefinition(definition);\n const termParent = termParentElement(term);\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n isListenerNeeded = true;\n}\n\nexport function getCoords(elem: HTMLElement) {\n const box = elem.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return {top: Math.round(top), left: Math.round(left)};\n}\n\nexport function trapFocus(element: HTMLElement) {\n const focusableElements = element.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n const firstFocusableElement = focusableElements[0] as HTMLElement;\n const lastFocusableElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n if (firstFocusableElement) {\n firstFocusableElement.focus();\n }\n\n element.addEventListener('keydown', function (e) {\n const isTabPressed = e.key === 'Tab' || e.keyCode === 9;\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n e.preventDefault();\n }\n } else if (document.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n e.preventDefault();\n }\n });\n}\n\nexport function getTermByDefinition(definition: HTMLElement) {\n const termId = definition.getAttribute('term-id');\n\n return termId ? document.getElementById(termId) : null;\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {getCoords} from '../term/utils';\n\nimport {INLINE_CODE, INLINE_CODE_CLASS, INLINE_CODE_ID, LANG_TOKEN, OPEN_CLASS} from './constant';\n\nexport let timer: ReturnType<typeof setTimeout> | null = null;\n\nlet isListenerNeeded = true;\n\nexport function getTooltipElement(): HTMLElement | null {\n return document.getElementById(INLINE_CODE_ID);\n}\n\nfunction setTooltipAriaAttributes(tooltipElement: HTMLElement, targetElement: HTMLElement): void {\n const ariaLive = targetElement.getAttribute('aria-live') || 'polite';\n tooltipElement?.setAttribute('aria-live', ariaLive);\n tooltipElement?.setAttribute('aria-modal', 'true');\n}\n\nfunction checkTimerAndClear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n}\n\nfunction tooltipParentElement(target: HTMLElement | null) {\n if (!target) {\n return null;\n }\n\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement;\n}\n\nfunction tooltipOnResize() {\n const openedDefinition = getTooltipElement();\n\n if (!openedDefinition) {\n return;\n }\n const inlineId = openedDefinition.getAttribute('inline-id') || '';\n const targetElement = document.getElementById(inlineId);\n\n if (!targetElement) {\n return;\n }\n\n setTooltipPosition(openedDefinition, targetElement);\n}\n\nexport function setTooltipPosition(tooltipElement: HTMLElement, targetElement: HTMLElement): void {\n const {\n x: inlineX,\n y: inlineY,\n right: inlineRight,\n left: inlineLeft,\n width: inlineWidth,\n height: inlineHeight,\n } = targetElement.getBoundingClientRect();\n\n const tooltipParent = tooltipParentElement(targetElement);\n\n if (!tooltipParent) {\n return;\n }\n\n const {right: tooltipParentRight, left: tooltipParentLeft} =\n tooltipParent.getBoundingClientRect();\n\n if ((tooltipParentRight < inlineLeft || tooltipParentLeft > inlineRight) && !isListenerNeeded) {\n closeTooltip(tooltipElement);\n return;\n }\n\n if (isListenerNeeded && tooltipParent) {\n tooltipParent.addEventListener('scroll', tooltipOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(tooltipElement.getAttribute('relativeX'));\n const relativeY = Number(tooltipElement.getAttribute('relativeY'));\n\n if (relativeX === inlineX && relativeY === inlineY) {\n return;\n }\n\n tooltipElement.setAttribute('relativeX', String(inlineX));\n tooltipElement.setAttribute('relativeY', String(inlineY));\n\n const offsetTop = inlineHeight + 5;\n const definitionParent = tooltipElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = tooltipElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(targetElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - inlineWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n const offsetRight = 5;\n const shiftLeft = definitionOutOfScreenOnRight\n ? definitionRightCoordinate - document.body.clientWidth + offsetRight\n : 0;\n const offsetLeft =\n getCoords(targetElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument;\n\n const isShiftLeftNeeded = offsetLeft + definitionWidth >= document.body.clientWidth;\n\n tooltipElement.style.top =\n Number(getCoords(targetElement).top + offsetTop - customHeaderTop) + 'px';\n tooltipElement.style.left = Number(offsetLeft - (isShiftLeftNeeded ? shiftLeft : 0)) + 'px';\n}\n\nexport function getInlineCodeByTooltip(definition: HTMLElement) {\n const inlineId = definition.getAttribute('inline-id');\n\n return inlineId ? document.getElementById(inlineId) : null;\n}\n\nfunction closeTooltipFn(definition: HTMLElement) {\n definition.classList.remove(OPEN_CLASS);\n const inline = getInlineCodeByTooltip(definition);\n const inlineCodepParent = tooltipParentElement(inline);\n const tooltipParent = tooltipParentElement(definition);\n\n definition.removeAttribute('inline-id');\n\n if (!inlineCodepParent || !tooltipParent) {\n return;\n }\n\n tooltipParent.removeChild(definition);\n inlineCodepParent.removeEventListener('scroll', tooltipOnResize);\n isListenerNeeded = true;\n}\n\nfunction createTooltip() {\n let tooltip = getTooltipElement();\n\n if (!tooltip) {\n const pageContent = document.querySelector('.dc-doc-page__content') || document.body;\n const lang = document.documentElement.lang || 'en';\n const tooltipText = LANG_TOKEN[lang as Lang] ?? LANG_TOKEN.en;\n const host = document.createElement('div');\n\n host.innerHTML = `\n <div id=\"${INLINE_CODE_ID}\" class=\"${INLINE_CODE_CLASS}\"\n role=\"dialog\" aria-live=\"polite\" aria-modal=\"true\">\n ${tooltipText}\n </div>\n `;\n\n tooltip = host.firstElementChild as HTMLElement;\n pageContent.appendChild(tooltip);\n }\n\n return tooltip;\n}\n\nexport function openTooltip(target: HTMLElement) {\n const tooltip = createTooltip();\n\n if (!target.matches(INLINE_CODE) || !tooltip) {\n return;\n }\n\n tooltip.setAttribute('inline-id', target.getAttribute('id') || '');\n setTooltipAriaAttributes(tooltip, target);\n setTooltipPosition(tooltip, target);\n\n // In order not to get rid of the smooth appearance effect, I had to do this\n if (tooltip.classList.contains(OPEN_CLASS)) {\n tooltip.classList.remove(OPEN_CLASS);\n requestAnimationFrame(() => {\n tooltip.classList.add(OPEN_CLASS);\n });\n } else {\n tooltip.classList.add(OPEN_CLASS);\n }\n\n return tooltip;\n}\n\nexport function closeTooltip(target: HTMLElement) {\n checkTimerAndClear();\n closeTooltipFn(target);\n}\n\nexport function tooltipWorker(target: HTMLElement) {\n const definition = openTooltip(target);\n\n if (!definition) {\n return;\n }\n checkTimerAndClear();\n timer = setTimeout(() => {\n closeTooltip(definition);\n timer = null;\n }, 1000);\n}\n", "import {copyToClipboard, getEventTarget, isCustom} from '../utils';\n\nimport {INLINE_CODE, OPEN_CLASS} from './constant';\nimport {\n closeTooltip,\n getInlineCodeByTooltip,\n getTooltipElement,\n setTooltipPosition,\n tooltipWorker,\n} from './utils';\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n tooltipWorker(target);\n });\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n const inline = target.matches(INLINE_CODE);\n\n if (isCustom(event) || !inline) {\n return;\n }\n\n inlineCopyFn(target);\n });\n\n document.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && document.activeElement) {\n const activeElement = document.activeElement as HTMLElement;\n const classInlineCode = INLINE_CODE.replace('.', '');\n\n if (!activeElement.classList.contains(classInlineCode)) {\n return;\n }\n\n const innerText = activeElement.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n tooltipWorker(activeElement);\n });\n }\n\n const inlineTooltip = getTooltipElement();\n\n if (event.key === 'Escape' && inlineTooltip) {\n closeTooltip(inlineTooltip);\n getInlineCodeByTooltip(inlineTooltip)?.focus(); // Set focus back to open button after closing popup\n }\n });\n\n window.addEventListener('resize', () => {\n const inlineTooltip = getTooltipElement();\n if (!inlineTooltip) {\n return;\n }\n\n const inlineId = inlineTooltip.getAttribute('inline-id') || '';\n const inlineCodeElement = document.getElementById(inlineId);\n\n if (!inlineCodeElement) {\n inlineTooltip.classList.toggle(OPEN_CLASS);\n return;\n }\n\n setTooltipPosition(inlineTooltip, inlineCodeElement);\n });\n}\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAoBA,eAASA,aAAY,KAAK;AACxB,YAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,IAAI,QAAQ;AAE9D,eAAO,WAAW,uBAAuB,IAAI,IAAI,QAAQ,IAAI;AAAA,MAC/D;AAEA,eAAS,uBAAuB,MAAM;AACpC,YAAI,OAAO,QAAQ,IAAI;AAEvB,YAAI,aAAa,IAAI,GAAG;AACtB,iBAAO,uBAAuB,KAAK,IAAI;AAAA,QACzC;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,QAAQ,MAAM;AACrB,YAAI,KAAK,cAAc,MAAM;AAC3B,iBAAO,QAAQ,KAAK,UAAU;AAAA,QAChC;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,aAAa,MAAM;AAC1B,eAAO,KAAK,aAAa,wBAAwB,KAAK,YAAY,SAAS;AAAA,MAC7E;AAEA,UAAI,OAAO,WAAW,YAAY,OAAO,SAAS;AAChD,eAAO,UAAUA;AAAA,MACnB;AAAA;AAAA;;;AClDA,sCAAwB;AAExB,MAAI,OAAO,aAAa,aAAa;AAEjC,KAAC,SAAU,GAAG;AACV,YAAM,UACF,EAAE,WACF,EAAE,mBACF,EAAE,yBACF,EAAE,sBACF,EAAE,qBACF,EAAE;AAEN,UAAI,SAAS;AACT,UAAE,UAAU,EAAE,kBAAkB;AAAA,MACpC,OAAO;AACH,UAAE,UAAU,EAAE,kBAAkB,SAASC,SAAQ,UAAU;AACvD,gBAAM,WAAW,EAAE,cAAc,EAAE,YAAY,IAAI,8BAAAC,QAAY,KAAK,CAAC;AACrE,gBAAMD,WAAU,SAAS,iBAAiB,QAAQ;AAClD,gBAAM,KAAK;AACX,iBAAO,MAAM,UAAU,KAAK,KAAKA,UAAS,CAACE,OAAM;AAC7C,mBAAOA,OAAM;AAAA,UACjB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IAEJ,GAAG,QAAQ,SAAS;AAAA,EACxB;;;AC3BO,MAAM,iBAAiB,CAAC,UAAiB;AAC5C,UAAM,OAAO,MAAM,aAAa;AAChC,WAAO,MAAM,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,EACpE;AAEO,MAAM,WAAW,CAAC,UAAiB;AACtC,UAAM,SAAS,eAAe,KAAK;AACnC,WAAO,CAAC,UAAU,CAAE,OAAuB;AAAA,EAC/C;AAEO,MAAM,kBAAkB,OAAO,SAAiB;AACnD,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAEA,QAAI,UAAU,aAAa,OAAO,UAAU,UAAU,WAAW;AAC7D,aAAO,UAAU,UAAU,UAAU,IAAI;AAAA,IAC7C;AAEA,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,aAAa,SAAS,iCAAiC;AAChE,aAAS,cAAc;AACvB,aAAS,KAAK,OAAO,QAAQ;AAE7B,aAAS,OAAO;AAChB,aAAS,YAAY,MAAM;AAE3B,aAAS,KAAK,YAAY,QAAQ;AAAA,EACtC;;;AC1BA,MAAM,kBAAkB;AAExB,WAAS,cAAc,WAA+B;AAClD,QAAI,CAAC,WAAW;AACZ;AAAA,IACJ;AAEA,UAAM,KAAK,UAAU,aAAa,gBAAgB;AAGlD,UAAM,OAAO,UAAU,YAAY,EAAE,eAAe,qBAAqB,EAAE,EAAE;AAE7E,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAEA,SAAK,aAAa;AAAA,EACtB;AAEA,WAAS,aAAa,QAAqB;AACvC,UAAM,SAAS,OAAO;AAEtB,QAAI,CAAC,QAAQ;AACT;AAAA,IACJ;AAEA,UAAM,OAAO,OAAO,cAA2B,UAAU;AAEzD,QAAI,CAAC,MAAM;AACP;AAAA,IACJ;AAGA,UAAM,cAAc,MAAM,KAAK,KAAK,UAAU,EACzC,OAAO,CAAC,SAAS;AAEd,UAAI,gBAAgB,eAAe,KAAK,UAAU,SAAS,iBAAiB,GAAG;AAC3E,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX,CAAC,EACA,IAAI,CAAC,SAAS,KAAK,WAAW,EAC9B,KAAK,EAAE;AAEZ,oBAAgB,YAAY,KAAK,CAAC,EAAE,KAAK,MAAM;AAC3C,oBAAc,OAAO,cAAc,qBAAqB,CAAC;AAEzD,iBAAW,MAAM,OAAO,KAAK,GAAG,IAAI;AAAA,IACxC,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,aAAa,aAAa;AACjC,aAAS,iBAAiB,SAAS,CAAC,UAAU;AAC1C,YAAM,SAAS,eAAe,KAAK;AAEnC,YAAM,SAAS,OAAO,QAAQ,eAAe;AAE7C,UAAI,SAAS,KAAK,KAAK,CAAC,QAAQ;AAC5B;AAAA,MACJ;AAEA,mBAAa,MAAM;AAAA,IACvB,CAAC;AAAA,EACL;;;AC/DA,MAAM,yBAAyB;AAE/B,MAAI,OAAO,aAAa,aAAa;AACjC,aAAS,iBAAiB,SAAS,CAAC,UAAU;AAC1C,YAAM,SAAS,eAAe,KAAK;AAEnC,UAAI,SAAS,KAAK,KAAK,CAAC,OAAO,QAAQ,sBAAsB,GAAG;AAC5D;AAAA,MACJ;AAEA,YAAM,OAAO,OAAO,aAAa,WAAW,KAAK;AACjD,YAAM,OAAO,IAAI,IAAI,MAAM,OAAO,SAAS,IAAI,EAAE,SAAS;AAE1D,sBAAgB,IAAI;AAAA,IACxB,CAAC;AAAA,EACL;;;ACfO,MAAM,cAAc;AAEpB,MAAM,iBAAiB;AAEvB,MAAM,oBAAoB;AAE1B,MAAM,aAAa;AAEnB,MAAM,aAAmC;AAAA,IAC5C,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;;;AC3BO,MAAM,WAAW;AAAA,IACpB,OAAO;AAAA,IACP,SAAS;AAAA,EACb;AACO,MAAM,YAAY;AAClB,MAAM,sBAAsB,SAAS,QAAQ,QAAQ,OAAO,EAAE,IAAI,MAAM;AAyKxE,WAAS,UAAU,MAAmB;AACzC,UAAM,MAAM,KAAK,sBAAsB;AAEvC,UAAM,OAAO,SAAS;AACtB,UAAM,QAAQ,SAAS;AAEvB,UAAM,YAAY,OAAO,eAAe,MAAM,aAAa,KAAK;AAChE,UAAM,aAAa,OAAO,eAAe,MAAM,cAAc,KAAK;AAElE,UAAM,YAAY,MAAM,aAAa,KAAK,aAAa;AACvD,UAAM,aAAa,MAAM,cAAc,KAAK,cAAc;AAE1D,UAAM,MAAM,IAAI,MAAM,YAAY;AAClC,UAAM,OAAO,IAAI,OAAO,aAAa;AAErC,WAAO,EAAC,KAAK,KAAK,MAAM,GAAG,GAAG,MAAM,KAAK,MAAM,IAAI,EAAC;AAAA,EACxD;;;ACxLO,MAAI,QAA8C;AAEzD,MAAI,mBAAmB;AAEhB,WAAS,oBAAwC;AACpD,WAAO,SAAS,eAAe,cAAc;AAAA,EACjD;AAEA,WAAS,yBAAyB,gBAA6B,eAAkC;AAC7F,UAAM,WAAW,cAAc,aAAa,WAAW,KAAK;AAC5D,qDAAgB,aAAa,aAAa;AAC1C,qDAAgB,aAAa,cAAc;AAAA,EAC/C;AAEA,WAAS,qBAAqB;AAC1B,QAAI,OAAO;AACP,mBAAa,KAAK;AAClB,cAAQ;AAAA,IACZ;AAAA,EACJ;AAEA,WAAS,qBAAqB,QAA4B;AACtD,QAAI,CAAC,QAAQ;AACT,aAAO;AAAA,IACX;AAEA,UAAM,0BAA0B,OAAO,QAAQ,OAAO,KAAK,OAAO,QAAQ,MAAM;AAEhF,WAAO,2BAA2B,OAAO;AAAA,EAC7C;AAEA,WAAS,kBAAkB;AACvB,UAAM,mBAAmB,kBAAkB;AAE3C,QAAI,CAAC,kBAAkB;AACnB;AAAA,IACJ;AACA,UAAM,WAAW,iBAAiB,aAAa,WAAW,KAAK;AAC/D,UAAM,gBAAgB,SAAS,eAAe,QAAQ;AAEtD,QAAI,CAAC,eAAe;AAChB;AAAA,IACJ;AAEA,uBAAmB,kBAAkB,aAAa;AAAA,EACtD;AAEO,WAAS,mBAAmB,gBAA6B,eAAkC;AAC9F,UAAM;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IACZ,IAAI,cAAc,sBAAsB;AAExC,UAAM,gBAAgB,qBAAqB,aAAa;AAExD,QAAI,CAAC,eAAe;AAChB;AAAA,IACJ;AAEA,UAAM,EAAC,OAAO,oBAAoB,MAAM,kBAAiB,IACrD,cAAc,sBAAsB;AAExC,SAAK,qBAAqB,cAAc,oBAAoB,gBAAgB,CAAC,kBAAkB;AAC3F,mBAAa,cAAc;AAC3B;AAAA,IACJ;AAEA,QAAI,oBAAoB,eAAe;AACnC,oBAAc,iBAAiB,UAAU,eAAe;AACxD,yBAAmB;AAAA,IACvB;AAEA,UAAM,YAAY,OAAO,eAAe,aAAa,WAAW,CAAC;AACjE,UAAM,YAAY,OAAO,eAAe,aAAa,WAAW,CAAC;AAEjE,QAAI,cAAc,WAAW,cAAc,SAAS;AAChD;AAAA,IACJ;AAEA,mBAAe,aAAa,aAAa,OAAO,OAAO,CAAC;AACxD,mBAAe,aAAa,aAAa,OAAO,OAAO,CAAC;AAExD,UAAM,YAAY,eAAe;AACjC,UAAM,mBAAmB,eAAe;AAExC,QAAI,CAAC,kBAAkB;AACnB;AAAA,IACJ;AAEA,UAAM,EAAC,OAAO,gBAAe,IAAI,eAAe,sBAAsB;AACtE,UAAM,EAAC,MAAM,qBAAoB,IAAI,iBAAiB,sBAAsB;AAG5E,UAAM,2BAA2B,OAAO,UAAU,aAAa,EAAE,IAAI;AACrE,UAAM,4BAA4B,kBAAkB;AAEpD,UAAM,8BAA8B,2BAA2B,kBAAkB;AACjF,UAAM,+BAA+B,4BAA4B,SAAS,KAAK;AAE/E,UAAM,iBAAiB,gCAAgC,SAAS,QAAQ;AACxE,UAAM,wBACF,kBAAkB,CAAC,8BAA8B,kBAAkB,cAAc;AACrF,UAAM,kBAAkB,UAAU,gBAAgB,EAAE,MAAM,iBAAiB;AAC3E,UAAM,cAAc;AACpB,UAAM,YAAY,+BACZ,4BAA4B,SAAS,KAAK,cAAc,cACxD;AACN,UAAM,aACF,UAAU,aAAa,EAAE,OACzB,uBACA,iBAAiB,aACjB;AAEJ,UAAM,oBAAoB,aAAa,mBAAmB,SAAS,KAAK;AAExE,mBAAe,MAAM,MACjB,OAAO,UAAU,aAAa,EAAE,MAAM,YAAY,eAAe,IAAI;AACzE,mBAAe,MAAM,OAAO,OAAO,cAAc,oBAAoB,YAAY,EAAE,IAAI;AAAA,EAC3F;AAEO,WAAS,uBAAuB,YAAyB;AAC5D,UAAM,WAAW,WAAW,aAAa,WAAW;AAEpD,WAAO,WAAW,SAAS,eAAe,QAAQ,IAAI;AAAA,EAC1D;AAEA,WAAS,eAAe,YAAyB;AAC7C,eAAW,UAAU,OAAO,UAAU;AACtC,UAAM,SAAS,uBAAuB,UAAU;AAChD,UAAM,oBAAoB,qBAAqB,MAAM;AACrD,UAAM,gBAAgB,qBAAqB,UAAU;AAErD,eAAW,gBAAgB,WAAW;AAEtC,QAAI,CAAC,qBAAqB,CAAC,eAAe;AACtC;AAAA,IACJ;AAEA,kBAAc,YAAY,UAAU;AACpC,sBAAkB,oBAAoB,UAAU,eAAe;AAC/D,uBAAmB;AAAA,EACvB;AAEA,WAAS,gBAAgB;AAzJzB;AA0JI,QAAI,UAAU,kBAAkB;AAEhC,QAAI,CAAC,SAAS;AACV,YAAM,cAAc,SAAS,cAAc,uBAAuB,KAAK,SAAS;AAChF,YAAM,OAAO,SAAS,gBAAgB,QAAQ;AAC9C,YAAM,eAAc,gBAAW,IAAY,MAAvB,YAA4B,WAAW;AAC3D,YAAM,OAAO,SAAS,cAAc,KAAK;AAEzC,WAAK,YAAY;AAAA,uBACF,cAAc,YAAY,iBAAiB;AAAA;AAAA,kBAEhD,WAAW;AAAA;AAAA;AAIrB,gBAAU,KAAK;AACf,kBAAY,YAAY,OAAO;AAAA,IACnC;AAEA,WAAO;AAAA,EACX;AAEO,WAAS,YAAY,QAAqB;AAC7C,UAAM,UAAU,cAAc;AAE9B,QAAI,CAAC,OAAO,QAAQ,WAAW,KAAK,CAAC,SAAS;AAC1C;AAAA,IACJ;AAEA,YAAQ,aAAa,aAAa,OAAO,aAAa,IAAI,KAAK,EAAE;AACjE,6BAAyB,SAAS,MAAM;AACxC,uBAAmB,SAAS,MAAM;AAGlC,QAAI,QAAQ,UAAU,SAAS,UAAU,GAAG;AACxC,cAAQ,UAAU,OAAO,UAAU;AACnC,4BAAsB,MAAM;AACxB,gBAAQ,UAAU,IAAI,UAAU;AAAA,MACpC,CAAC;AAAA,IACL,OAAO;AACH,cAAQ,UAAU,IAAI,UAAU;AAAA,IACpC;AAEA,WAAO;AAAA,EACX;AAEO,WAAS,aAAa,QAAqB;AAC9C,uBAAmB;AACnB,mBAAe,MAAM;AAAA,EACzB;AAEO,WAAS,cAAc,QAAqB;AAC/C,UAAM,aAAa,YAAY,MAAM;AAErC,QAAI,CAAC,YAAY;AACb;AAAA,IACJ;AACA,uBAAmB;AACnB,YAAQ,WAAW,MAAM;AACrB,mBAAa,UAAU;AACvB,cAAQ;AAAA,IACZ,GAAG,GAAI;AAAA,EACX;;;AC7MO,WAAS,aAAa,QAAqB;AAC9C,UAAM,YAAY,OAAO;AAEzB,QAAI,CAAC,WAAW;AACZ;AAAA,IACJ;AAEA,oBAAgB,SAAS,EAAE,KAAK,MAAM;AAClC,oBAAc,MAAM;AAAA,IACxB,CAAC;AAAA,EACL;AAEA,MAAI,OAAO,aAAa,aAAa;AACjC,aAAS,iBAAiB,SAAS,CAAC,UAAU;AAC1C,YAAM,SAAS,eAAe,KAAK;AAEnC,YAAM,SAAS,OAAO,QAAQ,WAAW;AAEzC,UAAI,SAAS,KAAK,KAAK,CAAC,QAAQ;AAC5B;AAAA,MACJ;AAEA,mBAAa,MAAM;AAAA,IACvB,CAAC;AAED,aAAS,iBAAiB,WAAW,CAAC,UAAU;AApCpD;AAqCQ,UAAI,MAAM,QAAQ,WAAW,SAAS,eAAe;AACjD,cAAM,gBAAgB,SAAS;AAC/B,cAAM,kBAAkB,YAAY,QAAQ,KAAK,EAAE;AAEnD,YAAI,CAAC,cAAc,UAAU,SAAS,eAAe,GAAG;AACpD;AAAA,QACJ;AAEA,cAAM,YAAY,cAAc;AAEhC,YAAI,CAAC,WAAW;AACZ;AAAA,QACJ;AAEA,wBAAgB,SAAS,EAAE,KAAK,MAAM;AAClC,wBAAc,aAAa;AAAA,QAC/B,CAAC;AAAA,MACL;AAEA,YAAM,gBAAgB,kBAAkB;AAExC,UAAI,MAAM,QAAQ,YAAY,eAAe;AACzC,qBAAa,aAAa;AAC1B,qCAAuB,aAAa,MAApC,mBAAuC;AAAA,MAC3C;AAAA,IACJ,CAAC;AAED,WAAO,iBAAiB,UAAU,MAAM;AACpC,YAAM,gBAAgB,kBAAkB;AACxC,UAAI,CAAC,eAAe;AAChB;AAAA,MACJ;AAEA,YAAM,WAAW,cAAc,aAAa,WAAW,KAAK;AAC5D,YAAM,oBAAoB,SAAS,eAAe,QAAQ;AAE1D,UAAI,CAAC,mBAAmB;AACpB,sBAAc,UAAU,OAAO,UAAU;AACzC;AAAA,MACJ;AAEA,yBAAmB,eAAe,iBAAiB;AAAA,IACvD,CAAC;AAAA,EACL;",
|
|
6
6
|
"names": ["getRootNode", "matches", "getRootNode", "e"]
|
|
7
7
|
}
|
package/dist/js/base.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";(()=>{(()=>{var k=Object.create,L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,A=Object.getOwnPropertyNames,M=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty,q=(t,e)=>function(){return e||(0,t[A(t)[0]])((e={exports:{}}).exports,e),e.exports},z=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of A(e))!F.call(t,i)&&i!==n&&L(t,i,{get:()=>e[i],enumerable:!(o=j(e,i))||o.enumerable});return t},W=(t,e,n)=>(n=t!=null?k(M(t)):{},z(e||!t||!t.__esModule?L(n,"default",{value:t,enumerable:!0}):n,t)),H=
|
|
2
|
-
<div id="${N}" class="${
|
|
1
|
+
"use strict";(()=>{(()=>{var k=Object.create,L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,A=Object.getOwnPropertyNames,M=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty,q=(t,e)=>function(){return e||(0,t[A(t)[0]])((e={exports:{}}).exports,e),e.exports},z=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of A(e))!F.call(t,i)&&i!==n&&L(t,i,{get:()=>e[i],enumerable:!(o=j(e,i))||o.enumerable});return t},W=(t,e,n)=>(n=t!=null?k(M(t)):{},z(e||!t||!t.__esModule?L(n,"default",{value:t,enumerable:!0}):n,t)),H=q({"node_modules/get-root-node-polyfill/index.js"(t,e){"use strict";function n(r){var u=typeof r=="object"&&!!r.composed;return u?o(this):i(this)}function o(r){var u=i(r);return c(u)?o(u.host):u}function i(r){return r.parentNode!=null?i(r.parentNode):r}function c(r){return r.nodeName==="#document-fragment"&&r.constructor.name==="ShadowRoot"}typeof e=="object"&&e.exports&&(e.exports=n)}}),X=W(H());typeof document!="undefined"&&(function(t){let e=t.matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector;e?t.matches=t.matchesSelector=e:t.matches=t.matchesSelector=function(o){let c=(t.getRootNode?t.getRootNode():X.default.call(t)).querySelectorAll(o),r=this;return Array.prototype.some.call(c,u=>u===r)}})(Element.prototype);var f=t=>{let e=t.composedPath();return Array.isArray(e)&&e.length>0?e[0]:t.target},b=t=>{let e=f(t);return!e||!e.matches},p=async t=>{if(!t)return;if(navigator.clipboard&&typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(t);let e=document.createElement("textarea");e.setAttribute("style","position: absolute; left: 1000%"),e.textContent=t,document.body.append(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)},Y=".yfm-clipboard-button";function $(t){if(!t)return;let e=t.getAttribute("data-animation"),n=t.getRootNode().getElementById(`visibileAnimation-${e}`);n&&n.beginElement()}function K(t){let e=t.parentNode;if(!e)return;let n=e.querySelector("pre code");if(!n)return;let o=Array.from(n.childNodes).filter(i=>!(i instanceof HTMLElement&&i.classList.contains("yfm-line-number"))).map(i=>i.textContent).join("");p(o.trim()).then(()=>{$(e.querySelector(".yfm-clipboard-icon")),setTimeout(()=>t.blur(),1500)})}typeof document!="undefined"&&document.addEventListener("click",t=>{let e=f(t),n=e.matches(Y);b(t)||!n||K(e)});var U=".yfm-clipboard-anchor";typeof document!="undefined"&&document.addEventListener("click",t=>{let e=f(t);if(b(t)||!e.matches(U))return;let n=e.getAttribute("data-href")||"",o=new URL(n,window.location.href).toString();p(o)});var v=".yfm-clipboard-inline-code",N="tooltip_inline_clipboard_dialog",G="yfm inline_code_tooltip",l="open",O={ru:"\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E",en:"Copied",ar:"\u062A\u0645 \u0627\u0644\u0646\u0633\u062E",cs:"Zkop\xEDrov\xE1no",fr:"Copi\xE9",es:"Copiado",he:"\u05D4\u05D5\u05E2\u05EA\u05E7",bg:"\u041A\u043E\u043F\u0438\u0440\u0430\u043D\u043E",et:"Kopeeritud",el:"\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03AC\u03C6\u03B7\u03BA\u03B5",pt:"Copiado",zh:"\u5DF2\u590D\u5236","zh-tw":"\u5DF2\u8907\u88FD",kk:"\u041A\u04E9\u0448\u0456\u0440\u0456\u043B\u0434\u0456",tr:"Kopyaland\u0131",uz:"Nusxalandi"},J={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},Z="open",pt=J.CONTENT.replace(/\./g,"")+" "+Z;function m(t){let e=t.getBoundingClientRect(),n=document.body,o=document.documentElement,i=window.pageYOffset||o.scrollTop||n.scrollTop,c=window.pageXOffset||o.scrollLeft||n.scrollLeft,r=o.clientTop||n.clientTop||0,u=o.clientLeft||n.clientLeft||0,s=e.top+i-r,C=e.left+c-u;return{top:Math.round(s),left:Math.round(C)}}var a=null,h=!0;function g(){return document.getElementById(N)}function Q(t,e){let n=e.getAttribute("aria-live")||"polite";t==null||t.setAttribute("aria-live",n),t==null||t.setAttribute("aria-modal","true")}function S(){a&&(clearTimeout(a),a=null)}function _(t){return t?t.closest("table")||t.closest("code")||t.parentElement:null}function w(){let t=g();if(!t)return;let e=t.getAttribute("inline-id")||"",n=document.getElementById(e);n&&E(t,n)}function E(t,e){let{x:n,y:o,right:i,left:c,width:r,height:u}=e.getBoundingClientRect(),s=_(e);if(!s)return;let{right:C,left:ot}=s.getBoundingClientRect();if((C<c||ot>i)&&!h){T(t);return}h&&s&&(s.addEventListener("scroll",w),h=!1);let it=Number(t.getAttribute("relativeX")),rt=Number(t.getAttribute("relativeY"));if(it===n&&rt===o)return;t.setAttribute("relativeX",String(n)),t.setAttribute("relativeY",String(o));let ct=u+5,d=t.parentElement;if(!d)return;let{width:y}=t.getBoundingClientRect(),{left:ut}=d.getBoundingClientRect(),R=Number(m(e).left),D=y+R,lt=R-y<0,B=D>document.body.clientWidth,st=(B||document.dir==="rtl")&&!lt?y-r:0,at=m(d).top-d.offsetTop,dt=B?D-document.body.clientWidth+5:0,I=m(e).left-ut+d.offsetLeft-st,ft=I+y>=document.body.clientWidth;t.style.top=Number(m(e).top+ct-at)+"px",t.style.left=Number(I-(ft?dt:0))+"px"}function x(t){let e=t.getAttribute("inline-id");return e?document.getElementById(e):null}function V(t){t.classList.remove(l);let e=x(t),n=_(e),o=_(t);t.removeAttribute("inline-id"),!(!n||!o)&&(o.removeChild(t),n.removeEventListener("scroll",w),h=!0)}function tt(){var t;let e=g();if(!e){let n=document.querySelector(".dc-doc-page__content")||document.body,o=document.documentElement.lang||"en",i=(t=O[o])!=null?t:O.en,c=document.createElement("div");c.innerHTML=`
|
|
2
|
+
<div id="${N}" class="${G}"
|
|
3
3
|
role="dialog" aria-live="polite" aria-modal="true">
|
|
4
4
|
${i}
|
|
5
5
|
</div>
|
|
6
|
-
`,e=c.firstElementChild,n.appendChild(e)}return e}function
|
|
6
|
+
`,e=c.firstElementChild,n.appendChild(e)}return e}function et(t){let e=tt();if(!(!t.matches(v)||!e))return e.setAttribute("inline-id",t.getAttribute("id")||""),Q(e,t),E(e,t),e.classList.contains(l)?(e.classList.remove(l),requestAnimationFrame(()=>{e.classList.add(l)})):e.classList.add(l),e}function T(t){S(),V(t)}function P(t){let e=et(t);e&&(S(),a=setTimeout(()=>{T(e),a=null},1e3))}function nt(t){let e=t.innerText;e&&p(e).then(()=>{P(t)})}typeof document!="undefined"&&(document.addEventListener("click",t=>{let e=f(t),n=e.matches(v);b(t)||!n||nt(e)}),document.addEventListener("keydown",t=>{var e;if(t.key==="Enter"&&document.activeElement){let o=document.activeElement,i=v.replace(".","");if(!o.classList.contains(i))return;let c=o.innerText;if(!c)return;p(c).then(()=>{P(o)})}let n=g();t.key==="Escape"&&n&&(T(n),(e=x(n))==null||e.focus())}),window.addEventListener("resize",()=>{let t=g();if(!t)return;let e=t.getAttribute("inline-id")||"",n=document.getElementById(e);if(!n){t.classList.toggle(l);return}E(t,n)}))})();})();
|
|
7
7
|
//# sourceMappingURL=base.min.js.map
|
package/dist/js/base.min.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../node_modules/get-root-node-polyfill/index.js", "../../src/js/polyfill.js", "../../src/js/utils.ts", "../../src/js/code.ts", "../../src/js/anchor.ts", "../../src/js/inline-code/constant.ts", "../../src/js/term/utils.ts", "../../src/js/inline-code/utils.ts", "../../src/js/inline-code/index.ts"],
|
|
4
4
|
"sourcesContent": ["'use strict';\n\n// Node getRootNode(optional GetRootNodeOptions options);\n\n/**\n * Returns the context object\u2019s shadow-including root if options\u2019s composed is true.\n * Returns the context object\u2019s root otherwise.\n *\n * The root of an object is itself, if its parent is null, or else it is the root of its parent.\n *\n * The shadow-including root of an object is its root\u2019s host\u2019s shadow-including root,\n * if the object\u2019s root is a shadow root, and its root otherwise.\n *\n * https://dom.spec.whatwg.org/#dom-node-getrootnode\n *\n * @memberof Node.prototype\n * @param {!Object} [opt = {}] - Options.\n * @param {!boolean} [opt.composed] - See above description.\n * @returns {!Node} The root node.\n */\nfunction getRootNode(opt) {\n var composed = typeof opt === 'object' && Boolean(opt.composed);\n\n return composed ? getShadowIncludingRoot(this) : getRoot(this);\n}\n\nfunction getShadowIncludingRoot(node) {\n var root = getRoot(node);\n\n if (isShadowRoot(root)) {\n return getShadowIncludingRoot(root.host);\n }\n\n return root;\n}\n\nfunction getRoot(node) {\n if (node.parentNode != null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\nfunction isShadowRoot(node) {\n return node.nodeName === '#document-fragment' && node.constructor.name === 'ShadowRoot';\n}\n\nif (typeof module === 'object' && module.exports) {\n module.exports = getRootNode;\n}\n", "import getRootNode from 'get-root-node-polyfill';\n\nif (typeof document !== 'undefined') {\n // matches polyfill for old edge\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function matches(selector) {\n const rootNode = e.getRootNode ? e.getRootNode() : getRootNode.call(e);\n const matches = rootNode.querySelectorAll(selector);\n const th = this;\n return Array.prototype.some.call(matches, (e) => {\n return e === th;\n });\n };\n }\n // eslint-disable-next-line no-undef\n })(Element.prototype);\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const copyToClipboard = async (text: string) => {\n if (!text) {\n return;\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n }\n\n const textarea = document.createElement('textarea');\n textarea.setAttribute('style', 'position: absolute; left: 1000%');\n textarea.textContent = text;\n document.body.append(textarea);\n\n textarea.select();\n document.execCommand('copy');\n\n document.body.removeChild(textarea);\n};\n", "import {copyToClipboard, getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\n\n // @ts-expect-error\n const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);\n\n if (!icon) {\n return;\n }\n\n icon.beginElement();\n}\n\nfunction buttonCopyFn(target: HTMLElement) {\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n\n if (!code) {\n return;\n }\n\n // Get all text nodes and filter out line numbers\n const textContent = Array.from(code.childNodes)\n .filter((node) => {\n // Skip line number spans\n if (node instanceof HTMLElement && node.classList.contains('yfm-line-number')) {\n return false;\n }\n return true;\n })\n .map((node) => node.textContent)\n .join('');\n\n copyToClipboard(textContent.trim()).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n const button = target.matches(BUTTON_SELECTOR);\n\n if (isCustom(event) || !button) {\n return;\n }\n\n buttonCopyFn(target);\n });\n}\n", "import {copyToClipboard, getEventTarget, isCustom} from './utils';\n\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(ANCHOR_BUTTON_SELECTOR)) {\n return;\n }\n\n const href = target.getAttribute('data-href') || '';\n const link = new URL(href, window.location.href).toString();\n\n copyToClipboard(link);\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const INLINE_CODE = '.yfm-clipboard-inline-code';\n\nexport const INLINE_CODE_ID = 'tooltip_inline_clipboard_dialog';\n\nexport const INLINE_CODE_CLASS = 'yfm inline_code_tooltip';\n\nexport const OPEN_CLASS = 'open';\n\nexport const LANG_TOKEN: Record<Lang, string> = {\n ru: '\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E',\n en: 'Copied',\n ar: '\u062A\u0645 \u0627\u0644\u0646\u0633\u062E',\n cs: 'Zkop\u00EDrov\u00E1no',\n fr: 'Copi\u00E9',\n es: 'Copiado',\n he: '\u05D4\u05D5\u05E2\u05EA\u05E7',\n bg: '\u041A\u043E\u043F\u0438\u0440\u0430\u043D\u043E',\n et: 'Kopeeritud',\n el: '\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03AC\u03C6\u03B7\u03BA\u03B5',\n pt: 'Copiado',\n zh: '\u5DF2\u590D\u5236',\n 'zh-tw': '\u5DF2\u8907\u88FD',\n kk: '\u041A\u04E9\u0448\u0456\u0440\u0456\u043B\u0434\u0456',\n tr: 'Kopyaland\u0131',\n uz: 'Nusxalandi',\n};\n", "export const Selector = {\n TITLE: '.yfm .yfm-term_title',\n CONTENT: '.yfm .yfm-term_dfn',\n};\nexport const openClass = 'open';\nexport const openDefinitionClass = Selector.CONTENT.replace(/\\./g, '') + ' ' + openClass;\nlet isListenerNeeded = true;\n\nexport function setDefinitionId(definitionElement: HTMLElement, termElement: HTMLElement): void {\n const termId = termElement.getAttribute('id') || Math.random().toString(36).substr(2, 8);\n definitionElement?.setAttribute('term-id', termId);\n}\n\nexport function setDefinitonAriaAttributes(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const ariaLive = termElement.getAttribute('aria-live') || 'polite';\n definitionElement?.setAttribute('aria-live', ariaLive);\n definitionElement?.setAttribute('aria-modal', 'true');\n}\n\nexport function setDefinitionPosition(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const {\n x: termX,\n y: termY,\n right: termRight,\n left: termLeft,\n width: termWidth,\n height: termHeight,\n } = termElement.getBoundingClientRect();\n\n const termParent = termParentElement(termElement);\n\n if (!termParent) {\n return;\n }\n\n const {right: termParentRight, left: termParentLeft} = termParent.getBoundingClientRect();\n\n if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {\n closeDefinition(definitionElement);\n return;\n }\n\n if (isListenerNeeded && termParent) {\n termParent.addEventListener('scroll', termOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(definitionElement.getAttribute('relativeX'));\n const relativeY = Number(definitionElement.getAttribute('relativeY'));\n\n if (relativeX === termX && relativeY === termY) {\n return;\n }\n\n definitionElement.setAttribute('relativeX', String(termX));\n definitionElement.setAttribute('relativeY', String(termY));\n\n const offsetTop = termHeight + 5;\n const definitionParent = definitionElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = definitionElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(termElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n const offsetRight = 5;\n const shiftLeft = definitionOutOfScreenOnRight\n ? definitionRightCoordinate - document.body.clientWidth + offsetRight\n : 0;\n const offsetLeft =\n getCoords(termElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument;\n\n const isShiftLeftNeeded = offsetLeft + definitionWidth >= document.body.clientWidth;\n\n definitionElement.style.top =\n Number(getCoords(termElement).top + offsetTop - customHeaderTop) + 'px';\n definitionElement.style.left = Number(offsetLeft - (isShiftLeftNeeded ? shiftLeft : 0)) + 'px';\n}\n\nfunction termOnResize() {\n const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n if (!openedDefinition) {\n return;\n }\n const termId = openedDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n return;\n }\n\n setDefinitionPosition(openedDefinition, termElement);\n}\n\nfunction termParentElement(term: HTMLElement | null) {\n if (!term) {\n return null;\n }\n\n const closestScrollableParent = term.closest('table') || term.closest('code');\n\n return closestScrollableParent || term.parentElement;\n}\n\nexport function openDefinition(target: HTMLElement) {\n const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n const termId = target.getAttribute('id');\n const termKey = target.getAttribute('term-key');\n const definitionElement = document.getElementById(termKey + '_element');\n\n const isSameTerm = openedDefinition && termId === openedDefinition.getAttribute('term-id');\n if (isSameTerm) {\n closeDefinition(openedDefinition);\n return;\n }\n\n const isTargetDefinitionContent = target.closest(\n [Selector.CONTENT.replace(' ', ''), openClass].join('.'),\n );\n\n if (openedDefinition && !isTargetDefinitionContent) {\n closeDefinition(openedDefinition);\n }\n\n if (!target.matches(Selector.TITLE) || !definitionElement) {\n return;\n }\n\n setDefinitionId(definitionElement, target);\n setDefinitonAriaAttributes(definitionElement, target);\n setDefinitionPosition(definitionElement, target);\n\n definitionElement.classList.toggle(openClass);\n\n trapFocus(definitionElement);\n}\n\nexport function closeDefinition(definition: HTMLElement) {\n definition.classList.remove(openClass);\n const term = getTermByDefinition(definition);\n const termParent = termParentElement(term);\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n isListenerNeeded = true;\n}\n\nexport function getCoords(elem: HTMLElement) {\n const box = elem.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return {top: Math.round(top), left: Math.round(left)};\n}\n\nexport function trapFocus(element: HTMLElement) {\n const focusableElements = element.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n const firstFocusableElement = focusableElements[0] as HTMLElement;\n const lastFocusableElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n if (firstFocusableElement) {\n firstFocusableElement.focus();\n }\n\n element.addEventListener('keydown', function (e) {\n const isTabPressed = e.key === 'Tab' || e.keyCode === 9;\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableElement) {\n lastFocusableElement.focus();\n e.preventDefault();\n }\n } else if (document.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n e.preventDefault();\n }\n });\n}\n\nexport function getTermByDefinition(definition: HTMLElement) {\n const termId = definition.getAttribute('term-id');\n\n return termId ? document.getElementById(termId) : null;\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {getCoords} from '../term/utils';\n\nimport {INLINE_CODE, INLINE_CODE_CLASS, INLINE_CODE_ID, LANG_TOKEN, OPEN_CLASS} from './constant';\n\nexport let timer: ReturnType<typeof setTimeout> | null = null;\n\nlet isListenerNeeded = true;\n\nexport function getTooltipElement(): HTMLElement | null {\n return document.getElementById(INLINE_CODE_ID);\n}\n\nfunction setTooltipAriaAttributes(tooltipElement: HTMLElement, targetElement: HTMLElement): void {\n const ariaLive = targetElement.getAttribute('aria-live') || 'polite';\n tooltipElement?.setAttribute('aria-live', ariaLive);\n tooltipElement?.setAttribute('aria-modal', 'true');\n}\n\nfunction checkTimerAndClear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n}\n\nfunction tooltipParentElement(target: HTMLElement | null) {\n if (!target) {\n return null;\n }\n\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement;\n}\n\nfunction tooltipOnResize() {\n const openedDefinition = getTooltipElement();\n\n if (!openedDefinition) {\n return;\n }\n const inlineId = openedDefinition.getAttribute('inline-id') || '';\n const targetElement = document.getElementById(inlineId);\n\n if (!targetElement) {\n return;\n }\n\n setTooltipPosition(openedDefinition, targetElement);\n}\n\nexport function setTooltipPosition(tooltipElement: HTMLElement, targetElement: HTMLElement): void {\n const {\n x: inlineX,\n y: inlineY,\n right: inlineRight,\n left: inlineLeft,\n width: inlineWidth,\n height: inlineHeight,\n } = targetElement.getBoundingClientRect();\n\n const tooltipParent = tooltipParentElement(targetElement);\n\n if (!tooltipParent) {\n return;\n }\n\n const {right: tooltipParentRight, left: tooltipParentLeft} =\n tooltipParent.getBoundingClientRect();\n\n if ((tooltipParentRight < inlineLeft || tooltipParentLeft > inlineRight) && !isListenerNeeded) {\n closeTooltip(tooltipElement);\n return;\n }\n\n if (isListenerNeeded && tooltipParent) {\n tooltipParent.addEventListener('scroll', tooltipOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(tooltipElement.getAttribute('relativeX'));\n const relativeY = Number(tooltipElement.getAttribute('relativeY'));\n\n if (relativeX === inlineX && relativeY === inlineY) {\n return;\n }\n\n tooltipElement.setAttribute('relativeX', String(inlineX));\n tooltipElement.setAttribute('relativeY', String(inlineY));\n\n const offsetTop = inlineHeight + 5;\n const definitionParent = tooltipElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = tooltipElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(targetElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - inlineWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n const offsetRight = 5;\n const shiftLeft = definitionOutOfScreenOnRight\n ? definitionRightCoordinate - document.body.clientWidth + offsetRight\n : 0;\n const offsetLeft =\n getCoords(targetElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument;\n\n const isShiftLeftNeeded = offsetLeft + definitionWidth >= document.body.clientWidth;\n\n tooltipElement.style.top =\n Number(getCoords(targetElement).top + offsetTop - customHeaderTop) + 'px';\n tooltipElement.style.left = Number(offsetLeft - (isShiftLeftNeeded ? shiftLeft : 0)) + 'px';\n}\n\nexport function getInlineCodeByTooltip(definition: HTMLElement) {\n const inlineId = definition.getAttribute('inline-id');\n\n return inlineId ? document.getElementById(inlineId) : null;\n}\n\nfunction closeTooltipFn(definition: HTMLElement) {\n definition.classList.remove(OPEN_CLASS);\n const inline = getInlineCodeByTooltip(definition);\n const inlineCodepParent = tooltipParentElement(inline);\n const tooltipParent = tooltipParentElement(definition);\n\n definition.removeAttribute('inline-id');\n\n if (!inlineCodepParent || !tooltipParent) {\n return;\n }\n\n tooltipParent.removeChild(definition);\n inlineCodepParent.removeEventListener('scroll', tooltipOnResize);\n isListenerNeeded = true;\n}\n\nfunction createTooltip() {\n let tooltip = getTooltipElement();\n\n if (!tooltip) {\n const pageContent = document.querySelector('.dc-doc-page__content') || document.body;\n const lang = document.documentElement.lang || 'en';\n const tooltipText = LANG_TOKEN[lang as Lang] ?? LANG_TOKEN.en;\n const host = document.createElement('div');\n\n host.innerHTML = `\n <div id=\"${INLINE_CODE_ID}\" class=\"${INLINE_CODE_CLASS}\"\n role=\"dialog\" aria-live=\"polite\" aria-modal=\"true\">\n ${tooltipText}\n </div>\n `;\n\n tooltip = host.firstElementChild as HTMLElement;\n pageContent.appendChild(tooltip);\n }\n\n return tooltip;\n}\n\nexport function openTooltip(target: HTMLElement) {\n const tooltip = createTooltip();\n\n if (!target.matches(INLINE_CODE) || !tooltip) {\n return;\n }\n\n tooltip.setAttribute('inline-id', target.getAttribute('id') || '');\n setTooltipAriaAttributes(tooltip, target);\n setTooltipPosition(tooltip, target);\n\n // In order not to get rid of the smooth appearance effect, I had to do this\n if (tooltip.classList.contains(OPEN_CLASS)) {\n tooltip.classList.remove(OPEN_CLASS);\n requestAnimationFrame(() => {\n tooltip.classList.add(OPEN_CLASS);\n });\n } else {\n tooltip.classList.add(OPEN_CLASS);\n }\n\n return tooltip;\n}\n\nexport function closeTooltip(target: HTMLElement) {\n checkTimerAndClear();\n closeTooltipFn(target);\n}\n\nexport function tooltipWorker(target: HTMLElement) {\n const definition = openTooltip(target);\n\n if (!definition) {\n return;\n }\n checkTimerAndClear();\n timer = setTimeout(() => {\n closeTooltip(definition);\n timer = null;\n }, 1000);\n}\n", "import {copyToClipboard, getEventTarget, isCustom} from '../utils';\n\nimport {INLINE_CODE, OPEN_CLASS} from './constant';\nimport {\n closeTooltip,\n getInlineCodeByTooltip,\n getTooltipElement,\n setTooltipPosition,\n tooltipWorker,\n} from './utils';\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n tooltipWorker(target);\n });\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n const inline = target.matches(INLINE_CODE);\n\n if (isCustom(event) || !inline) {\n return;\n }\n\n inlineCopyFn(target);\n });\n\n document.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' && document.activeElement) {\n const activeElement = document.activeElement as HTMLElement;\n const classInlineCode = INLINE_CODE.replace('.', '');\n\n if (!activeElement.classList.contains(classInlineCode)) {\n return;\n }\n\n const innerText = activeElement.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n tooltipWorker(activeElement);\n });\n }\n\n const inlineTooltip = getTooltipElement();\n\n if (event.key === 'Escape' && inlineTooltip) {\n closeTooltip(inlineTooltip);\n getInlineCodeByTooltip(inlineTooltip)?.focus(); // Set focus back to open button after closing popup\n }\n });\n\n window.addEventListener('resize', () => {\n const inlineTooltip = getTooltipElement();\n if (!inlineTooltip) {\n return;\n }\n\n const inlineId = inlineTooltip.getAttribute('inline-id') || '';\n const inlineCodeElement = document.getElementById(inlineId);\n\n if (!inlineCodeElement) {\n inlineTooltip.classList.toggle(OPEN_CLASS);\n return;\n }\n\n setTooltipPosition(inlineTooltip, inlineCodeElement);\n });\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["require_get_root_node_polyfill", "__commonJS", "exports", "module", "getRootNode", "opt", "composed", "getShadowIncludingRoot", "getRoot", "node", "root", "isShadowRoot", "import_get_root_node_polyfill", "__toESM", "e", "matches", "selector", "th", "getEventTarget", "event", "path", "isCustom", "target", "copyToClipboard", "text", "
|
|
5
|
+
"mappings": "giBAAAA,EAAAC,EAAA,CAAA,+CAAAC,EAAAC,EAAA,CAAA,aAoBA,SAASC,EAAYC,EAAK,CACxB,IAAIC,EAAW,OAAOD,GAAQ,UAAY,EAAQA,EAAI,SAEtD,OAAOC,EAAWC,EAAuB,IAAI,EAAIC,EAAQ,IAAI,CAC/D,CAEA,SAASD,EAAuBE,EAAM,CACpC,IAAIC,EAAOF,EAAQC,CAAI,EAEvB,OAAIE,EAAaD,CAAI,EACZH,EAAuBG,EAAK,IAAI,EAGlCA,CACT,CAEA,SAASF,EAAQC,EAAM,CACrB,OAAIA,EAAK,YAAc,KACdD,EAAQC,EAAK,UAAU,EAGzBA,CACT,CAEA,SAASE,EAAaF,EAAM,CAC1B,OAAOA,EAAK,WAAa,sBAAwBA,EAAK,YAAY,OAAS,YAC7E,CAEI,OAAON,GAAW,UAAYA,EAAO,UACvCA,EAAO,QAAUC,EACnB,CAAA,CAAA,EClDAQ,EAAwBC,EAAAb,EAAA,CAAA,EAEpB,OAAO,UAAa,cAEnB,SAAUc,EAAG,CACV,IAAMC,EACFD,EAAE,SACFA,EAAE,iBACFA,EAAE,uBACFA,EAAE,oBACFA,EAAE,mBACFA,EAAE,iBAEFC,EACAD,EAAE,QAAUA,EAAE,gBAAkBC,EAEhCD,EAAE,QAAUA,EAAE,gBAAkB,SAAiBE,EAAU,CAEvD,IAAMD,GADWD,EAAE,YAAcA,EAAE,YAAY,EAAIF,EAAAR,QAAY,KAAKU,CAAC,GAC5C,iBAAiBE,CAAQ,EAC5CC,EAAK,KACX,OAAO,MAAM,UAAU,KAAK,KAAKF,EAAUD,GAChCA,IAAMG,CAChB,CACL,CAGR,GAAG,QAAQ,SAAS,EC1BjB,IAAMC,EAAkBC,GAAiB,CAC5C,IAAMC,EAAOD,EAAM,aAAa,EAChC,OAAO,MAAM,QAAQC,CAAI,GAAKA,EAAK,OAAS,EAAIA,EAAK,CAAC,EAAID,EAAM,MACpE,EAEaE,EAAYF,GAAiB,CACtC,IAAMG,EAASJ,EAAeC,CAAK,EACnC,MAAO,CAACG,GAAU,CAAEA,EAAuB,OAC/C,EAEaC,EAAkB,MAAOC,GAAiB,CACnD,GAAI,CAACA,EACD,OAGJ,GAAI,UAAU,WAAa,OAAO,UAAU,UAAU,UAClD,OAAO,UAAU,UAAU,UAAUA,CAAI,EAG7C,IAAMC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,aAAa,QAAS,iCAAiC,EAChEA,EAAS,YAAcD,EACvB,SAAS,KAAK,OAAOC,CAAQ,EAE7BA,EAAS,OAAO,EAChB,SAAS,YAAY,MAAM,EAE3B,SAAS,KAAK,YAAYA,CAAQ,CACtC,EC1BMC,EAAkB,wBAExB,SAASC,EAAcC,EAA+B,CAClD,GAAI,CAACA,EACD,OAGJ,IAAMC,EAAKD,EAAU,aAAa,gBAAgB,EAG5CE,EAAOF,EAAU,YAAY,EAAE,eAAe,qBAAqBC,CAAE,EAAE,EAExEC,GAILA,EAAK,aAAa,CACtB,CAEA,SAASC,EAAaT,EAAqB,CACvC,IAAMU,EAASV,EAAO,WAEtB,GAAI,CAACU,EACD,OAGJ,IAAMC,EAAOD,EAAO,cAA2B,UAAU,EAEzD,GAAI,CAACC,EACD,OAIJ,IAAMC,EAAc,MAAM,KAAKD,EAAK,UAAU,EACzC,OAAQxB,GAED,EAAAA,aAAgB,aAAeA,EAAK,UAAU,SAAS,iBAAiB,EAI/E,EACA,IAAKA,GAASA,EAAK,WAAW,EAC9B,KAAK,EAAE,EAEZc,EAAgBW,EAAY,KAAK,CAAC,EAAE,KAAK,IAAM,CAC3CP,EAAcK,EAAO,cAAc,qBAAqB,CAAC,EAEzD,WAAW,IAAMV,EAAO,KAAK,EAAG,IAAI,CACxC,CAAC,CACL,CAEI,OAAO,UAAa,aACpB,SAAS,iBAAiB,QAAUH,GAAU,CAC1C,IAAMG,EAASJ,EAAeC,CAAK,EAE7BgB,EAASb,EAAO,QAAQI,CAAe,EAEzCL,EAASF,CAAK,GAAK,CAACgB,GAIxBJ,EAAaT,CAAM,CACvB,CAAC,EC9DL,IAAMc,EAAyB,wBAE3B,OAAO,UAAa,aACpB,SAAS,iBAAiB,QAAUjB,GAAU,CAC1C,IAAMG,EAASJ,EAAeC,CAAK,EAEnC,GAAIE,EAASF,CAAK,GAAK,CAACG,EAAO,QAAQc,CAAsB,EACzD,OAGJ,IAAMC,EAAOf,EAAO,aAAa,WAAW,GAAK,GAC3CgB,EAAO,IAAI,IAAID,EAAM,OAAO,SAAS,IAAI,EAAE,SAAS,EAE1Dd,EAAgBe,CAAI,CACxB,CAAC,ECdE,IAAMC,EAAc,6BAEdC,EAAiB,kCAEjBC,EAAoB,0BAEpBC,EAAa,OAEbC,EAAmC,CAC5C,GAAI,qEACJ,GAAI,SACJ,GAAI,8CACJ,GAAI,oBACJ,GAAI,WACJ,GAAI,UACJ,GAAI,iCACJ,GAAI,mDACJ,GAAI,aACJ,GAAI,qEACJ,GAAI,UACJ,GAAI,qBACJ,QAAS,qBACT,GAAI,yDACJ,GAAI,kBACJ,GAAI,YACR,EC3BaC,EAAW,CACpB,MAAO,uBACP,QAAS,oBACb,EACaC,EAAY,OACZC,GAAsBF,EAAS,QAAQ,QAAQ,MAAO,EAAE,EAAI,IAAMC,EAyKxE,SAASE,EAAUC,EAAmB,CACzC,IAAMC,EAAMD,EAAK,sBAAsB,EAEjCE,EAAO,SAAS,KAChBC,EAAQ,SAAS,gBAEjBC,EAAY,OAAO,aAAeD,EAAM,WAAaD,EAAK,UAC1DG,EAAa,OAAO,aAAeF,EAAM,YAAcD,EAAK,WAE5DI,EAAYH,EAAM,WAAaD,EAAK,WAAa,EACjDK,EAAaJ,EAAM,YAAcD,EAAK,YAAc,EAEpDM,EAAMP,EAAI,IAAMG,EAAYE,EAC5BG,EAAOR,EAAI,KAAOI,EAAaE,EAErC,MAAO,CAAC,IAAK,KAAK,MAAMC,CAAG,EAAG,KAAM,KAAK,MAAMC,CAAI,CAAC,CACxD,CCxLO,IAAIC,EAA8C,KAErDC,EAAmB,GAEhB,SAASC,GAAwC,CACpD,OAAO,SAAS,eAAepB,CAAc,CACjD,CAEA,SAASqB,EAAyBC,EAA6BC,EAAkC,CAC7F,IAAMC,EAAWD,EAAc,aAAa,WAAW,GAAK,SAC5DD,GAAA,MAAAA,EAAgB,aAAa,YAAaE,CAAA,EAC1CF,GAAA,MAAAA,EAAgB,aAAa,aAAc,MAAA,CAC/C,CAEA,SAASG,GAAqB,CACtBP,IACA,aAAaA,CAAK,EAClBA,EAAQ,KAEhB,CAEA,SAASQ,EAAqB5C,EAA4B,CACtD,OAAKA,EAI2BA,EAAO,QAAQ,OAAO,GAAKA,EAAO,QAAQ,MAAM,GAE9CA,EAAO,cAL9B,IAMf,CAEA,SAAS6C,GAAkB,CACvB,IAAMC,EAAmBR,EAAkB,EAE3C,GAAI,CAACQ,EACD,OAEJ,IAAMC,EAAWD,EAAiB,aAAa,WAAW,GAAK,GACzDL,EAAgB,SAAS,eAAeM,CAAQ,EAEjDN,GAILO,EAAmBF,EAAkBL,CAAa,CACtD,CAEO,SAASO,EAAmBR,EAA6BC,EAAkC,CAC9F,GAAM,CACF,EAAGQ,EACH,EAAGC,EACH,MAAOC,EACP,KAAMC,EACN,MAAOC,EACP,OAAQC,CACZ,EAAIb,EAAc,sBAAsB,EAElCc,EAAgBX,EAAqBH,CAAa,EAExD,GAAI,CAACc,EACD,OAGJ,GAAM,CAAC,MAAOC,EAAoB,KAAMC,EAAiB,EACrDF,EAAc,sBAAsB,EAExC,IAAKC,EAAqBJ,GAAcK,GAAoBN,IAAgB,CAACd,EAAkB,CAC3FqB,EAAalB,CAAc,EAC3B,MACJ,CAEIH,GAAoBkB,IACpBA,EAAc,iBAAiB,SAAUV,CAAe,EACxDR,EAAmB,IAGvB,IAAMsB,GAAY,OAAOnB,EAAe,aAAa,WAAW,CAAC,EAC3DoB,GAAY,OAAOpB,EAAe,aAAa,WAAW,CAAC,EAEjE,GAAImB,KAAcV,GAAWW,KAAcV,EACvC,OAGJV,EAAe,aAAa,YAAa,OAAOS,CAAO,CAAC,EACxDT,EAAe,aAAa,YAAa,OAAOU,CAAO,CAAC,EAExD,IAAMW,GAAYP,EAAe,EAC3BQ,EAAmBtB,EAAe,cAExC,GAAI,CAACsB,EACD,OAGJ,GAAM,CAAC,MAAOC,CAAe,EAAIvB,EAAe,sBAAsB,EAChE,CAAC,KAAMwB,EAAoB,EAAIF,EAAiB,sBAAsB,EAGtEG,EAA2B,OAAOxC,EAAUgB,CAAa,EAAE,IAAI,EAC/DyB,EAA4BH,EAAkBE,EAE9CE,GAA8BF,EAA2BF,EAAkB,EAC3EK,EAA+BF,EAA4B,SAAS,KAAK,YAGzEG,IADiBD,GAAgC,SAAS,MAAQ,QAElD,CAACD,GAA8BJ,EAAkBV,EAAc,EAC/EiB,GAAkB7C,EAAUqC,CAAgB,EAAE,IAAMA,EAAiB,UAErES,GAAYH,EACZF,EAA4B,SAAS,KAAK,YAF5B,EAGd,EACAM,EACF/C,EAAUgB,CAAa,EAAE,KACzBuB,GACAF,EAAiB,WACjBO,GAEEI,GAAoBD,EAAaT,GAAmB,SAAS,KAAK,YAExEvB,EAAe,MAAM,IACjB,OAAOf,EAAUgB,CAAa,EAAE,IAAMoB,GAAYS,EAAe,EAAI,KACzE9B,EAAe,MAAM,KAAO,OAAOgC,GAAcC,GAAoBF,GAAY,EAAE,EAAI,IAC3F,CAEO,SAASG,EAAuBC,EAAyB,CAC5D,IAAM5B,EAAW4B,EAAW,aAAa,WAAW,EAEpD,OAAO5B,EAAW,SAAS,eAAeA,CAAQ,EAAI,IAC1D,CAEA,SAAS6B,EAAeD,EAAyB,CAC7CA,EAAW,UAAU,OAAOvD,CAAU,EACtC,IAAMyD,EAASH,EAAuBC,CAAU,EAC1CG,EAAoBlC,EAAqBiC,CAAM,EAC/CtB,EAAgBX,EAAqB+B,CAAU,EAErDA,EAAW,gBAAgB,WAAW,EAElC,GAACG,GAAqB,CAACvB,KAI3BA,EAAc,YAAYoB,CAAU,EACpCG,EAAkB,oBAAoB,SAAUjC,CAAe,EAC/DR,EAAmB,GACvB,CAEA,SAAS0C,IAAgB,CAzJzB,IAAAC,EA0JI,IAAIC,EAAU3C,EAAkB,EAEhC,GAAI,CAAC2C,EAAS,CACV,IAAMC,EAAc,SAAS,cAAc,uBAAuB,GAAK,SAAS,KAC1EC,EAAO,SAAS,gBAAgB,MAAQ,KACxCC,GAAcJ,EAAA3D,EAAW8D,CAAY,IAAvB,KAAAH,EAA4B3D,EAAW,GACrDgE,EAAO,SAAS,cAAc,KAAK,EAEzCA,EAAK,UAAY;uBACFnE,CAAc,YAAYC,CAAiB;;kBAEhDiE,CAAW;;UAIrBH,EAAUI,EAAK,kBACfH,EAAY,YAAYD,CAAO,CACnC,CAEA,OAAOA,CACX,CAEO,SAASK,GAAYtF,EAAqB,CAC7C,IAAMiF,EAAUF,GAAc,EAE9B,GAAI,GAAC/E,EAAO,QAAQiB,CAAW,GAAK,CAACgE,GAIrC,OAAAA,EAAQ,aAAa,YAAajF,EAAO,aAAa,IAAI,GAAK,EAAE,EACjEuC,EAAyB0C,EAASjF,CAAM,EACxCgD,EAAmBiC,EAASjF,CAAM,EAG9BiF,EAAQ,UAAU,SAAS7D,CAAU,GACrC6D,EAAQ,UAAU,OAAO7D,CAAU,EACnC,sBAAsB,IAAM,CACxB6D,EAAQ,UAAU,IAAI7D,CAAU,CACpC,CAAC,GAED6D,EAAQ,UAAU,IAAI7D,CAAU,EAG7B6D,CACX,CAEO,SAASvB,EAAa1D,EAAqB,CAC9C2C,EAAmB,EACnBiC,EAAe5E,CAAM,CACzB,CAEO,SAASuF,EAAcvF,EAAqB,CAC/C,IAAM2E,EAAaW,GAAYtF,CAAM,EAEhC2E,IAGLhC,EAAmB,EACnBP,EAAQ,WAAW,IAAM,CACrBsB,EAAaiB,CAAU,EACvBvC,EAAQ,IACZ,EAAG,GAAI,EACX,CC7MO,SAASoD,GAAaxF,EAAqB,CAC9C,IAAMyF,EAAYzF,EAAO,UAEpByF,GAILxF,EAAgBwF,CAAS,EAAE,KAAK,IAAM,CAClCF,EAAcvF,CAAM,CACxB,CAAC,CACL,CAEI,OAAO,UAAa,cACpB,SAAS,iBAAiB,QAAUH,GAAU,CAC1C,IAAMG,EAASJ,EAAeC,CAAK,EAE7BgF,EAAS7E,EAAO,QAAQiB,CAAW,EAErClB,EAASF,CAAK,GAAK,CAACgF,GAIxBW,GAAaxF,CAAM,CACvB,CAAC,EAED,SAAS,iBAAiB,UAAYH,GAAU,CApCpD,IAAAmF,EAqCQ,GAAInF,EAAM,MAAQ,SAAW,SAAS,cAAe,CACjD,IAAM6F,EAAgB,SAAS,cACzBC,EAAkB1E,EAAY,QAAQ,IAAK,EAAE,EAEnD,GAAI,CAACyE,EAAc,UAAU,SAASC,CAAe,EACjD,OAGJ,IAAMF,EAAYC,EAAc,UAEhC,GAAI,CAACD,EACD,OAGJxF,EAAgBwF,CAAS,EAAE,KAAK,IAAM,CAClCF,EAAcG,CAAa,CAC/B,CAAC,CACL,CAEA,IAAME,EAAgBtD,EAAkB,EAEpCzC,EAAM,MAAQ,UAAY+F,IAC1BlC,EAAakC,CAAa,GAC1BZ,EAAAN,EAAuBkB,CAAa,IAApC,MAAAZ,EAAuC,MAAA,EAE/C,CAAC,EAED,OAAO,iBAAiB,SAAU,IAAM,CACpC,IAAMY,EAAgBtD,EAAkB,EACxC,GAAI,CAACsD,EACD,OAGJ,IAAM7C,EAAW6C,EAAc,aAAa,WAAW,GAAK,GACtDC,EAAoB,SAAS,eAAe9C,CAAQ,EAE1D,GAAI,CAAC8C,EAAmB,CACpBD,EAAc,UAAU,OAAOxE,CAAU,EACzC,MACJ,CAEA4B,EAAmB4C,EAAeC,CAAiB,CACvD,CAAC",
|
|
6
|
+
"names": ["require_get_root_node_polyfill", "__commonJS", "exports", "module", "getRootNode", "opt", "composed", "getShadowIncludingRoot", "getRoot", "node", "root", "isShadowRoot", "import_get_root_node_polyfill", "__toESM", "e", "matches", "selector", "th", "getEventTarget", "event", "path", "isCustom", "target", "copyToClipboard", "text", "textarea", "BUTTON_SELECTOR", "notifySuccess", "svgButton", "id", "icon", "buttonCopyFn", "parent", "code", "textContent", "button", "ANCHOR_BUTTON_SELECTOR", "href", "link", "INLINE_CODE", "INLINE_CODE_ID", "INLINE_CODE_CLASS", "OPEN_CLASS", "LANG_TOKEN", "Selector", "openClass", "openDefinitionClass", "getCoords", "elem", "box", "body", "docEl", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "top", "left", "timer", "isListenerNeeded", "getTooltipElement", "setTooltipAriaAttributes", "tooltipElement", "targetElement", "ariaLive", "checkTimerAndClear", "tooltipParentElement", "tooltipOnResize", "openedDefinition", "inlineId", "setTooltipPosition", "inlineX", "inlineY", "inlineRight", "inlineLeft", "inlineWidth", "inlineHeight", "tooltipParent", "tooltipParentRight", "tooltipParentLeft", "closeTooltip", "relativeX", "relativeY", "offsetTop", "definitionParent", "definitionWidth", "definitionParentLeft", "definitionLeftCoordinate", "definitionRightCoordinate", "definitionOutOfScreenOnLeft", "definitionOutOfScreenOnRight", "fitDefinitionDocument", "customHeaderTop", "shiftLeft", "offsetLeft", "isShiftLeftNeeded", "getInlineCodeByTooltip", "definition", "closeTooltipFn", "inline", "inlineCodepParent", "createTooltip", "_a", "tooltip", "pageContent", "lang", "tooltipText", "host", "openTooltip", "tooltipWorker", "inlineCopyFn", "innerText", "activeElement", "classInlineCode", "inlineTooltip", "inlineCodeElement"]
|
|
7
7
|
}
|
package/dist/js/yfm.js
CHANGED
|
@@ -4,22 +4,9 @@
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
9
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
9
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
-
var __spreadValues = (a, b) => {
|
|
13
|
-
for (var prop in b || (b = {}))
|
|
14
|
-
if (__hasOwnProp.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
if (__getOwnPropSymbols)
|
|
17
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
-
if (__propIsEnum.call(b, prop))
|
|
19
|
-
__defNormalProp(a, prop, b[prop]);
|
|
20
|
-
}
|
|
21
|
-
return a;
|
|
22
|
-
};
|
|
23
10
|
var __commonJS = (cb, mod) => function __require() {
|
|
24
11
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
25
12
|
};
|
|
@@ -40,26 +27,6 @@
|
|
|
40
27
|
mod
|
|
41
28
|
));
|
|
42
29
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
43
|
-
var __async = (__this, __arguments, generator) => {
|
|
44
|
-
return new Promise((resolve, reject) => {
|
|
45
|
-
var fulfilled = (value) => {
|
|
46
|
-
try {
|
|
47
|
-
step(generator.next(value));
|
|
48
|
-
} catch (e) {
|
|
49
|
-
reject(e);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var rejected = (value) => {
|
|
53
|
-
try {
|
|
54
|
-
step(generator.throw(value));
|
|
55
|
-
} catch (e) {
|
|
56
|
-
reject(e);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
60
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
30
|
|
|
64
31
|
// node_modules/get-root-node-polyfill/index.js
|
|
65
32
|
var require_get_root_node_polyfill = __commonJS({
|
|
@@ -94,43 +61,46 @@
|
|
|
94
61
|
// node_modules/@diplodoc/cut-extension/build/runtime/index.js
|
|
95
62
|
(() => {
|
|
96
63
|
var i = "yfm_cut";
|
|
97
|
-
var
|
|
64
|
+
var n = { Cut: "yfm-cut", Title: "yfm-cut-title", Content: "yfm-cut-content", Highlight: "yfm-cut-highlight" };
|
|
98
65
|
var c = class {
|
|
99
66
|
constructor() {
|
|
100
67
|
__publicField(this, "disposers", []);
|
|
101
68
|
this.disposers.push(this.init());
|
|
102
69
|
}
|
|
103
70
|
init() {
|
|
104
|
-
let
|
|
105
|
-
|
|
106
|
-
},
|
|
107
|
-
|
|
71
|
+
let e = false, o = () => {
|
|
72
|
+
e = true;
|
|
73
|
+
}, t = () => {
|
|
74
|
+
e = false;
|
|
108
75
|
}, I = (C) => {
|
|
109
|
-
u(C.target) && !
|
|
76
|
+
u(C.target) && !e && this.focusActiveCut(C.target);
|
|
110
77
|
};
|
|
111
|
-
return document.addEventListener("mousedown",
|
|
112
|
-
document.removeEventListener("mousedown",
|
|
78
|
+
return document.addEventListener("mousedown", o), document.addEventListener("mouseup", t), document.addEventListener("focus", I, true), () => {
|
|
79
|
+
document.removeEventListener("mousedown", o), document.removeEventListener("mouseup", t), document.removeEventListener("focus", I, true);
|
|
113
80
|
};
|
|
114
81
|
}
|
|
115
82
|
dispose() {
|
|
116
|
-
for (let
|
|
83
|
+
for (let e of this.disposers) e();
|
|
117
84
|
}
|
|
118
|
-
focusActiveCut(
|
|
119
|
-
let
|
|
120
|
-
|
|
121
|
-
|
|
85
|
+
focusActiveCut(e) {
|
|
86
|
+
let o = e.parentNode;
|
|
87
|
+
if (!s(o)) return;
|
|
88
|
+
let t = o;
|
|
89
|
+
for (; t; ) s(t) && (t.open = true), t = t.parentElement;
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
o.classList.add(n.Highlight);
|
|
122
92
|
}, 70), setTimeout(() => {
|
|
123
|
-
|
|
124
|
-
}, 1e3)
|
|
93
|
+
o.classList.remove(n.Highlight);
|
|
94
|
+
}, 1e3);
|
|
125
95
|
}
|
|
126
96
|
};
|
|
127
|
-
function s(
|
|
97
|
+
function s(g) {
|
|
128
98
|
var _a;
|
|
129
|
-
return ((_a =
|
|
99
|
+
return ((_a = g == null ? void 0 : g.tagName) == null ? void 0 : _a.toLowerCase()) === "details" && (g == null ? void 0 : g.classList.contains(n.Cut));
|
|
130
100
|
}
|
|
131
|
-
function u(
|
|
101
|
+
function u(g) {
|
|
132
102
|
var _a;
|
|
133
|
-
return ((_a =
|
|
103
|
+
return ((_a = g == null ? void 0 : g.tagName) == null ? void 0 : _a.toLowerCase()) === "summary" && (g == null ? void 0 : g.classList.contains(n.Title));
|
|
134
104
|
}
|
|
135
105
|
typeof window < "u" && !window[i] && (window[i] = new c());
|
|
136
106
|
})();
|
|
@@ -142,7 +112,7 @@
|
|
|
142
112
|
var F = "data-diplodoc-forced";
|
|
143
113
|
var w = "yfm-tabs-dropdown-select";
|
|
144
114
|
var W = "yfm-tabs-vertical";
|
|
145
|
-
var v = ((g) => (g.Regular = "regular", g.Radio = "radio", g.Dropdown = "dropdown", g.Accordion = "accordion", g))(v || {}), Z = Symbol.for("diplodocTabs");
|
|
115
|
+
var v = ((g) => (g.Regular = "regular", g.Radio = "radio", g.Dropdown = "dropdown", g.Accordion = "accordion", g))(v || {}), Z = /* @__PURE__ */ Symbol.for("diplodocTabs");
|
|
146
116
|
var h = (C) => {
|
|
147
117
|
let t = C.composedPath();
|
|
148
118
|
return Array.isArray(t) && t.length > 0 ? t[0] : C.target;
|
|
@@ -218,7 +188,7 @@
|
|
|
218
188
|
this._isRestoringTabs = true;
|
|
219
189
|
try {
|
|
220
190
|
for (let [e, o] of Object.entries(t)) if (e) {
|
|
221
|
-
let g =
|
|
191
|
+
let g = { group: e, ...o };
|
|
222
192
|
this.selectTab(g);
|
|
223
193
|
}
|
|
224
194
|
} finally {
|
|
@@ -246,7 +216,7 @@
|
|
|
246
216
|
let e = new URLSearchParams(window.location.search), o = Object.entries(t).map(([a, { key: c, variant: i }]) => i === "regular" ? `${a}_${c}` : `${a}_${c}_${i}`);
|
|
247
217
|
o.length > 0 ? e.set("tabs", o.join(",")) : e.delete("tabs");
|
|
248
218
|
let g = history.state || {}, I = new URL(window.location.href);
|
|
249
|
-
I.search = e.toString(), window.history.replaceState(
|
|
219
|
+
I.search = e.toString(), window.history.replaceState({ ...g }, document.title, I.href);
|
|
250
220
|
}
|
|
251
221
|
getCurrentPageTabHistory(t) {
|
|
252
222
|
return Object.fromEntries(Object.entries(t).filter(([e]) => this._currentPageTabGroups.includes(e)));
|
|
@@ -451,7 +421,7 @@
|
|
|
451
421
|
const target = getEventTarget(event);
|
|
452
422
|
return !target || !target.matches;
|
|
453
423
|
};
|
|
454
|
-
var copyToClipboard = (text) =>
|
|
424
|
+
var copyToClipboard = async (text) => {
|
|
455
425
|
if (!text) {
|
|
456
426
|
return;
|
|
457
427
|
}
|
|
@@ -465,7 +435,7 @@
|
|
|
465
435
|
textarea.select();
|
|
466
436
|
document.execCommand("copy");
|
|
467
437
|
document.body.removeChild(textarea);
|
|
468
|
-
}
|
|
438
|
+
};
|
|
469
439
|
|
|
470
440
|
// src/js/code.ts
|
|
471
441
|
var BUTTON_SELECTOR = ".yfm-clipboard-button";
|