@diplodoc/transform 4.18.0 → 4.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../node_modules/get-root-node-polyfill/index.js", "../../node_modules/@diplodoc/tabs-extension/src/common.ts", "../../node_modules/@diplodoc/tabs-extension/src/runtime/utils.ts", "../../node_modules/@diplodoc/tabs-extension/src/runtime/TabsController.ts", "../../node_modules/@diplodoc/tabs-extension/src/runtime/index.ts", "../../src/js/polyfill.js", "../../src/js/utils.ts", "../../src/js/code.ts", "../../src/js/cut.ts", "../../src/js/term/utils.ts", "../../src/js/term/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 type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\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 getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_PANEL_CLASSNAME,\n Tab,\n} from '../common';\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport class TabsController {\n private _document: Document;\n\n private _onSelectTabHandlers: Set<Handler> = new Set();\n\n constructor(document: Document) {\n this._document = document;\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key} = tab;\n\n if (!group) {\n return;\n }\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key});\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX) ? {key} : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private isValidTabElement(element: HTMLElement) {\n const tabList =\n element.matches(Selector.TAB) && element.dataset.diplodocId\n ? element.closest(Selector.TAB_LIST)\n : null;\n return tabList?.closest(Selector.TABS);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n tabs.push({\n group,\n key,\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n", "import getRootNode from 'get-root-node-polyfill';\n\nif (typeof document !== 'undefined') {\n // matches polyfill for old edge\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function matches(selector) {\n const rootNode = e.getRootNode ? e.getRootNode() : getRootNode.call(e);\n const matches = rootNode.querySelectorAll(selector);\n const th = this;\n return Array.prototype.some.call(matches, (e) => {\n return e === th;\n });\n };\n }\n })(Element.prototype);\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n", "import {getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction copyToClipboard(text: string) {\n if (!text) {\n return Promise.resolve();\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('style', 'position: absolute; left: 1000%');\n textarea.textContent = text;\n document.body.append(textarea);\n\n textarea.select();\n document.execCommand('copy');\n\n document.body.removeChild(textarea);\n\n return Promise.resolve();\n}\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\n // @ts-expect-error\n const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);\n\n if (!icon) {\n return;\n }\n\n icon.beginElement();\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {\n return;\n }\n\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n if (!code) {\n return;\n }\n\n copyToClipboard(code.innerText).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-button'));\n });\n });\n}\n", "import {getEventTarget, isCustom} from './utils';\n\nconst Selector = {\n CUT: '.yfm .yfm-cut',\n TITLE: '.yfm .yfm-cut-title',\n CONTENT: '.yfm .yfm-cut-content',\n};\n\nconst ClassName = {\n OPEN: 'open',\n};\n\nfunction toggleCut(element: HTMLElement) {\n const cutNode = element.parentNode;\n\n if (!(cutNode instanceof HTMLElement)) {\n return;\n }\n\n cutNode.classList.toggle(ClassName.OPEN);\n}\n\nfunction matchTitle(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return target?.matches?.(Selector.TITLE);\n}\n\nfunction findTitleInPath(event: MouseEvent): HTMLElement | undefined {\n const target = getEventTarget(event);\n\n if (matchTitle(target)) {\n return target as HTMLElement;\n }\n\n const path = event.composedPath?.();\n\n return path?.find(matchTitle) as HTMLElement | undefined;\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const title = findTitleInPath(event);\n\n if (!title) {\n return;\n }\n\n toggleCut(title);\n });\n}\n", "export const Selector = {\n TITLE: '.yfm .yfm-term_title',\n CONTENT: '.yfm .yfm-term_dfn',\n};\nexport const openClass = 'open';\nexport const openDefinitionClass = Selector.CONTENT.replace(/\\./g, '') + ' ' + openClass;\nlet isListenerNeeded = true;\n\nexport function createDefinitionElement(termElement: HTMLElement) {\n const termKey = termElement.getAttribute('term-key');\n const definitionTemplate = document.getElementById(\n `${termKey}_template`,\n ) as HTMLTemplateElement;\n const definitionElement = definitionTemplate?.content.cloneNode(true).firstChild as HTMLElement;\n\n definitionTemplate?.parentElement?.appendChild(definitionElement);\n definitionTemplate.remove();\n\n return definitionElement;\n}\n\nexport function setDefinitionId(definitionElement: HTMLElement, termElement: HTMLElement): void {\n const termId = termElement.getAttribute('id') || Math.random().toString(36).substr(2, 8);\n definitionElement?.setAttribute('term-id', termId);\n}\n\nexport function setDefinitionPosition(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const {\n x: termX,\n y: termY,\n right: termRight,\n left: termLeft,\n width: termWidth,\n height: termHeight,\n } = termElement.getBoundingClientRect();\n\n const termParent = termParentElement(termElement);\n\n if (!termParent) {\n return;\n }\n\n const {right: termParentRight, left: termParentLeft} = termParent.getBoundingClientRect();\n\n if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {\n closeDefinition(definitionElement);\n return;\n }\n\n if (isListenerNeeded && termParent) {\n termParent.addEventListener('scroll', termOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(definitionElement.getAttribute('relativeX'));\n const relativeY = Number(definitionElement.getAttribute('relativeY'));\n\n if (relativeX === termX && relativeY === termY) {\n return;\n }\n\n definitionElement.setAttribute('relativeX', String(termX));\n definitionElement.setAttribute('relativeY', String(termY));\n\n const offsetTop = termHeight + 5;\n const definitionParent = definitionElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = definitionElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(termElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n\n definitionElement.style.top =\n Number(getCoords(termElement).top + offsetTop - customHeaderTop) + 'px';\n definitionElement.style.left =\n Number(\n getCoords(termElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument,\n ) + 'px';\n}\n\nfunction termOnResize() {\n const openDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\n}\n\nfunction termParentElement(term: HTMLElement | null) {\n if (!term) {\n return null;\n }\n\n const closestScrollableParent = term.closest('table') || term.closest('code');\n\n return closestScrollableParent || term.parentElement;\n}\n\nexport function closeDefinition(definition: HTMLElement) {\n definition.classList.remove(openClass);\n const termId = definition.getAttribute('term-id') || '';\n const termParent = termParentElement(document.getElementById(termId));\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n isListenerNeeded = true;\n}\n\nfunction getCoords(elem: HTMLElement) {\n const box = elem.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return {top: Math.round(top), left: Math.round(left)};\n}\n", "import {\n Selector,\n closeDefinition,\n createDefinitionElement,\n openClass,\n openDefinitionClass,\n setDefinitionId,\n setDefinitionPosition,\n} from './utils';\nimport {getEventTarget, isCustom} from '../utils';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n const target = getEventTarget(event) as HTMLElement;\n\n const termId = target.getAttribute('id');\n const termKey = target.getAttribute('term-key');\n let definitionElement = document.getElementById(termKey + '_element');\n\n if (termKey && !definitionElement) {\n definitionElement = createDefinitionElement(target);\n }\n\n const isSameTerm = openDefinition && termId === openDefinition.getAttribute('term-id');\n if (isSameTerm) {\n closeDefinition(openDefinition);\n return;\n }\n\n const isTargetDefinitionContent = target.closest(\n [Selector.CONTENT.replace(' ', ''), openClass].join('.'),\n );\n\n if (openDefinition && !isTargetDefinitionContent) {\n closeDefinition(openDefinition);\n }\n\n if (isCustom(event) || !target.matches(Selector.TITLE) || !definitionElement) {\n return;\n }\n\n setDefinitionId(definitionElement, target);\n setDefinitionPosition(definitionElement, target);\n\n definitionElement.classList.toggle(openClass);\n });\n\n document.addEventListener('keydown', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n if (event.key === 'Escape' && openDefinition) {\n closeDefinition(openDefinition);\n }\n });\n\n window.addEventListener('resize', () => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n openDefinition.classList.toggle(openClass);\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\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", "TABS_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "ACTIVE_CLASSNAME", "GROUP_DATA_KEY", "TAB_DATA_KEY", "TAB_DATA_ID", "DEFAULT_TABS_GROUP_PREFIX", "GLOBAL_SYMBOL", "getEventTarget", "event", "path", "isCustom", "target", "getClosestScrollableParent", "element", "getOffsetByScrollableParent", "scrollableParent", "elementBounds", "scrollableParentBounds", "Selector", "TabsController", "document", "tab", "direction", "tabs", "nodes", "currentTab", "currentTabIndex", "key", "newIndex", "handler", "id", "options", "targetTab", "group", "previousTargetOffset", "updated", "htmlElem", "tabList", "tabsContainer", "allTabs", "allPanels", "targetIndex", "i", "panel", "isTargetTab", "targetOffset", "topDelta", "leftDelta", "scrollTopDelta", "scrollLeftDelta", "diplodocId", "eventTab", "_a", "_b", "tabEl", "import_get_root_node_polyfill", "__toESM", "e", "matches", "selector", "th", "BUTTON_SELECTOR", "copyToClipboard", "text", "textarea", "notifySuccess", "svgButton", "icon", "parent", "code", "ClassName", "toggleCut", "cutNode", "matchTitle", "findTitleInPath", "title", "openClass", "openDefinitionClass", "isListenerNeeded", "createDefinitionElement", "termElement", "termKey", "definitionTemplate", "definitionElement", "setDefinitionId", "termId", "setDefinitionPosition", "termX", "termY", "termRight", "termLeft", "termWidth", "termHeight", "termParent", "termParentElement", "termParentRight", "termParentLeft", "closeDefinition", "termOnResize", "relativeX", "relativeY", "offsetTop", "definitionParent", "definitionWidth", "definitionParentLeft", "definitionLeftCoordinate", "getCoords", "definitionRightCoordinate", "definitionOutOfScreenOnLeft", "fitDefinitionDocument", "customHeaderTop", "openDefinition", "term", "definition", "elem", "box", "body", "docEl", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "top", "left", "isTargetDefinitionContent"]
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 type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\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 getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_PANEL_CLASSNAME,\n Tab,\n} from '../common';\nimport type {TabsOrientation} from '../plugin/transform';\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_VERTICAL_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport class TabsController {\n private _document: Document;\n\n private _onSelectTabHandlers: Set<Handler> = new Set();\n\n constructor(document: Document) {\n this._document = document;\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n const areVertical = this.areTabsVertical(target);\n\n if (isCustom(event)) {\n return;\n }\n\n if (!(this.isValidTabElement(target) || areVertical)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, align} = tab;\n\n if (!group) {\n return;\n }\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, align}, align);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, align}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, align: TabsOrientation) {\n switch (align) {\n case 'vertical': {\n return this.updateHTMLVertical(tab);\n }\n case 'horizontal': {\n return this.updateHTMLHorizontal(tab);\n }\n }\n\n return 0;\n }\n\n private updateHTMLVertical(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const [tabs] = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n const root = tabs.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n input.removeAttribute('checked');\n }\n\n if (title === tabs) {\n title.classList.add('active');\n content?.classList.add('active');\n input.setAttribute('checked', 'true');\n }\n\n updated++;\n }\n\n return updated;\n }\n\n private updateHTMLHorizontal(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX) ? {key, align} : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private isValidTabElement(element: HTMLElement) {\n const tabList =\n element.matches(Selector.TAB) && element.dataset.diplodocId\n ? element.closest(Selector.TAB_LIST)\n : null;\n\n return tabList?.closest(Selector.TABS);\n }\n\n private areTabsVertical(target: HTMLElement) {\n const parent = target.parentElement;\n\n return target.dataset.diplodocVerticalTab || Boolean(parent?.dataset.diplodocVerticalTab);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n if (this.areTabsVertical(target)) {\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'vertical'} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'horizontal'} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n align: 'horizontal',\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n", "import getRootNode from 'get-root-node-polyfill';\n\nif (typeof document !== 'undefined') {\n // matches polyfill for old edge\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function matches(selector) {\n const rootNode = e.getRootNode ? e.getRootNode() : getRootNode.call(e);\n const matches = rootNode.querySelectorAll(selector);\n const th = this;\n return Array.prototype.some.call(matches, (e) => {\n return e === th;\n });\n };\n }\n })(Element.prototype);\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n", "import {getEventTarget, isCustom} from './utils';\n\nconst BUTTON_SELECTOR = '.yfm-clipboard-button';\n\nfunction copyToClipboard(text: string) {\n if (!text) {\n return Promise.resolve();\n }\n\n if (navigator.clipboard && typeof navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text);\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('style', 'position: absolute; left: 1000%');\n textarea.textContent = text;\n document.body.append(textarea);\n\n textarea.select();\n document.execCommand('copy');\n\n document.body.removeChild(textarea);\n\n return Promise.resolve();\n}\n\nfunction notifySuccess(svgButton: HTMLElement | null) {\n if (!svgButton) {\n return;\n }\n\n const id = svgButton.getAttribute('data-animation');\n // @ts-expect-error\n const icon = svgButton.getRootNode().getElementById(`visibileAnimation-${id}`);\n\n if (!icon) {\n return;\n }\n\n icon.beginElement();\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !target.matches(BUTTON_SELECTOR)) {\n return;\n }\n\n const parent = target.parentNode;\n\n if (!parent) {\n return;\n }\n\n const code = parent.querySelector<HTMLElement>('pre code');\n if (!code) {\n return;\n }\n\n copyToClipboard(code.innerText).then(() => {\n notifySuccess(parent.querySelector('.yfm-clipboard-button'));\n });\n });\n}\n", "import {getEventTarget, isCustom} from './utils';\n\nconst Selector = {\n CUT: '.yfm .yfm-cut',\n TITLE: '.yfm .yfm-cut-title',\n CONTENT: '.yfm .yfm-cut-content',\n};\n\nconst ClassName = {\n OPEN: 'open',\n};\n\nfunction toggleCut(element: HTMLElement) {\n const cutNode = element.parentNode;\n\n if (!(cutNode instanceof HTMLElement)) {\n return;\n }\n\n cutNode.classList.toggle(ClassName.OPEN);\n}\n\nfunction matchTitle(target: EventTarget | null) {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return target?.matches?.(Selector.TITLE);\n}\n\nfunction findTitleInPath(event: MouseEvent): HTMLElement | undefined {\n const target = getEventTarget(event);\n\n if (matchTitle(target)) {\n return target as HTMLElement;\n }\n\n const path = event.composedPath?.();\n\n return path?.find(matchTitle) as HTMLElement | undefined;\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n if (isCustom(event)) {\n return;\n }\n\n const title = findTitleInPath(event);\n\n if (!title) {\n return;\n }\n\n toggleCut(title);\n });\n}\n", "export const Selector = {\n TITLE: '.yfm .yfm-term_title',\n CONTENT: '.yfm .yfm-term_dfn',\n};\nexport const openClass = 'open';\nexport const openDefinitionClass = Selector.CONTENT.replace(/\\./g, '') + ' ' + openClass;\nlet isListenerNeeded = true;\n\nexport function createDefinitionElement(termElement: HTMLElement) {\n const termKey = termElement.getAttribute('term-key');\n const definitionTemplate = document.getElementById(\n `${termKey}_template`,\n ) as HTMLTemplateElement;\n const definitionElement = definitionTemplate?.content.cloneNode(true).firstChild as HTMLElement;\n\n definitionTemplate?.parentElement?.appendChild(definitionElement);\n definitionTemplate.remove();\n\n return definitionElement;\n}\n\nexport function setDefinitionId(definitionElement: HTMLElement, termElement: HTMLElement): void {\n const termId = termElement.getAttribute('id') || Math.random().toString(36).substr(2, 8);\n definitionElement?.setAttribute('term-id', termId);\n}\n\nexport function setDefinitionPosition(\n definitionElement: HTMLElement,\n termElement: HTMLElement,\n): void {\n const {\n x: termX,\n y: termY,\n right: termRight,\n left: termLeft,\n width: termWidth,\n height: termHeight,\n } = termElement.getBoundingClientRect();\n\n const termParent = termParentElement(termElement);\n\n if (!termParent) {\n return;\n }\n\n const {right: termParentRight, left: termParentLeft} = termParent.getBoundingClientRect();\n\n if ((termParentRight < termLeft || termParentLeft > termRight) && !isListenerNeeded) {\n closeDefinition(definitionElement);\n return;\n }\n\n if (isListenerNeeded && termParent) {\n termParent.addEventListener('scroll', termOnResize);\n isListenerNeeded = false;\n }\n\n const relativeX = Number(definitionElement.getAttribute('relativeX'));\n const relativeY = Number(definitionElement.getAttribute('relativeY'));\n\n if (relativeX === termX && relativeY === termY) {\n return;\n }\n\n definitionElement.setAttribute('relativeX', String(termX));\n definitionElement.setAttribute('relativeY', String(termY));\n\n const offsetTop = termHeight + 5;\n const definitionParent = definitionElement.parentElement;\n\n if (!definitionParent) {\n return;\n }\n\n const {width: definitionWidth} = definitionElement.getBoundingClientRect();\n const {left: definitionParentLeft} = definitionParent.getBoundingClientRect();\n\n // If definition not fit document change base alignment\n const definitionLeftCoordinate = Number(getCoords(termElement).left);\n const definitionRightCoordinate = definitionWidth + definitionLeftCoordinate;\n\n const definitionOutOfScreenOnLeft = definitionLeftCoordinate - definitionWidth < 0;\n const definitionOutOfScreenOnRight = definitionRightCoordinate > document.body.clientWidth;\n\n const isAlignSwapped = definitionOutOfScreenOnRight || document.dir === 'rtl';\n const fitDefinitionDocument =\n isAlignSwapped && !definitionOutOfScreenOnLeft ? definitionWidth - termWidth : 0;\n const customHeaderTop = getCoords(definitionParent).top - definitionParent.offsetTop;\n\n definitionElement.style.top =\n Number(getCoords(termElement).top + offsetTop - customHeaderTop) + 'px';\n definitionElement.style.left =\n Number(\n getCoords(termElement).left -\n definitionParentLeft +\n definitionParent.offsetLeft -\n fitDefinitionDocument,\n ) + 'px';\n}\n\nfunction termOnResize() {\n const openDefinition = document.getElementsByClassName(openDefinitionClass)[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\n}\n\nfunction termParentElement(term: HTMLElement | null) {\n if (!term) {\n return null;\n }\n\n const closestScrollableParent = term.closest('table') || term.closest('code');\n\n return closestScrollableParent || term.parentElement;\n}\n\nexport function closeDefinition(definition: HTMLElement) {\n definition.classList.remove(openClass);\n const termId = definition.getAttribute('term-id') || '';\n const termParent = termParentElement(document.getElementById(termId));\n\n if (!termParent) {\n return;\n }\n\n termParent.removeEventListener('scroll', termOnResize);\n isListenerNeeded = true;\n}\n\nfunction getCoords(elem: HTMLElement) {\n const box = elem.getBoundingClientRect();\n\n const body = document.body;\n const docEl = document.documentElement;\n\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n\n return {top: Math.round(top), left: Math.round(left)};\n}\n", "import {\n Selector,\n closeDefinition,\n createDefinitionElement,\n openClass,\n openDefinitionClass,\n setDefinitionId,\n setDefinitionPosition,\n} from './utils';\nimport {getEventTarget, isCustom} from '../utils';\n\nif (typeof document !== 'undefined') {\n document.addEventListener('click', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n const target = getEventTarget(event) as HTMLElement;\n\n const termId = target.getAttribute('id');\n const termKey = target.getAttribute('term-key');\n let definitionElement = document.getElementById(termKey + '_element');\n\n if (termKey && !definitionElement) {\n definitionElement = createDefinitionElement(target);\n }\n\n const isSameTerm = openDefinition && termId === openDefinition.getAttribute('term-id');\n if (isSameTerm) {\n closeDefinition(openDefinition);\n return;\n }\n\n const isTargetDefinitionContent = target.closest(\n [Selector.CONTENT.replace(' ', ''), openClass].join('.'),\n );\n\n if (openDefinition && !isTargetDefinitionContent) {\n closeDefinition(openDefinition);\n }\n\n if (isCustom(event) || !target.matches(Selector.TITLE) || !definitionElement) {\n return;\n }\n\n setDefinitionId(definitionElement, target);\n setDefinitionPosition(definitionElement, target);\n\n definitionElement.classList.toggle(openClass);\n });\n\n document.addEventListener('keydown', (event) => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n if (event.key === 'Escape' && openDefinition) {\n closeDefinition(openDefinition);\n }\n });\n\n window.addEventListener('resize', () => {\n const openDefinition = document.getElementsByClassName(\n openDefinitionClass,\n )[0] as HTMLElement;\n\n if (!openDefinition) {\n return;\n }\n\n const termId = openDefinition.getAttribute('term-id') || '';\n const termElement = document.getElementById(termId);\n\n if (!termElement) {\n openDefinition.classList.toggle(openClass);\n return;\n }\n\n setDefinitionPosition(openDefinition, termElement);\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", "TABS_CLASSNAME", "TABS_VERTICAL_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "ACTIVE_CLASSNAME", "GROUP_DATA_KEY", "TAB_DATA_KEY", "TAB_DATA_ID", "DEFAULT_TABS_GROUP_PREFIX", "GLOBAL_SYMBOL", "getEventTarget", "event", "path", "isCustom", "target", "getClosestScrollableParent", "element", "getOffsetByScrollableParent", "scrollableParent", "elementBounds", "scrollableParentBounds", "Selector", "TabsController", "document", "areVertical", "tab", "direction", "tabs", "nodes", "currentTab", "currentTabIndex", "key", "newIndex", "handler", "id", "options", "targetTab", "group", "align", "previousTargetOffset", "updated", "elements", "i", "title", "content", "input", "htmlElem", "tabList", "tabsContainer", "allTabs", "allPanels", "targetIndex", "panel", "isTargetTab", "targetOffset", "topDelta", "leftDelta", "scrollTopDelta", "scrollLeftDelta", "diplodocId", "eventTab", "parent", "_a", "_b", "tabEl", "import_get_root_node_polyfill", "__toESM", "e", "matches", "selector", "th", "BUTTON_SELECTOR", "copyToClipboard", "text", "textarea", "notifySuccess", "svgButton", "icon", "code", "ClassName", "toggleCut", "cutNode", "matchTitle", "findTitleInPath", "openClass", "openDefinitionClass", "isListenerNeeded", "createDefinitionElement", "termElement", "termKey", "definitionTemplate", "definitionElement", "setDefinitionId", "termId", "setDefinitionPosition", "termX", "termY", "termRight", "termLeft", "termWidth", "termHeight", "termParent", "termParentElement", "termParentRight", "termParentLeft", "closeDefinition", "termOnResize", "relativeX", "relativeY", "offsetTop", "definitionParent", "definitionWidth", "definitionParentLeft", "definitionLeftCoordinate", "getCoords", "definitionRightCoordinate", "definitionOutOfScreenOnLeft", "fitDefinitionDocument", "customHeaderTop", "openDefinition", "term", "definition", "elem", "box", "body", "docEl", "scrollTop", "scrollLeft", "clientTop", "clientLeft", "top", "left", "isTargetDefinitionContent"]
7
7
  }
@@ -150,7 +150,7 @@ function inlineConditions(content, ifTag, vars, strict) {
150
150
  const result = trimResult(content, ifTag, ifCon);
151
151
  return {
152
152
  result: start + result + end,
153
- lastIndex: start.length + result.length,
153
+ lastIndex: start.length + result.length - tailLinebreak(ifTag.rawEnd).length,
154
154
  ifCon,
155
155
  };
156
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/transform/liquid/conditions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/transform/liquid/conditions.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
1
  import type MarkdownIt from 'markdown-it';
2
- import type StateCore from 'markdown-it/lib/rules_core/state_core';
2
+ import type Core from 'markdown-it/lib/parser_core';
3
+ export declare const pattern: RegExp;
4
+ export declare const CheckboxTokenType: {
5
+ readonly Checkbox: "checkbox";
6
+ readonly CheckboxOpen: "checkbox_open";
7
+ readonly CheckboxClose: "checkbox_close";
8
+ readonly CheckboxInput: "checkbox_input";
9
+ readonly CheckboxLabel: "checkbox_label";
10
+ readonly CheckboxLabelOpen: "checkbox_label_open";
11
+ readonly CheckboxLabelClose: "checkbox_label_close";
12
+ };
3
13
  export declare type CheckboxOptions = {
4
14
  idPrefix?: string;
5
15
  divClass?: string;
16
+ /** @default true */
17
+ disabled?: boolean;
6
18
  };
7
- export declare const checkboxReplace: (_md: MarkdownIt, opts: CheckboxOptions) => (state: StateCore) => void;
19
+ export declare const checkboxReplace: (_md: MarkdownIt, opts?: CheckboxOptions) => Core.RuleCore;
@@ -1,18 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkboxReplace = void 0;
3
+ exports.checkboxReplace = exports.CheckboxTokenType = exports.pattern = void 0;
4
4
  // eslint-disable-next-line no-useless-escape
5
- const pattern = /^\[(X|\s|\_|\-)\]\s(.*)/i;
5
+ exports.pattern = /^\[(X|\s|\_|\-)\]\s(.*)/i;
6
+ exports.CheckboxTokenType = {
7
+ Checkbox: 'checkbox',
8
+ CheckboxOpen: 'checkbox_open',
9
+ CheckboxClose: 'checkbox_close',
10
+ CheckboxInput: 'checkbox_input',
11
+ CheckboxLabel: 'checkbox_label',
12
+ CheckboxLabelOpen: 'checkbox_label_open',
13
+ CheckboxLabelClose: 'checkbox_label_close',
14
+ };
6
15
  function matchOpenToken(tokens, i) {
7
16
  return (tokens[i].type === 'paragraph_open' &&
8
17
  tokens[i + 1].type === 'inline' &&
9
- tokens[i + 1].content.match(pattern));
18
+ tokens[i + 1].content.match(exports.pattern));
10
19
  }
11
20
  const checkboxReplace = function (_md, opts) {
12
21
  let lastId = 0;
13
22
  const defaults = {
14
23
  divClass: 'checkbox',
15
24
  idPrefix: 'checkbox',
25
+ disabled: true,
16
26
  };
17
27
  const options = Object.assign(defaults, opts);
18
28
  const createTokens = function (state, checked, label, i) {
@@ -21,7 +31,7 @@ const checkboxReplace = function (_md, opts) {
21
31
  /**
22
32
  * <div class="checkbox">
23
33
  */
24
- token = new state.Token('checkbox_open', 'div', 1);
34
+ token = new state.Token(exports.CheckboxTokenType.CheckboxOpen, 'div', 1);
25
35
  token.block = true;
26
36
  token.map = state.tokens[i].map;
27
37
  token.attrs = [['class', options.divClass]];
@@ -31,22 +41,24 @@ const checkboxReplace = function (_md, opts) {
31
41
  */
32
42
  const id = options.idPrefix + lastId;
33
43
  lastId += 1;
34
- token = new state.Token('checkbox_input', 'input', 0);
44
+ token = new state.Token(exports.CheckboxTokenType.CheckboxInput, 'input', 0);
35
45
  token.block = true;
36
46
  token.map = state.tokens[i].map;
37
47
  token.attrs = [
38
48
  ['type', 'checkbox'],
39
49
  ['id', id],
40
- ['disabled', ''],
41
50
  ];
51
+ if (options.disabled) {
52
+ token.attrSet('disabled', '');
53
+ }
42
54
  if (checked === true) {
43
- token.attrs.push(['checked', 'true']);
55
+ token.attrSet('checked', 'true');
44
56
  }
45
57
  nodes.push(token);
46
58
  /**
47
59
  * <label for="checkbox{n}">
48
60
  */
49
- token = new state.Token('checkbox_label_open', 'label', 1);
61
+ token = new state.Token(exports.CheckboxTokenType.CheckboxLabelOpen, 'label', 1);
50
62
  token.attrs = [['for', id]];
51
63
  nodes.push(token);
52
64
  /**
@@ -57,11 +69,11 @@ const checkboxReplace = function (_md, opts) {
57
69
  /**
58
70
  * closing tags
59
71
  */
60
- token = new state.Token('checkbox_label_close', 'label', -1);
72
+ token = new state.Token(exports.CheckboxTokenType.CheckboxLabelClose, 'label', -1);
61
73
  token.block = true;
62
74
  token.map = state.tokens[i].map;
63
75
  nodes.push(token);
64
- token = new state.Token('checkbox_close', 'div', -1);
76
+ token = new state.Token(exports.CheckboxTokenType.CheckboxClose, 'div', -1);
65
77
  token.block = true;
66
78
  token.map = state.tokens[i].map;
67
79
  nodes.push(token);
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/transform/plugins/checkbox/checkbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/transform/plugins/checkbox/checkbox.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import MarkdownIt from 'markdown-it';
1
+ import type { PluginWithOptions } from 'markdown-it';
2
2
  import { CheckboxOptions } from './checkbox';
3
3
  /**
4
4
  * Checkbox plugin for markdown-it.
5
5
  * Forked from https://github.com/mcecot/markdown-it-checkbox
6
6
  */
7
- declare const checkbox: (md: MarkdownIt, options: CheckboxOptions) => MarkdownIt;
7
+ declare const checkbox: PluginWithOptions<CheckboxOptions>;
8
8
  export = checkbox;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/checkbox/index.ts"],"names":[],"mappings":";AACA,yCAA4D;AAE5D;;;GAGG;AAEH,MAAM,QAAQ,GAAG,CAAC,EAAc,EAAE,OAAwB,EAAE,EAAE;IAC1D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAA,0BAAe,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7D,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF,iBAAS,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transform/plugins/checkbox/index.ts"],"names":[],"mappings":";AACA,yCAA4D;AAE5D;;;GAGG;AAEH,MAAM,QAAQ,GAAuC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;IACjE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAA,0BAAe,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7D,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF,iBAAS,QAAQ,CAAC"}
@@ -60,7 +60,7 @@ class StateIterator {
60
60
  }
61
61
  }
62
62
  }
63
- function getTableRows(state, startPosition, endPosition, startLine) {
63
+ function getTableRowPositions(state, startPosition, endPosition, startLine) {
64
64
  let endOfTable = null;
65
65
  let tableLevel = 0;
66
66
  let currentRow = [];
@@ -157,6 +157,143 @@ function getTableRows(state, startPosition, endPosition, startLine) {
157
157
  }
158
158
  return { rows, endOfTable };
159
159
  }
160
+ /**
161
+ * Removes the specified attribute from attributes in the content of a token.
162
+ *
163
+ * @param {Token} contentToken - The target token.
164
+ * @param {string} attr - The attribute to be removed from the token content.
165
+ *
166
+ * @return {void}
167
+ */
168
+ function removeAttrFromTokenContent(contentToken, attr) {
169
+ // Replace the attribute in the token content with an empty string.
170
+ const blockRegex = /\s*\{[^}]*}/;
171
+ const allAttrs = contentToken.content.match(blockRegex);
172
+ if (!allAttrs) {
173
+ return;
174
+ }
175
+ let replacedContent = allAttrs[0].replace(`.${attr}`, '');
176
+ if (replacedContent.trim() === '{}') {
177
+ replacedContent = '';
178
+ }
179
+ contentToken.content = contentToken.content.replace(allAttrs[0], replacedContent);
180
+ }
181
+ /**
182
+ * Extracts the class attribute from the given content token and applies it to the tdOpenToken.
183
+ * Preserves other attributes.
184
+ *
185
+ * @param {Token} contentToken - Search the content of this token for the class.
186
+ * @param {Token} tdOpenToken - Parent td_open token. Extracted class is applied to this token.
187
+ * @returns {void}
188
+ */
189
+ function extractAndApplyClassFromToken(contentToken, tdOpenToken) {
190
+ // Regex to find class attribute in any position within brackets
191
+ const classAttrRegex = /(?<=\{[^}]*)\.([-_a-zA-Z0-9]+)/g;
192
+ const classAttrMatch = classAttrRegex.exec(contentToken.content);
193
+ if (classAttrMatch) {
194
+ const classAttr = classAttrMatch[1];
195
+ tdOpenToken.attrSet('class', classAttr);
196
+ removeAttrFromTokenContent(contentToken, classAttr);
197
+ }
198
+ }
199
+ const COLSPAN_SYMBOL = '>';
200
+ const ROWSPAN_SYMBOL = '^';
201
+ /**
202
+ * Traverses through the content map, applying row/colspan attributes and marking the special cells for deletion.
203
+ * Upon encountering a symbol denoting a row span or a column span, proceed backwards in row or column
204
+ * until text cell is found. Upon finding the text cell, store the colspan or rowspan value.
205
+ * During the backward traversal, if the same symbol is encountered, increment the value of rowspan/colspan.
206
+ * Colspan symbol is ignored for the first column. Rowspan symbol is ignored for the first row
207
+ *
208
+ * @param contentMap string[][]
209
+ * @param tokenMap Token[][]
210
+ * @return {void}
211
+ */
212
+ const applySpans = (contentMap, tokenMap) => {
213
+ for (let i = 0; i < contentMap.length; i++) {
214
+ for (let j = 0; j < contentMap[0].length; j++) {
215
+ if (contentMap[i][j] === COLSPAN_SYMBOL) {
216
+ // skip the first column
217
+ if (j === 0) {
218
+ continue;
219
+ }
220
+ tokenMap[i][j].meta = { markForDeletion: true };
221
+ let colspanFactor = 2;
222
+ // traverse columns backwards
223
+ for (let col = j - 1; col >= 0; col--) {
224
+ if (contentMap[i][col] === COLSPAN_SYMBOL) {
225
+ colspanFactor++;
226
+ tokenMap[i][col].meta = { markForDeletion: true };
227
+ }
228
+ else if (contentMap[i][col] === ROWSPAN_SYMBOL) {
229
+ // Do nothing, this should be applied on the row that's being extended
230
+ break;
231
+ }
232
+ else {
233
+ tokenMap[i][col].attrSet('colspan', colspanFactor.toString());
234
+ break;
235
+ }
236
+ }
237
+ }
238
+ if (contentMap[i][j] === ROWSPAN_SYMBOL) {
239
+ // skip the first row
240
+ if (i === 0) {
241
+ continue;
242
+ }
243
+ tokenMap[i][j].meta = { markForDeletion: true };
244
+ let rowSpanFactor = 2;
245
+ // traverse rows upward
246
+ for (let row = i - 1; row >= 0; row--) {
247
+ if (contentMap[row][j] === ROWSPAN_SYMBOL) {
248
+ rowSpanFactor++;
249
+ tokenMap[row][j].meta = { markForDeletion: true };
250
+ }
251
+ else if (contentMap[row][j] === COLSPAN_SYMBOL) {
252
+ break;
253
+ }
254
+ else {
255
+ tokenMap[row][j].attrSet('rowspan', rowSpanFactor.toString());
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ };
263
+ /**
264
+ * Removes td_open and matching td_close tokens and the content within them
265
+ *
266
+ * @param {number} tableStart - The index of the start of the table in the state tokens array.
267
+ * @param {Token[]} tokens - The array of tokens from state.
268
+ * @returns {void}
269
+ */
270
+ const clearTokens = (tableStart, tokens) => {
271
+ var _a;
272
+ // use splices array to avoid modifying the tokens array during iteration
273
+ const splices = [];
274
+ for (let i = tableStart; i < tokens.length; i++) {
275
+ if ((_a = tokens[i].meta) === null || _a === void 0 ? void 0 : _a.markForDeletion) {
276
+ // Use unshift instead of push so that the splices indexes are in reverse order.
277
+ // Reverse order guarantees that we don't mess up the indexes while removing the items.
278
+ splices.unshift([i]);
279
+ const level = tokens[i].level;
280
+ // find matching td_close with the same level
281
+ for (let j = i + 1; j < tokens.length; j++) {
282
+ if (tokens[j].type === 'yfm_td_close' && tokens[j].level === level) {
283
+ splices[0].push(j);
284
+ break;
285
+ }
286
+ }
287
+ }
288
+ }
289
+ splices.forEach(([start, end]) => {
290
+ // check that we have both start and end defined
291
+ // it's possible we didn't find td_close index
292
+ if (start && end) {
293
+ tokens.splice(start, end - start + 1);
294
+ }
295
+ });
296
+ };
160
297
  const yfmTable = (md) => {
161
298
  md.block.ruler.before('code', pluginName, (state, startLine, endLine, silent) => {
162
299
  let token;
@@ -172,7 +309,7 @@ const yfmTable = (md) => {
172
309
  if (silent) {
173
310
  return true;
174
311
  }
175
- const { rows, endOfTable } = getTableRows(state, startPosition, endPosition, startLine);
312
+ const { rows, endOfTable } = getTableRowPositions(state, startPosition, endPosition, startLine);
176
313
  if (!endOfTable) {
177
314
  token = state.push('__yfm_lint', '', 0);
178
315
  token.hidden = true;
@@ -183,19 +320,29 @@ const yfmTable = (md) => {
183
320
  const oldParentLineMax = state.lineMax;
184
321
  state.lineMax = endOfTable;
185
322
  state.line = startLine;
323
+ const tableStart = state.tokens.length;
186
324
  token = state.push('yfm_table_open', 'table', 1);
187
325
  token.map = [startLine, endOfTable];
188
326
  token = state.push('yfm_tbody_open', 'tbody', 1);
189
327
  token.map = [startLine + 1, endOfTable - 1];
190
328
  const maxRowLength = Math.max(...rows.map(([, , cols]) => cols.length));
329
+ // cellsMaps is a 2-D map of all td_open tokens in the table.
330
+ // cellsMap is used to access the table cells by [row][column] coordinates
331
+ const cellsMap = [];
332
+ // contentMap is a 2-D map of the text content within cells in the table.
333
+ // To apply spans, traverse the contentMap and modify the cells from cellsMap
334
+ const contentMap = [];
191
335
  for (let i = 0; i < rows.length; i++) {
192
336
  const [rowLineStarts, rowLineEnds, cols] = rows[i];
337
+ cellsMap.push([]);
338
+ contentMap.push([]);
193
339
  const rowLength = cols.length;
194
340
  token = state.push('yfm_tr_open', 'tr', 1);
195
341
  token.map = [rowLineStarts, rowLineEnds];
196
342
  for (let j = 0; j < cols.length; j++) {
197
343
  const [begin, end] = cols[j];
198
344
  token = state.push('yfm_td_open', 'td', 1);
345
+ cellsMap[i].push(token);
199
346
  token.map = [begin.line, end.line];
200
347
  const oldTshift = state.tShift[begin.line];
201
348
  const oldEMark = state.eMarks[end.line];
@@ -206,12 +353,19 @@ const yfmTable = (md) => {
206
353
  state.eMarks[end.line] = end.pos;
207
354
  state.lineMax = end.line + 1;
208
355
  state.md.block.tokenize(state, begin.line, end.line + 1);
356
+ const contentToken = state.tokens[state.tokens.length - 2];
357
+ // In case of ">" within a cell without whitespace it gets consumed as a blockquote.
358
+ // To handle that, check markup as well
359
+ const content = contentToken.content.trim() || contentToken.markup.trim();
360
+ contentMap[i].push(content);
361
+ token = state.push('yfm_td_close', 'td', -1);
362
+ state.tokens[state.tokens.length - 1].map = [end.line, end.line + 1];
209
363
  state.lineMax = oldLineMax;
210
364
  state.tShift[begin.line] = oldTshift;
211
365
  state.bMarks[begin.line] = oldBMark;
212
366
  state.eMarks[end.line] = oldEMark;
213
- token = state.push('yfm_td_close', 'td', -1);
214
- state.tokens[state.tokens.length - 1].map = [end.line, end.line + 1];
367
+ const rowTokens = cellsMap[cellsMap.length - 1];
368
+ extractAndApplyClassFromToken(contentToken, rowTokens[rowTokens.length - 1]);
215
369
  }
216
370
  if (rowLength < maxRowLength) {
217
371
  const emptyCellsCount = maxRowLength - rowLength;
@@ -222,6 +376,8 @@ const yfmTable = (md) => {
222
376
  }
223
377
  token = state.push('yfm_tr_close', 'tr', -1);
224
378
  }
379
+ applySpans(contentMap, cellsMap);
380
+ clearTokens(tableStart, state.tokens);
225
381
  token = state.push('yfm_tbody_close', 'tbody', -1);
226
382
  token = state.push('yfm_table_close', 'table', -1);
227
383
  state.tokens[state.tokens.length - 1].map = [endOfTable, endOfTable + 1];