@diplodoc/transform 4.74.1 → 4.75.1

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/dist/js/base.js CHANGED
@@ -162,6 +162,7 @@
162
162
  var TOOLTIP_BASE_CLASS = "yfm yfm-tooltip";
163
163
  var TOOLTIP_OPEN_CLASS = "open";
164
164
  var TOOLTIP_DATA_ATTR = "data-tooltip-id";
165
+ var TOOLTIP_LIVE_REGION_CLASS = "yfm-tooltip-live-region";
165
166
  var DEFAULT_OFFSET_VALUES = { mainAxis: 5 };
166
167
  var OPPOSITE_SIDES = {
167
168
  top: "bottom",
@@ -349,6 +350,7 @@
349
350
  function createTooltipFactory(options = {}) {
350
351
  const { closeDelay = 1e3, additionalClassName } = options;
351
352
  let initialized = false;
353
+ let liveRegion = null;
352
354
  const state = {
353
355
  currentId: null,
354
356
  timer: null,
@@ -381,6 +383,9 @@
381
383
  detachTooltip(tooltip3);
382
384
  state.currentId = null;
383
385
  }
386
+ if (liveRegion) {
387
+ liveRegion.textContent = "";
388
+ }
384
389
  };
385
390
  const show = (reference, text) => {
386
391
  hide();
@@ -388,6 +393,9 @@
388
393
  const update = updateTooltipPosition.bind(null, options, reference, tooltip3);
389
394
  state.currentId = tooltip3.id;
390
395
  attachTooltip(tooltip3, reference, text);
396
+ if (liveRegion) {
397
+ liveRegion.textContent = text;
398
+ }
391
399
  state.unsubscribe = subscribeToScroll(reference, update);
392
400
  tooltip3.classList.add(TOOLTIP_OPEN_CLASS);
393
401
  update();
@@ -409,6 +417,10 @@
409
417
  const init = () => {
410
418
  if (!initialized) {
411
419
  initialized = true;
420
+ liveRegion = document.createElement("div");
421
+ liveRegion.className = TOOLTIP_LIVE_REGION_CLASS;
422
+ liveRegion.setAttribute("aria-live", "assertive");
423
+ document.body.appendChild(liveRegion);
412
424
  window.addEventListener("scroll", handleUpdate);
413
425
  window.addEventListener("resize", handleUpdate);
414
426
  }
@@ -437,17 +449,11 @@
437
449
  const tooltip3 = document.createElement("div");
438
450
  tooltip3.id = id;
439
451
  tooltip3.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;
440
- tooltip3.setAttribute("role", "status");
441
- tooltip3.setAttribute("aria-live", "polite");
442
452
  return tooltip3;
443
453
  }
444
454
  function attachTooltip(tooltip3, reference, text) {
445
455
  const container = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;
446
- const ariaLive = reference.getAttribute("aria-live");
447
456
  reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip3.id);
448
- if (ariaLive) {
449
- tooltip3.setAttribute("aria-live", ariaLive);
450
- }
451
457
  container.appendChild(tooltip3);
452
458
  tooltip3.textContent = text;
453
459
  }
@@ -1,7 +1,7 @@
1
1
  {
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/tooltip/constant.ts", "../../src/js/tooltip/utils.ts", "../../src/js/tooltip/tooltip.ts", "../../src/js/constant.ts", "../../src/js/anchor.ts", "../../src/js/inline-code/index.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 // 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 COPY_BUTTON_SELECTOR = '.yfm-clipboard-button';\nconst WRAP_BUTTON_SELECTOR = '.yfm-wrapping-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 container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !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(container.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nfunction buttonWrapFn(target: HTMLElement) {\n const container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !code) {\n return;\n }\n\n code.classList.toggle('wrap');\n\n setTimeout(() => target.blur(), 500);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (target.matches(COPY_BUTTON_SELECTOR)) {\n buttonCopyFn(target);\n } else if (target.matches(WRAP_BUTTON_SELECTOR)) {\n buttonWrapFn(target);\n }\n });\n}\n", "import type {OffsetValues, Side, SideObject} from './types';\n\nexport const PAGE_CONTAINER_SELECTOR = '.dc-doc-page__content';\n\nexport const TOOLTIP_BASE_CLASS = 'yfm yfm-tooltip';\n\nexport const TOOLTIP_OPEN_CLASS = 'open';\n\nexport const TOOLTIP_DATA_ATTR = 'data-tooltip-id';\n\nexport const DEFAULT_OFFSET_VALUES: OffsetValues = {mainAxis: 5};\n\nexport const OPPOSITE_SIDES: Record<Side, Side> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nexport const DEFAULT_SIDE_OBJECT: SideObject = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n", "import type {\n Alignment,\n Coords,\n ElementRect,\n OffsetValues,\n Placement,\n Side,\n SideObject,\n} from './types';\n\nimport {DEFAULT_SIDE_OBJECT, OPPOSITE_SIDES} from './constant';\n\nfunction isVerticalSide(side: Side): boolean {\n return side === 'top' || side === 'bottom';\n}\n\nfunction createSideObject(value: Partial<SideObject> | number = 0): SideObject {\n if (typeof value === 'number') {\n return {top: value, bottom: value, left: value, right: value};\n }\n\n return {...DEFAULT_SIDE_OBJECT, ...value};\n}\n\nfunction parsePlacement(placement: Placement): {side: Side; alignment?: Alignment} {\n const [side, alignment] = placement.split('-') as [Side, Alignment | undefined];\n\n return {side, alignment};\n}\n\nfunction getOppositeSide(side: Side): Side {\n return OPPOSITE_SIDES[side];\n}\n\nfunction flipPlacement(placement: Placement): Placement {\n const {side, alignment} = parsePlacement(placement);\n const opposite = getOppositeSide(side);\n\n return (alignment ? `${opposite}-${alignment}` : opposite) as Placement;\n}\n\nfunction getOverflow(tooltip: ElementRect, coords: Coords, viewport: ElementRect): SideObject {\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n\n return detectOverflow(viewport, rect, 5);\n}\n\nfunction shouldFlip(overflow: SideObject, flippedOverflow: SideObject, side: Side): boolean {\n const opposite = getOppositeSide(side);\n\n return overflow[side] > 0 && flippedOverflow[opposite] < overflow[side];\n}\n\nexport function computePosition(\n reference: ElementRect,\n tooltip: ElementRect,\n viewport: ElementRect,\n placement: Placement,\n offset: OffsetValues,\n isRtl: boolean,\n flip = true,\n): {coords: Coords; placement: Placement} {\n const coords = computeCoordsFromPlacement(reference, tooltip, offset, placement, isRtl);\n\n if (!flip) {\n return {coords, placement};\n }\n\n const overflow = getOverflow(tooltip, coords, viewport);\n const {side} = parsePlacement(placement);\n\n if (overflow[side] <= 0) {\n return {coords, placement};\n }\n\n const flipped = flipPlacement(placement);\n const flippedCoords = computeCoordsFromPlacement(reference, tooltip, offset, flipped, isRtl);\n const flippedOverflow = getOverflow(tooltip, flippedCoords, viewport);\n\n if (shouldFlip(overflow, flippedOverflow, side)) {\n return {coords: flippedCoords, placement: flipped};\n }\n\n return {coords, placement};\n}\n\nexport function generateId() {\n const random = Math.random().toString(36).substring(2, 6);\n const now = Date.now().toString(36);\n\n return `${random}${now}`;\n}\n\nexport function createRect(\n params: Pick<ElementRect, 'top' | 'left' | 'width' | 'height'>,\n): ElementRect {\n return {\n ...params,\n right: params.left + params.width,\n bottom: params.top + params.height,\n };\n}\n\nexport function updateRect(rect: ElementRect, params: Partial<ElementRect>): ElementRect {\n return createRect({\n top: params.top ?? rect.top,\n left: params.left ?? rect.left,\n width: params.width ?? rect.width,\n height: params.height ?? rect.height,\n });\n}\n\nexport function getViewportRect(): ElementRect {\n const {documentElement, body} = document;\n\n const scrollTop = window.scrollY || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = window.scrollX || documentElement.scrollLeft || body.scrollLeft;\n\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n return createRect({\n top: Math.round(scrollTop - clientTop),\n left: Math.round(scrollLeft - clientLeft),\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n });\n}\n\nexport function getElementRect(element: HTMLElement): ElementRect {\n const viewport = getViewportRect();\n const box = element.getBoundingClientRect();\n\n return createRect({\n top: Math.round(box.top + viewport.top),\n left: Math.round(box.left + viewport.left),\n width: box.width,\n height: box.height,\n });\n}\n\nexport function computeAxisOffset(offset: OffsetValues, side: Side, isRtl?: boolean): Coords {\n const {mainAxis = 0, crossAxis = 0} = offset;\n\n const isVertical = isVerticalSide(side);\n const mainDirection = side === 'top' || side === 'left' ? -1 : 1;\n const crossDirection = isRtl && isVertical ? -1 : 1;\n\n const mainOffset = mainAxis * mainDirection;\n const crossOffset = crossAxis * crossDirection;\n\n if (isVertical) {\n return {x: crossOffset, y: mainOffset};\n }\n\n return {x: mainOffset, y: crossOffset};\n}\n\nexport function computeCoordsFromPlacement(\n reference: ElementRect,\n tooltip: ElementRect,\n offset: OffsetValues,\n placement: Placement,\n isRtl: boolean,\n) {\n const {side, alignment} = parsePlacement(placement);\n const isVertical = isVerticalSide(side);\n const alignmentAxis = isVertical ? 'x' : 'y';\n const alignLength = alignmentAxis === 'y' ? 'height' : 'width';\n\n const centerX = reference.left + reference.width / 2 - tooltip.width / 2;\n const centerY = reference.top + reference.height / 2 - tooltip.height / 2;\n const alignmentOffset = reference[alignLength] / 2 - tooltip[alignLength] / 2;\n\n const coords: Coords = {x: reference.left, y: reference.top};\n\n switch (side) {\n case 'top': {\n coords.x = centerX;\n coords.y = reference.top - tooltip.height;\n break;\n }\n\n case 'bottom': {\n coords.x = centerX;\n coords.y = reference.top + reference.height;\n break;\n }\n\n case 'right': {\n coords.x = reference.left + reference.width;\n coords.y = centerY;\n break;\n }\n\n case 'left': {\n coords.x = reference.left - tooltip.width;\n coords.y = centerY;\n break;\n }\n }\n\n switch (alignment) {\n case 'start': {\n coords[alignmentAxis] -= alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n\n case 'end': {\n coords[alignmentAxis] += alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n }\n\n const axisOffset = computeAxisOffset(offset, side, isRtl);\n\n coords.x += axisOffset.x;\n coords.y += axisOffset.y;\n\n return coords;\n}\n\nexport function convertToRelativeToOffsetParentRect(rect: ElementRect, offsetParent: HTMLElement) {\n const offsetRect = getElementRect(offsetParent);\n\n return createRect({\n top: rect.top - offsetRect.top + offsetParent.offsetTop,\n left: rect.left - offsetRect.left + offsetParent.offsetLeft,\n width: rect.width,\n height: rect.height,\n });\n}\n\nexport function detectOverflow(\n boundary: ElementRect,\n element: ElementRect,\n padding: Partial<SideObject> | number = 0,\n): SideObject {\n const {top, bottom, left, right} = createSideObject(padding);\n\n return {\n top: boundary.top - element.top + top,\n bottom: element.bottom - boundary.bottom + bottom,\n left: boundary.left - element.left + left,\n right: element.right - boundary.right + right,\n };\n}\n", "import type {\n Coords,\n TooltipContext,\n TooltipContextElements,\n TooltipElementOptions,\n TooltipOptions,\n} from './types';\n\nimport {\n DEFAULT_OFFSET_VALUES,\n PAGE_CONTAINER_SELECTOR,\n TOOLTIP_BASE_CLASS,\n TOOLTIP_DATA_ATTR,\n TOOLTIP_OPEN_CLASS,\n} from './constant';\nimport {\n computePosition,\n convertToRelativeToOffsetParentRect,\n createRect,\n generateId,\n getElementRect,\n getViewportRect,\n updateRect,\n} from './utils';\n\ninterface TooltipState {\n currentId: string | null;\n timer: ReturnType<typeof setTimeout> | null;\n unsubscribe: (() => void) | null;\n}\n\nexport function createTooltipFactory(options: TooltipOptions = {}) {\n const {closeDelay = 1_000, additionalClassName} = options;\n let initialized = false;\n\n const state: TooltipState = {\n currentId: null,\n timer: null,\n unsubscribe: null,\n };\n\n const getActiveTooltip = () => {\n if (!state.currentId) {\n return null;\n }\n\n return document.getElementById(state.currentId);\n };\n\n const getActiveReference = () => {\n if (!state.currentId) {\n return null;\n }\n\n return getReferenceByTooltipId(state.currentId);\n };\n\n const hide = () => {\n const tooltip = getActiveTooltip();\n\n if (state.timer) {\n clearTimeout(state.timer);\n state.timer = null;\n }\n\n if (state.unsubscribe) {\n state.unsubscribe();\n state.unsubscribe = null;\n }\n\n if (tooltip) {\n tooltip.classList.remove(TOOLTIP_OPEN_CLASS);\n detachTooltip(tooltip);\n\n state.currentId = null;\n }\n };\n\n const show = (reference: HTMLElement, text: string) => {\n hide();\n\n const tooltip = createTooltipElement({className: additionalClassName});\n const update = updateTooltipPosition.bind(null, options, reference, tooltip);\n\n state.currentId = tooltip.id;\n\n attachTooltip(tooltip, reference, text);\n\n state.unsubscribe = subscribeToScroll(reference, update);\n\n tooltip.classList.add(TOOLTIP_OPEN_CLASS);\n\n update();\n\n if (closeDelay > 0) {\n state.timer = setTimeout(hide, closeDelay);\n }\n };\n\n const handleUpdate = () => {\n const activeTooltip = getActiveTooltip();\n const activeReference = getActiveReference();\n\n if (activeTooltip && !activeReference) {\n hide();\n return;\n }\n\n if (activeTooltip && activeReference) {\n updateTooltipPosition(options, activeReference, activeTooltip);\n }\n };\n\n const init = () => {\n if (!initialized) {\n initialized = true;\n\n window.addEventListener('scroll', handleUpdate);\n window.addEventListener('resize', handleUpdate);\n }\n };\n\n const cleanup = () => {\n if (initialized) {\n initialized = false;\n\n window.removeEventListener('scroll', handleUpdate);\n window.removeEventListener('resize', handleUpdate);\n }\n };\n\n return {\n get visible() {\n return Boolean(state.currentId);\n },\n getActiveReference,\n show,\n hide,\n init,\n cleanup,\n };\n}\n\nfunction createTooltipElement(options: TooltipElementOptions) {\n const {className} = options;\n\n const id = generateId();\n const tooltip = document.createElement('div');\n\n tooltip.id = id;\n tooltip.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;\n\n tooltip.setAttribute('role', 'status');\n tooltip.setAttribute('aria-live', 'polite');\n\n return tooltip;\n}\n\nfunction attachTooltip(tooltip: HTMLElement, reference: HTMLElement, text: string) {\n const container = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;\n const ariaLive = reference.getAttribute('aria-live');\n\n reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip.id);\n\n if (ariaLive) {\n tooltip.setAttribute('aria-live', ariaLive);\n }\n\n container.appendChild(tooltip);\n\n tooltip.textContent = text;\n}\n\nfunction detachTooltip(tooltip: HTMLElement) {\n if (tooltip.id) {\n const reference = getReferenceByTooltipId(tooltip.id);\n\n reference?.removeAttribute(TOOLTIP_DATA_ATTR);\n }\n\n tooltip.remove();\n}\n\nfunction getReferenceByTooltipId(id: string) {\n return document.querySelector<HTMLElement>(`[${TOOLTIP_DATA_ATTR}=\"${id}\"]`);\n}\n\nfunction subscribeToScroll(reference: HTMLElement, update: () => void) {\n const scrollableElement = getParentScrollableElement(reference);\n\n scrollableElement.addEventListener('scroll', update);\n\n return () => {\n scrollableElement.removeEventListener('scroll', update);\n };\n}\n\nfunction getParentScrollableElement(target: HTMLElement) {\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement || document.body;\n}\n\nfunction createTooltipContext(\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n): TooltipContext | null {\n const tooltipParent = tooltipElement.parentElement;\n\n if (!tooltipParent) {\n return null;\n }\n\n const elements: TooltipContextElements = {\n reference: referenceElement,\n tooltip: tooltipElement,\n offsetParent: tooltipParent,\n };\n\n const viewport = getViewportRect();\n const reference = getElementRect(referenceElement);\n const {width, height} = tooltipElement.getBoundingClientRect();\n\n return {\n isRtl: document.dir === 'rtl',\n viewport,\n reference,\n tooltip: createRect({top: 0, left: 0, width, height}),\n elements,\n };\n}\n\nfunction updateTooltipPosition(\n options: TooltipOptions,\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n) {\n const context = createTooltipContext(referenceElement, tooltipElement);\n\n if (!context) {\n return;\n }\n\n const coords = getTooltipCoords(context, options);\n\n tooltipElement.style.top = `${coords.y}px`;\n tooltipElement.style.left = `${coords.x}px`;\n}\n\nfunction getTooltipCoords(context: TooltipContext, options: TooltipOptions): Coords {\n const {placement = 'bottom-start', offset = DEFAULT_OFFSET_VALUES, flip = true} = options;\n const {reference, tooltip, viewport, isRtl} = context;\n\n const {coords} = computePosition(reference, tooltip, viewport, placement, offset, isRtl, flip);\n\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n const relativeRect = convertToRelativeToOffsetParentRect(rect, context.elements.offsetParent);\n\n return {\n x: relativeRect.left,\n y: relativeRect.top,\n };\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const COPIED_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", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from './tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from './utils';\nimport {COPIED_LANG_TOKEN} from './constant';\n\nconst ALLOWED_PROTOCOL_RE = /^(?:https?|file):$/;\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nconst tooltip = createTooltipFactory();\n\nfunction getLink(target: HTMLElement) {\n const href = target.nodeName === 'A' ? (target as HTMLAnchorElement).href : target.dataset.href;\n const link = new URL(href || '', window.location.href);\n\n if (ALLOWED_PROTOCOL_RE.test(link.protocol)) {\n return link.href;\n }\n\n return window.location.href;\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\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 link = getLink(target);\n\n copyToClipboard(link).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from '../tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from '../utils';\nimport {COPIED_LANG_TOKEN} from '../constant';\n\nconst CLASS_INLINE_CODE = 'yfm-clipboard-inline-code';\nconst INLINE_CODE = `.${CLASS_INLINE_CODE}`;\n\nconst tooltip = createTooltipFactory({\n // NOTE: Add additional className for backward capability\n additionalClassName: 'inline_code_tooltip',\n});\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\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\n if (!activeElement.classList.contains(CLASS_INLINE_CODE)) {\n return;\n }\n\n inlineCopyFn(activeElement);\n }\n\n if (event.key === 'Escape' && tooltip.visible) {\n const reference = tooltip.getActiveReference();\n\n tooltip.hide();\n // Set focus back to open button after closing popup\n reference?.focus();\n }\n });\n}\n"],
5
- "mappings": "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",
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 COPY_BUTTON_SELECTOR = '.yfm-clipboard-button';\nconst WRAP_BUTTON_SELECTOR = '.yfm-wrapping-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 container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !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(container.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nfunction buttonWrapFn(target: HTMLElement) {\n const container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !code) {\n return;\n }\n\n code.classList.toggle('wrap');\n\n setTimeout(() => target.blur(), 500);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (target.matches(COPY_BUTTON_SELECTOR)) {\n buttonCopyFn(target);\n } else if (target.matches(WRAP_BUTTON_SELECTOR)) {\n buttonWrapFn(target);\n }\n });\n}\n", "import type {OffsetValues, Side, SideObject} from './types';\n\nexport const PAGE_CONTAINER_SELECTOR = '.dc-doc-page__content';\n\nexport const TOOLTIP_BASE_CLASS = 'yfm yfm-tooltip';\n\nexport const TOOLTIP_OPEN_CLASS = 'open';\n\nexport const TOOLTIP_DATA_ATTR = 'data-tooltip-id';\n\nexport const TOOLTIP_LIVE_REGION_CLASS = 'yfm-tooltip-live-region';\n\nexport const DEFAULT_OFFSET_VALUES: OffsetValues = {mainAxis: 5};\n\nexport const OPPOSITE_SIDES: Record<Side, Side> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nexport const DEFAULT_SIDE_OBJECT: SideObject = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n", "import type {\n Alignment,\n Coords,\n ElementRect,\n OffsetValues,\n Placement,\n Side,\n SideObject,\n} from './types';\n\nimport {DEFAULT_SIDE_OBJECT, OPPOSITE_SIDES} from './constant';\n\nfunction isVerticalSide(side: Side): boolean {\n return side === 'top' || side === 'bottom';\n}\n\nfunction createSideObject(value: Partial<SideObject> | number = 0): SideObject {\n if (typeof value === 'number') {\n return {top: value, bottom: value, left: value, right: value};\n }\n\n return {...DEFAULT_SIDE_OBJECT, ...value};\n}\n\nfunction parsePlacement(placement: Placement): {side: Side; alignment?: Alignment} {\n const [side, alignment] = placement.split('-') as [Side, Alignment | undefined];\n\n return {side, alignment};\n}\n\nfunction getOppositeSide(side: Side): Side {\n return OPPOSITE_SIDES[side];\n}\n\nfunction flipPlacement(placement: Placement): Placement {\n const {side, alignment} = parsePlacement(placement);\n const opposite = getOppositeSide(side);\n\n return (alignment ? `${opposite}-${alignment}` : opposite) as Placement;\n}\n\nfunction getOverflow(tooltip: ElementRect, coords: Coords, viewport: ElementRect): SideObject {\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n\n return detectOverflow(viewport, rect, 5);\n}\n\nfunction shouldFlip(overflow: SideObject, flippedOverflow: SideObject, side: Side): boolean {\n const opposite = getOppositeSide(side);\n\n return overflow[side] > 0 && flippedOverflow[opposite] < overflow[side];\n}\n\nexport function computePosition(\n reference: ElementRect,\n tooltip: ElementRect,\n viewport: ElementRect,\n placement: Placement,\n offset: OffsetValues,\n isRtl: boolean,\n flip = true,\n): {coords: Coords; placement: Placement} {\n const coords = computeCoordsFromPlacement(reference, tooltip, offset, placement, isRtl);\n\n if (!flip) {\n return {coords, placement};\n }\n\n const overflow = getOverflow(tooltip, coords, viewport);\n const {side} = parsePlacement(placement);\n\n if (overflow[side] <= 0) {\n return {coords, placement};\n }\n\n const flipped = flipPlacement(placement);\n const flippedCoords = computeCoordsFromPlacement(reference, tooltip, offset, flipped, isRtl);\n const flippedOverflow = getOverflow(tooltip, flippedCoords, viewport);\n\n if (shouldFlip(overflow, flippedOverflow, side)) {\n return {coords: flippedCoords, placement: flipped};\n }\n\n return {coords, placement};\n}\n\nexport function generateId() {\n const random = Math.random().toString(36).substring(2, 6);\n const now = Date.now().toString(36);\n\n return `${random}${now}`;\n}\n\nexport function createRect(\n params: Pick<ElementRect, 'top' | 'left' | 'width' | 'height'>,\n): ElementRect {\n return {\n ...params,\n right: params.left + params.width,\n bottom: params.top + params.height,\n };\n}\n\nexport function updateRect(rect: ElementRect, params: Partial<ElementRect>): ElementRect {\n return createRect({\n top: params.top ?? rect.top,\n left: params.left ?? rect.left,\n width: params.width ?? rect.width,\n height: params.height ?? rect.height,\n });\n}\n\nexport function getViewportRect(): ElementRect {\n const {documentElement, body} = document;\n\n const scrollTop = window.scrollY || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = window.scrollX || documentElement.scrollLeft || body.scrollLeft;\n\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n return createRect({\n top: Math.round(scrollTop - clientTop),\n left: Math.round(scrollLeft - clientLeft),\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n });\n}\n\nexport function getElementRect(element: HTMLElement): ElementRect {\n const viewport = getViewportRect();\n const box = element.getBoundingClientRect();\n\n return createRect({\n top: Math.round(box.top + viewport.top),\n left: Math.round(box.left + viewport.left),\n width: box.width,\n height: box.height,\n });\n}\n\nexport function computeAxisOffset(offset: OffsetValues, side: Side, isRtl?: boolean): Coords {\n const {mainAxis = 0, crossAxis = 0} = offset;\n\n const isVertical = isVerticalSide(side);\n const mainDirection = side === 'top' || side === 'left' ? -1 : 1;\n const crossDirection = isRtl && isVertical ? -1 : 1;\n\n const mainOffset = mainAxis * mainDirection;\n const crossOffset = crossAxis * crossDirection;\n\n if (isVertical) {\n return {x: crossOffset, y: mainOffset};\n }\n\n return {x: mainOffset, y: crossOffset};\n}\n\nexport function computeCoordsFromPlacement(\n reference: ElementRect,\n tooltip: ElementRect,\n offset: OffsetValues,\n placement: Placement,\n isRtl: boolean,\n) {\n const {side, alignment} = parsePlacement(placement);\n const isVertical = isVerticalSide(side);\n const alignmentAxis = isVertical ? 'x' : 'y';\n const alignLength = alignmentAxis === 'y' ? 'height' : 'width';\n\n const centerX = reference.left + reference.width / 2 - tooltip.width / 2;\n const centerY = reference.top + reference.height / 2 - tooltip.height / 2;\n const alignmentOffset = reference[alignLength] / 2 - tooltip[alignLength] / 2;\n\n const coords: Coords = {x: reference.left, y: reference.top};\n\n switch (side) {\n case 'top': {\n coords.x = centerX;\n coords.y = reference.top - tooltip.height;\n break;\n }\n\n case 'bottom': {\n coords.x = centerX;\n coords.y = reference.top + reference.height;\n break;\n }\n\n case 'right': {\n coords.x = reference.left + reference.width;\n coords.y = centerY;\n break;\n }\n\n case 'left': {\n coords.x = reference.left - tooltip.width;\n coords.y = centerY;\n break;\n }\n }\n\n switch (alignment) {\n case 'start': {\n coords[alignmentAxis] -= alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n\n case 'end': {\n coords[alignmentAxis] += alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n }\n\n const axisOffset = computeAxisOffset(offset, side, isRtl);\n\n coords.x += axisOffset.x;\n coords.y += axisOffset.y;\n\n return coords;\n}\n\nexport function convertToRelativeToOffsetParentRect(rect: ElementRect, offsetParent: HTMLElement) {\n const offsetRect = getElementRect(offsetParent);\n\n return createRect({\n top: rect.top - offsetRect.top + offsetParent.offsetTop,\n left: rect.left - offsetRect.left + offsetParent.offsetLeft,\n width: rect.width,\n height: rect.height,\n });\n}\n\nexport function detectOverflow(\n boundary: ElementRect,\n element: ElementRect,\n padding: Partial<SideObject> | number = 0,\n): SideObject {\n const {top, bottom, left, right} = createSideObject(padding);\n\n return {\n top: boundary.top - element.top + top,\n bottom: element.bottom - boundary.bottom + bottom,\n left: boundary.left - element.left + left,\n right: element.right - boundary.right + right,\n };\n}\n", "import type {\n Coords,\n TooltipContext,\n TooltipContextElements,\n TooltipElementOptions,\n TooltipOptions,\n} from './types';\n\nimport {\n DEFAULT_OFFSET_VALUES,\n PAGE_CONTAINER_SELECTOR,\n TOOLTIP_BASE_CLASS,\n TOOLTIP_DATA_ATTR,\n TOOLTIP_LIVE_REGION_CLASS,\n TOOLTIP_OPEN_CLASS,\n} from './constant';\nimport {\n computePosition,\n convertToRelativeToOffsetParentRect,\n createRect,\n generateId,\n getElementRect,\n getViewportRect,\n updateRect,\n} from './utils';\n\ninterface TooltipState {\n currentId: string | null;\n timer: ReturnType<typeof setTimeout> | null;\n unsubscribe: (() => void) | null;\n}\n\nexport function createTooltipFactory(options: TooltipOptions = {}) {\n const {closeDelay = 1_000, additionalClassName} = options;\n let initialized = false;\n let liveRegion: HTMLElement | null = null;\n\n const state: TooltipState = {\n currentId: null,\n timer: null,\n unsubscribe: null,\n };\n\n const getActiveTooltip = () => {\n if (!state.currentId) {\n return null;\n }\n\n return document.getElementById(state.currentId);\n };\n\n const getActiveReference = () => {\n if (!state.currentId) {\n return null;\n }\n\n return getReferenceByTooltipId(state.currentId);\n };\n\n const hide = () => {\n const tooltip = getActiveTooltip();\n\n if (state.timer) {\n clearTimeout(state.timer);\n state.timer = null;\n }\n\n if (state.unsubscribe) {\n state.unsubscribe();\n state.unsubscribe = null;\n }\n\n if (tooltip) {\n tooltip.classList.remove(TOOLTIP_OPEN_CLASS);\n detachTooltip(tooltip);\n\n state.currentId = null;\n }\n\n if (liveRegion) {\n liveRegion.textContent = '';\n }\n };\n\n const show = (reference: HTMLElement, text: string) => {\n hide();\n\n const tooltip = createTooltipElement({className: additionalClassName});\n const update = updateTooltipPosition.bind(null, options, reference, tooltip);\n\n state.currentId = tooltip.id;\n\n attachTooltip(tooltip, reference, text);\n\n if (liveRegion) {\n liveRegion.textContent = text;\n }\n\n state.unsubscribe = subscribeToScroll(reference, update);\n\n tooltip.classList.add(TOOLTIP_OPEN_CLASS);\n\n update();\n\n if (closeDelay > 0) {\n state.timer = setTimeout(hide, closeDelay);\n }\n };\n\n const handleUpdate = () => {\n const activeTooltip = getActiveTooltip();\n const activeReference = getActiveReference();\n\n if (activeTooltip && !activeReference) {\n hide();\n return;\n }\n\n if (activeTooltip && activeReference) {\n updateTooltipPosition(options, activeReference, activeTooltip);\n }\n };\n\n const init = () => {\n if (!initialized) {\n initialized = true;\n\n liveRegion = document.createElement('div');\n liveRegion.className = TOOLTIP_LIVE_REGION_CLASS;\n liveRegion.setAttribute('aria-live', 'assertive');\n document.body.appendChild(liveRegion);\n window.addEventListener('scroll', handleUpdate);\n window.addEventListener('resize', handleUpdate);\n }\n };\n\n const cleanup = () => {\n if (initialized) {\n initialized = false;\n\n window.removeEventListener('scroll', handleUpdate);\n window.removeEventListener('resize', handleUpdate);\n }\n };\n\n return {\n get visible() {\n return Boolean(state.currentId);\n },\n getActiveReference,\n show,\n hide,\n init,\n cleanup,\n };\n}\n\nfunction createTooltipElement(options: TooltipElementOptions) {\n const {className} = options;\n\n const id = generateId();\n const tooltip = document.createElement('div');\n\n tooltip.id = id;\n tooltip.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;\n\n return tooltip;\n}\n\nfunction attachTooltip(tooltip: HTMLElement, reference: HTMLElement, text: string) {\n const container = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;\n\n reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip.id);\n container.appendChild(tooltip);\n tooltip.textContent = text;\n}\n\nfunction detachTooltip(tooltip: HTMLElement) {\n if (tooltip.id) {\n const reference = getReferenceByTooltipId(tooltip.id);\n\n reference?.removeAttribute(TOOLTIP_DATA_ATTR);\n }\n\n tooltip.remove();\n}\n\nfunction getReferenceByTooltipId(id: string) {\n return document.querySelector<HTMLElement>(`[${TOOLTIP_DATA_ATTR}=\"${id}\"]`);\n}\n\nfunction subscribeToScroll(reference: HTMLElement, update: () => void) {\n const scrollableElement = getParentScrollableElement(reference);\n\n scrollableElement.addEventListener('scroll', update);\n\n return () => {\n scrollableElement.removeEventListener('scroll', update);\n };\n}\n\nfunction getParentScrollableElement(target: HTMLElement) {\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement || document.body;\n}\n\nfunction createTooltipContext(\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n): TooltipContext | null {\n const tooltipParent = tooltipElement.parentElement;\n\n if (!tooltipParent) {\n return null;\n }\n\n const elements: TooltipContextElements = {\n reference: referenceElement,\n tooltip: tooltipElement,\n offsetParent: tooltipParent,\n };\n\n const viewport = getViewportRect();\n const reference = getElementRect(referenceElement);\n const {width, height} = tooltipElement.getBoundingClientRect();\n\n return {\n isRtl: document.dir === 'rtl',\n viewport,\n reference,\n tooltip: createRect({top: 0, left: 0, width, height}),\n elements,\n };\n}\n\nfunction updateTooltipPosition(\n options: TooltipOptions,\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n) {\n const context = createTooltipContext(referenceElement, tooltipElement);\n\n if (!context) {\n return;\n }\n\n const coords = getTooltipCoords(context, options);\n\n tooltipElement.style.top = `${coords.y}px`;\n tooltipElement.style.left = `${coords.x}px`;\n}\n\nfunction getTooltipCoords(context: TooltipContext, options: TooltipOptions): Coords {\n const {placement = 'bottom-start', offset = DEFAULT_OFFSET_VALUES, flip = true} = options;\n const {reference, tooltip, viewport, isRtl} = context;\n\n const {coords} = computePosition(reference, tooltip, viewport, placement, offset, isRtl, flip);\n\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n const relativeRect = convertToRelativeToOffsetParentRect(rect, context.elements.offsetParent);\n\n return {\n x: relativeRect.left,\n y: relativeRect.top,\n };\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const COPIED_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", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from './tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from './utils';\nimport {COPIED_LANG_TOKEN} from './constant';\n\nconst ALLOWED_PROTOCOL_RE = /^(?:https?|file):$/;\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nconst tooltip = createTooltipFactory();\n\nfunction getLink(target: HTMLElement) {\n const href = target.nodeName === 'A' ? (target as HTMLAnchorElement).href : target.dataset.href;\n const link = new URL(href || '', window.location.href);\n\n if (ALLOWED_PROTOCOL_RE.test(link.protocol)) {\n return link.href;\n }\n\n return window.location.href;\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\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 link = getLink(target);\n\n copyToClipboard(link).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from '../tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from '../utils';\nimport {COPIED_LANG_TOKEN} from '../constant';\n\nconst CLASS_INLINE_CODE = 'yfm-clipboard-inline-code';\nconst INLINE_CODE = `.${CLASS_INLINE_CODE}`;\n\nconst tooltip = createTooltipFactory({\n // NOTE: Add additional className for backward capability\n additionalClassName: 'inline_code_tooltip',\n});\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\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\n if (!activeElement.classList.contains(CLASS_INLINE_CODE)) {\n return;\n }\n\n inlineCopyFn(activeElement);\n }\n\n if (event.key === 'Escape' && tooltip.visible) {\n const reference = tooltip.getActiveReference();\n\n tooltip.hide();\n // Set focus back to open button after closing popup\n reference?.focus();\n }\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["getRootNode", "matches", "getRootNode", "e", "tooltip", "tooltip", "tooltip"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{(()=>{var q=Object.create,T=Object.defineProperty,U=Object.getOwnPropertyDescriptor,O=Object.getOwnPropertyNames,z=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty,W=(t,e)=>function(){return e||(0,t[O(t)[0]])((e={exports:{}}).exports,e),e.exports},H=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of O(e))!V.call(t,r)&&r!==o&&T(t,r,{get:()=>e[r],enumerable:!(n=U(e,r))||n.enumerable});return t},K=(t,e,o)=>(o=t!=null?q(z(t)):{},H(e||!t||!t.__esModule?T(o,"default",{value:t,enumerable:!0}):o,t)),Y=W({"node_modules/get-root-node-polyfill/index.js"(t,e){"use strict";function o(c){var s=typeof c=="object"&&!!c.composed;return s?n(this):r(this)}function n(c){var s=r(c);return i(s)?n(s.host):s}function r(c){return c.parentNode!=null?r(c.parentNode):c}function i(c){return c.nodeName==="#document-fragment"&&c.constructor.name==="ShadowRoot"}typeof e=="object"&&e.exports&&(e.exports=o)}}),G=K(Y());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(n){let i=(t.getRootNode?t.getRootNode():G.default.call(t)).querySelectorAll(n),c=this;return Array.prototype.some.call(i,s=>s===c)}})(Element.prototype);var g=t=>{let e=t.composedPath();return Array.isArray(e)&&e.length>0?e[0]:t.target},y=t=>{let e=g(t);return!e||!e.matches},E=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)},J=".yfm-clipboard-button",X=".yfm-wrapping-button";function Z(t){if(!t)return;let e=t.getAttribute("data-animation"),o=t.getRootNode().getElementById(`visibileAnimation-${e}`);o&&o.beginElement()}function Q(t){var e;let o=(e=t.parentNode)==null?void 0:e.parentNode,n=o==null?void 0:o.querySelector("pre code");if(!o||!n)return;let r=Array.from(n.childNodes).filter(i=>!(i instanceof HTMLElement&&i.classList.contains("yfm-line-number"))).map(i=>i.textContent).join("");E(r.trim()).then(()=>{Z(o.querySelector(".yfm-clipboard-icon")),setTimeout(()=>t.blur(),1500)})}function tt(t){var e;let o=(e=t.parentNode)==null?void 0:e.parentNode,n=o==null?void 0:o.querySelector("pre code");!o||!n||(n.classList.toggle("wrap"),setTimeout(()=>t.blur(),500))}typeof document!="undefined"&&document.addEventListener("click",t=>{if(y(t))return;let e=g(t);e.matches(J)?Q(e):e.matches(X)&&tt(e)});var et=".dc-doc-page__content",x="yfm yfm-tooltip",A="open",_="data-tooltip-id",ot={mainAxis:5},nt={top:"bottom",bottom:"top",left:"right",right:"left"},rt={top:0,bottom:0,left:0,right:0};function L(t){return t==="top"||t==="bottom"}function it(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:{...rt,...t}}function w(t){let[e,o]=t.split("-");return{side:e,alignment:o}}function S(t){return nt[t]}function ct(t){let{side:e,alignment:o}=w(t),n=S(e);return o?`${n}-${o}`:n}function C(t,e,o){let n=N(t,{top:e.y,left:e.x});return ft(o,n,5)}function st(t,e,o){let n=S(o);return t[o]>0&&e[n]<t[o]}function ut(t,e,o,n,r,i,c=!0){let s=D(t,e,r,n,i);if(!c)return{coords:s,placement:n};let d=C(e,s,o),{side:l}=w(n);if(d[l]<=0)return{coords:s,placement:n};let p=ct(n),f=D(t,e,r,p,i),a=C(e,f,o);return st(d,a,l)?{coords:f,placement:p}:{coords:s,placement:n}}function lt(){let t=Math.random().toString(36).substring(2,6),e=Date.now().toString(36);return`${t}${e}`}function m(t){return{...t,right:t.left+t.width,bottom:t.top+t.height}}function N(t,e){var o,n,r,i;return m({top:(o=e.top)!=null?o:t.top,left:(n=e.left)!=null?n:t.left,width:(r=e.width)!=null?r:t.width,height:(i=e.height)!=null?i:t.height})}function P(){let{documentElement:t,body:e}=document,o=window.scrollY||t.scrollTop||e.scrollTop,n=window.scrollX||t.scrollLeft||e.scrollLeft,r=t.clientTop||e.clientTop||0,i=t.clientLeft||e.clientLeft||0;return m({top:Math.round(o-r),left:Math.round(n-i),width:document.body.clientWidth,height:document.body.clientHeight})}function R(t){let e=P(),o=t.getBoundingClientRect();return m({top:Math.round(o.top+e.top),left:Math.round(o.left+e.left),width:o.width,height:o.height})}function at(t,e,o){let{mainAxis:n=0,crossAxis:r=0}=t,i=L(e),c=e==="top"||e==="left"?-1:1,s=o&&i?-1:1,d=n*c,l=r*s;return i?{x:l,y:d}:{x:d,y:l}}function D(t,e,o,n,r){let{side:i,alignment:c}=w(n),s=L(i),d=s?"x":"y",l=d==="y"?"height":"width",p=t.left+t.width/2-e.width/2,f=t.top+t.height/2-e.height/2,a=t[l]/2-e[l]/2,u={x:t.left,y:t.top};switch(i){case"top":{u.x=p,u.y=t.top-e.height;break}case"bottom":{u.x=p,u.y=t.top+t.height;break}case"right":{u.x=t.left+t.width,u.y=f;break}case"left":{u.x=t.left-e.width,u.y=f;break}}switch(c){case"start":{u[d]-=a*(r&&s?-1:1);break}case"end":{u[d]+=a*(r&&s?-1:1);break}}let h=at(o,i,r);return u.x+=h.x,u.y+=h.y,u}function dt(t,e){let o=R(e);return m({top:t.top-o.top+e.offsetTop,left:t.left-o.left+e.offsetLeft,width:t.width,height:t.height})}function ft(t,e,o=0){let{top:n,bottom:r,left:i,right:c}=it(o);return{top:t.top-e.top+n,bottom:e.bottom-t.bottom+r,left:t.left-e.left+i,right:e.right-t.right+c}}function I(t={}){let{closeDelay:e=1e3,additionalClassName:o}=t,n=!1,r={currentId:null,timer:null,unsubscribe:null},i=()=>r.currentId?document.getElementById(r.currentId):null,c=()=>r.currentId?k(r.currentId):null,s=()=>{let a=i();r.timer&&(clearTimeout(r.timer),r.timer=null),r.unsubscribe&&(r.unsubscribe(),r.unsubscribe=null),a&&(a.classList.remove(A),mt(a),r.currentId=null)},d=(a,u)=>{s();let h=pt({className:o}),M=B.bind(null,t,a,h);r.currentId=h.id,ht(h,a,u),r.unsubscribe=bt(a,M),h.classList.add(A),M(),e>0&&(r.timer=setTimeout(s,e))},l=()=>{let a=i(),u=c();if(a&&!u){s();return}a&&u&&B(t,u,a)};return{get visible(){return!!r.currentId},getActiveReference:c,show:d,hide:s,init:()=>{n||(n=!0,window.addEventListener("scroll",l),window.addEventListener("resize",l))},cleanup:()=>{n&&(n=!1,window.removeEventListener("scroll",l),window.removeEventListener("resize",l))}}}function pt(t){let{className:e}=t,o=lt(),n=document.createElement("div");return n.id=o,n.className=e?`${x} ${e}`:x,n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n}function ht(t,e,o){let n=document.querySelector(et)||document.body,r=e.getAttribute("aria-live");e.setAttribute(_,t.id),r&&t.setAttribute("aria-live",r),n.appendChild(t),t.textContent=o}function mt(t){if(t.id){let e=k(t.id);e==null||e.removeAttribute(_)}t.remove()}function k(t){return document.querySelector(`[${_}="${t}"]`)}function bt(t,e){let o=gt(t);return o.addEventListener("scroll",e),()=>{o.removeEventListener("scroll",e)}}function gt(t){return t.closest("table")||t.closest("code")||t.parentElement||document.body}function vt(t,e){let o=e.parentElement;if(!o)return null;let n={reference:t,tooltip:e,offsetParent:o},r=P(),i=R(t),{width:c,height:s}=e.getBoundingClientRect();return{isRtl:document.dir==="rtl",viewport:r,reference:i,tooltip:m({top:0,left:0,width:c,height:s}),elements:n}}function B(t,e,o){let n=vt(e,o);if(!n)return;let r=yt(n,t);o.style.top=`${r.y}px`,o.style.left=`${r.x}px`}function yt(t,e){let{placement:o="bottom-start",offset:n=ot,flip:r=!0}=e,{reference:i,tooltip:c,viewport:s,isRtl:d}=t,{coords:l}=ut(i,c,s,o,n,d,r),p=N(c,{top:l.y,left:l.x}),f=dt(p,t.elements.offsetParent);return{x:f.left,y:f.top}}var v={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"},Et=/^(?:https?|file):$/,_t=".yfm-clipboard-anchor",F=I();function wt(t){let e=t.nodeName==="A"?t.href:t.dataset.href,o=new URL(e||"",window.location.href);return Et.test(o.protocol)?o.href:window.location.href}typeof document!="undefined"&&(F.init(),document.addEventListener("click",t=>{let e=g(t);if(y(t)||!e.matches(_t))return;let o=wt(e);E(o).then(()=>{var n;let r=document.documentElement.lang||"en",i=(n=v[r])!=null?n:v.en;F.show(e,i)})}));var $="yfm-clipboard-inline-code",Tt=`.${$}`,b=I({additionalClassName:"inline_code_tooltip"});function j(t){let e=t.innerText;e&&E(e).then(()=>{var o;let n=document.documentElement.lang||"en",r=(o=v[n])!=null?o:v.en;b.show(t,r)})}typeof document!="undefined"&&(b.init(),document.addEventListener("click",t=>{let e=g(t),o=e.matches(Tt);y(t)||!o||j(e)}),document.addEventListener("keydown",t=>{if(t.key==="Enter"&&document.activeElement){let e=document.activeElement;if(!e.classList.contains($))return;j(e)}if(t.key==="Escape"&&b.visible){let e=b.getActiveReference();b.hide(),e==null||e.focus()}}))})();})();
1
+ "use strict";(()=>{(()=>{var U=Object.create,O=Object.defineProperty,z=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,V=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty,G=(t,e)=>function(){return e||(0,t[L(t)[0]])((e={exports:{}}).exports,e),e.exports},H=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of L(e))!W.call(t,r)&&r!==o&&O(t,r,{get:()=>e[r],enumerable:!(n=z(e,r))||n.enumerable});return t},K=(t,e,o)=>(o=t!=null?U(V(t)):{},H(e||!t||!t.__esModule?O(o,"default",{value:t,enumerable:!0}):o,t)),Y=G({"node_modules/get-root-node-polyfill/index.js"(t,e){"use strict";function o(c){var s=typeof c=="object"&&!!c.composed;return s?n(this):r(this)}function n(c){var s=r(c);return i(s)?n(s.host):s}function r(c){return c.parentNode!=null?r(c.parentNode):c}function i(c){return c.nodeName==="#document-fragment"&&c.constructor.name==="ShadowRoot"}typeof e=="object"&&e.exports&&(e.exports=o)}}),J=K(Y());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(n){let i=(t.getRootNode?t.getRootNode():J.default.call(t)).querySelectorAll(n),c=this;return Array.prototype.some.call(i,s=>s===c)}})(Element.prototype);var b=t=>{let e=t.composedPath();return Array.isArray(e)&&e.length>0?e[0]:t.target},E=t=>{let e=b(t);return!e||!e.matches},_=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)},X=".yfm-clipboard-button",Z=".yfm-wrapping-button";function Q(t){if(!t)return;let e=t.getAttribute("data-animation"),o=t.getRootNode().getElementById(`visibileAnimation-${e}`);o&&o.beginElement()}function tt(t){var e;let o=(e=t.parentNode)==null?void 0:e.parentNode,n=o==null?void 0:o.querySelector("pre code");if(!o||!n)return;let r=Array.from(n.childNodes).filter(i=>!(i instanceof HTMLElement&&i.classList.contains("yfm-line-number"))).map(i=>i.textContent).join("");_(r.trim()).then(()=>{Q(o.querySelector(".yfm-clipboard-icon")),setTimeout(()=>t.blur(),1500)})}function et(t){var e;let o=(e=t.parentNode)==null?void 0:e.parentNode,n=o==null?void 0:o.querySelector("pre code");!o||!n||(n.classList.toggle("wrap"),setTimeout(()=>t.blur(),500))}typeof document!="undefined"&&document.addEventListener("click",t=>{if(E(t))return;let e=b(t);e.matches(X)?tt(e):e.matches(Z)&&et(e)});var ot=".dc-doc-page__content",x="yfm yfm-tooltip",S="open",T="data-tooltip-id",nt="yfm-tooltip-live-region",rt={mainAxis:5},it={top:"bottom",bottom:"top",left:"right",right:"left"},ct={top:0,bottom:0,left:0,right:0};function C(t){return t==="top"||t==="bottom"}function st(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:{...ct,...t}}function w(t){let[e,o]=t.split("-");return{side:e,alignment:o}}function A(t){return it[t]}function ut(t){let{side:e,alignment:o}=w(t),n=A(e);return o?`${n}-${o}`:n}function N(t,e,o){let n=P(t,{top:e.y,left:e.x});return mt(o,n,5)}function lt(t,e,o){let n=A(o);return t[o]>0&&e[n]<t[o]}function at(t,e,o,n,r,i,c=!0){let s=D(t,e,r,n,i);if(!c)return{coords:s,placement:n};let l=N(e,s,o),{side:a}=w(n);if(l[a]<=0)return{coords:s,placement:n};let d=ut(n),f=D(t,e,r,d,i),g=N(e,f,o);return lt(l,g,a)?{coords:f,placement:d}:{coords:s,placement:n}}function dt(){let t=Math.random().toString(36).substring(2,6),e=Date.now().toString(36);return`${t}${e}`}function m(t){return{...t,right:t.left+t.width,bottom:t.top+t.height}}function P(t,e){var o,n,r,i;return m({top:(o=e.top)!=null?o:t.top,left:(n=e.left)!=null?n:t.left,width:(r=e.width)!=null?r:t.width,height:(i=e.height)!=null?i:t.height})}function R(){let{documentElement:t,body:e}=document,o=window.scrollY||t.scrollTop||e.scrollTop,n=window.scrollX||t.scrollLeft||e.scrollLeft,r=t.clientTop||e.clientTop||0,i=t.clientLeft||e.clientLeft||0;return m({top:Math.round(o-r),left:Math.round(n-i),width:document.body.clientWidth,height:document.body.clientHeight})}function I(t){let e=R(),o=t.getBoundingClientRect();return m({top:Math.round(o.top+e.top),left:Math.round(o.left+e.left),width:o.width,height:o.height})}function ft(t,e,o){let{mainAxis:n=0,crossAxis:r=0}=t,i=C(e),c=e==="top"||e==="left"?-1:1,s=o&&i?-1:1,l=n*c,a=r*s;return i?{x:a,y:l}:{x:l,y:a}}function D(t,e,o,n,r){let{side:i,alignment:c}=w(n),s=C(i),l=s?"x":"y",a=l==="y"?"height":"width",d=t.left+t.width/2-e.width/2,f=t.top+t.height/2-e.height/2,g=t[a]/2-e[a]/2,u={x:t.left,y:t.top};switch(i){case"top":{u.x=d,u.y=t.top-e.height;break}case"bottom":{u.x=d,u.y=t.top+t.height;break}case"right":{u.x=t.left+t.width,u.y=f;break}case"left":{u.x=t.left-e.width,u.y=f;break}}switch(c){case"start":{u[l]-=g*(r&&s?-1:1);break}case"end":{u[l]+=g*(r&&s?-1:1);break}}let p=ft(o,i,r);return u.x+=p.x,u.y+=p.y,u}function pt(t,e){let o=I(e);return m({top:t.top-o.top+e.offsetTop,left:t.left-o.left+e.offsetLeft,width:t.width,height:t.height})}function mt(t,e,o=0){let{top:n,bottom:r,left:i,right:c}=st(o);return{top:t.top-e.top+n,bottom:e.bottom-t.bottom+r,left:t.left-e.left+i,right:e.right-t.right+c}}function k(t={}){let{closeDelay:e=1e3,additionalClassName:o}=t,n=!1,r=null,i={currentId:null,timer:null,unsubscribe:null},c=()=>i.currentId?document.getElementById(i.currentId):null,s=()=>i.currentId?B(i.currentId):null,l=()=>{let u=c();i.timer&&(clearTimeout(i.timer),i.timer=null),i.unsubscribe&&(i.unsubscribe(),i.unsubscribe=null),u&&(u.classList.remove(S),bt(u),i.currentId=null),r&&(r.textContent="")},a=(u,p)=>{l();let y=ht({className:o}),q=F.bind(null,t,u,y);i.currentId=y.id,gt(y,u,p),r&&(r.textContent=p),i.unsubscribe=vt(u,q),y.classList.add(S),q(),e>0&&(i.timer=setTimeout(l,e))},d=()=>{let u=c(),p=s();if(u&&!p){l();return}u&&p&&F(t,p,u)};return{get visible(){return!!i.currentId},getActiveReference:s,show:a,hide:l,init:()=>{n||(n=!0,r=document.createElement("div"),r.className=nt,r.setAttribute("aria-live","assertive"),document.body.appendChild(r),window.addEventListener("scroll",d),window.addEventListener("resize",d))},cleanup:()=>{n&&(n=!1,window.removeEventListener("scroll",d),window.removeEventListener("resize",d))}}}function ht(t){let{className:e}=t,o=dt(),n=document.createElement("div");return n.id=o,n.className=e?`${x} ${e}`:x,n}function gt(t,e,o){let n=document.querySelector(ot)||document.body;e.setAttribute(T,t.id),n.appendChild(t),t.textContent=o}function bt(t){if(t.id){let e=B(t.id);e==null||e.removeAttribute(T)}t.remove()}function B(t){return document.querySelector(`[${T}="${t}"]`)}function vt(t,e){let o=yt(t);return o.addEventListener("scroll",e),()=>{o.removeEventListener("scroll",e)}}function yt(t){return t.closest("table")||t.closest("code")||t.parentElement||document.body}function Et(t,e){let o=e.parentElement;if(!o)return null;let n={reference:t,tooltip:e,offsetParent:o},r=R(),i=I(t),{width:c,height:s}=e.getBoundingClientRect();return{isRtl:document.dir==="rtl",viewport:r,reference:i,tooltip:m({top:0,left:0,width:c,height:s}),elements:n}}function F(t,e,o){let n=Et(e,o);if(!n)return;let r=_t(n,t);o.style.top=`${r.y}px`,o.style.left=`${r.x}px`}function _t(t,e){let{placement:o="bottom-start",offset:n=rt,flip:r=!0}=e,{reference:i,tooltip:c,viewport:s,isRtl:l}=t,{coords:a}=at(i,c,s,o,n,l,r),d=P(c,{top:a.y,left:a.x}),f=pt(d,t.elements.offsetParent);return{x:f.left,y:f.top}}var v={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"},Tt=/^(?:https?|file):$/,wt=".yfm-clipboard-anchor",$=k();function Ot(t){let e=t.nodeName==="A"?t.href:t.dataset.href,o=new URL(e||"",window.location.href);return Tt.test(o.protocol)?o.href:window.location.href}typeof document!="undefined"&&($.init(),document.addEventListener("click",t=>{let e=b(t);if(E(t)||!e.matches(wt))return;let o=Ot(e);_(o).then(()=>{var n;let r=document.documentElement.lang||"en",i=(n=v[r])!=null?n:v.en;$.show(e,i)})}));var j="yfm-clipboard-inline-code",Lt=`.${j}`,h=k({additionalClassName:"inline_code_tooltip"});function M(t){let e=t.innerText;e&&_(e).then(()=>{var o;let n=document.documentElement.lang||"en",r=(o=v[n])!=null?o:v.en;h.show(t,r)})}typeof document!="undefined"&&(h.init(),document.addEventListener("click",t=>{let e=b(t),o=e.matches(Lt);E(t)||!o||M(e)}),document.addEventListener("keydown",t=>{if(t.key==="Enter"&&document.activeElement){let e=document.activeElement;if(!e.classList.contains(j))return;M(e)}if(t.key==="Escape"&&h.visible){let e=h.getActiveReference();h.hide(),e==null||e.focus()}}))})();})();
2
2
  //# sourceMappingURL=base.min.js.map
@@ -1,7 +1,7 @@
1
1
  {
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/tooltip/constant.ts", "../../src/js/tooltip/utils.ts", "../../src/js/tooltip/tooltip.ts", "../../src/js/constant.ts", "../../src/js/anchor.ts", "../../src/js/inline-code/index.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 // 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 COPY_BUTTON_SELECTOR = '.yfm-clipboard-button';\nconst WRAP_BUTTON_SELECTOR = '.yfm-wrapping-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 container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !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(container.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nfunction buttonWrapFn(target: HTMLElement) {\n const container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !code) {\n return;\n }\n\n code.classList.toggle('wrap');\n\n setTimeout(() => target.blur(), 500);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (target.matches(COPY_BUTTON_SELECTOR)) {\n buttonCopyFn(target);\n } else if (target.matches(WRAP_BUTTON_SELECTOR)) {\n buttonWrapFn(target);\n }\n });\n}\n", "import type {OffsetValues, Side, SideObject} from './types';\n\nexport const PAGE_CONTAINER_SELECTOR = '.dc-doc-page__content';\n\nexport const TOOLTIP_BASE_CLASS = 'yfm yfm-tooltip';\n\nexport const TOOLTIP_OPEN_CLASS = 'open';\n\nexport const TOOLTIP_DATA_ATTR = 'data-tooltip-id';\n\nexport const DEFAULT_OFFSET_VALUES: OffsetValues = {mainAxis: 5};\n\nexport const OPPOSITE_SIDES: Record<Side, Side> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nexport const DEFAULT_SIDE_OBJECT: SideObject = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n", "import type {\n Alignment,\n Coords,\n ElementRect,\n OffsetValues,\n Placement,\n Side,\n SideObject,\n} from './types';\n\nimport {DEFAULT_SIDE_OBJECT, OPPOSITE_SIDES} from './constant';\n\nfunction isVerticalSide(side: Side): boolean {\n return side === 'top' || side === 'bottom';\n}\n\nfunction createSideObject(value: Partial<SideObject> | number = 0): SideObject {\n if (typeof value === 'number') {\n return {top: value, bottom: value, left: value, right: value};\n }\n\n return {...DEFAULT_SIDE_OBJECT, ...value};\n}\n\nfunction parsePlacement(placement: Placement): {side: Side; alignment?: Alignment} {\n const [side, alignment] = placement.split('-') as [Side, Alignment | undefined];\n\n return {side, alignment};\n}\n\nfunction getOppositeSide(side: Side): Side {\n return OPPOSITE_SIDES[side];\n}\n\nfunction flipPlacement(placement: Placement): Placement {\n const {side, alignment} = parsePlacement(placement);\n const opposite = getOppositeSide(side);\n\n return (alignment ? `${opposite}-${alignment}` : opposite) as Placement;\n}\n\nfunction getOverflow(tooltip: ElementRect, coords: Coords, viewport: ElementRect): SideObject {\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n\n return detectOverflow(viewport, rect, 5);\n}\n\nfunction shouldFlip(overflow: SideObject, flippedOverflow: SideObject, side: Side): boolean {\n const opposite = getOppositeSide(side);\n\n return overflow[side] > 0 && flippedOverflow[opposite] < overflow[side];\n}\n\nexport function computePosition(\n reference: ElementRect,\n tooltip: ElementRect,\n viewport: ElementRect,\n placement: Placement,\n offset: OffsetValues,\n isRtl: boolean,\n flip = true,\n): {coords: Coords; placement: Placement} {\n const coords = computeCoordsFromPlacement(reference, tooltip, offset, placement, isRtl);\n\n if (!flip) {\n return {coords, placement};\n }\n\n const overflow = getOverflow(tooltip, coords, viewport);\n const {side} = parsePlacement(placement);\n\n if (overflow[side] <= 0) {\n return {coords, placement};\n }\n\n const flipped = flipPlacement(placement);\n const flippedCoords = computeCoordsFromPlacement(reference, tooltip, offset, flipped, isRtl);\n const flippedOverflow = getOverflow(tooltip, flippedCoords, viewport);\n\n if (shouldFlip(overflow, flippedOverflow, side)) {\n return {coords: flippedCoords, placement: flipped};\n }\n\n return {coords, placement};\n}\n\nexport function generateId() {\n const random = Math.random().toString(36).substring(2, 6);\n const now = Date.now().toString(36);\n\n return `${random}${now}`;\n}\n\nexport function createRect(\n params: Pick<ElementRect, 'top' | 'left' | 'width' | 'height'>,\n): ElementRect {\n return {\n ...params,\n right: params.left + params.width,\n bottom: params.top + params.height,\n };\n}\n\nexport function updateRect(rect: ElementRect, params: Partial<ElementRect>): ElementRect {\n return createRect({\n top: params.top ?? rect.top,\n left: params.left ?? rect.left,\n width: params.width ?? rect.width,\n height: params.height ?? rect.height,\n });\n}\n\nexport function getViewportRect(): ElementRect {\n const {documentElement, body} = document;\n\n const scrollTop = window.scrollY || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = window.scrollX || documentElement.scrollLeft || body.scrollLeft;\n\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n return createRect({\n top: Math.round(scrollTop - clientTop),\n left: Math.round(scrollLeft - clientLeft),\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n });\n}\n\nexport function getElementRect(element: HTMLElement): ElementRect {\n const viewport = getViewportRect();\n const box = element.getBoundingClientRect();\n\n return createRect({\n top: Math.round(box.top + viewport.top),\n left: Math.round(box.left + viewport.left),\n width: box.width,\n height: box.height,\n });\n}\n\nexport function computeAxisOffset(offset: OffsetValues, side: Side, isRtl?: boolean): Coords {\n const {mainAxis = 0, crossAxis = 0} = offset;\n\n const isVertical = isVerticalSide(side);\n const mainDirection = side === 'top' || side === 'left' ? -1 : 1;\n const crossDirection = isRtl && isVertical ? -1 : 1;\n\n const mainOffset = mainAxis * mainDirection;\n const crossOffset = crossAxis * crossDirection;\n\n if (isVertical) {\n return {x: crossOffset, y: mainOffset};\n }\n\n return {x: mainOffset, y: crossOffset};\n}\n\nexport function computeCoordsFromPlacement(\n reference: ElementRect,\n tooltip: ElementRect,\n offset: OffsetValues,\n placement: Placement,\n isRtl: boolean,\n) {\n const {side, alignment} = parsePlacement(placement);\n const isVertical = isVerticalSide(side);\n const alignmentAxis = isVertical ? 'x' : 'y';\n const alignLength = alignmentAxis === 'y' ? 'height' : 'width';\n\n const centerX = reference.left + reference.width / 2 - tooltip.width / 2;\n const centerY = reference.top + reference.height / 2 - tooltip.height / 2;\n const alignmentOffset = reference[alignLength] / 2 - tooltip[alignLength] / 2;\n\n const coords: Coords = {x: reference.left, y: reference.top};\n\n switch (side) {\n case 'top': {\n coords.x = centerX;\n coords.y = reference.top - tooltip.height;\n break;\n }\n\n case 'bottom': {\n coords.x = centerX;\n coords.y = reference.top + reference.height;\n break;\n }\n\n case 'right': {\n coords.x = reference.left + reference.width;\n coords.y = centerY;\n break;\n }\n\n case 'left': {\n coords.x = reference.left - tooltip.width;\n coords.y = centerY;\n break;\n }\n }\n\n switch (alignment) {\n case 'start': {\n coords[alignmentAxis] -= alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n\n case 'end': {\n coords[alignmentAxis] += alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n }\n\n const axisOffset = computeAxisOffset(offset, side, isRtl);\n\n coords.x += axisOffset.x;\n coords.y += axisOffset.y;\n\n return coords;\n}\n\nexport function convertToRelativeToOffsetParentRect(rect: ElementRect, offsetParent: HTMLElement) {\n const offsetRect = getElementRect(offsetParent);\n\n return createRect({\n top: rect.top - offsetRect.top + offsetParent.offsetTop,\n left: rect.left - offsetRect.left + offsetParent.offsetLeft,\n width: rect.width,\n height: rect.height,\n });\n}\n\nexport function detectOverflow(\n boundary: ElementRect,\n element: ElementRect,\n padding: Partial<SideObject> | number = 0,\n): SideObject {\n const {top, bottom, left, right} = createSideObject(padding);\n\n return {\n top: boundary.top - element.top + top,\n bottom: element.bottom - boundary.bottom + bottom,\n left: boundary.left - element.left + left,\n right: element.right - boundary.right + right,\n };\n}\n", "import type {\n Coords,\n TooltipContext,\n TooltipContextElements,\n TooltipElementOptions,\n TooltipOptions,\n} from './types';\n\nimport {\n DEFAULT_OFFSET_VALUES,\n PAGE_CONTAINER_SELECTOR,\n TOOLTIP_BASE_CLASS,\n TOOLTIP_DATA_ATTR,\n TOOLTIP_OPEN_CLASS,\n} from './constant';\nimport {\n computePosition,\n convertToRelativeToOffsetParentRect,\n createRect,\n generateId,\n getElementRect,\n getViewportRect,\n updateRect,\n} from './utils';\n\ninterface TooltipState {\n currentId: string | null;\n timer: ReturnType<typeof setTimeout> | null;\n unsubscribe: (() => void) | null;\n}\n\nexport function createTooltipFactory(options: TooltipOptions = {}) {\n const {closeDelay = 1_000, additionalClassName} = options;\n let initialized = false;\n\n const state: TooltipState = {\n currentId: null,\n timer: null,\n unsubscribe: null,\n };\n\n const getActiveTooltip = () => {\n if (!state.currentId) {\n return null;\n }\n\n return document.getElementById(state.currentId);\n };\n\n const getActiveReference = () => {\n if (!state.currentId) {\n return null;\n }\n\n return getReferenceByTooltipId(state.currentId);\n };\n\n const hide = () => {\n const tooltip = getActiveTooltip();\n\n if (state.timer) {\n clearTimeout(state.timer);\n state.timer = null;\n }\n\n if (state.unsubscribe) {\n state.unsubscribe();\n state.unsubscribe = null;\n }\n\n if (tooltip) {\n tooltip.classList.remove(TOOLTIP_OPEN_CLASS);\n detachTooltip(tooltip);\n\n state.currentId = null;\n }\n };\n\n const show = (reference: HTMLElement, text: string) => {\n hide();\n\n const tooltip = createTooltipElement({className: additionalClassName});\n const update = updateTooltipPosition.bind(null, options, reference, tooltip);\n\n state.currentId = tooltip.id;\n\n attachTooltip(tooltip, reference, text);\n\n state.unsubscribe = subscribeToScroll(reference, update);\n\n tooltip.classList.add(TOOLTIP_OPEN_CLASS);\n\n update();\n\n if (closeDelay > 0) {\n state.timer = setTimeout(hide, closeDelay);\n }\n };\n\n const handleUpdate = () => {\n const activeTooltip = getActiveTooltip();\n const activeReference = getActiveReference();\n\n if (activeTooltip && !activeReference) {\n hide();\n return;\n }\n\n if (activeTooltip && activeReference) {\n updateTooltipPosition(options, activeReference, activeTooltip);\n }\n };\n\n const init = () => {\n if (!initialized) {\n initialized = true;\n\n window.addEventListener('scroll', handleUpdate);\n window.addEventListener('resize', handleUpdate);\n }\n };\n\n const cleanup = () => {\n if (initialized) {\n initialized = false;\n\n window.removeEventListener('scroll', handleUpdate);\n window.removeEventListener('resize', handleUpdate);\n }\n };\n\n return {\n get visible() {\n return Boolean(state.currentId);\n },\n getActiveReference,\n show,\n hide,\n init,\n cleanup,\n };\n}\n\nfunction createTooltipElement(options: TooltipElementOptions) {\n const {className} = options;\n\n const id = generateId();\n const tooltip = document.createElement('div');\n\n tooltip.id = id;\n tooltip.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;\n\n tooltip.setAttribute('role', 'status');\n tooltip.setAttribute('aria-live', 'polite');\n\n return tooltip;\n}\n\nfunction attachTooltip(tooltip: HTMLElement, reference: HTMLElement, text: string) {\n const container = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;\n const ariaLive = reference.getAttribute('aria-live');\n\n reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip.id);\n\n if (ariaLive) {\n tooltip.setAttribute('aria-live', ariaLive);\n }\n\n container.appendChild(tooltip);\n\n tooltip.textContent = text;\n}\n\nfunction detachTooltip(tooltip: HTMLElement) {\n if (tooltip.id) {\n const reference = getReferenceByTooltipId(tooltip.id);\n\n reference?.removeAttribute(TOOLTIP_DATA_ATTR);\n }\n\n tooltip.remove();\n}\n\nfunction getReferenceByTooltipId(id: string) {\n return document.querySelector<HTMLElement>(`[${TOOLTIP_DATA_ATTR}=\"${id}\"]`);\n}\n\nfunction subscribeToScroll(reference: HTMLElement, update: () => void) {\n const scrollableElement = getParentScrollableElement(reference);\n\n scrollableElement.addEventListener('scroll', update);\n\n return () => {\n scrollableElement.removeEventListener('scroll', update);\n };\n}\n\nfunction getParentScrollableElement(target: HTMLElement) {\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement || document.body;\n}\n\nfunction createTooltipContext(\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n): TooltipContext | null {\n const tooltipParent = tooltipElement.parentElement;\n\n if (!tooltipParent) {\n return null;\n }\n\n const elements: TooltipContextElements = {\n reference: referenceElement,\n tooltip: tooltipElement,\n offsetParent: tooltipParent,\n };\n\n const viewport = getViewportRect();\n const reference = getElementRect(referenceElement);\n const {width, height} = tooltipElement.getBoundingClientRect();\n\n return {\n isRtl: document.dir === 'rtl',\n viewport,\n reference,\n tooltip: createRect({top: 0, left: 0, width, height}),\n elements,\n };\n}\n\nfunction updateTooltipPosition(\n options: TooltipOptions,\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n) {\n const context = createTooltipContext(referenceElement, tooltipElement);\n\n if (!context) {\n return;\n }\n\n const coords = getTooltipCoords(context, options);\n\n tooltipElement.style.top = `${coords.y}px`;\n tooltipElement.style.left = `${coords.x}px`;\n}\n\nfunction getTooltipCoords(context: TooltipContext, options: TooltipOptions): Coords {\n const {placement = 'bottom-start', offset = DEFAULT_OFFSET_VALUES, flip = true} = options;\n const {reference, tooltip, viewport, isRtl} = context;\n\n const {coords} = computePosition(reference, tooltip, viewport, placement, offset, isRtl, flip);\n\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n const relativeRect = convertToRelativeToOffsetParentRect(rect, context.elements.offsetParent);\n\n return {\n x: relativeRect.left,\n y: relativeRect.top,\n };\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const COPIED_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", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from './tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from './utils';\nimport {COPIED_LANG_TOKEN} from './constant';\n\nconst ALLOWED_PROTOCOL_RE = /^(?:https?|file):$/;\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nconst tooltip = createTooltipFactory();\n\nfunction getLink(target: HTMLElement) {\n const href = target.nodeName === 'A' ? (target as HTMLAnchorElement).href : target.dataset.href;\n const link = new URL(href || '', window.location.href);\n\n if (ALLOWED_PROTOCOL_RE.test(link.protocol)) {\n return link.href;\n }\n\n return window.location.href;\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\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 link = getLink(target);\n\n copyToClipboard(link).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from '../tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from '../utils';\nimport {COPIED_LANG_TOKEN} from '../constant';\n\nconst CLASS_INLINE_CODE = 'yfm-clipboard-inline-code';\nconst INLINE_CODE = `.${CLASS_INLINE_CODE}`;\n\nconst tooltip = createTooltipFactory({\n // NOTE: Add additional className for backward capability\n additionalClassName: 'inline_code_tooltip',\n});\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\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\n if (!activeElement.classList.contains(CLASS_INLINE_CODE)) {\n return;\n }\n\n inlineCopyFn(activeElement);\n }\n\n if (event.key === 'Escape' && tooltip.visible) {\n const reference = tooltip.getActiveReference();\n\n tooltip.hide();\n // Set focus back to open button after closing popup\n reference?.focus();\n }\n });\n}\n"],
5
- "mappings": "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",
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", "COPY_BUTTON_SELECTOR", "WRAP_BUTTON_SELECTOR", "notifySuccess", "svgButton", "id", "icon", "buttonCopyFn", "_a", "container", "code", "textContent", "buttonWrapFn", "PAGE_CONTAINER_SELECTOR", "TOOLTIP_BASE_CLASS", "TOOLTIP_OPEN_CLASS", "TOOLTIP_DATA_ATTR", "DEFAULT_OFFSET_VALUES", "OPPOSITE_SIDES", "DEFAULT_SIDE_OBJECT", "isVerticalSide", "side", "createSideObject", "value", "parsePlacement", "placement", "alignment", "getOppositeSide", "flipPlacement", "opposite", "getOverflow", "tooltip", "coords", "viewport", "rect", "updateRect", "detectOverflow", "shouldFlip", "overflow", "flippedOverflow", "computePosition", "reference", "offset", "isRtl", "flip", "computeCoordsFromPlacement", "flipped", "flippedCoords", "generateId", "random", "now", "createRect", "params", "_b", "_c", "_d", "getViewportRect", "documentElement", "body", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "getElementRect", "element", "box", "computeAxisOffset", "mainAxis", "crossAxis", "isVertical", "mainDirection", "crossDirection", "mainOffset", "crossOffset", "alignmentAxis", "alignLength", "centerX", "centerY", "alignmentOffset", "axisOffset", "convertToRelativeToOffsetParentRect", "offsetParent", "offsetRect", "boundary", "padding", "top", "bottom", "left", "right", "createTooltipFactory", "options", "closeDelay", "additionalClassName", "initialized", "state", "getActiveTooltip", "getActiveReference", "getReferenceByTooltipId", "hide", "detachTooltip", "show", "createTooltipElement", "update", "updateTooltipPosition", "attachTooltip", "subscribeToScroll", "handleUpdate", "activeTooltip", "activeReference", "className", "ariaLive", "scrollableElement", "getParentScrollableElement", "createTooltipContext", "referenceElement", "tooltipElement", "tooltipParent", "elements", "width", "height", "context", "getTooltipCoords", "relativeRect", "COPIED_LANG_TOKEN", "ALLOWED_PROTOCOL_RE", "ANCHOR_BUTTON_SELECTOR", "getLink", "href", "link", "lang", "tooltipText", "CLASS_INLINE_CODE", "INLINE_CODE", "inlineCopyFn", "innerText", "inline", "activeElement"]
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 COPY_BUTTON_SELECTOR = '.yfm-clipboard-button';\nconst WRAP_BUTTON_SELECTOR = '.yfm-wrapping-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 container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !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(container.querySelector('.yfm-clipboard-icon'));\n\n setTimeout(() => target.blur(), 1500);\n });\n}\n\nfunction buttonWrapFn(target: HTMLElement) {\n const container = target.parentNode?.parentNode;\n const code = container?.querySelector<HTMLElement>('pre code');\n if (!container || !code) {\n return;\n }\n\n code.classList.toggle('wrap');\n\n setTimeout(() => target.blur(), 500);\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (target.matches(COPY_BUTTON_SELECTOR)) {\n buttonCopyFn(target);\n } else if (target.matches(WRAP_BUTTON_SELECTOR)) {\n buttonWrapFn(target);\n }\n });\n}\n", "import type {OffsetValues, Side, SideObject} from './types';\n\nexport const PAGE_CONTAINER_SELECTOR = '.dc-doc-page__content';\n\nexport const TOOLTIP_BASE_CLASS = 'yfm yfm-tooltip';\n\nexport const TOOLTIP_OPEN_CLASS = 'open';\n\nexport const TOOLTIP_DATA_ATTR = 'data-tooltip-id';\n\nexport const TOOLTIP_LIVE_REGION_CLASS = 'yfm-tooltip-live-region';\n\nexport const DEFAULT_OFFSET_VALUES: OffsetValues = {mainAxis: 5};\n\nexport const OPPOSITE_SIDES: Record<Side, Side> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n};\n\nexport const DEFAULT_SIDE_OBJECT: SideObject = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n", "import type {\n Alignment,\n Coords,\n ElementRect,\n OffsetValues,\n Placement,\n Side,\n SideObject,\n} from './types';\n\nimport {DEFAULT_SIDE_OBJECT, OPPOSITE_SIDES} from './constant';\n\nfunction isVerticalSide(side: Side): boolean {\n return side === 'top' || side === 'bottom';\n}\n\nfunction createSideObject(value: Partial<SideObject> | number = 0): SideObject {\n if (typeof value === 'number') {\n return {top: value, bottom: value, left: value, right: value};\n }\n\n return {...DEFAULT_SIDE_OBJECT, ...value};\n}\n\nfunction parsePlacement(placement: Placement): {side: Side; alignment?: Alignment} {\n const [side, alignment] = placement.split('-') as [Side, Alignment | undefined];\n\n return {side, alignment};\n}\n\nfunction getOppositeSide(side: Side): Side {\n return OPPOSITE_SIDES[side];\n}\n\nfunction flipPlacement(placement: Placement): Placement {\n const {side, alignment} = parsePlacement(placement);\n const opposite = getOppositeSide(side);\n\n return (alignment ? `${opposite}-${alignment}` : opposite) as Placement;\n}\n\nfunction getOverflow(tooltip: ElementRect, coords: Coords, viewport: ElementRect): SideObject {\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n\n return detectOverflow(viewport, rect, 5);\n}\n\nfunction shouldFlip(overflow: SideObject, flippedOverflow: SideObject, side: Side): boolean {\n const opposite = getOppositeSide(side);\n\n return overflow[side] > 0 && flippedOverflow[opposite] < overflow[side];\n}\n\nexport function computePosition(\n reference: ElementRect,\n tooltip: ElementRect,\n viewport: ElementRect,\n placement: Placement,\n offset: OffsetValues,\n isRtl: boolean,\n flip = true,\n): {coords: Coords; placement: Placement} {\n const coords = computeCoordsFromPlacement(reference, tooltip, offset, placement, isRtl);\n\n if (!flip) {\n return {coords, placement};\n }\n\n const overflow = getOverflow(tooltip, coords, viewport);\n const {side} = parsePlacement(placement);\n\n if (overflow[side] <= 0) {\n return {coords, placement};\n }\n\n const flipped = flipPlacement(placement);\n const flippedCoords = computeCoordsFromPlacement(reference, tooltip, offset, flipped, isRtl);\n const flippedOverflow = getOverflow(tooltip, flippedCoords, viewport);\n\n if (shouldFlip(overflow, flippedOverflow, side)) {\n return {coords: flippedCoords, placement: flipped};\n }\n\n return {coords, placement};\n}\n\nexport function generateId() {\n const random = Math.random().toString(36).substring(2, 6);\n const now = Date.now().toString(36);\n\n return `${random}${now}`;\n}\n\nexport function createRect(\n params: Pick<ElementRect, 'top' | 'left' | 'width' | 'height'>,\n): ElementRect {\n return {\n ...params,\n right: params.left + params.width,\n bottom: params.top + params.height,\n };\n}\n\nexport function updateRect(rect: ElementRect, params: Partial<ElementRect>): ElementRect {\n return createRect({\n top: params.top ?? rect.top,\n left: params.left ?? rect.left,\n width: params.width ?? rect.width,\n height: params.height ?? rect.height,\n });\n}\n\nexport function getViewportRect(): ElementRect {\n const {documentElement, body} = document;\n\n const scrollTop = window.scrollY || documentElement.scrollTop || body.scrollTop;\n const scrollLeft = window.scrollX || documentElement.scrollLeft || body.scrollLeft;\n\n const clientTop = documentElement.clientTop || body.clientTop || 0;\n const clientLeft = documentElement.clientLeft || body.clientLeft || 0;\n\n return createRect({\n top: Math.round(scrollTop - clientTop),\n left: Math.round(scrollLeft - clientLeft),\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n });\n}\n\nexport function getElementRect(element: HTMLElement): ElementRect {\n const viewport = getViewportRect();\n const box = element.getBoundingClientRect();\n\n return createRect({\n top: Math.round(box.top + viewport.top),\n left: Math.round(box.left + viewport.left),\n width: box.width,\n height: box.height,\n });\n}\n\nexport function computeAxisOffset(offset: OffsetValues, side: Side, isRtl?: boolean): Coords {\n const {mainAxis = 0, crossAxis = 0} = offset;\n\n const isVertical = isVerticalSide(side);\n const mainDirection = side === 'top' || side === 'left' ? -1 : 1;\n const crossDirection = isRtl && isVertical ? -1 : 1;\n\n const mainOffset = mainAxis * mainDirection;\n const crossOffset = crossAxis * crossDirection;\n\n if (isVertical) {\n return {x: crossOffset, y: mainOffset};\n }\n\n return {x: mainOffset, y: crossOffset};\n}\n\nexport function computeCoordsFromPlacement(\n reference: ElementRect,\n tooltip: ElementRect,\n offset: OffsetValues,\n placement: Placement,\n isRtl: boolean,\n) {\n const {side, alignment} = parsePlacement(placement);\n const isVertical = isVerticalSide(side);\n const alignmentAxis = isVertical ? 'x' : 'y';\n const alignLength = alignmentAxis === 'y' ? 'height' : 'width';\n\n const centerX = reference.left + reference.width / 2 - tooltip.width / 2;\n const centerY = reference.top + reference.height / 2 - tooltip.height / 2;\n const alignmentOffset = reference[alignLength] / 2 - tooltip[alignLength] / 2;\n\n const coords: Coords = {x: reference.left, y: reference.top};\n\n switch (side) {\n case 'top': {\n coords.x = centerX;\n coords.y = reference.top - tooltip.height;\n break;\n }\n\n case 'bottom': {\n coords.x = centerX;\n coords.y = reference.top + reference.height;\n break;\n }\n\n case 'right': {\n coords.x = reference.left + reference.width;\n coords.y = centerY;\n break;\n }\n\n case 'left': {\n coords.x = reference.left - tooltip.width;\n coords.y = centerY;\n break;\n }\n }\n\n switch (alignment) {\n case 'start': {\n coords[alignmentAxis] -= alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n\n case 'end': {\n coords[alignmentAxis] += alignmentOffset * (isRtl && isVertical ? -1 : 1);\n break;\n }\n }\n\n const axisOffset = computeAxisOffset(offset, side, isRtl);\n\n coords.x += axisOffset.x;\n coords.y += axisOffset.y;\n\n return coords;\n}\n\nexport function convertToRelativeToOffsetParentRect(rect: ElementRect, offsetParent: HTMLElement) {\n const offsetRect = getElementRect(offsetParent);\n\n return createRect({\n top: rect.top - offsetRect.top + offsetParent.offsetTop,\n left: rect.left - offsetRect.left + offsetParent.offsetLeft,\n width: rect.width,\n height: rect.height,\n });\n}\n\nexport function detectOverflow(\n boundary: ElementRect,\n element: ElementRect,\n padding: Partial<SideObject> | number = 0,\n): SideObject {\n const {top, bottom, left, right} = createSideObject(padding);\n\n return {\n top: boundary.top - element.top + top,\n bottom: element.bottom - boundary.bottom + bottom,\n left: boundary.left - element.left + left,\n right: element.right - boundary.right + right,\n };\n}\n", "import type {\n Coords,\n TooltipContext,\n TooltipContextElements,\n TooltipElementOptions,\n TooltipOptions,\n} from './types';\n\nimport {\n DEFAULT_OFFSET_VALUES,\n PAGE_CONTAINER_SELECTOR,\n TOOLTIP_BASE_CLASS,\n TOOLTIP_DATA_ATTR,\n TOOLTIP_LIVE_REGION_CLASS,\n TOOLTIP_OPEN_CLASS,\n} from './constant';\nimport {\n computePosition,\n convertToRelativeToOffsetParentRect,\n createRect,\n generateId,\n getElementRect,\n getViewportRect,\n updateRect,\n} from './utils';\n\ninterface TooltipState {\n currentId: string | null;\n timer: ReturnType<typeof setTimeout> | null;\n unsubscribe: (() => void) | null;\n}\n\nexport function createTooltipFactory(options: TooltipOptions = {}) {\n const {closeDelay = 1_000, additionalClassName} = options;\n let initialized = false;\n let liveRegion: HTMLElement | null = null;\n\n const state: TooltipState = {\n currentId: null,\n timer: null,\n unsubscribe: null,\n };\n\n const getActiveTooltip = () => {\n if (!state.currentId) {\n return null;\n }\n\n return document.getElementById(state.currentId);\n };\n\n const getActiveReference = () => {\n if (!state.currentId) {\n return null;\n }\n\n return getReferenceByTooltipId(state.currentId);\n };\n\n const hide = () => {\n const tooltip = getActiveTooltip();\n\n if (state.timer) {\n clearTimeout(state.timer);\n state.timer = null;\n }\n\n if (state.unsubscribe) {\n state.unsubscribe();\n state.unsubscribe = null;\n }\n\n if (tooltip) {\n tooltip.classList.remove(TOOLTIP_OPEN_CLASS);\n detachTooltip(tooltip);\n\n state.currentId = null;\n }\n\n if (liveRegion) {\n liveRegion.textContent = '';\n }\n };\n\n const show = (reference: HTMLElement, text: string) => {\n hide();\n\n const tooltip = createTooltipElement({className: additionalClassName});\n const update = updateTooltipPosition.bind(null, options, reference, tooltip);\n\n state.currentId = tooltip.id;\n\n attachTooltip(tooltip, reference, text);\n\n if (liveRegion) {\n liveRegion.textContent = text;\n }\n\n state.unsubscribe = subscribeToScroll(reference, update);\n\n tooltip.classList.add(TOOLTIP_OPEN_CLASS);\n\n update();\n\n if (closeDelay > 0) {\n state.timer = setTimeout(hide, closeDelay);\n }\n };\n\n const handleUpdate = () => {\n const activeTooltip = getActiveTooltip();\n const activeReference = getActiveReference();\n\n if (activeTooltip && !activeReference) {\n hide();\n return;\n }\n\n if (activeTooltip && activeReference) {\n updateTooltipPosition(options, activeReference, activeTooltip);\n }\n };\n\n const init = () => {\n if (!initialized) {\n initialized = true;\n\n liveRegion = document.createElement('div');\n liveRegion.className = TOOLTIP_LIVE_REGION_CLASS;\n liveRegion.setAttribute('aria-live', 'assertive');\n document.body.appendChild(liveRegion);\n window.addEventListener('scroll', handleUpdate);\n window.addEventListener('resize', handleUpdate);\n }\n };\n\n const cleanup = () => {\n if (initialized) {\n initialized = false;\n\n window.removeEventListener('scroll', handleUpdate);\n window.removeEventListener('resize', handleUpdate);\n }\n };\n\n return {\n get visible() {\n return Boolean(state.currentId);\n },\n getActiveReference,\n show,\n hide,\n init,\n cleanup,\n };\n}\n\nfunction createTooltipElement(options: TooltipElementOptions) {\n const {className} = options;\n\n const id = generateId();\n const tooltip = document.createElement('div');\n\n tooltip.id = id;\n tooltip.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;\n\n return tooltip;\n}\n\nfunction attachTooltip(tooltip: HTMLElement, reference: HTMLElement, text: string) {\n const container = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;\n\n reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip.id);\n container.appendChild(tooltip);\n tooltip.textContent = text;\n}\n\nfunction detachTooltip(tooltip: HTMLElement) {\n if (tooltip.id) {\n const reference = getReferenceByTooltipId(tooltip.id);\n\n reference?.removeAttribute(TOOLTIP_DATA_ATTR);\n }\n\n tooltip.remove();\n}\n\nfunction getReferenceByTooltipId(id: string) {\n return document.querySelector<HTMLElement>(`[${TOOLTIP_DATA_ATTR}=\"${id}\"]`);\n}\n\nfunction subscribeToScroll(reference: HTMLElement, update: () => void) {\n const scrollableElement = getParentScrollableElement(reference);\n\n scrollableElement.addEventListener('scroll', update);\n\n return () => {\n scrollableElement.removeEventListener('scroll', update);\n };\n}\n\nfunction getParentScrollableElement(target: HTMLElement) {\n const closestScrollableParent = target.closest('table') || target.closest('code');\n\n return closestScrollableParent || target.parentElement || document.body;\n}\n\nfunction createTooltipContext(\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n): TooltipContext | null {\n const tooltipParent = tooltipElement.parentElement;\n\n if (!tooltipParent) {\n return null;\n }\n\n const elements: TooltipContextElements = {\n reference: referenceElement,\n tooltip: tooltipElement,\n offsetParent: tooltipParent,\n };\n\n const viewport = getViewportRect();\n const reference = getElementRect(referenceElement);\n const {width, height} = tooltipElement.getBoundingClientRect();\n\n return {\n isRtl: document.dir === 'rtl',\n viewport,\n reference,\n tooltip: createRect({top: 0, left: 0, width, height}),\n elements,\n };\n}\n\nfunction updateTooltipPosition(\n options: TooltipOptions,\n referenceElement: HTMLElement,\n tooltipElement: HTMLElement,\n) {\n const context = createTooltipContext(referenceElement, tooltipElement);\n\n if (!context) {\n return;\n }\n\n const coords = getTooltipCoords(context, options);\n\n tooltipElement.style.top = `${coords.y}px`;\n tooltipElement.style.left = `${coords.x}px`;\n}\n\nfunction getTooltipCoords(context: TooltipContext, options: TooltipOptions): Coords {\n const {placement = 'bottom-start', offset = DEFAULT_OFFSET_VALUES, flip = true} = options;\n const {reference, tooltip, viewport, isRtl} = context;\n\n const {coords} = computePosition(reference, tooltip, viewport, placement, offset, isRtl, flip);\n\n const rect = updateRect(tooltip, {top: coords.y, left: coords.x});\n const relativeRect = convertToRelativeToOffsetParentRect(rect, context.elements.offsetParent);\n\n return {\n x: relativeRect.left,\n y: relativeRect.top,\n };\n}\n", "import type {Lang} from 'src/transform/typings';\n\nexport const COPIED_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", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from './tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from './utils';\nimport {COPIED_LANG_TOKEN} from './constant';\n\nconst ALLOWED_PROTOCOL_RE = /^(?:https?|file):$/;\nconst ANCHOR_BUTTON_SELECTOR = '.yfm-clipboard-anchor';\n\nconst tooltip = createTooltipFactory();\n\nfunction getLink(target: HTMLElement) {\n const href = target.nodeName === 'A' ? (target as HTMLAnchorElement).href : target.dataset.href;\n const link = new URL(href || '', window.location.href);\n\n if (ALLOWED_PROTOCOL_RE.test(link.protocol)) {\n return link.href;\n }\n\n return window.location.href;\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\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 link = getLink(target);\n\n copyToClipboard(link).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n });\n}\n", "import type {Lang} from 'src/transform/typings';\n\nimport {createTooltipFactory} from '../tooltip';\nimport {copyToClipboard, getEventTarget, isCustom} from '../utils';\nimport {COPIED_LANG_TOKEN} from '../constant';\n\nconst CLASS_INLINE_CODE = 'yfm-clipboard-inline-code';\nconst INLINE_CODE = `.${CLASS_INLINE_CODE}`;\n\nconst tooltip = createTooltipFactory({\n // NOTE: Add additional className for backward capability\n additionalClassName: 'inline_code_tooltip',\n});\n\nexport function inlineCopyFn(target: HTMLElement) {\n const innerText = target.innerText;\n\n if (!innerText) {\n return;\n }\n\n copyToClipboard(innerText).then(() => {\n const lang = document.documentElement.lang || 'en';\n const tooltipText = COPIED_LANG_TOKEN[lang as Lang] ?? COPIED_LANG_TOKEN.en;\n\n tooltip.show(target, tooltipText);\n });\n}\n\nif (typeof document !== 'undefined') {\n tooltip.init();\n\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\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\n if (!activeElement.classList.contains(CLASS_INLINE_CODE)) {\n return;\n }\n\n inlineCopyFn(activeElement);\n }\n\n if (event.key === 'Escape' && tooltip.visible) {\n const reference = tooltip.getActiveReference();\n\n tooltip.hide();\n // Set focus back to open button after closing popup\n reference?.focus();\n }\n });\n}\n"],
5
+ "mappings": "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",
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", "COPY_BUTTON_SELECTOR", "WRAP_BUTTON_SELECTOR", "notifySuccess", "svgButton", "id", "icon", "buttonCopyFn", "_a", "container", "code", "textContent", "buttonWrapFn", "PAGE_CONTAINER_SELECTOR", "TOOLTIP_BASE_CLASS", "TOOLTIP_OPEN_CLASS", "TOOLTIP_DATA_ATTR", "TOOLTIP_LIVE_REGION_CLASS", "DEFAULT_OFFSET_VALUES", "OPPOSITE_SIDES", "DEFAULT_SIDE_OBJECT", "isVerticalSide", "side", "createSideObject", "value", "parsePlacement", "placement", "alignment", "getOppositeSide", "flipPlacement", "opposite", "getOverflow", "tooltip", "coords", "viewport", "rect", "updateRect", "detectOverflow", "shouldFlip", "overflow", "flippedOverflow", "computePosition", "reference", "offset", "isRtl", "flip", "computeCoordsFromPlacement", "flipped", "flippedCoords", "generateId", "random", "now", "createRect", "params", "_b", "_c", "_d", "getViewportRect", "documentElement", "body", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "getElementRect", "element", "box", "computeAxisOffset", "mainAxis", "crossAxis", "isVertical", "mainDirection", "crossDirection", "mainOffset", "crossOffset", "alignmentAxis", "alignLength", "centerX", "centerY", "alignmentOffset", "axisOffset", "convertToRelativeToOffsetParentRect", "offsetParent", "offsetRect", "boundary", "padding", "top", "bottom", "left", "right", "createTooltipFactory", "options", "closeDelay", "additionalClassName", "initialized", "liveRegion", "state", "getActiveTooltip", "getActiveReference", "getReferenceByTooltipId", "hide", "detachTooltip", "show", "createTooltipElement", "update", "updateTooltipPosition", "attachTooltip", "subscribeToScroll", "handleUpdate", "activeTooltip", "activeReference", "className", "scrollableElement", "getParentScrollableElement", "createTooltipContext", "referenceElement", "tooltipElement", "tooltipParent", "elements", "width", "height", "context", "getTooltipCoords", "relativeRect", "COPIED_LANG_TOKEN", "ALLOWED_PROTOCOL_RE", "ANCHOR_BUTTON_SELECTOR", "getLink", "href", "link", "lang", "tooltipText", "CLASS_INLINE_CODE", "INLINE_CODE", "inlineCopyFn", "innerText", "inline", "activeElement"]
7
7
  }
package/dist/js/yfm.js CHANGED
@@ -510,6 +510,7 @@
510
510
  var TOOLTIP_BASE_CLASS = "yfm yfm-tooltip";
511
511
  var TOOLTIP_OPEN_CLASS = "open";
512
512
  var TOOLTIP_DATA_ATTR = "data-tooltip-id";
513
+ var TOOLTIP_LIVE_REGION_CLASS = "yfm-tooltip-live-region";
513
514
  var DEFAULT_OFFSET_VALUES = { mainAxis: 5 };
514
515
  var OPPOSITE_SIDES = {
515
516
  top: "bottom",
@@ -697,6 +698,7 @@
697
698
  function createTooltipFactory(options = {}) {
698
699
  const { closeDelay = 1e3, additionalClassName } = options;
699
700
  let initialized = false;
701
+ let liveRegion = null;
700
702
  const state = {
701
703
  currentId: null,
702
704
  timer: null,
@@ -729,6 +731,9 @@
729
731
  detachTooltip(tooltip3);
730
732
  state.currentId = null;
731
733
  }
734
+ if (liveRegion) {
735
+ liveRegion.textContent = "";
736
+ }
732
737
  };
733
738
  const show = (reference, text) => {
734
739
  hide();
@@ -736,6 +741,9 @@
736
741
  const update = updateTooltipPosition.bind(null, options, reference, tooltip3);
737
742
  state.currentId = tooltip3.id;
738
743
  attachTooltip(tooltip3, reference, text);
744
+ if (liveRegion) {
745
+ liveRegion.textContent = text;
746
+ }
739
747
  state.unsubscribe = subscribeToScroll(reference, update);
740
748
  tooltip3.classList.add(TOOLTIP_OPEN_CLASS);
741
749
  update();
@@ -757,6 +765,10 @@
757
765
  const init = () => {
758
766
  if (!initialized) {
759
767
  initialized = true;
768
+ liveRegion = document.createElement("div");
769
+ liveRegion.className = TOOLTIP_LIVE_REGION_CLASS;
770
+ liveRegion.setAttribute("aria-live", "assertive");
771
+ document.body.appendChild(liveRegion);
760
772
  window.addEventListener("scroll", handleUpdate);
761
773
  window.addEventListener("resize", handleUpdate);
762
774
  }
@@ -785,17 +797,11 @@
785
797
  const tooltip3 = document.createElement("div");
786
798
  tooltip3.id = id;
787
799
  tooltip3.className = className ? `${TOOLTIP_BASE_CLASS} ${className}` : TOOLTIP_BASE_CLASS;
788
- tooltip3.setAttribute("role", "status");
789
- tooltip3.setAttribute("aria-live", "polite");
790
800
  return tooltip3;
791
801
  }
792
802
  function attachTooltip(tooltip3, reference, text) {
793
803
  const container2 = document.querySelector(PAGE_CONTAINER_SELECTOR) || document.body;
794
- const ariaLive = reference.getAttribute("aria-live");
795
804
  reference.setAttribute(TOOLTIP_DATA_ATTR, tooltip3.id);
796
- if (ariaLive) {
797
- tooltip3.setAttribute("aria-live", ariaLive);
798
- }
799
805
  container2.appendChild(tooltip3);
800
806
  tooltip3.textContent = text;
801
807
  }