@diplodoc/transform 4.32.3 → 4.33.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.
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ (() => {
3
+ // src/js/utils.ts
4
+ var getEventTarget = (event) => {
5
+ const path = event.composedPath();
6
+ return Array.isArray(path) && path.length > 0 ? path[0] : event.target;
7
+ };
8
+ var isCustom = (event) => {
9
+ const target = getEventTarget(event);
10
+ return !target || !target.matches;
11
+ };
12
+
13
+ // src/js/term/utils.ts
14
+ var Selector = {
15
+ TITLE: ".yfm .yfm-term_title",
16
+ CONTENT: ".yfm .yfm-term_dfn"
17
+ };
18
+ var openClass = "open";
19
+ var openDefinitionClass = Selector.CONTENT.replace(/\./g, "") + " " + openClass;
20
+ var isListenerNeeded = true;
21
+ function createDefinitionElement(termElement) {
22
+ var _a;
23
+ const termKey = termElement.getAttribute("term-key");
24
+ const definitionTemplate = document.getElementById(
25
+ `${termKey}_template`
26
+ );
27
+ const definitionElement = definitionTemplate == null ? void 0 : definitionTemplate.content.cloneNode(true).firstChild;
28
+ (_a = definitionTemplate == null ? void 0 : definitionTemplate.parentElement) == null ? void 0 : _a.appendChild(definitionElement);
29
+ definitionTemplate.remove();
30
+ return definitionElement;
31
+ }
32
+ function setDefinitionId(definitionElement, termElement) {
33
+ const termId = termElement.getAttribute("id") || Math.random().toString(36).substr(2, 8);
34
+ definitionElement == null ? void 0 : definitionElement.setAttribute("term-id", termId);
35
+ }
36
+ function setDefinitonAriaAttributes(definitionElement, termElement) {
37
+ const ariaLive = termElement.getAttribute("aria-live") || "polite";
38
+ definitionElement == null ? void 0 : definitionElement.setAttribute("aria-live", ariaLive);
39
+ definitionElement == null ? void 0 : definitionElement.setAttribute("aria-modal", "true");
40
+ }
41
+ function setDefinitionPosition(definitionElement, termElement) {
42
+ const {
43
+ x: termX,
44
+ y: termY,
45
+ right: termRight,
46
+ left: termLeft,
47
+ width: termWidth,
48
+ height: termHeight
49
+ } = termElement.getBoundingClientRect();
50
+ const termParent = termParentElement(termElement);
51
+ if (!termParent) {
52
+ return;
53
+ }
54
+ const { right: termParentRight, left: termParentLeft } = termParent.getBoundingClientRect();
55
+ if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {
56
+ closeDefinition(definitionElement);
57
+ return;
58
+ }
59
+ if (isListenerNeeded && termParent) {
60
+ termParent.addEventListener("scroll", termOnResize);
61
+ isListenerNeeded = false;
62
+ }
63
+ const relativeX = Number(definitionElement.getAttribute("relativeX"));
64
+ const relativeY = Number(definitionElement.getAttribute("relativeY"));
65
+ if (relativeX === termX && relativeY === termY) {
66
+ return;
67
+ }
68
+ definitionElement.setAttribute("relativeX", String(termX));
69
+ definitionElement.setAttribute("relativeY", String(termY));
70
+ const offsetTop = termHeight + 5;
71
+ const definitionParent = definitionElement.parentElement;
72
+ if (!definitionParent) {
73
+ return;
74
+ }
75
+ const { width: definitionWidth } = definitionElement.getBoundingClientRect();
76
+ const { left: definitionParentLeft } = definitionParent.getBoundingClientRect();
77
+ const definitionLeftCoordinate = Number(getCoords(termElement).left);
78
+ const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;
79
+ const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;
80
+ const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;
81
+ const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === "rtl";
82
+ const fitDefinitionDocument = isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;
83
+ const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;
84
+ const offsetRight = 5;
85
+ const shiftLeft = definitionOutOfScreenOnRight ? definitionRightCoordinate - document.body.clientWidth + offsetRight : 0;
86
+ const offsetLeft = getCoords(termElement).left - definitionParentLeft + definitionParent.offsetLeft - fitDefinitionDocument;
87
+ const isShiftLeftNeeded = offsetLeft + definitionWidth >= document.body.clientWidth;
88
+ definitionElement.style.top = Number(getCoords(termElement).top + offsetTop - customHeaderTop) + "px";
89
+ definitionElement.style.left = Number(offsetLeft - (isShiftLeftNeeded ? shiftLeft : 0)) + "px";
90
+ }
91
+ function termOnResize() {
92
+ const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0];
93
+ if (!openedDefinition) {
94
+ return;
95
+ }
96
+ const termId = openedDefinition.getAttribute("term-id") || "";
97
+ const termElement = document.getElementById(termId);
98
+ if (!termElement) {
99
+ return;
100
+ }
101
+ setDefinitionPosition(openedDefinition, termElement);
102
+ }
103
+ function termParentElement(term) {
104
+ if (!term) {
105
+ return null;
106
+ }
107
+ const closestScrollableParent = term.closest("table") || term.closest("code");
108
+ return closestScrollableParent || term.parentElement;
109
+ }
110
+ function openDefinition(target) {
111
+ const openedDefinition = document.getElementsByClassName(openDefinitionClass)[0];
112
+ const termId = target.getAttribute("id");
113
+ const termKey = target.getAttribute("term-key");
114
+ let definitionElement = document.getElementById(termKey + "_element");
115
+ if (termKey && !definitionElement) {
116
+ definitionElement = createDefinitionElement(target);
117
+ }
118
+ const isSameTerm = openedDefinition && termId === openedDefinition.getAttribute("term-id");
119
+ if (isSameTerm) {
120
+ closeDefinition(openedDefinition);
121
+ return;
122
+ }
123
+ const isTargetDefinitionContent = target.closest(
124
+ [Selector.CONTENT.replace(" ", ""), openClass].join(".")
125
+ );
126
+ if (openedDefinition && !isTargetDefinitionContent) {
127
+ closeDefinition(openedDefinition);
128
+ }
129
+ if (!target.matches(Selector.TITLE) || !definitionElement) {
130
+ return;
131
+ }
132
+ setDefinitionId(definitionElement, target);
133
+ setDefinitonAriaAttributes(definitionElement, target);
134
+ setDefinitionPosition(definitionElement, target);
135
+ definitionElement.classList.toggle(openClass);
136
+ trapFocus(definitionElement);
137
+ }
138
+ function closeDefinition(definition) {
139
+ definition.classList.remove(openClass);
140
+ const termId = definition.getAttribute("term-id") || "";
141
+ const term = document.getElementById(termId);
142
+ const termParent = termParentElement(term);
143
+ if (!termParent) {
144
+ return;
145
+ }
146
+ termParent.removeEventListener("scroll", termOnResize);
147
+ term == null ? void 0 : term.focus();
148
+ isListenerNeeded = true;
149
+ }
150
+ function getCoords(elem) {
151
+ const box = elem.getBoundingClientRect();
152
+ const body = document.body;
153
+ const docEl = document.documentElement;
154
+ const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
155
+ const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;
156
+ const clientTop = docEl.clientTop || body.clientTop || 0;
157
+ const clientLeft = docEl.clientLeft || body.clientLeft || 0;
158
+ const top = box.top + scrollTop - clientTop;
159
+ const left = box.left + scrollLeft - clientLeft;
160
+ return { top: Math.round(top), left: Math.round(left) };
161
+ }
162
+ function trapFocus(element) {
163
+ const focusableElements = element.querySelectorAll(
164
+ 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
165
+ );
166
+ const firstFocusableElement = focusableElements[0];
167
+ const lastFocusableElement = focusableElements[focusableElements.length - 1];
168
+ if (firstFocusableElement) {
169
+ firstFocusableElement.focus();
170
+ }
171
+ element.addEventListener("keydown", function(e) {
172
+ const isTabPressed = e.key === "Tab" || e.keyCode === 9;
173
+ if (!isTabPressed) {
174
+ return;
175
+ }
176
+ if (e.shiftKey) {
177
+ if (document.activeElement === firstFocusableElement) {
178
+ lastFocusableElement.focus();
179
+ e.preventDefault();
180
+ }
181
+ } else if (document.activeElement === lastFocusableElement) {
182
+ firstFocusableElement.focus();
183
+ e.preventDefault();
184
+ }
185
+ });
186
+ }
187
+
188
+ // src/js/term/index.ts
189
+ if (typeof document !== "undefined") {
190
+ document.addEventListener("click", (event) => {
191
+ if (getEventTarget(event) || !isCustom(event)) {
192
+ openDefinition(getEventTarget(event));
193
+ }
194
+ });
195
+ document.addEventListener("keydown", (event) => {
196
+ const openedDefinition = document.getElementsByClassName(
197
+ openDefinitionClass
198
+ )[0];
199
+ if (event.key === "Enter" && document.activeElement) {
200
+ openDefinition(document.activeElement);
201
+ }
202
+ if (event.key === "Escape" && openedDefinition) {
203
+ closeDefinition(openedDefinition);
204
+ }
205
+ });
206
+ window.addEventListener("resize", () => {
207
+ const openedDefinition = document.getElementsByClassName(
208
+ openDefinitionClass
209
+ )[0];
210
+ if (!openedDefinition) {
211
+ return;
212
+ }
213
+ const termId = openedDefinition.getAttribute("term-id") || "";
214
+ const termElement = document.getElementById(termId);
215
+ if (!termElement) {
216
+ openedDefinition.classList.toggle(openClass);
217
+ return;
218
+ }
219
+ setDefinitionPosition(openedDefinition, termElement);
220
+ });
221
+ }
222
+ })();
223
+ //# sourceMappingURL=_yfm-only.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/js/utils.ts", "../../src/js/term/utils.ts", "../../src/js/term/index.ts"],
4
+ "sourcesContent": ["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", "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 createDefinitionElement(termElement: HTMLElement) {\n const termKey = termElement.getAttribute('term-key');\n const definitionTemplate = document.getElementById(\n `${termKey}_template`,\n ) as HTMLTemplateElement;\n const definitionElement = definitionTemplate?.content.cloneNode(true).firstChild as HTMLElement;\n\n definitionTemplate?.parentElement?.appendChild(definitionElement);\n definitionTemplate.remove();\n\n return definitionElement;\n}\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 let definitionElement = document.getElementById(termKey + '_element');\n\n if (termKey && !definitionElement) {\n definitionElement = createDefinitionElement(target);\n }\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 termId = definition.getAttribute('term-id') || '';\n const term = document.getElementById(termId);\n const termParent = termParentElement(term);\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n term?.focus(); // Set focus back to open button after closing popup\n\n isListenerNeeded = true;\n}\n\nfunction 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", "import {getEventTarget, isCustom} from '../utils';\n\nimport {\n closeDefinition,\n openClass,\n openDefinition,\n openDefinitionClass,\n setDefinitionPosition,\n} from './utils';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (getEventTarget(event) || !isCustom(event)) {\n openDefinition(getEventTarget(event) as HTMLElement);\n }\n });\n\n document.addEventListener('keydown', (event) => {\n const openedDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (event.key === 'Enter' && document.activeElement) {\n openDefinition(document.activeElement as HTMLElement);\n }\n\n if (event.key === 'Escape' && openedDefinition) {\n closeDefinition(openedDefinition);\n }\n });\n\n window.addEventListener('resize', () => {\n const openedDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (!openedDefinition) {\n return;\n }\n\n const termId = openedDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n openedDefinition.classList.toggle(openClass);\n return;\n }\n\n setDefinitionPosition(openedDefinition, termElement);\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";(()=>{(()=>{var p=t=>{let e=t.composedPath();return Array.isArray(e)&&e.length>0?e[0]:t.target},B=t=>{let e=p(t);return!e||!e.matches},b={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},s="open",d=b.CONTENT.replace(/\./g,"")+" "+s,f=!0;function S(t){var e;let n=t.getAttribute("term-key"),o=document.getElementById(`${n}_template`),i=o==null?void 0:o.content.cloneNode(!0).firstChild;return(e=o==null?void 0:o.parentElement)==null||e.appendChild(i),o.remove(),i}function I(t,e){let n=e.getAttribute("id")||Math.random().toString(36).substr(2,8);t==null||t.setAttribute("term-id",n)}function P(t,e){let n=e.getAttribute("aria-live")||"polite";t==null||t.setAttribute("aria-live",n),t==null||t.setAttribute("aria-modal","true")}function y(t,e){let{x:n,y:o,right:i,left:c,width:l,height:v}=e.getBoundingClientRect(),r=T(e);if(!r)return;let{right:h,left:O}=r.getBoundingClientRect();if((h<c||O>i)&&!f){a(t);return}f&&r&&(r.addEventListener("scroll",L),f=!1);let R=Number(t.getAttribute("relativeX")),k=Number(t.getAttribute("relativeY"));if(R===n&&k===o)return;t.setAttribute("relativeX",String(n)),t.setAttribute("relativeY",String(o));let x=v+5,u=t.parentElement;if(!u)return;let{width:g}=t.getBoundingClientRect(),{left:W}=u.getBoundingClientRect(),A=Number(m(e).left),C=g+A,X=A-g<0,N=C>document.body.clientWidth,Y=(N||document.dir==="rtl")&&!X?g-l:0,_=m(u).top-u.offsetTop,F=N?C-document.body.clientWidth+5:0,D=m(e).left-W+u.offsetLeft-Y,K=D+g>=document.body.clientWidth;t.style.top=Number(m(e).top+x-_)+"px",t.style.left=Number(D-(K?F:0))+"px"}function L(){let t=document.getElementsByClassName(d)[0];if(!t)return;let e=t.getAttribute("term-id")||"",n=document.getElementById(e);n&&y(t,n)}function T(t){return t?t.closest("table")||t.closest("code")||t.parentElement:null}function E(t){let e=document.getElementsByClassName(d)[0],n=t.getAttribute("id"),o=t.getAttribute("term-key"),i=document.getElementById(o+"_element");if(o&&!i&&(i=S(t)),e&&n===e.getAttribute("term-id")){a(e);return}let l=t.closest([b.CONTENT.replace(" ",""),s].join("."));e&&!l&&a(e),!(!t.matches(b.TITLE)||!i)&&(I(i,t),P(i,t),y(i,t),i.classList.toggle(s),w(i))}function a(t){t.classList.remove(s);let e=t.getAttribute("term-id")||"",n=document.getElementById(e),o=T(n);o&&(o.removeEventListener("scroll",L),n==null||n.focus(),f=!0)}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,l=o.clientTop||n.clientTop||0,v=o.clientLeft||n.clientLeft||0,r=e.top+i-l,h=e.left+c-v;return{top:Math.round(r),left:Math.round(h)}}function w(t){let e=t.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),n=e[0],o=e[e.length-1];n&&n.focus(),t.addEventListener("keydown",function(i){(i.key==="Tab"||i.keyCode===9)&&(i.shiftKey?document.activeElement===n&&(o.focus(),i.preventDefault()):document.activeElement===o&&(n.focus(),i.preventDefault()))})}typeof document!="undefined"&&(document.addEventListener("click",t=>{(p(t)||!B(t))&&E(p(t))}),document.addEventListener("keydown",t=>{let e=document.getElementsByClassName(d)[0];t.key==="Enter"&&document.activeElement&&E(document.activeElement),t.key==="Escape"&&e&&a(e)}),window.addEventListener("resize",()=>{let t=document.getElementsByClassName(d)[0];if(!t)return;let e=t.getAttribute("term-id")||"",n=document.getElementById(e);if(!n){t.classList.toggle(s);return}y(t,n)}))})();})();
2
+ //# sourceMappingURL=_yfm-only.min.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/js/utils.ts", "../../src/js/term/utils.ts", "../../src/js/term/index.ts"],
4
+ "sourcesContent": ["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", "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 createDefinitionElement(termElement: HTMLElement) {\n const termKey = termElement.getAttribute('term-key');\n const definitionTemplate = document.getElementById(\n `${termKey}_template`,\n ) as HTMLTemplateElement;\n const definitionElement = definitionTemplate?.content.cloneNode(true).firstChild as HTMLElement;\n\n definitionTemplate?.parentElement?.appendChild(definitionElement);\n definitionTemplate.remove();\n\n return definitionElement;\n}\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 let definitionElement = document.getElementById(termKey + '_element');\n\n if (termKey && !definitionElement) {\n definitionElement = createDefinitionElement(target);\n }\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 termId = definition.getAttribute('term-id') || '';\n const term = document.getElementById(termId);\n const termParent = termParentElement(term);\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n term?.focus(); // Set focus back to open button after closing popup\n\n isListenerNeeded = true;\n}\n\nfunction 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", "import {getEventTarget, isCustom} from '../utils';\n\nimport {\n closeDefinition,\n openClass,\n openDefinition,\n openDefinitionClass,\n setDefinitionPosition,\n} from './utils';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (getEventTarget(event) || !isCustom(event)) {\n openDefinition(getEventTarget(event) as HTMLElement);\n }\n });\n\n document.addEventListener('keydown', (event) => {\n const openedDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (event.key === 'Enter' && document.activeElement) {\n openDefinition(document.activeElement as HTMLElement);\n }\n\n if (event.key === 'Escape' && openedDefinition) {\n closeDefinition(openedDefinition);\n }\n });\n\n window.addEventListener('resize', () => {\n const openedDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (!openedDefinition) {\n return;\n }\n\n const termId = openedDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n openedDefinition.classList.toggle(openClass);\n return;\n }\n\n setDefinitionPosition(openedDefinition, termElement);\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["getEventTarget", "event", "path", "isCustom", "target", "Selector", "openClass", "openDefinitionClass", "isListenerNeeded", "createDefinitionElement", "termElement", "_a", "termKey", "definitionTemplate", "definitionElement", "setDefinitionId", "termId", "setDefinitonAriaAttributes", "ariaLive", "setDefinitionPosition", "termX", "termY", "termRight", "termLeft", "termWidth", "termHeight", "termParent", "termParentElement", "termParentRight", "termParentLeft", "closeDefinition", "termOnResize", "relativeX", "relativeY", "offsetTop", "definitionParent", "definitionWidth", "definitionParentLeft", "definitionLeftCoordinate", "getCoords", "definitionRightCoordinate", "definitionOutOfScreenOnLeft", "definitionOutOfScreenOnRight", "fitDefinitionDocument", "customHeaderTop", "shiftLeft", "offsetLeft", "isShiftLeftNeeded", "openedDefinition", "term", "openDefinition", "isTargetDefinitionContent", "trapFocus", "definition", "elem", "box", "body", "docEl", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "top", "left", "element", "focusableElements", "firstFocusableElement", "lastFocusableElement", "e"]
7
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ (() => {
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __commonJS = (cb, mod) => function __require() {
10
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+
29
+ // node_modules/get-root-node-polyfill/index.js
30
+ var require_get_root_node_polyfill = __commonJS({
31
+ "node_modules/get-root-node-polyfill/index.js"(exports, module) {
32
+ "use strict";
33
+ function getRootNode2(opt) {
34
+ var composed = typeof opt === "object" && Boolean(opt.composed);
35
+ return composed ? getShadowIncludingRoot(this) : getRoot(this);
36
+ }
37
+ function getShadowIncludingRoot(node) {
38
+ var root = getRoot(node);
39
+ if (isShadowRoot(root)) {
40
+ return getShadowIncludingRoot(root.host);
41
+ }
42
+ return root;
43
+ }
44
+ function getRoot(node) {
45
+ if (node.parentNode != null) {
46
+ return getRoot(node.parentNode);
47
+ }
48
+ return node;
49
+ }
50
+ function isShadowRoot(node) {
51
+ return node.nodeName === "#document-fragment" && node.constructor.name === "ShadowRoot";
52
+ }
53
+ if (typeof module === "object" && module.exports) {
54
+ module.exports = getRootNode2;
55
+ }
56
+ }
57
+ });
58
+
59
+ // src/js/polyfill.js
60
+ var import_get_root_node_polyfill = __toESM(require_get_root_node_polyfill());
61
+ if (typeof document !== "undefined") {
62
+ (function(e) {
63
+ const matches = e.matches || e.matchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector || e.msMatchesSelector || e.oMatchesSelector;
64
+ if (matches) {
65
+ e.matches = e.matchesSelector = matches;
66
+ } else {
67
+ e.matches = e.matchesSelector = function matches2(selector) {
68
+ const rootNode = e.getRootNode ? e.getRootNode() : import_get_root_node_polyfill.default.call(e);
69
+ const matches3 = rootNode.querySelectorAll(selector);
70
+ const th = this;
71
+ return Array.prototype.some.call(matches3, (e2) => {
72
+ return e2 === th;
73
+ });
74
+ };
75
+ }
76
+ })(Element.prototype);
77
+ }
78
+
79
+ // src/js/utils.ts
80
+ var getEventTarget = (event) => {
81
+ const path = event.composedPath();
82
+ return Array.isArray(path) && path.length > 0 ? path[0] : event.target;
83
+ };
84
+ var isCustom = (event) => {
85
+ const target = getEventTarget(event);
86
+ return !target || !target.matches;
87
+ };
88
+
89
+ // src/js/code.ts
90
+ var BUTTON_SELECTOR = ".yfm-clipboard-button";
91
+ function copyToClipboard(text) {
92
+ if (!text) {
93
+ return Promise.resolve();
94
+ }
95
+ if (navigator.clipboard && typeof navigator.clipboard.writeText) {
96
+ return navigator.clipboard.writeText(text);
97
+ }
98
+ const textarea = document.createElement("textarea");
99
+ textarea.setAttribute("style", "position: absolute; left: 1000%");
100
+ textarea.textContent = text;
101
+ document.body.append(textarea);
102
+ textarea.select();
103
+ document.execCommand("copy");
104
+ document.body.removeChild(textarea);
105
+ return Promise.resolve();
106
+ }
107
+ function notifySuccess(svgButton) {
108
+ if (!svgButton) {
109
+ return;
110
+ }
111
+ const id = svgButton.getAttribute("data-animation");
112
+ const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);
113
+ if (!icon) {
114
+ return;
115
+ }
116
+ icon.beginElement();
117
+ }
118
+ if (typeof document !== "undefined") {
119
+ document.addEventListener("click", (event) => {
120
+ const target = getEventTarget(event);
121
+ if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {
122
+ return;
123
+ }
124
+ const parent = target.parentNode;
125
+ if (!parent) {
126
+ return;
127
+ }
128
+ const code = parent.querySelector("pre code");
129
+ if (!code) {
130
+ return;
131
+ }
132
+ copyToClipboard(code.innerText).then(() => {
133
+ notifySuccess(parent.querySelector(".yfm-clipboard-icon"));
134
+ });
135
+ });
136
+ }
137
+ })();
138
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/get-root-node-polyfill/index.js", "../../src/js/polyfill.js", "../../src/js/utils.ts", "../../src/js/code.ts"],
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 })(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", "import {getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction copyToClipboard(text: string) {\n if (!text) {\n return Promise.resolve();\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\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 return Promise.resolve();\n}\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\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\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {\n return;\n }\n\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n if (!code) {\n return;\n }\n\n copyToClipboard(code.innerText).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-icon'));\n });\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["getRootNode", "matches", "getRootNode", "e"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";(()=>{(()=>{var p=Object.create,s=Object.defineProperty,f=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,d=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,y=(e,t)=>function(){return t||(0,e[u(e)[0]])((t={exports:{}}).exports,t),t.exports},_=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of u(t))!m.call(e,c)&&c!==o&&s(e,c,{get:()=>t[c],enumerable:!(n=f(t,c))||n.enumerable});return e},h=(e,t,o)=>(o=e!=null?p(d(e)):{},_(t||!e||!e.__esModule?s(o,"default",{value:e,enumerable:!0}):o,e)),b=y({"node_modules/get-root-node-polyfill/index.js"(e,t){"use strict";function o(r){var a=typeof r=="object"&&!!r.composed;return a?n(this):c(this)}function n(r){var a=c(r);return i(a)?n(a.host):a}function c(r){return r.parentNode!=null?c(r.parentNode):r}function i(r){return r.nodeName==="#document-fragment"&&r.constructor.name==="ShadowRoot"}typeof t=="object"&&t.exports&&(t.exports=o)}}),g=h(b());typeof document!="undefined"&&function(e){let t=e.matches||e.matchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector;t?e.matches=e.matchesSelector=t:e.matches=e.matchesSelector=function(n){let i=(e.getRootNode?e.getRootNode():g.default.call(e)).querySelectorAll(n),r=this;return Array.prototype.some.call(i,a=>a===r)}}(Element.prototype);var l=e=>{let t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},v=e=>{let t=l(e);return!t||!t.matches},S=".yfm-clipboard-button";function O(e){if(!e)return Promise.resolve();if(navigator.clipboard&&typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(e);let t=document.createElement("textarea");return t.setAttribute("style","position: absolute; left: 1000%"),t.textContent=e,document.body.append(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}function P(e){if(!e)return;let t=e.getAttribute("data-animation"),o=e.getRootNode().getElementById(`visibileAnimation-${t}`);o&&o.beginElement()}typeof document!="undefined"&&document.addEventListener("click",e=>{let t=l(e);if(v(e)||!t.matches(S))return;let o=t.parentNode;if(!o)return;let n=o.querySelector("pre code");n&&O(n.innerText).then(()=>{P(o.querySelector(".yfm-clipboard-icon"))})})})();})();
2
+ //# sourceMappingURL=base.min.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/get-root-node-polyfill/index.js", "../../src/js/polyfill.js", "../../src/js/utils.ts", "../../src/js/code.ts"],
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 })(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", "import {getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction copyToClipboard(text: string) {\n if (!text) {\n return Promise.resolve();\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\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 return Promise.resolve();\n}\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\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\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {\n return;\n }\n\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n if (!code) {\n return;\n }\n\n copyToClipboard(code.innerText).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-icon'));\n });\n });\n}\n"],
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,aAEnB,SAAU,EAAG,CACV,IAAMc,EACF,EAAE,SACF,EAAE,iBACF,EAAE,uBACF,EAAE,oBACF,EAAE,mBACF,EAAE,iBAEFA,EACA,EAAE,QAAU,EAAE,gBAAkBA,EAEhC,EAAE,QAAU,EAAE,gBAAkB,SAAiBC,EAAU,CAEvD,IAAMD,GADW,EAAE,YAAc,EAAE,YAAY,EAAIF,EAAAR,QAAY,KAAK,CAAC,GAC5C,iBAAiBW,CAAQ,EAC5CC,EAAK,KACX,OAAO,MAAM,UAAU,KAAK,KAAKF,EAAUG,GAChCA,IAAMD,CAChB,CACL,CAER,EAAG,QAAQ,SAAS,ECzBjB,IAAME,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,ECNMC,EAAkB,wBAExB,SAASC,EAAgBC,EAAc,CACnC,GAAI,CAACA,EACD,OAAO,QAAQ,QAAQ,EAG3B,GAAI,UAAU,WAAa,OAAO,UAAU,UAAU,UAClD,OAAO,UAAU,UAAU,UAAUA,CAAI,EAE7C,IAAMC,EAAW,SAAS,cAAc,UAAU,EAClD,OAAAA,EAAS,aAAa,QAAS,iCAAiC,EAChEA,EAAS,YAAcD,EACvB,SAAS,KAAK,OAAOC,CAAQ,EAE7BA,EAAS,OAAO,EAChB,SAAS,YAAY,MAAM,EAE3B,SAAS,KAAK,YAAYA,CAAQ,EAE3B,QAAQ,QAAQ,CAC3B,CAEA,SAASC,EAAcC,EAA+B,CAClD,GAAI,CAACA,EACD,OAGJ,IAAMC,EAAKD,EAAU,aAAa,gBAAgB,EAE5CE,EAAOF,EAAU,YAAY,EAAE,eAAe,qBAAqBC,CAAE,EAAE,EAExEC,GAILA,EAAK,aAAa,CACtB,CAEI,OAAO,UAAa,aACpB,SAAS,iBAAiB,QAAUX,GAAU,CAC1C,IAAMG,EAASJ,EAAeC,CAAK,EAEnC,GAAIE,EAASF,CAAK,GAAK,CAACG,EAAO,QAAQC,CAAe,EAClD,OAGJ,IAAMQ,EAAST,EAAO,WAEtB,GAAI,CAACS,EACD,OAGJ,IAAMC,EAAOD,EAAO,cAA2B,UAAU,EACpDC,GAILR,EAAgBQ,EAAK,SAAS,EAAE,KAAK,IAAM,CACvCL,EAAcI,EAAO,cAAc,qBAAqB,CAAC,CAC7D,CAAC,CACL,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", "matches", "selector", "th", "e", "getEventTarget", "event", "path", "isCustom", "target", "BUTTON_SELECTOR", "copyToClipboard", "text", "textarea", "notifySuccess", "svgButton", "id", "icon", "parent", "code"]
7
+ }
@@ -63,9 +63,11 @@ function collectRecursive(result, options, appendix) {
63
63
  function collect(input, options) {
64
64
  const appendix = new Map();
65
65
  input = collectRecursive(input, options, appendix);
66
- // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
67
- if (appendix.size > 0) {
68
- input += '\n' + [...appendix.values()].join('\n');
66
+ if (!options.path.includes('_includes')) {
67
+ // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
68
+ if (appendix.size > 0) {
69
+ input += '\n' + [...appendix.values()].join('\n');
70
+ }
69
71
  }
70
72
  return input;
71
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/transform/plugins/includes/collect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/transform/plugins/includes/collect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/transform",
3
- "version": "4.32.3",
3
+ "version": "4.33.0",
4
4
  "description": "A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML",
5
5
  "keywords": [
6
6
  "markdown",
@@ -0,0 +1 @@
1
+ import './term';
package/src/js/base.ts ADDED
@@ -0,0 +1,2 @@
1
+ import './polyfill';
2
+ import './code';
package/src/js/index.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import '@diplodoc/cut-extension/runtime';
2
2
  import '@diplodoc/tabs-extension/runtime';
3
3
 
4
- import './polyfill';
5
- import './code';
6
- import './term';
4
+ import './base';
5
+ import './_yfm-only';
7
6
  import './wide-mode';
8
7
  import './patch';
@@ -0,0 +1,12 @@
1
+ /**
2
+ Note: This file excludes "cut" and "tabs" as they are handled separately
3
+ in dedicated extensions (packages). In the future, "note", "file", "term"
4
+ and "table" will also be excluded from this file and moved to yfm.scss,
5
+ once they are moved to separate packages. Direct usage is not recommended,
6
+ as the file is subject to changes without prior notice.
7
+ */
8
+
9
+ @import 'note';
10
+ @import 'file';
11
+ @import 'table';
12
+ @import 'term';
@@ -0,0 +1,4 @@
1
+ @import 'common';
2
+ @import 'anchor';
3
+ @import 'highlight';
4
+ @import 'code';
package/src/scss/yfm.scss CHANGED
@@ -1,12 +1,5 @@
1
- @import 'common';
2
- @import 'note';
3
- @import 'anchor';
4
- @import 'highlight';
5
- @import 'code';
6
- @import 'file';
7
- @import 'term';
8
- @import 'table';
1
+ @import 'base';
2
+ @import 'yfm-only';
9
3
  @import 'modal';
10
-
11
4
  @import '@diplodoc/cut-extension/runtime';
12
5
  @import '@diplodoc/tabs-extension/runtime';
@@ -113,9 +113,11 @@ function collect(input: string, options: IncludeCollectOpts) {
113
113
 
114
114
  input = collectRecursive(input, options, appendix);
115
115
 
116
- // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
117
- if (appendix.size > 0) {
118
- input += '\n' + [...appendix.values()].join('\n');
116
+ if (!options.path.includes('_includes')) {
117
+ // Appendix should be appended to the end of the file (it supports depth structure, so the included files will have included as well)
118
+ if (appendix.size > 0) {
119
+ input += '\n' + [...appendix.values()].join('\n');
120
+ }
119
121
  }
120
122
 
121
123
  return input;