@diplodoc/tabs-extension 3.10.5 → 3.10.7
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/build/plugin/index-node.js +86 -1
- package/build/plugin/index-node.js.map +4 -4
- package/build/plugin/index.js +86 -1
- package/build/plugin/index.js.map +4 -4
- package/build/plugin/utils/tabs.d.ts +2 -2
- package/build/runtime/TabsController.d.ts +3 -0
- package/build/runtime/index.js +1 -1
- package/build/runtime/index.js.map +4 -4
- package/build/tab-key.d.ts +22 -0
- package/package.json +5 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/@diplodoc/utils/build/cjs/common/index.js", "../../node_modules/github-slugger/regex.js", "../../node_modules/github-slugger/index.js", "../../src/plugin/index-node.ts", "../../src/plugin/transform.ts", "../../src/common.ts", "../../src/plugin/utils/strings.ts", "../../src/plugin/utils/tabs.ts", "../../src/plugin/utils/index.ts", "../../src/plugin/variants/regular.ts", "../../src/plugin/variants/radio.ts", "../../src/plugin/variants/dropdown.ts", "../../src/plugin/variants/accordion.ts", "../../src/plugin/variants/index.ts", "../../src/plugin/generate.ts", "../../src/plugin/find.ts"],
|
|
4
|
-
"sourcesContent": ["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/common/index.ts\nvar index_exports = {};\n__export(index_exports, {\n AttrsParser: () => AttrsParser,\n createIDGenerator: () => createIDGenerator,\n createIDGeneratorByStrategy: () => createIDGeneratorByStrategy,\n createLoadQueue: () => createLoadQueue,\n formatHref: () => formatHref,\n getQueueStore: () => getQueueStore,\n getScriptStore: () => getScriptStore,\n isBrowser: () => isBrowser,\n parseHref: () => parseHref,\n parseMdAttrs: () => parseMdAttrs\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/lib/common/attrs.ts\nvar AttrsParser = class {\n constructor(value) {\n this.DELIMITER = \"=\";\n this.SEPARATOR = \" \";\n this.QUOTATION = '\"';\n /* allowed in keys / values chars */\n this.ALLOWED_CHARS = /[a-zA-Z0-9_\\- {}.|/]/;\n /* allowed in all query chars */\n this.VALIDATION_CHARS = /[a-zA-Z0-9_\\- {}.#=\"|/]/;\n this.state = {};\n this.#key = \"\";\n this.#pending = \"\";\n this.#isInsideQuotation = false;\n this.#didQuotationClosed = false;\n this.#selectors = {\n id: /#/,\n class: /\\./,\n attr: /[a-zA-Z-_]/\n };\n this.#handlers = Object.entries(this.#selectors);\n if (value) {\n this.parse(value);\n }\n }\n #key;\n #pending;\n #isInsideQuotation;\n #didQuotationClosed;\n #currentKeyType;\n #selectors;\n #handlers;\n parse(target) {\n const content = this.extract(target.trim());\n if (!content) {\n return {};\n }\n this.clear();\n this.state = {};\n for (const char of content) {\n this.next(char);\n }\n this.next(this.SEPARATOR);\n this.clear();\n return this.state;\n }\n apply(target) {\n const { attr: singleKeyAttrs = [], ...fullAttrs } = this.state;\n for (const [property, values] of Object.entries(fullAttrs)) {\n target.attrJoin(property, values.join(\" \"));\n }\n for (const attr of singleKeyAttrs) {\n target.attrJoin(attr, \"true\");\n }\n }\n extract(target) {\n if (!target.startsWith(\"{\")) {\n return false;\n }\n let balance = 1;\n for (let i = 1; i < target.length; i++) {\n const char = target[i];\n if (char === \"}\") {\n balance--;\n }\n if (char === \"{\") {\n balance++;\n }\n if (balance === 0) {\n const contentInside = target.slice(1, i).trim();\n return contentInside;\n }\n if (balance < 0) {\n return false;\n }\n if (!this.VALIDATION_CHARS.test(char)) {\n return false;\n }\n }\n return false;\n }\n next(value) {\n if (!this.#currentKeyType) {\n this.#currentKeyType = this.type(value);\n if (this.#currentKeyType === \"attr\") {\n this.#pending = value;\n }\n return;\n }\n if (this.isSeparator(value)) {\n if (!this.#pending) {\n if (!this.#isInsideQuotation) {\n this.append(this.#key, \" \");\n this.clear();\n return;\n }\n }\n if (!this.#key && this.#pending) {\n this.append();\n this.clear();\n return;\n }\n if (this.#isInsideQuotation && !this.#didQuotationClosed) {\n this.#pending += value;\n return;\n }\n if (this.#isInsideQuotation && this.#didQuotationClosed) {\n this.append(this.#key, this.#pending);\n }\n if (!this.#isInsideQuotation && !this.#didQuotationClosed) {\n this.append(this.#key, this.#pending);\n }\n this.clear();\n return;\n }\n if (this.isAllowedChar(value)) {\n this.#pending += value;\n return;\n }\n if (this.isQuotation(value)) {\n if (this.#isInsideQuotation) {\n this.#didQuotationClosed = true;\n } else {\n this.#isInsideQuotation = true;\n }\n }\n if (this.isDelimiter(value)) {\n if (this.#key) {\n this.#pending += value;\n return;\n }\n this.#key = this.#pending;\n this.#pending = \"\";\n }\n }\n type(of) {\n return this.#handlers.find(([_, regex]) => regex.test(of))?.[0];\n }\n append(key = this.#currentKeyType, value = this.#pending) {\n if (!key) {\n return;\n }\n if (!this.state[key]) {\n this.state[key] = [];\n }\n this.state[key].push(value);\n }\n clear() {\n this.#key = \"\";\n this.#pending = \"\";\n this.#isInsideQuotation = false;\n this.#didQuotationClosed = false;\n this.#currentKeyType = void 0;\n }\n isDelimiter(target) {\n return target === this.DELIMITER;\n }\n isSeparator(target) {\n return target === this.SEPARATOR;\n }\n isQuotation(target) {\n return target === this.QUOTATION;\n }\n isAllowedChar(target) {\n return this.ALLOWED_CHARS.test(target);\n }\n};\n\n// src/lib/common/parse-md-attrs.ts\nfunction parseMdAttrs(md, src, pos, max) {\n if (pos >= max) {\n return null;\n }\n if (src.charCodeAt(pos) !== 123) {\n return null;\n }\n const attrs = {};\n ++pos;\n pos = skipBlanks(src, pos, max);\n for (; pos < max; pos = skipBlanks(src, pos, max)) {\n if (src.charCodeAt(pos) === 125) {\n ++pos;\n return { pos, attrs };\n }\n const c = src.charCodeAt(pos);\n if (c === 35) {\n ++pos;\n const rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n pos = rst.pos;\n const key = \"id\", value = rst.name;\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n } else if (c === 46) {\n ++pos;\n const rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n pos = rst.pos;\n const key = \"class\", value = rst.name;\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n } else {\n let rst = parseAttrName(src, pos, max);\n if (rst === null) {\n return null;\n }\n const key = rst.name;\n pos = rst.pos;\n pos = skipBlanks(src, pos, max);\n if (pos >= max) {\n return null;\n }\n let value;\n if (src.charCodeAt(pos) === 61) {\n ++pos;\n pos = skipBlanks(src, pos, max);\n if (pos >= max) {\n return null;\n }\n const c2 = src.charCodeAt(pos);\n if (c2 === 34 || c2 === 39) {\n const rst2 = md.helpers.parseLinkTitle(src, pos, max);\n if (!rst2.ok) {\n return null;\n }\n value = rst2.str;\n pos = rst2.pos;\n } else {\n rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n value = rst.name;\n pos = rst.pos;\n }\n } else {\n if (isBlank(src.charCodeAt(pos - 1))) {\n --pos;\n }\n value = \"\";\n }\n if (typeof value !== \"undefined\") {\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n }\n }\n if (pos >= max) {\n return null;\n }\n const charBetween = src.charCodeAt(pos);\n if (!isBlank(charBetween) && charBetween !== 125) {\n return null;\n }\n }\n return null;\n function isBlank(code) {\n return md.utils.isSpace(code) || code === 10;\n }\n function skipBlanks(src2, pos2, max2) {\n for (; pos2 < max2; pos2++) {\n const code = src2.charCodeAt(pos2);\n if (!isBlank(code)) {\n break;\n }\n }\n return pos2;\n }\n}\nvar ATTR_NAME_RE = /^[a-z][a-z0-9\\-_]*/;\nfunction parseAttrName(src, pos, max) {\n const oldPos = pos;\n const rst = src.slice(pos, max).match(ATTR_NAME_RE);\n if (rst === null) {\n return null;\n }\n pos += rst[0].length;\n return { pos, name: src.slice(oldPos, pos) };\n}\nvar UNSURROUNDED_STRING_RE = /^[a-z0-9\\-_]+/i;\nfunction parseUnsurroundedName(src, pos, max) {\n const oldPos = pos;\n const rst = src.slice(pos, max).match(UNSURROUNDED_STRING_RE);\n if (rst === null) {\n return null;\n }\n pos += rst[0].length;\n return { pos, name: src.slice(oldPos, pos) };\n}\n\n// src/lib/common/browser.ts\nvar isBrowser = () => {\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n};\n\n// src/lib/common/extension-load-queue.ts\nvar QUEUES_SYMBOL = /* @__PURE__ */ Symbol.for(\"extension-load-queues\");\nvar SINGLE_QUEUE_SYMBOL = /* @__PURE__ */ Symbol.for(\"single-queue\");\nvar getScriptStore = (storeKey) => {\n if (isBrowser()) {\n if (!window[storeKey]) {\n window[storeKey] = [];\n } else if (!Array.isArray(window[storeKey])) {\n throw new Error(`Expected window[${String(storeKey)}] to be an array`);\n }\n return window[storeKey];\n } else {\n throw new Error(\"Cannot initialize QueueStore in a non-browser environment.\");\n }\n};\nvar ensureQueuesSymbolInitialized = () => {\n if (isBrowser()) {\n if (typeof window[QUEUES_SYMBOL] !== \"object\" || window[QUEUES_SYMBOL] === null) {\n window[QUEUES_SYMBOL] = {};\n }\n } else {\n throw new Error(\"Cannot initialize QueueStore in a non-browser environment.\");\n }\n};\nvar getQueueStore = (queueKey) => {\n ensureQueuesSymbolInitialized();\n return window[QUEUES_SYMBOL]?.[queueKey] || false;\n};\nvar createHandleQueueCreated = (queueKey) => {\n ensureQueuesSymbolInitialized();\n return (created) => {\n window[QUEUES_SYMBOL][queueKey] = created;\n };\n};\nvar createLoadQueue = ({\n store,\n createController,\n queueKey = SINGLE_QUEUE_SYMBOL,\n isQueueCreated = getQueueStore(queueKey),\n onQueueCreated = createHandleQueueCreated(queueKey)\n}) => {\n if (!store || isQueueCreated) {\n return;\n }\n onQueueCreated(true);\n const controller = createController();\n const queue = store.splice(0, store.length);\n store.push = function(...args) {\n args.forEach((callback) => {\n queue.push(callback);\n unqueue();\n });\n return queue.length;\n };\n let processing = false;\n function unqueue() {\n if (!processing) {\n next();\n }\n }\n async function next() {\n processing = true;\n const callback = queue.shift();\n if (callback) {\n await callback(controller);\n return next();\n }\n processing = false;\n }\n unqueue();\n};\n\n// src/lib/common/id-generator.ts\nfunction createIDGenerator() {\n const counters = /* @__PURE__ */ new Map();\n return function generateID(prefix) {\n if (!prefix) {\n return Math.random().toString(36).substr(2, 8);\n }\n counters.set(prefix, (counters.get(prefix) || 0) + 1);\n return `${prefix}-${counters.get(prefix)}`;\n };\n}\nfunction createIDGeneratorByStrategy(strategy = \"random\") {\n switch (strategy) {\n case \"deterministic\":\n return createIDGenerator();\n case \"constant\":\n return () => \"1\";\n case \"random\":\n default:\n return (prefix) => {\n if (!prefix) {\n return Math.random().toString(36).substr(2, 8);\n }\n return `${prefix}-${Math.random().toString(36).substr(2, 8)}`;\n };\n }\n}\n\n// src/lib/common/url.ts\nfunction parseHref(href) {\n const [beforeHash, ...hashParts] = href.split(\"#\");\n const hash = hashParts.length ? \"#\" + hashParts.join(\"#\") : null;\n const queryIndex = beforeHash.indexOf(\"?\");\n const path = queryIndex === -1 ? beforeHash : beforeHash.slice(0, queryIndex);\n const search = queryIndex === -1 ? null : beforeHash.slice(queryIndex);\n return {\n pathname: path === \"\" ? null : path,\n search,\n hash\n };\n}\nfunction formatHref({ pathname, search, hash }) {\n return (pathname || \"\") + (search || \"\") + (hash || \"\");\n}\n", "// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nmodule.exports = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n", "const regex = require('./regex.js')\n\nmodule.exports = BananaSlug\n\nconst own = Object.hasOwnProperty\n\nfunction BananaSlug () {\n const self = this\n\n if (!(self instanceof BananaSlug)) return new BananaSlug()\n\n self.reset()\n}\n\n/**\n * Generate a unique slug.\n * @param {string} value String of text to slugify\n * @param {boolean} [false] Keep the current case, otherwise make all lowercase\n * @return {string} A unique slug string\n */\nBananaSlug.prototype.slug = function (value, maintainCase) {\n const self = this\n let slug = slugger(value, maintainCase === true)\n const originalSlug = slug\n\n while (own.call(self.occurrences, slug)) {\n self.occurrences[originalSlug]++\n slug = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[slug] = 0\n\n return slug\n}\n\n/**\n * Reset - Forget all previous slugs\n * @return void\n */\nBananaSlug.prototype.reset = function () {\n this.occurrences = Object.create(null)\n}\n\nfunction slugger (string, maintainCase) {\n if (typeof string !== 'string') return ''\n if (!maintainCase) string = string.toLowerCase()\n return string.replace(regex, '').replace(/ /g, '-')\n}\n\nBananaSlug.slug = slugger\n", "import {type PluginOptions, transform as baseTransform} from './transform';\n\nexport * from './index';\n\nconst onBundle: NonNullable<PluginOptions['onBundle']> = (args, cache) => {\n copyRuntimeFiles(args, cache);\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n return baseTransform({onBundle, ...options});\n}\n\nconst PATH_TO_RUNTIME = '../runtime';\n\nfunction copyRuntimeFiles(\n {\n runtimeJsPath,\n runtimeCssPath,\n output,\n }: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n) {\n const {join, resolve} = require('node:path');\n const runtimeFiles = {\n 'index.js': runtimeJsPath,\n 'index.css': runtimeCssPath,\n };\n for (const [originFile, outputFile] of Object.entries(runtimeFiles)) {\n const file = join(PATH_TO_RUNTIME, originFile);\n if (!cache.has(file)) {\n cache.add(file);\n copyFile(resolve(__dirname, file), join(output, outputFile));\n }\n }\n}\n\nfunction copyFile(from: string, to: string) {\n const {mkdirSync, copyFileSync} = require('node:fs');\n const {dirname} = require('node:path');\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n", "/**\n * MarkdownIt plugin: finds `{% list tabs %}` blocks, parses tab items, and replaces them\n * with HTML tokens for the chosen variant. Registers runtime script/style in env.meta.\n */\nimport type StateCore from 'markdown-it/lib/rules_core/state_core';\nimport type MarkdownIt from 'markdown-it';\nimport type {IDGenerator} from '@diplodoc/utils';\nimport type {EnabledVariants} from '../common';\n\nimport {createIDGeneratorByStrategy} from '@diplodoc/utils';\n\nimport {TabsVariants} from '../common';\n\nimport {addHiddenProperty} from './utils';\nimport {generateTabsTokens} from './generate';\nimport {findTabs, props, tryToFindTabs} from './find';\n\n/** Options for the tabs plugin (paths, container classes, enabled variants). */\nexport type PluginOptions = {\n runtimeJsPath: string;\n runtimeCssPath: string;\n containerClasses: string;\n bundle: boolean;\n features: {\n enabledVariants: EnabledVariants;\n };\n /** @internal */\n onBundle?: (\n args: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n ) => void;\n};\n\nconst defaultFeatures = {\n enabledVariants: {\n regular: true,\n radio: true,\n },\n} satisfies PluginOptions['features'];\n\nlet runsCounter = 0;\n\ntype TransformOptions = {\n output?: string;\n /** Optional external ID generator provided by the host (e.g. via MarkdownItPluginOpts). */\n generateID?: IDGenerator;\n};\n\n/**\n * Returns a MarkdownIt plugin that transforms `{% list tabs %}` blocks into tab markup.\n * @param options - Paths for runtime JS/CSS, container classes, and enabled variants\n * @returns Plugin function that receives (md, options) and registers the core ruler\n */\nexport function transform({\n runtimeJsPath = '_assets/tabs-extension.js',\n runtimeCssPath = '_assets/tabs-extension.css',\n containerClasses = '',\n bundle = true,\n features = defaultFeatures,\n onBundle,\n}: Partial<PluginOptions> = {}) {\n return function tabs(md: MarkdownIt, options?: TransformOptions) {\n const {output = '.', generateID: externalGenerateID} = options || {};\n\n // Use the external ID generator if provided (e.g. from MarkdownItPluginOpts.generateID),\n // otherwise create a random fallback for standalone usage.\n // The fallback is created once per md.use() call, so it's shared across all parse() calls\n // on the same md instance (including recursive calls from includes plugins).\n const generateID: IDGenerator =\n externalGenerateID ?? (createIDGeneratorByStrategy('random') as IDGenerator);\n\n const plugin = (state: StateCore) => {\n const {env, tokens} = state;\n const runId = String(++runsCounter);\n\n addHiddenProperty(env, 'bundled', new Set<string>());\n\n let i = 0;\n let tabsAreInserted = false;\n\n while (i < tokens.length) {\n const result = tryToFindTabs(tokens, i);\n\n if ('step' in result) {\n i += result.step;\n\n continue;\n }\n\n const {content, closeTokenIndex, extraTokensAfterClose} = result;\n\n const parsedProps = props(content, generateID);\n\n if (!features.enabledVariants[parsedProps.variant]) {\n parsedProps.variant = TabsVariants.Regular;\n }\n\n const tabs = findTabs(state.tokens, i + 3, closeTokenIndex);\n\n if (tabs.length > 0) {\n const tabsTokens = generateTabsTokens(tabs, state, {\n containerClasses,\n tabsGroup: parsedProps.group,\n variant: parsedProps.variant,\n runId,\n generateID,\n });\n\n // Remove tokens including any list closing tokens after endlist\n state.tokens.splice(\n i,\n closeTokenIndex - i + 3 + extraTokensAfterClose,\n ...tabsTokens,\n );\n\n i++;\n tabsAreInserted = true;\n } else {\n state.tokens.splice(i, closeTokenIndex - i + 3 + extraTokensAfterClose);\n }\n }\n\n if (tabsAreInserted) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.style = env.meta.style || [];\n env.meta.script.push(runtimeJsPath);\n env.meta.style.push(runtimeCssPath);\n\n if (bundle && onBundle) {\n onBundle({runtimeJsPath, runtimeCssPath, output}, env.bundled);\n }\n }\n };\n\n try {\n md.core.ruler.before('curly_attributes', 'tabs', plugin);\n } catch {\n md.core.ruler.push('tabs', plugin);\n }\n };\n}\n", "/**\n * Shared constants, types and globals for the tabs extension.\n * Used by both the MarkdownIt plugin (compile-time) and the runtime controller (DOM).\n */\nimport {type TabsController} from './runtime/TabsController';\n\n/** Regex to match the opening `{% list tabs ... %}` tag (optionally backtick-escaped). */\nexport const TAB_RE = /`?{% list tabs .*?%}`?/;\n\n/** CSS class names for tab structure. */\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const TAB_GROUP_CLASSNAME = 'yfm-tab-group';\n\n/** Data attributes used by the runtime to identify groups, keys, variants and active state. */\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_VARIANT = 'data-diplodoc-variant';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\nexport const ACTIVE_TAB_TEXT = '{selected}';\nexport const TAB_FORCED_OPEN = 'data-diplodoc-forced';\n\n/** Dropdown variant: container, menu and select element class names. */\nexport const TABS_DROPDOWN_CLASSNAME = 'yfm-tabs-dropdown';\nexport const TABS_DROPDOWN_MENU_CLASSNAME = 'yfm-tabs-dropdown-menu';\nexport const TABS_DROPDOWN_SELECT = 'yfm-tabs-dropdown-select';\n\n/** Accordion variant. */\nexport const TABS_ACCORDION_CLASSNAME = 'yfm-tabs-accordion';\nexport const TABS_ACCORDION_CLIENT_HEIGHT = 'data-yfm-tabs-accordion-client-heights';\n\n/** Radio (vertical) variant. */\nexport const TABS_RADIO_CLASSNAME = 'yfm-tabs-vertical';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\n/** Available tab block variants (regular horizontal, radio, dropdown, accordion). */\nexport enum TabsVariants {\n Regular = 'regular',\n Radio = 'radio',\n Dropdown = 'dropdown',\n Accordion = 'accordion',\n}\n\n/** Which variants are enabled in the plugin (others fall back to Regular). */\nexport type EnabledVariants = Partial<Record<TabsVariants, boolean>>;\n\n/** Identifies a tab: group id, tab key (from content), and variant. */\nexport interface Tab {\n group?: string;\n key: string;\n variant: TabsVariants;\n}\n\n/** Payload passed to onSelectTab handlers when a tab is switched. */\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\n/** Symbol under which the global TabsController instance is stored on `window`. */\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export function trim(target: string) {\n return target.trim();\n}\n\nexport function unquote(target: string) {\n return target.match(/^([\"']).*\\1$/) ? target.slice(1, -1) : target;\n}\n", "/**\n * Helpers for tab content: slug ids, keys, selected marker, and source map ranges.\n */\nimport type Token from 'markdown-it/lib/token';\nimport type {RuntimeTab} from '../types';\n\nimport GithubSlugger from 'github-slugger';\n\nimport {ACTIVE_TAB_TEXT} from '../../common';\n\nconst CUSTOM_ID_REGEXP = /\\[?{ ?#(\\S+) ?}]?/;\n\nconst sluggersStorage = new Map<string, GithubSlugger>();\n\nfunction parseName(name: string): {name: string; customAnchor: string | null} {\n const parts = name.match(CUSTOM_ID_REGEXP);\n let customAnchor: string | null = null;\n let pure = name;\n\n if (parts) {\n pure = name.replace(parts[0], '');\n customAnchor = parts[1];\n } else {\n pure = name;\n customAnchor = null;\n }\n\n if (pure.includes(ACTIVE_TAB_TEXT)) {\n pure = pure.replace(ACTIVE_TAB_TEXT, '');\n }\n\n return {\n name: pure.trim(),\n customAnchor,\n };\n}\n\n/**\n * Generate a stable slug id for a tab (used in data-diplodoc-id and anchors).\n * @param tab - Runtime tab\n * @param runId - Plugin run id for slugger\n * @returns Slug string\n */\nexport function getTabId(tab: RuntimeTab, {runId}: {runId: string}): string {\n let slugger = sluggersStorage.get(runId);\n if (!slugger) {\n slugger = new GithubSlugger();\n sluggersStorage.set(runId, slugger);\n }\n\n return slugger.slug(getRawId(tab));\n}\n\n/**\n * True if the tab title contains the {selected} marker.\n * @param tab - Runtime tab\n * @returns Whether tab is selected by default\n */\nexport function isTabSelected(tab: RuntimeTab): boolean {\n const {name} = tab;\n\n return name.includes(ACTIVE_TAB_TEXT);\n}\n\n/**\n * URL-encoded tab key used in state (localStorage, query).\n * @param tab - Runtime tab\n * @returns Encoded key\n */\nexport function getTabKey(tab: RuntimeTab): string {\n return encodeURIComponent(getRawId(tab)).toLocaleLowerCase();\n}\n\n/**\n * Tab title text without custom anchor and without {selected}.\n * @param tab - Runtime tab\n * @returns Display name\n */\nexport function getName(tab: RuntimeTab): string {\n return parseName(tab.name).name;\n}\n\nfunction getRawId(tab: RuntimeTab): string {\n const {customAnchor, name} = parseName(tab.name);\n\n return customAnchor || name;\n}\n\n/**\n * Source map range [startLine, endLine] for the tab content tokens, or null.\n * @param tokens - Content tokens\n * @returns [start, end] or null\n */\nexport function getContentMap(tokens: Token[]): [number, number] | null {\n let firstMap: [number, number] | null = null;\n let lastMap: [number, number] | null = null;\n\n tokens.forEach(({map}) => {\n if (map) {\n firstMap = firstMap ?? map;\n lastMap = map;\n }\n });\n\n return firstMap && lastMap ? [firstMap[0], lastMap[1]] : null;\n}\n", "/**\n * Attach a non-enumerable property to an object (e.g. env.bundled for plugin state).\n * @param box - Object to extend\n * @param field - Property key\n * @param value - Property value\n * @returns Same object with typed field\n */\nexport function addHiddenProperty<\n B extends Record<string | symbol, unknown>,\n F extends string | symbol,\n V,\n>(box: B, field: F, value: V): B & {[P in F]: V} {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & {[P in F]: V};\n}\n\nexport * from './strings';\nexport * from './tabs';\n", "import type {TabsTokensGenerator} from './types';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_DATA_VERTICAL_TAB,\n TAB_FORCED_OPEN,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\n\nexport const regular: TabsTokensGenerator = (\n tabs,\n state,\n {containerClasses, tabsGroup, runId, variant: orientation, generateID},\n) => {\n const tabsTokens = [];\n const tabListTokens = [];\n const tabPanelsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n const tabListOpen = new state.Token('tab-list_open', 'div', 1);\n const tabListClose = new state.Token('tab-list_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n\n tabListOpen.map = [start, end];\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n tabListOpen.block = true;\n tabListClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n const hasDefaultOpenTab = activeTabsCount !== 0;\n\n tabsOpen.attrSet('class', [TABS_CLASSNAME, containerClasses].filter(Boolean).join(' '));\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, 'regular');\n\n tabListOpen.attrSet('class', TABS_LIST_CLASSNAME);\n tabListOpen.attrSet('role', 'tablist');\n\n if (orientation === 'radio') {\n tabsTokens.push(tabsOpen);\n }\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const verticalTabInput = new state.Token('tab-input', 'input', 0);\n const verticalTabLabelOpen = new state.Token('tab-label_open', 'label', 1);\n const verticalTabLabelClose = new state.Token('tab-label_close', 'label', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n /* if user did not provide default open tab we fallback to first tab (in default tabs only) */\n const isTabActive = hasDefaultOpenTab ? didTabHasActiveAttr : i === 0;\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('regular');\n\n verticalTabInput.block = true;\n\n verticalTabInput.attrJoin('class', 'radio');\n verticalTabInput.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet('class', TAB_CLASSNAME);\n tabOpen.attrJoin('class', 'yfm-tab-group');\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (orientation === 'radio') {\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n tabOpen.attrJoin('class', VERTICAL_TAB_CLASSNAME);\n }\n\n if (isTabActive) {\n if (orientation === 'radio') {\n tabOpen.attrSet(TAB_FORCED_OPEN, 'true');\n verticalTabInput.attrSet('checked', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n } else {\n tabOpen.attrSet(TAB_ACTIVE_KEY, i === 0 ? 'true' : 'false');\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n tabOpen.attrSet('aria-selected', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n }\n\n if (orientation === 'radio') {\n tabsTokens.push(\n tabOpen,\n verticalTabInput,\n verticalTabLabelOpen,\n tabInline,\n verticalTabLabelClose,\n tabClose,\n );\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n } else {\n tabListTokens.push(tabOpen, tabInline, tabClose);\n tabPanelsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n }\n\n tabsTokens.push(tabsOpen);\n tabsTokens.push(tabListOpen);\n tabsTokens.push(...tabListTokens);\n tabsTokens.push(tabListClose);\n tabsTokens.push(...tabPanelsTokens);\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_RADIO_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_DATA_VERTICAL_TAB,\n TAB_FORCED_OPEN,\n TAB_GROUP_CLASSNAME,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const radio: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const tabsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_RADIO_CLASSNAME].filter(Boolean).join(' '),\n );\n\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, 'radio');\n tabsTokens.push(tabsOpen);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const verticalTabInput = new state.Token('tab-input', 'input', 0);\n const verticalTabLabelOpen = new state.Token('tab-label_open', 'label', 1);\n const verticalTabLabelClose = new state.Token('tab-label_close', 'label', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('radio');\n\n verticalTabInput.block = true;\n\n verticalTabInput.attrJoin('class', 'radio');\n verticalTabInput.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet(\n 'class',\n [TAB_CLASSNAME, TAB_GROUP_CLASSNAME, VERTICAL_TAB_CLASSNAME].join(' '),\n );\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n\n if (didTabHasActiveAttr) {\n tabOpen.attrSet(TAB_FORCED_OPEN, 'true');\n verticalTabInput.attrSet('checked', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n tabsTokens.push(\n tabOpen,\n verticalTabInput,\n verticalTabLabelOpen,\n tabInline,\n verticalTabLabelClose,\n tabClose,\n );\n\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_DROPDOWN_CLASSNAME,\n TABS_DROPDOWN_MENU_CLASSNAME,\n TABS_DROPDOWN_SELECT,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_PANEL_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const dropdown: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const dropdownTokens = [];\n const dropdownOpen = new state.Token('dropdown_open', 'div', 1);\n const dropdownClose = new state.Token('dropdown_close', 'div', -1);\n const dropdownSelectOpen = new state.Token('dropdown-select_open', 'div', 1);\n const dropdownSelectInline = new state.Token('inline', '', 0);\n const dropdownSelectText = new state.Token('text', '', 0);\n const dropdownSelectClose = new state.Token('dropdown-select_open', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n dropdownOpen.block = true;\n dropdownClose.block = true;\n dropdownSelectOpen.block = true;\n dropdownSelectClose.block = true;\n\n const [activeTab, ...restActiveTabs] = tabs.filter(isTabSelected);\n\n if (restActiveTabs.length) {\n throw new Error('Unable to dropdown tabs with more than 1 active element');\n }\n\n dropdownOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_DROPDOWN_CLASSNAME].filter(Boolean).join(' '),\n );\n\n dropdownOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n dropdownOpen.attrSet(TAB_DATA_VARIANT, 'dropdown');\n\n dropdownSelectOpen.attrSet('role', 'tablist');\n dropdownSelectOpen.attrSet('class', TABS_DROPDOWN_SELECT);\n\n if (activeTab) {\n dropdownSelectOpen.attrJoin('class', 'filled');\n }\n\n dropdownSelectText.content = activeTab ? activeTab.name : '-';\n dropdownSelectInline.children = [dropdownSelectText];\n\n dropdownTokens.push(\n dropdownOpen,\n dropdownSelectOpen,\n dropdownSelectInline,\n dropdownSelectClose,\n );\n\n const dropdownMenuOpen = new state.Token('dropdown-menu_open', 'ul', 1);\n const dropdownMenuClose = new state.Token('dropdown-menu_close', 'ul', -1);\n\n dropdownMenuOpen.attrSet('class', TABS_DROPDOWN_MENU_CLASSNAME);\n\n const tabIds = tabs.map((tab) => getTabId(tab, {runId}));\n\n const menuTokens = tabs.flatMap((tab, i) => {\n const menuListItemOpen = new state.Token('dropdown-menu-item_open', 'li', 1);\n const menuListItemClose = new state.Token('dropdown-menu-item_close', 'li', -1);\n const menuListItemText = new state.Token('text', '', 0);\n const menuListItemInline = new state.Token('inline', '', 0);\n\n const tabId = tabIds[i];\n const tabKey = getTabKey(tab);\n const isActive = tab === activeTab;\n\n menuListItemOpen.attrSet(\n 'class',\n [TAB_CLASSNAME, isActive && ACTIVE_CLASSNAME].filter(Boolean).join(' '),\n );\n menuListItemOpen.attrSet(TAB_DATA_ID, tabId);\n menuListItemOpen.attrSet(TAB_DATA_KEY, tabKey);\n menuListItemOpen.attrSet('aria-selected', String(isActive));\n\n menuListItemText.content = tab.name;\n menuListItemInline.children = [menuListItemText];\n\n return [menuListItemOpen, menuListItemInline, menuListItemClose];\n });\n\n dropdownTokens.push(dropdownMenuOpen, ...menuTokens, dropdownMenuClose);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const tab = tabs[i];\n const tabId = tabIds[i];\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('dropdown');\n\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (didTabHasActiveAttr) {\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n dropdownTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n dropdownTokens.push(dropdownClose);\n\n return dropdownTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_ACCORDION_CLASSNAME,\n TABS_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_FORCED_OPEN,\n TAB_GROUP_CLASSNAME,\n TAB_PANEL_CLASSNAME,\n TabsVariants,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const accordion: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const tabsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_ACCORDION_CLASSNAME].filter(Boolean).join(' '),\n );\n\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, TabsVariants.Accordion);\n tabsTokens.push(tabsOpen);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('accordion');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet('class', [TAB_CLASSNAME, TAB_GROUP_CLASSNAME].join(' '));\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (didTabHasActiveAttr) {\n tabPanelOpen.attrSet(TAB_FORCED_OPEN, 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n tabsTokens.push(tabOpen, tabInline, tabClose);\n\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "/**\n * Variant registry: maps TabsVariants to the function that generates HTML tokens for that variant.\n */\nimport type {TabsVariants} from '../../common';\nimport type {TabsTokensGenerator} from './types';\n\nimport {regular} from './regular';\nimport {radio} from './radio';\nimport {dropdown} from './dropdown';\nimport {accordion} from './accordion';\n\nconst generateByType: Record<TabsVariants, TabsTokensGenerator> = {\n regular,\n radio,\n dropdown,\n accordion,\n};\n\n/**\n * Returns the token generator for the given variant.\n * @param type - Variant name\n * @returns Generator function for that variant\n */\nexport const generateTokensByType = (type: TabsVariants): TabsTokensGenerator => {\n return generateByType[type];\n};\n", "import type Token from 'markdown-it/lib/token';\nimport type StateCore from 'markdown-it/lib/rules_core/state_core';\nimport type {RuntimeTab} from './types';\nimport type {TabsGenerationProps} from './variants/types';\n\nimport {generateTokensByType} from './variants';\n\n/**\n * Generate markdown-it tokens for a tabs block based on the chosen variant.\n * Delegates to the variant-specific generator (regular, radio, dropdown, accordion).\n * @param tabs - Parsed tab items\n * @param state - MarkdownIt state\n * @param props - Generation options (containerClasses, tabsGroup, runId, variant)\n * @returns Token array for the block\n */\nexport function generateTabsTokens(\n tabs: RuntimeTab[],\n state: StateCore,\n props: TabsGenerationProps,\n): Token[] {\n const tokens = generateTokensByType(props.variant)(tabs, state, props);\n\n return tokens;\n}\n", "/**\n * Parsing of `{% list tabs %}` blocks: locate open/close tags, parse props, and extract tab items\n * from the list tokens between them.\n */\nimport type {RuntimeTab, TabsProps} from './types';\nimport type {IDGenerator} from '@diplodoc/utils';\n\nimport Token from 'markdown-it/lib/token';\n\nimport {DEFAULT_TABS_GROUP_PREFIX, TAB_RE, TabsVariants} from '../common';\n\nimport {trim, unquote} from './utils';\n\n/**\n * Find the token index of the matching `{% endlist %}` for a list starting at idx.\n * @param tokens - Full token list\n * @param idx - Start index\n * @returns Index of close token or null\n */\nfunction findCloseTokenIndex(tokens: Token[], idx: number): number | null {\n let level = 0;\n let i = idx;\n while (i < tokens.length) {\n if (matchOpenToken(tokens, i)) {\n level++;\n } else if (matchCloseToken(tokens, i)) {\n if (level === 0) {\n return i;\n }\n level--;\n }\n\n i++;\n }\n\n return null;\n}\n\nfunction matchCloseToken(tokens: Token[], i: number): boolean {\n return (\n tokens[i].type === 'paragraph_open' &&\n tokens[i + 1].type === 'inline' &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n );\n}\n\nfunction matchOpenToken(tokens: Token[], i: number): RegExpMatchArray | null {\n if (tokens[i].type !== 'paragraph_open' || tokens[i + 1].type !== 'inline') {\n return null;\n }\n return tokens[i + 1].content.match(TAB_RE);\n}\n\n/**\n * Parse `{% list tabs group=... %}` content into variant and group id.\n * @param content - Raw tag content after \"list tabs\"\n * @param generateID - per-file isolated ID generator used for default group id\n * @returns Parsed props (variant, group)\n */\nexport function props(content: string, generateID: IDGenerator): TabsProps {\n const clean = trim(content.replace('list tabs', ''));\n\n const props = clean.split(' ');\n const result: TabsProps = {\n content: clean,\n variant: TabsVariants.Regular,\n // DEFAULT_TABS_GROUP_PREFIX ends with '-', so strip it before passing to generateID\n // which appends '-N' itself. Result: 'defaultTabsGroup-1', 'defaultTabsGroup-2', \u2026\n // TabsController checks group.startsWith(DEFAULT_TABS_GROUP_PREFIX) which still matches.\n group: generateID(DEFAULT_TABS_GROUP_PREFIX.replace(/-$/, '')),\n };\n\n for (const prop of props) {\n const [key, value] = prop.split('=').map(trim);\n\n switch (key) {\n case 'horizontal':\n case 'radio':\n case 'dropdown':\n case 'accordion':\n result.variant = key as TabsVariants;\n break;\n case 'group':\n result.group = unquote(value);\n break;\n default:\n // TODO: lint unknown tabs props\n }\n }\n\n return result;\n}\n\ntype Result =\n | {step: number}\n | {\n content: string;\n closeTokenIndex: number;\n extraTokensAfterClose: number;\n };\n\n/**\n * Check if tokens at index start a valid `{% list tabs %}` block.\n * @param tokens - Full token list\n * @param index - Start index\n * @returns Either a step to advance, or the block content and close index for replacement\n */\nexport function tryToFindTabs(tokens: Token[], index: number): Result {\n const match = matchOpenToken(tokens, index);\n const openTag = match && match[0];\n const isNotEscaped = openTag && !(openTag.startsWith('`') && openTag.endsWith('`'));\n\n if (!match || !isNotEscaped) {\n return {\n step: 1,\n };\n }\n\n const closeTokenIndex = findCloseTokenIndex(tokens, index + 3);\n\n if (!closeTokenIndex) {\n tokens[index].attrSet('YFM005', 'true');\n\n return {\n step: 3,\n };\n }\n\n let extraTokensAfterClose = 0;\n const afterEndlistIdx = closeTokenIndex + 3; // After paragraph_open, inline, paragraph_close\n\n const openTokenLevel = tokens[index].level;\n const closeTokenLevel = tokens[closeTokenIndex].level;\n\n // dont handle tabs if closeToken has \"negative\" indent, e.g. closeToken.level < openToken.level\n if (closeTokenLevel < openTokenLevel) {\n tokens[index].attrSet('YFM005', 'true');\n return {\n step: 3,\n };\n }\n\n if (closeTokenLevel > openTokenLevel) {\n const tokenAfter = tokens[afterEndlistIdx];\n\n // do not handle tabs unless {% endlist %} is at the end of the tab content\n if (tokenAfter && tokenAfter.nesting >= 0) {\n tokens[index].attrSet('YFM005', 'true');\n return {\n step: 3,\n };\n }\n\n // remove list close tokens if `{% endlist %}` is inside the content of a tab\n if (\n tokenAfter?.type === 'list_item_close' &&\n tokens[afterEndlistIdx + 1]?.type === 'bullet_list_close'\n ) {\n extraTokensAfterClose = 2;\n }\n }\n\n return {\n content: openTag,\n closeTokenIndex,\n extraTokensAfterClose,\n };\n}\n\n/**\n * Extract tab items (name + tokens) from list tokens between list open and close/endlist.\n * @param tokens - Full token list\n * @param idx - Index after list open\n * @param closeTokenIdx - Index of {% endlist %} paragraph\n * @returns Array of RuntimeTab\n */\nexport function findTabs(tokens: Token[], idx: number, closeTokenIdx: number): RuntimeTab[] {\n const tabs: RuntimeTab[] = [];\n let i = idx;\n let nestedLevel = -1;\n let pending: RuntimeTab = {\n name: '',\n tokens: [],\n listItem: new Token('list_item_open', '', 0),\n };\n\n while (i < tokens.length) {\n const token = tokens[i];\n\n switch (token.type) {\n case 'ordered_list_open':\n case 'bullet_list_open':\n if (nestedLevel > -1) {\n pending.tokens.push(token);\n }\n\n nestedLevel++;\n\n break;\n case 'list_item_open':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n pending = {name: '', tokens: [], listItem: token};\n }\n\n break;\n case 'list_item_close':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n tabs.push(pending);\n }\n\n break;\n case 'ordered_list_close':\n case 'bullet_list_close':\n // The tab list may be interrupted by a dedented block (e.g. a heading)\n // and continue as a new list before {% endlist %}. Keep collecting until\n // {% endlist %}, otherwise transform() would drop everything in between.\n if (nestedLevel) {\n pending.tokens.push(token);\n }\n\n nestedLevel--;\n\n break;\n case 'paragraph_open':\n if (\n i === closeTokenIdx &&\n tokens[i + 1].content &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n ) {\n if (pending && !nestedLevel) {\n tabs.push(pending);\n }\n\n return tabs;\n }\n\n if (!pending.name && tokens[i + 1].type === 'inline') {\n pending.name = tokens[i + 1].content;\n\n i += 2;\n } else {\n pending.tokens.push(token);\n }\n break;\n default:\n pending.tokens.push(token);\n }\n i++;\n }\n\n return tabs;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,2DAAAA,UAAAC,SAAA;AAAA;AACA,QAAIC,aAAY,OAAO;AACvB,QAAIC,oBAAmB,OAAO;AAC9B,QAAIC,qBAAoB,OAAO;AAC/B,QAAIC,gBAAe,OAAO,UAAU;AACpC,QAAIC,YAAW,CAAC,QAAQ,QAAQ;AAC9B,eAAS,QAAQ;AACf,QAAAJ,WAAU,QAAQ,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,YAAY,KAAK,CAAC;AAAA,IAChE;AACA,QAAIK,eAAc,CAAC,IAAI,MAAM,QAAQ,SAAS;AAC5C,UAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;AAClE,iBAAS,OAAOH,mBAAkB,IAAI;AACpC,cAAI,CAACC,cAAa,KAAK,IAAI,GAAG,KAAK,QAAQ;AACzC,YAAAH,WAAU,IAAI,KAAK,EAAE,KAAK,MAAM,KAAK,GAAG,GAAG,YAAY,EAAE,OAAOC,kBAAiB,MAAM,GAAG,MAAM,KAAK,WAAW,CAAC;AAAA,MACvH;AACA,aAAO;AAAA,IACT;AACA,QAAIK,gBAAe,CAAC,QAAQD,aAAYL,WAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AAGzF,QAAI,gBAAgB,CAAC;AACrB,IAAAI,UAAS,eAAe;AAAA,MACtB,aAAa,MAAM;AAAA,MACnB,mBAAmB,MAAM;AAAA,MACzB,6BAA6B,MAAMG;AAAA,MACnC,iBAAiB,MAAM;AAAA,MACvB,YAAY,MAAM;AAAA,MAClB,eAAe,MAAM;AAAA,MACrB,gBAAgB,MAAM;AAAA,MACtB,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,MACjB,cAAc,MAAM;AAAA,IACtB,CAAC;AACD,IAAAR,QAAO,UAAUO,cAAa,aAAa;AAjC3C;AAoCA,QAAI,eAAc,WAAM;AAAA,MACtB,YAAY,OAAO;AAuBnB;AACA;AACA;AACA;AACA;AACA;AACA;AA5BE,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,YAAY;AAEjB,aAAK,gBAAgB;AAErB,aAAK,mBAAmB;AACxB,aAAK,QAAQ,CAAC;AACd,2BAAK,MAAO;AACZ,2BAAK,UAAW;AAChB,2BAAK,oBAAqB;AAC1B,2BAAK,qBAAsB;AAC3B,2BAAK,YAAa;AAAA,UAChB,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AACA,2BAAK,WAAY,OAAO,QAAQ,mBAAK,WAAU;AAC/C,YAAI,OAAO;AACT,eAAK,MAAM,KAAK;AAAA,QAClB;AAAA,MACF;AAAA,MAQA,MAAM,QAAQ;AACZ,cAAM,UAAU,KAAK,QAAQ,OAAO,KAAK,CAAC;AAC1C,YAAI,CAAC,SAAS;AACZ,iBAAO,CAAC;AAAA,QACV;AACA,aAAK,MAAM;AACX,aAAK,QAAQ,CAAC;AACd,mBAAW,QAAQ,SAAS;AAC1B,eAAK,KAAK,IAAI;AAAA,QAChB;AACA,aAAK,KAAK,KAAK,SAAS;AACxB,aAAK,MAAM;AACX,eAAO,KAAK;AAAA,MACd;AAAA,MACA,MAAM,QAAQ;AACZ,cAAM,EAAE,MAAM,iBAAiB,CAAC,GAAG,GAAG,UAAU,IAAI,KAAK;AACzD,mBAAW,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,SAAS,GAAG;AAC1D,iBAAO,SAAS,UAAU,OAAO,KAAK,GAAG,CAAC;AAAA,QAC5C;AACA,mBAAW,QAAQ,gBAAgB;AACjC,iBAAO,SAAS,MAAM,MAAM;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,QAAQ,QAAQ;AACd,YAAI,CAAC,OAAO,WAAW,GAAG,GAAG;AAC3B,iBAAO;AAAA,QACT;AACA,YAAI,UAAU;AACd,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,gBAAM,OAAO,OAAO,CAAC;AACrB,cAAI,SAAS,KAAK;AAChB;AAAA,UACF;AACA,cAAI,SAAS,KAAK;AAChB;AAAA,UACF;AACA,cAAI,YAAY,GAAG;AACjB,kBAAM,gBAAgB,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK;AAC9C,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,GAAG;AACf,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,KAAK,iBAAiB,KAAK,IAAI,GAAG;AACrC,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,MACA,KAAK,OAAO;AACV,YAAI,CAAC,mBAAK,kBAAiB;AACzB,6BAAK,iBAAkB,KAAK,KAAK,KAAK;AACtC,cAAI,mBAAK,qBAAoB,QAAQ;AACnC,+BAAK,UAAW;AAAA,UAClB;AACA;AAAA,QACF;AACA,YAAI,KAAK,YAAY,KAAK,GAAG;AAC3B,cAAI,CAAC,mBAAK,WAAU;AAClB,gBAAI,CAAC,mBAAK,qBAAoB;AAC5B,mBAAK,OAAO,mBAAK,OAAM,GAAG;AAC1B,mBAAK,MAAM;AACX;AAAA,YACF;AAAA,UACF;AACA,cAAI,CAAC,mBAAK,SAAQ,mBAAK,WAAU;AAC/B,iBAAK,OAAO;AACZ,iBAAK,MAAM;AACX;AAAA,UACF;AACA,cAAI,mBAAK,uBAAsB,CAAC,mBAAK,sBAAqB;AACxD,+BAAK,UAAL,mBAAK,YAAY;AACjB;AAAA,UACF;AACA,cAAI,mBAAK,uBAAsB,mBAAK,sBAAqB;AACvD,iBAAK,OAAO,mBAAK,OAAM,mBAAK,SAAQ;AAAA,UACtC;AACA,cAAI,CAAC,mBAAK,uBAAsB,CAAC,mBAAK,sBAAqB;AACzD,iBAAK,OAAO,mBAAK,OAAM,mBAAK,SAAQ;AAAA,UACtC;AACA,eAAK,MAAM;AACX;AAAA,QACF;AACA,YAAI,KAAK,cAAc,KAAK,GAAG;AAC7B,6BAAK,UAAL,mBAAK,YAAY;AACjB;AAAA,QACF;AACA,YAAI,KAAK,YAAY,KAAK,GAAG;AAC3B,cAAI,mBAAK,qBAAoB;AAC3B,+BAAK,qBAAsB;AAAA,UAC7B,OAAO;AACL,+BAAK,oBAAqB;AAAA,UAC5B;AAAA,QACF;AACA,YAAI,KAAK,YAAY,KAAK,GAAG;AAC3B,cAAI,mBAAK,OAAM;AACb,+BAAK,UAAL,mBAAK,YAAY;AACjB;AAAA,UACF;AACA,6BAAK,MAAO,mBAAK;AACjB,6BAAK,UAAW;AAAA,QAClB;AAAA,MACF;AAAA,MACA,KAAK,IAAI;AA1KX,YAAAE;AA2KI,gBAAOA,MAAA,mBAAK,WAAU,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,MAAM,KAAK,EAAE,CAAC,MAAlD,gBAAAA,IAAsD;AAAA,MAC/D;AAAA,MACA,OAAO,MAAM,mBAAK,kBAAiB,QAAQ,mBAAK,WAAU;AACxD,YAAI,CAAC,KAAK;AACR;AAAA,QACF;AACA,YAAI,CAAC,KAAK,MAAM,GAAG,GAAG;AACpB,eAAK,MAAM,GAAG,IAAI,CAAC;AAAA,QACrB;AACA,aAAK,MAAM,GAAG,EAAE,KAAK,KAAK;AAAA,MAC5B;AAAA,MACA,QAAQ;AACN,2BAAK,MAAO;AACZ,2BAAK,UAAW;AAChB,2BAAK,oBAAqB;AAC1B,2BAAK,qBAAsB;AAC3B,2BAAK,iBAAkB;AAAA,MACzB;AAAA,MACA,YAAY,QAAQ;AAClB,eAAO,WAAW,KAAK;AAAA,MACzB;AAAA,MACA,YAAY,QAAQ;AAClB,eAAO,WAAW,KAAK;AAAA,MACzB;AAAA,MACA,YAAY,QAAQ;AAClB,eAAO,WAAW,KAAK;AAAA,MACzB;AAAA,MACA,cAAc,QAAQ;AACpB,eAAO,KAAK,cAAc,KAAK,MAAM;AAAA,MACvC;AAAA,IACF,GA7IE,sBACA,0BACA,oCACA,qCACA,iCACA,4BACA,2BA9BgB;AAwKlB,aAAS,aAAa,IAAI,KAAK,KAAK,KAAK;AACvC,UAAI,OAAO,KAAK;AACd,eAAO;AAAA,MACT;AACA,UAAI,IAAI,WAAW,GAAG,MAAM,KAAK;AAC/B,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,CAAC;AACf,QAAE;AACF,YAAM,WAAW,KAAK,KAAK,GAAG;AAC9B,aAAO,MAAM,KAAK,MAAM,WAAW,KAAK,KAAK,GAAG,GAAG;AACjD,YAAI,IAAI,WAAW,GAAG,MAAM,KAAK;AAC/B,YAAE;AACF,iBAAO,EAAE,KAAK,MAAM;AAAA,QACtB;AACA,cAAM,IAAI,IAAI,WAAW,GAAG;AAC5B,YAAI,MAAM,IAAI;AACZ,YAAE;AACF,gBAAM,MAAM,sBAAsB,KAAK,KAAK,GAAG;AAC/C,cAAI,QAAQ,MAAM;AAChB,mBAAO;AAAA,UACT;AACA,gBAAM,IAAI;AACV,gBAAM,MAAM,MAAM,QAAQ,IAAI;AAC9B,cAAI,OAAO,MAAM,GAAG,MAAM,aAAa;AACrC,kBAAM,GAAG,IAAI,CAAC,KAAK;AAAA,UACrB,OAAO;AACL,kBAAM,GAAG,EAAE,KAAK,KAAK;AAAA,UACvB;AAAA,QACF,WAAW,MAAM,IAAI;AACnB,YAAE;AACF,gBAAM,MAAM,sBAAsB,KAAK,KAAK,GAAG;AAC/C,cAAI,QAAQ,MAAM;AAChB,mBAAO;AAAA,UACT;AACA,gBAAM,IAAI;AACV,gBAAM,MAAM,SAAS,QAAQ,IAAI;AACjC,cAAI,OAAO,MAAM,GAAG,MAAM,aAAa;AACrC,kBAAM,GAAG,IAAI,CAAC,KAAK;AAAA,UACrB,OAAO;AACL,kBAAM,GAAG,EAAE,KAAK,KAAK;AAAA,UACvB;AAAA,QACF,OAAO;AACL,cAAI,MAAM,cAAc,KAAK,KAAK,GAAG;AACrC,cAAI,QAAQ,MAAM;AAChB,mBAAO;AAAA,UACT;AACA,gBAAM,MAAM,IAAI;AAChB,gBAAM,IAAI;AACV,gBAAM,WAAW,KAAK,KAAK,GAAG;AAC9B,cAAI,OAAO,KAAK;AACd,mBAAO;AAAA,UACT;AACA,cAAI;AACJ,cAAI,IAAI,WAAW,GAAG,MAAM,IAAI;AAC9B,cAAE;AACF,kBAAM,WAAW,KAAK,KAAK,GAAG;AAC9B,gBAAI,OAAO,KAAK;AACd,qBAAO;AAAA,YACT;AACA,kBAAM,KAAK,IAAI,WAAW,GAAG;AAC7B,gBAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,oBAAM,OAAO,GAAG,QAAQ,eAAe,KAAK,KAAK,GAAG;AACpD,kBAAI,CAAC,KAAK,IAAI;AACZ,uBAAO;AAAA,cACT;AACA,sBAAQ,KAAK;AACb,oBAAM,KAAK;AAAA,YACb,OAAO;AACL,oBAAM,sBAAsB,KAAK,KAAK,GAAG;AACzC,kBAAI,QAAQ,MAAM;AAChB,uBAAO;AAAA,cACT;AACA,sBAAQ,IAAI;AACZ,oBAAM,IAAI;AAAA,YACZ;AAAA,UACF,OAAO;AACL,gBAAI,QAAQ,IAAI,WAAW,MAAM,CAAC,CAAC,GAAG;AACpC,gBAAE;AAAA,YACJ;AACA,oBAAQ;AAAA,UACV;AACA,cAAI,OAAO,UAAU,aAAa;AAChC,gBAAI,OAAO,MAAM,GAAG,MAAM,aAAa;AACrC,oBAAM,GAAG,IAAI,CAAC,KAAK;AAAA,YACrB,OAAO;AACL,oBAAM,GAAG,EAAE,KAAK,KAAK;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AACA,YAAI,OAAO,KAAK;AACd,iBAAO;AAAA,QACT;AACA,cAAM,cAAc,IAAI,WAAW,GAAG;AACtC,YAAI,CAAC,QAAQ,WAAW,KAAK,gBAAgB,KAAK;AAChD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AACP,eAAS,QAAQ,MAAM;AACrB,eAAO,GAAG,MAAM,QAAQ,IAAI,KAAK,SAAS;AAAA,MAC5C;AACA,eAAS,WAAW,MAAM,MAAM,MAAM;AACpC,eAAO,OAAO,MAAM,QAAQ;AAC1B,gBAAM,OAAO,KAAK,WAAW,IAAI;AACjC,cAAI,CAAC,QAAQ,IAAI,GAAG;AAClB;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,eAAe;AACnB,aAAS,cAAc,KAAK,KAAK,KAAK;AACpC,YAAM,SAAS;AACf,YAAM,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,MAAM,YAAY;AAClD,UAAI,QAAQ,MAAM;AAChB,eAAO;AAAA,MACT;AACA,aAAO,IAAI,CAAC,EAAE;AACd,aAAO,EAAE,KAAK,MAAM,IAAI,MAAM,QAAQ,GAAG,EAAE;AAAA,IAC7C;AACA,QAAI,yBAAyB;AAC7B,aAAS,sBAAsB,KAAK,KAAK,KAAK;AAC5C,YAAM,SAAS;AACf,YAAM,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE,MAAM,sBAAsB;AAC5D,UAAI,QAAQ,MAAM;AAChB,eAAO;AAAA,MACT;AACA,aAAO,IAAI,CAAC,EAAE;AACd,aAAO,EAAE,KAAK,MAAM,IAAI,MAAM,QAAQ,GAAG,EAAE;AAAA,IAC7C;AAGA,QAAI,YAAY,MAAM;AACpB,aAAO,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAAA,IACrE;AAGA,QAAI,gBAAgC,uBAAO,IAAI,uBAAuB;AACtE,QAAI,sBAAsC,uBAAO,IAAI,cAAc;AACnE,QAAI,iBAAiB,CAAC,aAAa;AACjC,UAAI,UAAU,GAAG;AACf,YAAI,CAAC,OAAO,QAAQ,GAAG;AACrB,iBAAO,QAAQ,IAAI,CAAC;AAAA,QACtB,WAAW,CAAC,MAAM,QAAQ,OAAO,QAAQ,CAAC,GAAG;AAC3C,gBAAM,IAAI,MAAM,mBAAmB,OAAO,QAAQ,CAAC,kBAAkB;AAAA,QACvE;AACA,eAAO,OAAO,QAAQ;AAAA,MACxB,OAAO;AACL,cAAM,IAAI,MAAM,4DAA4D;AAAA,MAC9E;AAAA,IACF;AACA,QAAI,gCAAgC,MAAM;AACxC,UAAI,UAAU,GAAG;AACf,YAAI,OAAO,OAAO,aAAa,MAAM,YAAY,OAAO,aAAa,MAAM,MAAM;AAC/E,iBAAO,aAAa,IAAI,CAAC;AAAA,QAC3B;AAAA,MACF,OAAO;AACL,cAAM,IAAI,MAAM,4DAA4D;AAAA,MAC9E;AAAA,IACF;AACA,QAAI,gBAAgB,CAAC,aAAa;AA9WlC,UAAAA;AA+WE,oCAA8B;AAC9B,eAAOA,MAAA,OAAO,aAAa,MAApB,gBAAAA,IAAwB,cAAa;AAAA,IAC9C;AACA,QAAI,2BAA2B,CAAC,aAAa;AAC3C,oCAA8B;AAC9B,aAAO,CAAC,YAAY;AAClB,eAAO,aAAa,EAAE,QAAQ,IAAI;AAAA,MACpC;AAAA,IACF;AACA,QAAI,kBAAkB,CAAC;AAAA,MACrB;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,iBAAiB,cAAc,QAAQ;AAAA,MACvC,iBAAiB,yBAAyB,QAAQ;AAAA,IACpD,MAAM;AACJ,UAAI,CAAC,SAAS,gBAAgB;AAC5B;AAAA,MACF;AACA,qBAAe,IAAI;AACnB,YAAM,aAAa,iBAAiB;AACpC,YAAM,QAAQ,MAAM,OAAO,GAAG,MAAM,MAAM;AAC1C,YAAM,OAAO,YAAY,MAAM;AAC7B,aAAK,QAAQ,CAAC,aAAa;AACzB,gBAAM,KAAK,QAAQ;AACnB,kBAAQ;AAAA,QACV,CAAC;AACD,eAAO,MAAM;AAAA,MACf;AACA,UAAI,aAAa;AACjB,eAAS,UAAU;AACjB,YAAI,CAAC,YAAY;AACf,eAAK;AAAA,QACP;AAAA,MACF;AACA,qBAAe,OAAO;AACpB,qBAAa;AACb,cAAM,WAAW,MAAM,MAAM;AAC7B,YAAI,UAAU;AACZ,gBAAM,SAAS,UAAU;AACzB,iBAAO,KAAK;AAAA,QACd;AACA,qBAAa;AAAA,MACf;AACA,cAAQ;AAAA,IACV;AAGA,aAAS,oBAAoB;AAC3B,YAAM,WAA2B,oBAAI,IAAI;AACzC,aAAO,SAAS,WAAW,QAAQ;AACjC,YAAI,CAAC,QAAQ;AACX,iBAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAAA,QAC/C;AACA,iBAAS,IAAI,SAAS,SAAS,IAAI,MAAM,KAAK,KAAK,CAAC;AACpD,eAAO,GAAG,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;AAAA,MAC1C;AAAA,IACF;AACA,aAASD,6BAA4B,WAAW,UAAU;AACxD,cAAQ,UAAU;AAAA,QAChB,KAAK;AACH,iBAAO,kBAAkB;AAAA,QAC3B,KAAK;AACH,iBAAO,MAAM;AAAA,QACf,KAAK;AAAA,QACL;AACE,iBAAO,CAAC,WAAW;AACjB,gBAAI,CAAC,QAAQ;AACX,qBAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAAA,YAC/C;AACA,mBAAO,GAAG,MAAM,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,UAC7D;AAAA,MACJ;AAAA,IACF;AAGA,aAAS,UAAU,MAAM;AACvB,YAAM,CAAC,YAAY,GAAG,SAAS,IAAI,KAAK,MAAM,GAAG;AACjD,YAAM,OAAO,UAAU,SAAS,MAAM,UAAU,KAAK,GAAG,IAAI;AAC5D,YAAM,aAAa,WAAW,QAAQ,GAAG;AACzC,YAAM,OAAO,eAAe,KAAK,aAAa,WAAW,MAAM,GAAG,UAAU;AAC5E,YAAM,SAAS,eAAe,KAAK,OAAO,WAAW,MAAM,UAAU;AACrE,aAAO;AAAA,QACL,UAAU,SAAS,KAAK,OAAO;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,WAAW,EAAE,UAAU,QAAQ,KAAK,GAAG;AAC9C,cAAQ,YAAY,OAAO,UAAU,OAAO,QAAQ;AAAA,IACtD;AAAA;AAAA;;;ACzcA;AAAA,yCAAAE,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA,yCAAAC,UAAAC,SAAA;AAAA;AAAA,QAAM,QAAQ;AAEd,IAAAA,QAAO,UAAU;AAEjB,QAAM,MAAM,OAAO;AAEnB,aAAS,aAAc;AACrB,YAAM,OAAO;AAEb,UAAI,EAAE,gBAAgB,YAAa,QAAO,IAAI,WAAW;AAEzD,WAAK,MAAM;AAAA,IACb;AAQA,eAAW,UAAU,OAAO,SAAU,OAAO,cAAc;AACzD,YAAM,OAAO;AACb,UAAI,OAAO,QAAQ,OAAO,iBAAiB,IAAI;AAC/C,YAAM,eAAe;AAErB,aAAO,IAAI,KAAK,KAAK,aAAa,IAAI,GAAG;AACvC,aAAK,YAAY,YAAY;AAC7B,eAAO,eAAe,MAAM,KAAK,YAAY,YAAY;AAAA,MAC3D;AAEA,WAAK,YAAY,IAAI,IAAI;AAEzB,aAAO;AAAA,IACT;AAMA,eAAW,UAAU,QAAQ,WAAY;AACvC,WAAK,cAAc,uBAAO,OAAO,IAAI;AAAA,IACvC;AAEA,aAAS,QAAS,QAAQ,cAAc;AACtC,UAAI,OAAO,WAAW,SAAU,QAAO;AACvC,UAAI,CAAC,aAAc,UAAS,OAAO,YAAY;AAC/C,aAAO,OAAO,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,IACpD;AAEA,eAAW,OAAO;AAAA;AAAA;;;ACjDlB;AAAA;AAAA,mBAAAC;AAAA;AAAA;;;ACSA,IAAAC,gBAA0C;;;ACFnC,IAAM,SAAS;AAGf,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AACtB,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAG5B,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,cAAc;AACpB,IAAM,4BAA4B;AAClC,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AAGxB,IAAM,0BAA0B;AAChC,IAAM,+BAA+B;AACrC,IAAM,uBAAuB;AAG7B,IAAM,2BAA2B;AAIjC,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;;;ACvC9B,SAAS,KAAK,QAAgB;AACjC,SAAO,OAAO,KAAK;AACvB;AAEO,SAAS,QAAQ,QAAgB;AACpC,SAAO,OAAO,MAAM,cAAc,IAAI,OAAO,MAAM,GAAG,EAAE,IAAI;AAChE;;;ACAA,4BAA0B;AAI1B,IAAM,mBAAmB;AAEzB,IAAM,kBAAkB,oBAAI,IAA2B;AAEvD,SAAS,UAAU,MAA2D;AAC1E,QAAM,QAAQ,KAAK,MAAM,gBAAgB;AACzC,MAAI,eAA8B;AAClC,MAAI,OAAO;AAEX,MAAI,OAAO;AACP,WAAO,KAAK,QAAQ,MAAM,CAAC,GAAG,EAAE;AAChC,mBAAe,MAAM,CAAC;AAAA,EAC1B,OAAO;AACH,WAAO;AACP,mBAAe;AAAA,EACnB;AAEA,MAAI,KAAK,SAAS,eAAe,GAAG;AAChC,WAAO,KAAK,QAAQ,iBAAiB,EAAE;AAAA,EAC3C;AAEA,SAAO;AAAA,IACH,MAAM,KAAK,KAAK;AAAA,IAChB;AAAA,EACJ;AACJ;AAQO,SAAS,SAAS,KAAiB,EAAC,MAAK,GAA4B;AACxE,MAAI,UAAU,gBAAgB,IAAI,KAAK;AACvC,MAAI,CAAC,SAAS;AACV,cAAU,IAAI,sBAAAC,QAAc;AAC5B,oBAAgB,IAAI,OAAO,OAAO;AAAA,EACtC;AAEA,SAAO,QAAQ,KAAK,SAAS,GAAG,CAAC;AACrC;AAOO,SAAS,cAAc,KAA0B;AACpD,QAAM,EAAC,KAAI,IAAI;AAEf,SAAO,KAAK,SAAS,eAAe;AACxC;AAOO,SAAS,UAAU,KAAyB;AAC/C,SAAO,mBAAmB,SAAS,GAAG,CAAC,EAAE,kBAAkB;AAC/D;AAOO,SAAS,QAAQ,KAAyB;AAC7C,SAAO,UAAU,IAAI,IAAI,EAAE;AAC/B;AAEA,SAAS,SAAS,KAAyB;AACvC,QAAM,EAAC,cAAc,KAAI,IAAI,UAAU,IAAI,IAAI;AAE/C,SAAO,gBAAgB;AAC3B;AAOO,SAAS,cAAc,QAA0C;AACpE,MAAI,WAAoC;AACxC,MAAI,UAAmC;AAEvC,SAAO,QAAQ,CAAC,EAAC,IAAG,MAAM;AACtB,QAAI,KAAK;AACL,iBAAW,8BAAY;AACvB,gBAAU;AAAA,IACd;AAAA,EACJ,CAAC;AAED,SAAO,YAAY,UAAU,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI;AAC7D;;;AClGO,SAAS,kBAId,KAAQ,OAAU,OAA6B;AAC7C,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;;;ACDO,IAAM,UAA+B,CACxC,MACA,OACA,EAAC,kBAAkB,WAAW,OAAO,SAAS,aAAa,WAAU,MACpE;AAvBL;AAwBI,QAAM,aAAa,CAAC;AACpB,QAAM,gBAAgB,CAAC;AACvB,QAAM,kBAAkB,CAAC;AACzB,QAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,CAAC;AACtD,QAAM,YAAY,IAAI,MAAM,MAAM,cAAc,OAAO,EAAE;AACzD,QAAM,cAAc,IAAI,MAAM,MAAM,iBAAiB,OAAO,CAAC;AAC7D,QAAM,eAAe,IAAI,MAAM,MAAM,kBAAkB,OAAO,EAAE;AAEhE,MAAI,KAAK,QAAQ;AACb,UAAM,CAAC,KAAK,KAAI,UAAK,CAAC,EAAE,SAAS,QAAjB,YAAwB,CAAC,IAAI;AAE7C,QAAI,SAAS,MAAM;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,CAAC,GAAG,GAAG,KAAI,UAAK,KAAK,SAAS,CAAC,EAAE,SAAS,QAA/B,YAAsC,CAAC,MAAM,IAAI;AAElE,QAAI,OAAO,MAAM;AACb,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,gBAAY,MAAM,CAAC,OAAO,GAAG;AAAA,EACjC;AAEA,WAAS,QAAQ;AACjB,YAAU,QAAQ;AAClB,cAAY,QAAQ;AACpB,eAAa,QAAQ;AAErB,QAAM,kBAAkB,KAAK,OAAO,aAAa,EAAE;AAEnD,MAAI,kBAAkB,GAAG;AACrB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AAEA,QAAM,oBAAoB,oBAAoB;AAE9C,WAAS,QAAQ,SAAS,CAAC,gBAAgB,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CAAC;AACtF,WAAS,QAAQ,gBAAgB,SAAS;AAC1C,WAAS,QAAQ,kBAAkB,SAAS;AAE5C,cAAY,QAAQ,SAAS,mBAAmB;AAChD,cAAY,QAAQ,QAAQ,SAAS;AAErC,MAAI,gBAAgB,SAAS;AACzB,eAAW,KAAK,QAAQ;AAAA,EAC5B;AAEA,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,UAAU,IAAI,MAAM,MAAM,YAAY,OAAO,CAAC;AACpD,UAAM,YAAY,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;AACjD,UAAM,UAAU,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC;AAC7C,UAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,EAAE;AACvD,UAAM,eAAe,IAAI,MAAM,MAAM,kBAAkB,OAAO,CAAC;AAC/D,UAAM,gBAAgB,IAAI,MAAM,MAAM,mBAAmB,OAAO,EAAE;AAElE,UAAM,mBAAmB,IAAI,MAAM,MAAM,aAAa,SAAS,CAAC;AAChE,UAAM,uBAAuB,IAAI,MAAM,MAAM,kBAAkB,SAAS,CAAC;AACzE,UAAM,wBAAwB,IAAI,MAAM,MAAM,mBAAmB,SAAS,EAAE;AAE5E,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAElC,UAAM,MAAM,KAAK,CAAC;AAClB,UAAM,QAAQ,SAAS,KAAK,EAAC,MAAK,CAAC;AACnC,UAAM,SAAS,UAAU,GAAG;AAC5B,UAAM,sBAAsB,cAAc,GAAG;AAE7C,UAAM,cAAc,oBAAoB,sBAAsB,MAAM;AAEpE,QAAI,OAAO,QAAQ,GAAG;AAEtB,UAAM,aAAa,WAAW,SAAS;AAEvC,qBAAiB,QAAQ;AAEzB,qBAAiB,SAAS,SAAS,OAAO;AAC1C,qBAAiB,QAAQ,QAAQ,OAAO;AAExC,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAClC,iBAAa,MAAM,cAAc,KAAK,CAAC,EAAE,MAAM;AAC/C,YAAQ,UAAU,KAAK,CAAC,EAAE;AAC1B,cAAU,WAAW,CAAC,OAAO;AAC7B,YAAQ,QAAQ;AAChB,aAAS,QAAQ;AACjB,iBAAa,QAAQ;AACrB,kBAAc,QAAQ;AACtB,YAAQ,QAAQ,aAAa,KAAK;AAClC,YAAQ,QAAQ,cAAc,MAAM;AACpC,YAAQ,QAAQ,SAAS,aAAa;AACtC,YAAQ,SAAS,SAAS,eAAe;AACzC,YAAQ,QAAQ,QAAQ,KAAK;AAC7B,YAAQ,QAAQ,iBAAiB,UAAU;AAC3C,YAAQ,QAAQ,iBAAiB,OAAO;AACxC,YAAQ,QAAQ,YAAY,MAAM,IAAI,MAAM,IAAI;AAChD,YAAQ,QAAQ,gBAAgB,OAAO;AACvC,iBAAa,QAAQ,MAAM,UAAU;AACrC,iBAAa,QAAQ,SAAS,mBAAmB;AACjD,iBAAa,QAAQ,QAAQ,UAAU;AACvC,iBAAa,QAAQ,mBAAmB,KAAK;AAC7C,iBAAa,QAAQ,cAAc,IAAI,IAAI;AAE3C,QAAI,gBAAgB,SAAS;AACzB,cAAQ,QAAQ,uBAAuB,MAAM;AAC7C,cAAQ,SAAS,SAAS,sBAAsB;AAAA,IACpD;AAEA,QAAI,aAAa;AACb,UAAI,gBAAgB,SAAS;AACzB,gBAAQ,QAAQ,iBAAiB,MAAM;AACvC,yBAAiB,QAAQ,WAAW,MAAM;AAC1C,qBAAa,SAAS,SAAS,gBAAgB;AAAA,MACnD,OAAO;AACH,gBAAQ,QAAQ,gBAAgB,MAAM,IAAI,SAAS,OAAO;AAC1D,gBAAQ,SAAS,SAAS,gBAAgB;AAC1C,gBAAQ,QAAQ,iBAAiB,MAAM;AACvC,qBAAa,SAAS,SAAS,gBAAgB;AAAA,MACnD;AAAA,IACJ;AAEA,QAAI,gBAAgB,SAAS;AACzB,iBAAW;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,iBAAW,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,QAAQ,aAAa;AAAA,IAClE,OAAO;AACH,oBAAc,KAAK,SAAS,WAAW,QAAQ;AAC/C,sBAAgB,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,QAAQ,aAAa;AAAA,IACvE;AAAA,EACJ;AAEA,aAAW,KAAK,QAAQ;AACxB,aAAW,KAAK,WAAW;AAC3B,aAAW,KAAK,GAAG,aAAa;AAChC,aAAW,KAAK,YAAY;AAC5B,aAAW,KAAK,GAAG,eAAe;AAClC,aAAW,KAAK,SAAS;AAEzB,SAAO;AACX;;;AClJO,IAAM,QAA6B,CACtC,MACA,OACA,EAAC,kBAAkB,WAAW,OAAO,WAAU,MAC9C;AA3BL;AA4BI,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,CAAC;AACtD,QAAM,YAAY,IAAI,MAAM,MAAM,cAAc,OAAO,EAAE;AAEzD,MAAI,KAAK,QAAQ;AACb,UAAM,CAAC,KAAK,KAAI,UAAK,CAAC,EAAE,SAAS,QAAjB,YAAwB,CAAC,IAAI;AAE7C,QAAI,SAAS,MAAM;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,CAAC,GAAG,GAAG,KAAI,UAAK,KAAK,SAAS,CAAC,EAAE,SAAS,QAA/B,YAAsC,CAAC,MAAM,IAAI;AAElE,QAAI,OAAO,MAAM;AACb,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAAA,EACJ;AAEA,WAAS,QAAQ;AACjB,YAAU,QAAQ;AAElB,QAAM,kBAAkB,KAAK,OAAO,aAAa,EAAE;AAEnD,MAAI,kBAAkB,GAAG;AACrB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AAEA,WAAS;AAAA,IACL;AAAA,IACA,CAAC,gBAAgB,kBAAkB,oBAAoB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACrF;AAEA,WAAS,QAAQ,gBAAgB,SAAS;AAC1C,WAAS,QAAQ,kBAAkB,OAAO;AAC1C,aAAW,KAAK,QAAQ;AAExB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,UAAU,IAAI,MAAM,MAAM,YAAY,OAAO,CAAC;AACpD,UAAM,YAAY,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;AACjD,UAAM,UAAU,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC;AAC7C,UAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,EAAE;AACvD,UAAM,eAAe,IAAI,MAAM,MAAM,kBAAkB,OAAO,CAAC;AAC/D,UAAM,gBAAgB,IAAI,MAAM,MAAM,mBAAmB,OAAO,EAAE;AAElE,UAAM,mBAAmB,IAAI,MAAM,MAAM,aAAa,SAAS,CAAC;AAChE,UAAM,uBAAuB,IAAI,MAAM,MAAM,kBAAkB,SAAS,CAAC;AACzE,UAAM,wBAAwB,IAAI,MAAM,MAAM,mBAAmB,SAAS,EAAE;AAE5E,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAElC,UAAM,MAAM,KAAK,CAAC;AAClB,UAAM,QAAQ,SAAS,KAAK,EAAC,MAAK,CAAC;AACnC,UAAM,SAAS,UAAU,GAAG;AAC5B,UAAM,sBAAsB,cAAc,GAAG;AAE7C,QAAI,OAAO,QAAQ,GAAG;AAEtB,UAAM,aAAa,WAAW,OAAO;AAErC,qBAAiB,QAAQ;AAEzB,qBAAiB,SAAS,SAAS,OAAO;AAC1C,qBAAiB,QAAQ,QAAQ,OAAO;AAExC,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAClC,iBAAa,MAAM,cAAc,KAAK,CAAC,EAAE,MAAM;AAC/C,YAAQ,UAAU,KAAK,CAAC,EAAE;AAC1B,cAAU,WAAW,CAAC,OAAO;AAC7B,YAAQ,QAAQ;AAChB,aAAS,QAAQ;AACjB,iBAAa,QAAQ;AACrB,kBAAc,QAAQ;AACtB,YAAQ,QAAQ,aAAa,KAAK;AAClC,YAAQ,QAAQ,cAAc,MAAM;AACpC,YAAQ;AAAA,MACJ;AAAA,MACA,CAAC,eAAe,qBAAqB,sBAAsB,EAAE,KAAK,GAAG;AAAA,IACzE;AACA,YAAQ,QAAQ,QAAQ,KAAK;AAC7B,YAAQ,QAAQ,iBAAiB,UAAU;AAC3C,YAAQ,QAAQ,iBAAiB,OAAO;AACxC,YAAQ,QAAQ,YAAY,MAAM,IAAI,MAAM,IAAI;AAChD,YAAQ,QAAQ,gBAAgB,OAAO;AACvC,iBAAa,QAAQ,MAAM,UAAU;AACrC,iBAAa,QAAQ,SAAS,mBAAmB;AACjD,iBAAa,QAAQ,QAAQ,UAAU;AACvC,iBAAa,QAAQ,mBAAmB,KAAK;AAC7C,iBAAa,QAAQ,cAAc,IAAI,IAAI;AAC3C,YAAQ,QAAQ,uBAAuB,MAAM;AAE7C,QAAI,qBAAqB;AACrB,cAAQ,QAAQ,iBAAiB,MAAM;AACvC,uBAAiB,QAAQ,WAAW,MAAM;AAC1C,mBAAa,SAAS,SAAS,gBAAgB;AAAA,IACnD;AAEA,eAAW;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,eAAW,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,QAAQ,aAAa;AAAA,EAClE;AAEA,aAAW,KAAK,SAAS;AAEzB,SAAO;AACX;;;ACzHO,IAAM,WAAgC,CACzC,MACA,OACA,EAAC,kBAAkB,WAAW,OAAO,WAAU,MAC9C;AAxBL;AAyBI,QAAM,iBAAiB,CAAC;AACxB,QAAM,eAAe,IAAI,MAAM,MAAM,iBAAiB,OAAO,CAAC;AAC9D,QAAM,gBAAgB,IAAI,MAAM,MAAM,kBAAkB,OAAO,EAAE;AACjE,QAAM,qBAAqB,IAAI,MAAM,MAAM,wBAAwB,OAAO,CAAC;AAC3E,QAAM,uBAAuB,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;AAC5D,QAAM,qBAAqB,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC;AACxD,QAAM,sBAAsB,IAAI,MAAM,MAAM,wBAAwB,OAAO,EAAE;AAE7E,MAAI,KAAK,QAAQ;AACb,UAAM,CAAC,KAAK,KAAI,UAAK,CAAC,EAAE,SAAS,QAAjB,YAAwB,CAAC,IAAI;AAE7C,QAAI,SAAS,MAAM;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,CAAC,GAAG,GAAG,KAAI,UAAK,KAAK,SAAS,CAAC,EAAE,SAAS,QAA/B,YAAsC,CAAC,MAAM,IAAI;AAElE,QAAI,OAAO,MAAM;AACb,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAAA,EACJ;AAEA,eAAa,QAAQ;AACrB,gBAAc,QAAQ;AACtB,qBAAmB,QAAQ;AAC3B,sBAAoB,QAAQ;AAE5B,QAAM,CAAC,WAAW,GAAG,cAAc,IAAI,KAAK,OAAO,aAAa;AAEhE,MAAI,eAAe,QAAQ;AACvB,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC7E;AAEA,eAAa;AAAA,IACT;AAAA,IACA,CAAC,gBAAgB,kBAAkB,uBAAuB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACxF;AAEA,eAAa,QAAQ,gBAAgB,SAAS;AAC9C,eAAa,QAAQ,kBAAkB,UAAU;AAEjD,qBAAmB,QAAQ,QAAQ,SAAS;AAC5C,qBAAmB,QAAQ,SAAS,oBAAoB;AAExD,MAAI,WAAW;AACX,uBAAmB,SAAS,SAAS,QAAQ;AAAA,EACjD;AAEA,qBAAmB,UAAU,YAAY,UAAU,OAAO;AAC1D,uBAAqB,WAAW,CAAC,kBAAkB;AAEnD,iBAAe;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,mBAAmB,IAAI,MAAM,MAAM,sBAAsB,MAAM,CAAC;AACtE,QAAM,oBAAoB,IAAI,MAAM,MAAM,uBAAuB,MAAM,EAAE;AAEzE,mBAAiB,QAAQ,SAAS,4BAA4B;AAE9D,QAAM,SAAS,KAAK,IAAI,CAAC,QAAQ,SAAS,KAAK,EAAC,MAAK,CAAC,CAAC;AAEvD,QAAM,aAAa,KAAK,QAAQ,CAAC,KAAK,MAAM;AACxC,UAAM,mBAAmB,IAAI,MAAM,MAAM,2BAA2B,MAAM,CAAC;AAC3E,UAAM,oBAAoB,IAAI,MAAM,MAAM,4BAA4B,MAAM,EAAE;AAC9E,UAAM,mBAAmB,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC;AACtD,UAAM,qBAAqB,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;AAE1D,UAAM,QAAQ,OAAO,CAAC;AACtB,UAAM,SAAS,UAAU,GAAG;AAC5B,UAAM,WAAW,QAAQ;AAEzB,qBAAiB;AAAA,MACb;AAAA,MACA,CAAC,eAAe,YAAY,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC1E;AACA,qBAAiB,QAAQ,aAAa,KAAK;AAC3C,qBAAiB,QAAQ,cAAc,MAAM;AAC7C,qBAAiB,QAAQ,iBAAiB,OAAO,QAAQ,CAAC;AAE1D,qBAAiB,UAAU,IAAI;AAC/B,uBAAmB,WAAW,CAAC,gBAAgB;AAE/C,WAAO,CAAC,kBAAkB,oBAAoB,iBAAiB;AAAA,EACnE,CAAC;AAED,iBAAe,KAAK,kBAAkB,GAAG,YAAY,iBAAiB;AAEtE,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,eAAe,IAAI,MAAM,MAAM,kBAAkB,OAAO,CAAC;AAC/D,UAAM,gBAAgB,IAAI,MAAM,MAAM,mBAAmB,OAAO,EAAE;AAElE,UAAM,MAAM,KAAK,CAAC;AAClB,UAAM,QAAQ,OAAO,CAAC;AACtB,UAAM,sBAAsB,cAAc,GAAG;AAE7C,QAAI,OAAO,QAAQ,GAAG;AAEtB,UAAM,aAAa,WAAW,UAAU;AAExC,iBAAa,MAAM,cAAc,KAAK,CAAC,EAAE,MAAM;AAC/C,iBAAa,QAAQ;AACrB,kBAAc,QAAQ;AACtB,iBAAa,QAAQ,MAAM,UAAU;AACrC,iBAAa,QAAQ,SAAS,mBAAmB;AACjD,iBAAa,QAAQ,QAAQ,UAAU;AACvC,iBAAa,QAAQ,mBAAmB,KAAK;AAC7C,iBAAa,QAAQ,cAAc,IAAI,IAAI;AAE3C,QAAI,qBAAqB;AACrB,mBAAa,SAAS,SAAS,gBAAgB;AAAA,IACnD;AAEA,mBAAe,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,QAAQ,aAAa;AAAA,EACtE;AAEA,iBAAe,KAAK,aAAa;AAEjC,SAAO;AACX;;;AC7HO,IAAM,YAAiC,CAC1C,MACA,OACA,EAAC,kBAAkB,WAAW,OAAO,WAAU,MAC9C;AA1BL;AA2BI,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,CAAC;AACtD,QAAM,YAAY,IAAI,MAAM,MAAM,cAAc,OAAO,EAAE;AAEzD,MAAI,KAAK,QAAQ;AACb,UAAM,CAAC,KAAK,KAAI,UAAK,CAAC,EAAE,SAAS,QAAjB,YAAwB,CAAC,IAAI;AAE7C,QAAI,SAAS,MAAM;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,CAAC,GAAG,GAAG,KAAI,UAAK,KAAK,SAAS,CAAC,EAAE,SAAS,QAA/B,YAAsC,CAAC,MAAM,IAAI;AAElE,QAAI,OAAO,MAAM;AACb,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAAA,EACJ;AAEA,WAAS,QAAQ;AACjB,YAAU,QAAQ;AAElB,QAAM,kBAAkB,KAAK,OAAO,aAAa,EAAE;AAEnD,MAAI,kBAAkB,GAAG;AACrB,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AAEA,WAAS;AAAA,IACL;AAAA,IACA,CAAC,gBAAgB,kBAAkB,wBAAwB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACzF;AAEA,WAAS,QAAQ,gBAAgB,SAAS;AAC1C,WAAS,QAAQ,6CAAwC;AACzD,aAAW,KAAK,QAAQ;AAExB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAM,UAAU,IAAI,MAAM,MAAM,YAAY,OAAO,CAAC;AACpD,UAAM,YAAY,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;AACjD,UAAM,UAAU,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC;AAC7C,UAAM,WAAW,IAAI,MAAM,MAAM,aAAa,OAAO,EAAE;AACvD,UAAM,eAAe,IAAI,MAAM,MAAM,kBAAkB,OAAO,CAAC;AAC/D,UAAM,gBAAgB,IAAI,MAAM,MAAM,mBAAmB,OAAO,EAAE;AAElE,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAElC,UAAM,MAAM,KAAK,CAAC;AAClB,UAAM,QAAQ,SAAS,KAAK,EAAC,MAAK,CAAC;AACnC,UAAM,SAAS,UAAU,GAAG;AAC5B,UAAM,sBAAsB,cAAc,GAAG;AAE7C,QAAI,OAAO,QAAQ,GAAG;AAEtB,UAAM,aAAa,WAAW,WAAW;AAEzC,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAClC,iBAAa,MAAM,cAAc,KAAK,CAAC,EAAE,MAAM;AAC/C,YAAQ,UAAU,KAAK,CAAC,EAAE;AAC1B,cAAU,WAAW,CAAC,OAAO;AAC7B,YAAQ,QAAQ;AAChB,aAAS,QAAQ;AACjB,iBAAa,QAAQ;AACrB,kBAAc,QAAQ;AACtB,YAAQ,QAAQ,aAAa,KAAK;AAClC,YAAQ,QAAQ,cAAc,MAAM;AACpC,YAAQ,QAAQ,SAAS,CAAC,eAAe,mBAAmB,EAAE,KAAK,GAAG,CAAC;AACvE,YAAQ,QAAQ,QAAQ,KAAK;AAC7B,YAAQ,QAAQ,iBAAiB,UAAU;AAC3C,YAAQ,QAAQ,iBAAiB,OAAO;AACxC,YAAQ,QAAQ,YAAY,MAAM,IAAI,MAAM,IAAI;AAChD,YAAQ,QAAQ,gBAAgB,OAAO;AACvC,iBAAa,QAAQ,MAAM,UAAU;AACrC,iBAAa,QAAQ,SAAS,mBAAmB;AACjD,iBAAa,QAAQ,QAAQ,UAAU;AACvC,iBAAa,QAAQ,mBAAmB,KAAK;AAC7C,iBAAa,QAAQ,cAAc,IAAI,IAAI;AAE3C,QAAI,qBAAqB;AACrB,mBAAa,QAAQ,iBAAiB,MAAM;AAC5C,mBAAa,SAAS,SAAS,gBAAgB;AAE/C,cAAQ,SAAS,SAAS,gBAAgB;AAAA,IAC9C;AAEA,eAAW,KAAK,SAAS,WAAW,QAAQ;AAE5C,eAAW,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,QAAQ,aAAa;AAAA,EAClE;AAEA,aAAW,KAAK,SAAS;AAEzB,SAAO;AACX;;;AC9GA,IAAM,iBAA4D;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAOO,IAAM,uBAAuB,CAAC,SAA4C;AAC7E,SAAO,eAAe,IAAI;AAC9B;;;ACVO,SAAS,mBACZ,MACA,OACAC,QACO;AACP,QAAM,SAAS,qBAAqBA,OAAM,OAAO,EAAE,MAAM,OAAOA,MAAK;AAErE,SAAO;AACX;;;AChBA,mBAAkB;AAYlB,SAAS,oBAAoB,QAAiB,KAA4B;AACtE,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,SAAO,IAAI,OAAO,QAAQ;AACtB,QAAI,eAAe,QAAQ,CAAC,GAAG;AAC3B;AAAA,IACJ,WAAW,gBAAgB,QAAQ,CAAC,GAAG;AACnC,UAAI,UAAU,GAAG;AACb,eAAO;AAAA,MACX;AACA;AAAA,IACJ;AAEA;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,gBAAgB,QAAiB,GAAoB;AAC1D,SACI,OAAO,CAAC,EAAE,SAAS,oBACnB,OAAO,IAAI,CAAC,EAAE,SAAS,YACvB,OAAO,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM;AAEzC;AAEA,SAAS,eAAe,QAAiB,GAAoC;AACzE,MAAI,OAAO,CAAC,EAAE,SAAS,oBAAoB,OAAO,IAAI,CAAC,EAAE,SAAS,UAAU;AACxE,WAAO;AAAA,EACX;AACA,SAAO,OAAO,IAAI,CAAC,EAAE,QAAQ,MAAM,MAAM;AAC7C;AAQO,SAAS,MAAM,SAAiB,YAAoC;AACvE,QAAM,QAAQ,KAAK,QAAQ,QAAQ,aAAa,EAAE,CAAC;AAEnD,QAAMC,SAAQ,MAAM,MAAM,GAAG;AAC7B,QAAM,SAAoB;AAAA,IACtB,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAIA,OAAO,WAAW,0BAA0B,QAAQ,MAAM,EAAE,CAAC;AAAA,EACjE;AAEA,aAAW,QAAQA,QAAO;AACtB,UAAM,CAAC,KAAK,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI;AAE7C,YAAQ,KAAK;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO,UAAU;AACjB;AAAA,MACJ,KAAK;AACD,eAAO,QAAQ,QAAQ,KAAK;AAC5B;AAAA,MACJ;AAAA,IAEJ;AAAA,EACJ;AAEA,SAAO;AACX;AAgBO,SAAS,cAAc,QAAiB,OAAuB;AA3GtE;AA4GI,QAAM,QAAQ,eAAe,QAAQ,KAAK;AAC1C,QAAM,UAAU,SAAS,MAAM,CAAC;AAChC,QAAM,eAAe,WAAW,EAAE,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG;AAEjF,MAAI,CAAC,SAAS,CAAC,cAAc;AACzB,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAEA,QAAM,kBAAkB,oBAAoB,QAAQ,QAAQ,CAAC;AAE7D,MAAI,CAAC,iBAAiB;AAClB,WAAO,KAAK,EAAE,QAAQ,UAAU,MAAM;AAEtC,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAEA,MAAI,wBAAwB;AAC5B,QAAM,kBAAkB,kBAAkB;AAE1C,QAAM,iBAAiB,OAAO,KAAK,EAAE;AACrC,QAAM,kBAAkB,OAAO,eAAe,EAAE;AAGhD,MAAI,kBAAkB,gBAAgB;AAClC,WAAO,KAAK,EAAE,QAAQ,UAAU,MAAM;AACtC,WAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,EACJ;AAEA,MAAI,kBAAkB,gBAAgB;AAClC,UAAM,aAAa,OAAO,eAAe;AAGzC,QAAI,cAAc,WAAW,WAAW,GAAG;AACvC,aAAO,KAAK,EAAE,QAAQ,UAAU,MAAM;AACtC,aAAO;AAAA,QACH,MAAM;AAAA,MACV;AAAA,IACJ;AAGA,SACI,yCAAY,UAAS,uBACrB,YAAO,kBAAkB,CAAC,MAA1B,mBAA6B,UAAS,qBACxC;AACE,8BAAwB;AAAA,IAC5B;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACJ;AACJ;AASO,SAAS,SAAS,QAAiB,KAAa,eAAqC;AACxF,QAAM,OAAqB,CAAC;AAC5B,MAAI,IAAI;AACR,MAAI,cAAc;AAClB,MAAI,UAAsB;AAAA,IACtB,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,UAAU,IAAI,aAAAC,QAAM,kBAAkB,IAAI,CAAC;AAAA,EAC/C;AAEA,SAAO,IAAI,OAAO,QAAQ;AACtB,UAAM,QAAQ,OAAO,CAAC;AAEtB,YAAQ,MAAM,MAAM;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AACD,YAAI,cAAc,IAAI;AAClB,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B;AAEA;AAEA;AAAA,MACJ,KAAK;AACD,YAAI,aAAa;AACb,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B,OAAO;AACH,oBAAU,EAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,UAAU,MAAK;AAAA,QACpD;AAEA;AAAA,MACJ,KAAK;AACD,YAAI,aAAa;AACb,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B,OAAO;AACH,eAAK,KAAK,OAAO;AAAA,QACrB;AAEA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAID,YAAI,aAAa;AACb,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B;AAEA;AAEA;AAAA,MACJ,KAAK;AACD,YACI,MAAM,iBACN,OAAO,IAAI,CAAC,EAAE,WACd,OAAO,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,iBACnC;AACE,cAAI,WAAW,CAAC,aAAa;AACzB,iBAAK,KAAK,OAAO;AAAA,UACrB;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,CAAC,QAAQ,QAAQ,OAAO,IAAI,CAAC,EAAE,SAAS,UAAU;AAClD,kBAAQ,OAAO,OAAO,IAAI,CAAC,EAAE;AAE7B,eAAK;AAAA,QACT,OAAO;AACH,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B;AACA;AAAA,MACJ;AACI,gBAAQ,OAAO,KAAK,KAAK;AAAA,IACjC;AACA;AAAA,EACJ;AAEA,SAAO;AACX;;;AX9NA,IAAM,kBAAkB;AAAA,EACpB,iBAAiB;AAAA,IACb,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AACJ;AAEA,IAAI,cAAc;AAaX,SAAS,UAAU;AAAA,EACtB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAAC;AACJ,IAA4B,CAAC,GAAG;AAC5B,SAAO,SAAS,KAAK,IAAgB,SAA4B;AAC7D,UAAM,EAAC,SAAS,KAAK,YAAY,mBAAkB,IAAI,WAAW,CAAC;AAMnE,UAAM,aACF,sDAAuB,2CAA4B,QAAQ;AAE/D,UAAM,SAAS,CAAC,UAAqB;AACjC,YAAM,EAAC,KAAK,OAAM,IAAI;AACtB,YAAM,QAAQ,OAAO,EAAE,WAAW;AAElC,wBAAkB,KAAK,WAAW,oBAAI,IAAY,CAAC;AAEnD,UAAI,IAAI;AACR,UAAI,kBAAkB;AAEtB,aAAO,IAAI,OAAO,QAAQ;AACtB,cAAM,SAAS,cAAc,QAAQ,CAAC;AAEtC,YAAI,UAAU,QAAQ;AAClB,eAAK,OAAO;AAEZ;AAAA,QACJ;AAEA,cAAM,EAAC,SAAS,iBAAiB,sBAAqB,IAAI;AAE1D,cAAM,cAAc,MAAM,SAAS,UAAU;AAE7C,YAAI,CAAC,SAAS,gBAAgB,YAAY,OAAO,GAAG;AAChD,sBAAY;AAAA,QAChB;AAEA,cAAMC,QAAO,SAAS,MAAM,QAAQ,IAAI,GAAG,eAAe;AAE1D,YAAIA,MAAK,SAAS,GAAG;AACjB,gBAAM,aAAa,mBAAmBA,OAAM,OAAO;AAAA,YAC/C;AAAA,YACA,WAAW,YAAY;AAAA,YACvB,SAAS,YAAY;AAAA,YACrB;AAAA,YACA;AAAA,UACJ,CAAC;AAGD,gBAAM,OAAO;AAAA,YACT;AAAA,YACA,kBAAkB,IAAI,IAAI;AAAA,YAC1B,GAAG;AAAA,UACP;AAEA;AACA,4BAAkB;AAAA,QACtB,OAAO;AACH,gBAAM,OAAO,OAAO,GAAG,kBAAkB,IAAI,IAAI,qBAAqB;AAAA,QAC1E;AAAA,MACJ;AAEA,UAAI,iBAAiB;AACjB,YAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,YAAI,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC;AACtC,YAAI,KAAK,QAAQ,IAAI,KAAK,SAAS,CAAC;AACpC,YAAI,KAAK,OAAO,KAAK,aAAa;AAClC,YAAI,KAAK,MAAM,KAAK,cAAc;AAElC,YAAI,UAAUD,WAAU;AACpB,UAAAA,UAAS,EAAC,eAAe,gBAAgB,OAAM,GAAG,IAAI,OAAO;AAAA,QACjE;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI;AACA,SAAG,KAAK,MAAM,OAAO,oBAAoB,QAAQ,MAAM;AAAA,IAC3D,QAAQ;AACJ,SAAG,KAAK,MAAM,KAAK,QAAQ,MAAM;AAAA,IACrC;AAAA,EACJ;AACJ;;;ADzIA,IAAM,WAAmD,CAAC,MAAM,UAAU;AACtE,mBAAiB,MAAM,KAAK;AAChC;AAEO,SAASE,WAAU,UAAkC,CAAC,GAAG;AAC5D,SAAO,UAAc,EAAC,UAAU,GAAG,QAAO,CAAC;AAC/C;AAEA,IAAM,kBAAkB;AAExB,SAAS,iBACL;AAAA,EACI;AAAA,EACA;AAAA,EACA;AACJ,GACA,OACF;AACE,QAAM,EAAC,MAAM,QAAO,IAAI,QAAQ,WAAW;AAC3C,QAAM,eAAe;AAAA,IACjB,YAAY;AAAA,IACZ,aAAa;AAAA,EACjB;AACA,aAAW,CAAC,YAAY,UAAU,KAAK,OAAO,QAAQ,YAAY,GAAG;AACjE,UAAM,OAAO,KAAK,iBAAiB,UAAU;AAC7C,QAAI,CAAC,MAAM,IAAI,IAAI,GAAG;AAClB,YAAM,IAAI,IAAI;AACd,eAAS,QAAQ,WAAW,IAAI,GAAG,KAAK,QAAQ,UAAU,CAAC;AAAA,IAC/D;AAAA,EACJ;AACJ;AAEA,SAAS,SAAS,MAAc,IAAY;AACxC,QAAM,EAAC,WAAW,aAAY,IAAI,QAAQ,SAAS;AACnD,QAAM,EAAC,QAAO,IAAI,QAAQ,WAAW;AACrC,YAAU,QAAQ,EAAE,GAAG,EAAC,WAAW,KAAI,CAAC;AACxC,eAAa,MAAM,EAAE;AACzB;",
|
|
6
|
-
"names": ["exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__export", "__copyProps", "__toCommonJS", "createIDGeneratorByStrategy", "_a", "exports", "module", "exports", "module", "transform", "import_utils", "GithubSlugger", "props", "props", "Token", "onBundle", "tabs", "transform"]
|
|
3
|
+
"sources": ["../../node_modules/@diplodoc/utils/build/cjs/common/index.js", "../../node_modules/github-slugger/regex.js", "../../node_modules/github-slugger/index.js", "../../node_modules/slugify/slugify.js", "../../src/plugin/index-node.ts", "../../src/plugin/transform.ts", "../../src/common.ts", "../../src/plugin/utils/strings.ts", "../../src/plugin/utils/tabs.ts", "../../src/tab-key.ts", "../../src/plugin/utils/index.ts", "../../src/plugin/variants/regular.ts", "../../src/plugin/variants/radio.ts", "../../src/plugin/variants/dropdown.ts", "../../src/plugin/variants/accordion.ts", "../../src/plugin/variants/index.ts", "../../src/plugin/generate.ts", "../../src/plugin/find.ts"],
|
|
4
|
+
"sourcesContent": ["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/common/index.ts\nvar index_exports = {};\n__export(index_exports, {\n AttrsParser: () => AttrsParser,\n createIDGenerator: () => createIDGenerator,\n createIDGeneratorByStrategy: () => createIDGeneratorByStrategy,\n createLoadQueue: () => createLoadQueue,\n formatHref: () => formatHref,\n getQueueStore: () => getQueueStore,\n getScriptStore: () => getScriptStore,\n isBrowser: () => isBrowser,\n parseHref: () => parseHref,\n parseMdAttrs: () => parseMdAttrs\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/lib/common/attrs.ts\nvar AttrsParser = class {\n constructor(value) {\n this.DELIMITER = \"=\";\n this.SEPARATOR = \" \";\n this.QUOTATION = '\"';\n /* allowed in keys / values chars */\n this.ALLOWED_CHARS = /[a-zA-Z0-9_\\- {}.|/]/;\n /* allowed in all query chars */\n this.VALIDATION_CHARS = /[a-zA-Z0-9_\\- {}.#=\"|/]/;\n this.state = {};\n this.#key = \"\";\n this.#pending = \"\";\n this.#isInsideQuotation = false;\n this.#didQuotationClosed = false;\n this.#selectors = {\n id: /#/,\n class: /\\./,\n attr: /[a-zA-Z-_]/\n };\n this.#handlers = Object.entries(this.#selectors);\n if (value) {\n this.parse(value);\n }\n }\n #key;\n #pending;\n #isInsideQuotation;\n #didQuotationClosed;\n #currentKeyType;\n #selectors;\n #handlers;\n parse(target) {\n const content = this.extract(target.trim());\n if (!content) {\n return {};\n }\n this.clear();\n this.state = {};\n for (const char of content) {\n this.next(char);\n }\n this.next(this.SEPARATOR);\n this.clear();\n return this.state;\n }\n apply(target) {\n const { attr: singleKeyAttrs = [], ...fullAttrs } = this.state;\n for (const [property, values] of Object.entries(fullAttrs)) {\n target.attrJoin(property, values.join(\" \"));\n }\n for (const attr of singleKeyAttrs) {\n target.attrJoin(attr, \"true\");\n }\n }\n extract(target) {\n if (!target.startsWith(\"{\")) {\n return false;\n }\n let balance = 1;\n for (let i = 1; i < target.length; i++) {\n const char = target[i];\n if (char === \"}\") {\n balance--;\n }\n if (char === \"{\") {\n balance++;\n }\n if (balance === 0) {\n const contentInside = target.slice(1, i).trim();\n return contentInside;\n }\n if (balance < 0) {\n return false;\n }\n if (!this.VALIDATION_CHARS.test(char)) {\n return false;\n }\n }\n return false;\n }\n next(value) {\n if (!this.#currentKeyType) {\n this.#currentKeyType = this.type(value);\n if (this.#currentKeyType === \"attr\") {\n this.#pending = value;\n }\n return;\n }\n if (this.isSeparator(value)) {\n if (!this.#pending) {\n if (!this.#isInsideQuotation) {\n this.append(this.#key, \" \");\n this.clear();\n return;\n }\n }\n if (!this.#key && this.#pending) {\n this.append();\n this.clear();\n return;\n }\n if (this.#isInsideQuotation && !this.#didQuotationClosed) {\n this.#pending += value;\n return;\n }\n if (this.#isInsideQuotation && this.#didQuotationClosed) {\n this.append(this.#key, this.#pending);\n }\n if (!this.#isInsideQuotation && !this.#didQuotationClosed) {\n this.append(this.#key, this.#pending);\n }\n this.clear();\n return;\n }\n if (this.isAllowedChar(value)) {\n this.#pending += value;\n return;\n }\n if (this.isQuotation(value)) {\n if (this.#isInsideQuotation) {\n this.#didQuotationClosed = true;\n } else {\n this.#isInsideQuotation = true;\n }\n }\n if (this.isDelimiter(value)) {\n if (this.#key) {\n this.#pending += value;\n return;\n }\n this.#key = this.#pending;\n this.#pending = \"\";\n }\n }\n type(of) {\n return this.#handlers.find(([_, regex]) => regex.test(of))?.[0];\n }\n append(key = this.#currentKeyType, value = this.#pending) {\n if (!key) {\n return;\n }\n if (!this.state[key]) {\n this.state[key] = [];\n }\n this.state[key].push(value);\n }\n clear() {\n this.#key = \"\";\n this.#pending = \"\";\n this.#isInsideQuotation = false;\n this.#didQuotationClosed = false;\n this.#currentKeyType = void 0;\n }\n isDelimiter(target) {\n return target === this.DELIMITER;\n }\n isSeparator(target) {\n return target === this.SEPARATOR;\n }\n isQuotation(target) {\n return target === this.QUOTATION;\n }\n isAllowedChar(target) {\n return this.ALLOWED_CHARS.test(target);\n }\n};\n\n// src/lib/common/parse-md-attrs.ts\nfunction parseMdAttrs(md, src, pos, max) {\n if (pos >= max) {\n return null;\n }\n if (src.charCodeAt(pos) !== 123) {\n return null;\n }\n const attrs = {};\n ++pos;\n pos = skipBlanks(src, pos, max);\n for (; pos < max; pos = skipBlanks(src, pos, max)) {\n if (src.charCodeAt(pos) === 125) {\n ++pos;\n return { pos, attrs };\n }\n const c = src.charCodeAt(pos);\n if (c === 35) {\n ++pos;\n const rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n pos = rst.pos;\n const key = \"id\", value = rst.name;\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n } else if (c === 46) {\n ++pos;\n const rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n pos = rst.pos;\n const key = \"class\", value = rst.name;\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n } else {\n let rst = parseAttrName(src, pos, max);\n if (rst === null) {\n return null;\n }\n const key = rst.name;\n pos = rst.pos;\n pos = skipBlanks(src, pos, max);\n if (pos >= max) {\n return null;\n }\n let value;\n if (src.charCodeAt(pos) === 61) {\n ++pos;\n pos = skipBlanks(src, pos, max);\n if (pos >= max) {\n return null;\n }\n const c2 = src.charCodeAt(pos);\n if (c2 === 34 || c2 === 39) {\n const rst2 = md.helpers.parseLinkTitle(src, pos, max);\n if (!rst2.ok) {\n return null;\n }\n value = rst2.str;\n pos = rst2.pos;\n } else {\n rst = parseUnsurroundedName(src, pos, max);\n if (rst === null) {\n return null;\n }\n value = rst.name;\n pos = rst.pos;\n }\n } else {\n if (isBlank(src.charCodeAt(pos - 1))) {\n --pos;\n }\n value = \"\";\n }\n if (typeof value !== \"undefined\") {\n if (typeof attrs[key] === \"undefined\") {\n attrs[key] = [value];\n } else {\n attrs[key].push(value);\n }\n }\n }\n if (pos >= max) {\n return null;\n }\n const charBetween = src.charCodeAt(pos);\n if (!isBlank(charBetween) && charBetween !== 125) {\n return null;\n }\n }\n return null;\n function isBlank(code) {\n return md.utils.isSpace(code) || code === 10;\n }\n function skipBlanks(src2, pos2, max2) {\n for (; pos2 < max2; pos2++) {\n const code = src2.charCodeAt(pos2);\n if (!isBlank(code)) {\n break;\n }\n }\n return pos2;\n }\n}\nvar ATTR_NAME_RE = /^[a-z][a-z0-9\\-_]*/;\nfunction parseAttrName(src, pos, max) {\n const oldPos = pos;\n const rst = src.slice(pos, max).match(ATTR_NAME_RE);\n if (rst === null) {\n return null;\n }\n pos += rst[0].length;\n return { pos, name: src.slice(oldPos, pos) };\n}\nvar UNSURROUNDED_STRING_RE = /^[a-z0-9\\-_]+/i;\nfunction parseUnsurroundedName(src, pos, max) {\n const oldPos = pos;\n const rst = src.slice(pos, max).match(UNSURROUNDED_STRING_RE);\n if (rst === null) {\n return null;\n }\n pos += rst[0].length;\n return { pos, name: src.slice(oldPos, pos) };\n}\n\n// src/lib/common/browser.ts\nvar isBrowser = () => {\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n};\n\n// src/lib/common/extension-load-queue.ts\nvar QUEUES_SYMBOL = /* @__PURE__ */ Symbol.for(\"extension-load-queues\");\nvar SINGLE_QUEUE_SYMBOL = /* @__PURE__ */ Symbol.for(\"single-queue\");\nvar getScriptStore = (storeKey) => {\n if (isBrowser()) {\n if (!window[storeKey]) {\n window[storeKey] = [];\n } else if (!Array.isArray(window[storeKey])) {\n throw new Error(`Expected window[${String(storeKey)}] to be an array`);\n }\n return window[storeKey];\n } else {\n throw new Error(\"Cannot initialize QueueStore in a non-browser environment.\");\n }\n};\nvar ensureQueuesSymbolInitialized = () => {\n if (isBrowser()) {\n if (typeof window[QUEUES_SYMBOL] !== \"object\" || window[QUEUES_SYMBOL] === null) {\n window[QUEUES_SYMBOL] = {};\n }\n } else {\n throw new Error(\"Cannot initialize QueueStore in a non-browser environment.\");\n }\n};\nvar getQueueStore = (queueKey) => {\n ensureQueuesSymbolInitialized();\n return window[QUEUES_SYMBOL]?.[queueKey] || false;\n};\nvar createHandleQueueCreated = (queueKey) => {\n ensureQueuesSymbolInitialized();\n return (created) => {\n window[QUEUES_SYMBOL][queueKey] = created;\n };\n};\nvar createLoadQueue = ({\n store,\n createController,\n queueKey = SINGLE_QUEUE_SYMBOL,\n isQueueCreated = getQueueStore(queueKey),\n onQueueCreated = createHandleQueueCreated(queueKey)\n}) => {\n if (!store || isQueueCreated) {\n return;\n }\n onQueueCreated(true);\n const controller = createController();\n const queue = store.splice(0, store.length);\n store.push = function(...args) {\n args.forEach((callback) => {\n queue.push(callback);\n unqueue();\n });\n return queue.length;\n };\n let processing = false;\n function unqueue() {\n if (!processing) {\n next();\n }\n }\n async function next() {\n processing = true;\n const callback = queue.shift();\n if (callback) {\n await callback(controller);\n return next();\n }\n processing = false;\n }\n unqueue();\n};\n\n// src/lib/common/id-generator.ts\nfunction createIDGenerator() {\n const counters = /* @__PURE__ */ new Map();\n return function generateID(prefix) {\n if (!prefix) {\n return Math.random().toString(36).substr(2, 8);\n }\n counters.set(prefix, (counters.get(prefix) || 0) + 1);\n return `${prefix}-${counters.get(prefix)}`;\n };\n}\nfunction createIDGeneratorByStrategy(strategy = \"random\") {\n switch (strategy) {\n case \"deterministic\":\n return createIDGenerator();\n case \"constant\":\n return () => \"1\";\n case \"random\":\n default:\n return (prefix) => {\n if (!prefix) {\n return Math.random().toString(36).substr(2, 8);\n }\n return `${prefix}-${Math.random().toString(36).substr(2, 8)}`;\n };\n }\n}\n\n// src/lib/common/url.ts\nfunction parseHref(href) {\n const [beforeHash, ...hashParts] = href.split(\"#\");\n const hash = hashParts.length ? \"#\" + hashParts.join(\"#\") : null;\n const queryIndex = beforeHash.indexOf(\"?\");\n const path = queryIndex === -1 ? beforeHash : beforeHash.slice(0, queryIndex);\n const search = queryIndex === -1 ? null : beforeHash.slice(queryIndex);\n return {\n pathname: path === \"\" ? null : path,\n search,\n hash\n };\n}\nfunction formatHref({ pathname, search, hash }) {\n return (pathname || \"\") + (search || \"\") + (hash || \"\");\n}\n", "// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nmodule.exports = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n", "const regex = require('./regex.js')\n\nmodule.exports = BananaSlug\n\nconst own = Object.hasOwnProperty\n\nfunction BananaSlug () {\n const self = this\n\n if (!(self instanceof BananaSlug)) return new BananaSlug()\n\n self.reset()\n}\n\n/**\n * Generate a unique slug.\n * @param {string} value String of text to slugify\n * @param {boolean} [false] Keep the current case, otherwise make all lowercase\n * @return {string} A unique slug string\n */\nBananaSlug.prototype.slug = function (value, maintainCase) {\n const self = this\n let slug = slugger(value, maintainCase === true)\n const originalSlug = slug\n\n while (own.call(self.occurrences, slug)) {\n self.occurrences[originalSlug]++\n slug = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[slug] = 0\n\n return slug\n}\n\n/**\n * Reset - Forget all previous slugs\n * @return void\n */\nBananaSlug.prototype.reset = function () {\n this.occurrences = Object.create(null)\n}\n\nfunction slugger (string, maintainCase) {\n if (typeof string !== 'string') return ''\n if (!maintainCase) string = string.toLowerCase()\n return string.replace(regex, '').replace(/ /g, '-')\n}\n\nBananaSlug.slug = slugger\n", "\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"\u00A2\":\"cent\",\"\u00A3\":\"pound\",\"\u00A4\":\"currency\",\"\u00A5\":\"yen\",\"\u00A9\":\"(c)\",\"\u00AA\":\"a\",\"\u00AE\":\"(r)\",\"\u00BA\":\"o\",\"\u00C0\":\"A\",\"\u00C1\":\"A\",\"\u00C2\":\"A\",\"\u00C3\":\"A\",\"\u00C4\":\"A\",\"\u00C5\":\"A\",\"\u00C6\":\"AE\",\"\u00C7\":\"C\",\"\u00C8\":\"E\",\"\u00C9\":\"E\",\"\u00CA\":\"E\",\"\u00CB\":\"E\",\"\u00CC\":\"I\",\"\u00CD\":\"I\",\"\u00CE\":\"I\",\"\u00CF\":\"I\",\"\u00D0\":\"D\",\"\u00D1\":\"N\",\"\u00D2\":\"O\",\"\u00D3\":\"O\",\"\u00D4\":\"O\",\"\u00D5\":\"O\",\"\u00D6\":\"O\",\"\u00D8\":\"O\",\"\u00D9\":\"U\",\"\u00DA\":\"U\",\"\u00DB\":\"U\",\"\u00DC\":\"U\",\"\u00DD\":\"Y\",\"\u00DE\":\"TH\",\"\u00DF\":\"ss\",\"\u00E0\":\"a\",\"\u00E1\":\"a\",\"\u00E2\":\"a\",\"\u00E3\":\"a\",\"\u00E4\":\"a\",\"\u00E5\":\"a\",\"\u00E6\":\"ae\",\"\u00E7\":\"c\",\"\u00E8\":\"e\",\"\u00E9\":\"e\",\"\u00EA\":\"e\",\"\u00EB\":\"e\",\"\u00EC\":\"i\",\"\u00ED\":\"i\",\"\u00EE\":\"i\",\"\u00EF\":\"i\",\"\u00F0\":\"d\",\"\u00F1\":\"n\",\"\u00F2\":\"o\",\"\u00F3\":\"o\",\"\u00F4\":\"o\",\"\u00F5\":\"o\",\"\u00F6\":\"o\",\"\u00F8\":\"o\",\"\u00F9\":\"u\",\"\u00FA\":\"u\",\"\u00FB\":\"u\",\"\u00FC\":\"u\",\"\u00FD\":\"y\",\"\u00FE\":\"th\",\"\u00FF\":\"y\",\"\u0100\":\"A\",\"\u0101\":\"a\",\"\u0102\":\"A\",\"\u0103\":\"a\",\"\u0104\":\"A\",\"\u0105\":\"a\",\"\u0106\":\"C\",\"\u0107\":\"c\",\"\u010C\":\"C\",\"\u010D\":\"c\",\"\u010E\":\"D\",\"\u010F\":\"d\",\"\u0110\":\"DJ\",\"\u0111\":\"dj\",\"\u0112\":\"E\",\"\u0113\":\"e\",\"\u0116\":\"E\",\"\u0117\":\"e\",\"\u0118\":\"e\",\"\u0119\":\"e\",\"\u011A\":\"E\",\"\u011B\":\"e\",\"\u011E\":\"G\",\"\u011F\":\"g\",\"\u0122\":\"G\",\"\u0123\":\"g\",\"\u0128\":\"I\",\"\u0129\":\"i\",\"\u012A\":\"i\",\"\u012B\":\"i\",\"\u012E\":\"I\",\"\u012F\":\"i\",\"\u0130\":\"I\",\"\u0131\":\"i\",\"\u0136\":\"k\",\"\u0137\":\"k\",\"\u013B\":\"L\",\"\u013C\":\"l\",\"\u013D\":\"L\",\"\u013E\":\"l\",\"\u0141\":\"L\",\"\u0142\":\"l\",\"\u0143\":\"N\",\"\u0144\":\"n\",\"\u0145\":\"N\",\"\u0146\":\"n\",\"\u0147\":\"N\",\"\u0148\":\"n\",\"\u014C\":\"O\",\"\u014D\":\"o\",\"\u0150\":\"O\",\"\u0151\":\"o\",\"\u0152\":\"OE\",\"\u0153\":\"oe\",\"\u0154\":\"R\",\"\u0155\":\"r\",\"\u0158\":\"R\",\"\u0159\":\"r\",\"\u015A\":\"S\",\"\u015B\":\"s\",\"\u015E\":\"S\",\"\u015F\":\"s\",\"\u0160\":\"S\",\"\u0161\":\"s\",\"\u0162\":\"T\",\"\u0163\":\"t\",\"\u0164\":\"T\",\"\u0165\":\"t\",\"\u0168\":\"U\",\"\u0169\":\"u\",\"\u016A\":\"u\",\"\u016B\":\"u\",\"\u016E\":\"U\",\"\u016F\":\"u\",\"\u0170\":\"U\",\"\u0171\":\"u\",\"\u0172\":\"U\",\"\u0173\":\"u\",\"\u0174\":\"W\",\"\u0175\":\"w\",\"\u0176\":\"Y\",\"\u0177\":\"y\",\"\u0178\":\"Y\",\"\u0179\":\"Z\",\"\u017A\":\"z\",\"\u017B\":\"Z\",\"\u017C\":\"z\",\"\u017D\":\"Z\",\"\u017E\":\"z\",\"\u018F\":\"E\",\"\u0192\":\"f\",\"\u01A0\":\"O\",\"\u01A1\":\"o\",\"\u01AF\":\"U\",\"\u01B0\":\"u\",\"\u01C8\":\"LJ\",\"\u01C9\":\"lj\",\"\u01CB\":\"NJ\",\"\u01CC\":\"nj\",\"\u0218\":\"S\",\"\u0219\":\"s\",\"\u021A\":\"T\",\"\u021B\":\"t\",\"\u0259\":\"e\",\"\u02DA\":\"o\",\"\u0386\":\"A\",\"\u0388\":\"E\",\"\u0389\":\"H\",\"\u038A\":\"I\",\"\u038C\":\"O\",\"\u038E\":\"Y\",\"\u038F\":\"W\",\"\u0390\":\"i\",\"\u0391\":\"A\",\"\u0392\":\"B\",\"\u0393\":\"G\",\"\u0394\":\"D\",\"\u0395\":\"E\",\"\u0396\":\"Z\",\"\u0397\":\"H\",\"\u0398\":\"8\",\"\u0399\":\"I\",\"\u039A\":\"K\",\"\u039B\":\"L\",\"\u039C\":\"M\",\"\u039D\":\"N\",\"\u039E\":\"3\",\"\u039F\":\"O\",\"\u03A0\":\"P\",\"\u03A1\":\"R\",\"\u03A3\":\"S\",\"\u03A4\":\"T\",\"\u03A5\":\"Y\",\"\u03A6\":\"F\",\"\u03A7\":\"X\",\"\u03A8\":\"PS\",\"\u03A9\":\"W\",\"\u03AA\":\"I\",\"\u03AB\":\"Y\",\"\u03AC\":\"a\",\"\u03AD\":\"e\",\"\u03AE\":\"h\",\"\u03AF\":\"i\",\"\u03B0\":\"y\",\"\u03B1\":\"a\",\"\u03B2\":\"b\",\"\u03B3\":\"g\",\"\u03B4\":\"d\",\"\u03B5\":\"e\",\"\u03B6\":\"z\",\"\u03B7\":\"h\",\"\u03B8\":\"8\",\"\u03B9\":\"i\",\"\u03BA\":\"k\",\"\u03BB\":\"l\",\"\u03BC\":\"m\",\"\u03BD\":\"n\",\"\u03BE\":\"3\",\"\u03BF\":\"o\",\"\u03C0\":\"p\",\"\u03C1\":\"r\",\"\u03C2\":\"s\",\"\u03C3\":\"s\",\"\u03C4\":\"t\",\"\u03C5\":\"y\",\"\u03C6\":\"f\",\"\u03C7\":\"x\",\"\u03C8\":\"ps\",\"\u03C9\":\"w\",\"\u03CA\":\"i\",\"\u03CB\":\"y\",\"\u03CC\":\"o\",\"\u03CD\":\"y\",\"\u03CE\":\"w\",\"\u0401\":\"Yo\",\"\u0402\":\"DJ\",\"\u0404\":\"Ye\",\"\u0406\":\"I\",\"\u0407\":\"Yi\",\"\u0408\":\"J\",\"\u0409\":\"LJ\",\"\u040A\":\"NJ\",\"\u040B\":\"C\",\"\u040F\":\"DZ\",\"\u0410\":\"A\",\"\u0411\":\"B\",\"\u0412\":\"V\",\"\u0413\":\"G\",\"\u0414\":\"D\",\"\u0415\":\"E\",\"\u0416\":\"Zh\",\"\u0417\":\"Z\",\"\u0418\":\"I\",\"\u0419\":\"J\",\"\u041A\":\"K\",\"\u041B\":\"L\",\"\u041C\":\"M\",\"\u041D\":\"N\",\"\u041E\":\"O\",\"\u041F\":\"P\",\"\u0420\":\"R\",\"\u0421\":\"S\",\"\u0422\":\"T\",\"\u0423\":\"U\",\"\u0424\":\"F\",\"\u0425\":\"H\",\"\u0426\":\"C\",\"\u0427\":\"Ch\",\"\u0428\":\"Sh\",\"\u0429\":\"Sh\",\"\u042A\":\"U\",\"\u042B\":\"Y\",\"\u042C\":\"\",\"\u042D\":\"E\",\"\u042E\":\"Yu\",\"\u042F\":\"Ya\",\"\u0430\":\"a\",\"\u0431\":\"b\",\"\u0432\":\"v\",\"\u0433\":\"g\",\"\u0434\":\"d\",\"\u0435\":\"e\",\"\u0436\":\"zh\",\"\u0437\":\"z\",\"\u0438\":\"i\",\"\u0439\":\"j\",\"\u043A\":\"k\",\"\u043B\":\"l\",\"\u043C\":\"m\",\"\u043D\":\"n\",\"\u043E\":\"o\",\"\u043F\":\"p\",\"\u0440\":\"r\",\"\u0441\":\"s\",\"\u0442\":\"t\",\"\u0443\":\"u\",\"\u0444\":\"f\",\"\u0445\":\"h\",\"\u0446\":\"c\",\"\u0447\":\"ch\",\"\u0448\":\"sh\",\"\u0449\":\"sh\",\"\u044A\":\"u\",\"\u044B\":\"y\",\"\u044C\":\"\",\"\u044D\":\"e\",\"\u044E\":\"yu\",\"\u044F\":\"ya\",\"\u0451\":\"yo\",\"\u0452\":\"dj\",\"\u0454\":\"ye\",\"\u0456\":\"i\",\"\u0457\":\"yi\",\"\u0458\":\"j\",\"\u0459\":\"lj\",\"\u045A\":\"nj\",\"\u045B\":\"c\",\"\u045D\":\"u\",\"\u045F\":\"dz\",\"\u0490\":\"G\",\"\u0491\":\"g\",\"\u0492\":\"GH\",\"\u0493\":\"gh\",\"\u049A\":\"KH\",\"\u049B\":\"kh\",\"\u04A2\":\"NG\",\"\u04A3\":\"ng\",\"\u04AE\":\"UE\",\"\u04AF\":\"ue\",\"\u04B0\":\"U\",\"\u04B1\":\"u\",\"\u04BA\":\"H\",\"\u04BB\":\"h\",\"\u04D8\":\"AE\",\"\u04D9\":\"ae\",\"\u04E8\":\"OE\",\"\u04E9\":\"oe\",\"\u0531\":\"A\",\"\u0532\":\"B\",\"\u0533\":\"G\",\"\u0534\":\"D\",\"\u0535\":\"E\",\"\u0536\":\"Z\",\"\u0537\":\"E\\'\",\"\u0538\":\"Y\\'\",\"\u0539\":\"T\\'\",\"\u053A\":\"JH\",\"\u053B\":\"I\",\"\u053C\":\"L\",\"\u053D\":\"X\",\"\u053E\":\"C\\'\",\"\u053F\":\"K\",\"\u0540\":\"H\",\"\u0541\":\"D\\'\",\"\u0542\":\"GH\",\"\u0543\":\"TW\",\"\u0544\":\"M\",\"\u0545\":\"Y\",\"\u0546\":\"N\",\"\u0547\":\"SH\",\"\u0549\":\"CH\",\"\u054A\":\"P\",\"\u054B\":\"J\",\"\u054C\":\"R\\'\",\"\u054D\":\"S\",\"\u054E\":\"V\",\"\u054F\":\"T\",\"\u0550\":\"R\",\"\u0551\":\"C\",\"\u0553\":\"P\\'\",\"\u0554\":\"Q\\'\",\"\u0555\":\"O\\'\\'\",\"\u0556\":\"F\",\"\u0587\":\"EV\",\"\u0621\":\"a\",\"\u0622\":\"aa\",\"\u0623\":\"a\",\"\u0624\":\"u\",\"\u0625\":\"i\",\"\u0626\":\"e\",\"\u0627\":\"a\",\"\u0628\":\"b\",\"\u0629\":\"h\",\"\u062A\":\"t\",\"\u062B\":\"th\",\"\u062C\":\"j\",\"\u062D\":\"h\",\"\u062E\":\"kh\",\"\u062F\":\"d\",\"\u0630\":\"th\",\"\u0631\":\"r\",\"\u0632\":\"z\",\"\u0633\":\"s\",\"\u0634\":\"sh\",\"\u0635\":\"s\",\"\u0636\":\"dh\",\"\u0637\":\"t\",\"\u0638\":\"z\",\"\u0639\":\"a\",\"\u063A\":\"gh\",\"\u0641\":\"f\",\"\u0642\":\"q\",\"\u0643\":\"k\",\"\u0644\":\"l\",\"\u0645\":\"m\",\"\u0646\":\"n\",\"\u0647\":\"h\",\"\u0648\":\"w\",\"\u0649\":\"a\",\"\u064A\":\"y\",\"\u064B\":\"an\",\"\u064C\":\"on\",\"\u064D\":\"en\",\"\u064E\":\"a\",\"\u064F\":\"u\",\"\u0650\":\"e\",\"\u0652\":\"\",\"\u0660\":\"0\",\"\u0661\":\"1\",\"\u0662\":\"2\",\"\u0663\":\"3\",\"\u0664\":\"4\",\"\u0665\":\"5\",\"\u0666\":\"6\",\"\u0667\":\"7\",\"\u0668\":\"8\",\"\u0669\":\"9\",\"\u067E\":\"p\",\"\u0686\":\"ch\",\"\u0698\":\"zh\",\"\u06A9\":\"k\",\"\u06AF\":\"g\",\"\u06CC\":\"y\",\"\u06F0\":\"0\",\"\u06F1\":\"1\",\"\u06F2\":\"2\",\"\u06F3\":\"3\",\"\u06F4\":\"4\",\"\u06F5\":\"5\",\"\u06F6\":\"6\",\"\u06F7\":\"7\",\"\u06F8\":\"8\",\"\u06F9\":\"9\",\"\u0E3F\":\"baht\",\"\u10D0\":\"a\",\"\u10D1\":\"b\",\"\u10D2\":\"g\",\"\u10D3\":\"d\",\"\u10D4\":\"e\",\"\u10D5\":\"v\",\"\u10D6\":\"z\",\"\u10D7\":\"t\",\"\u10D8\":\"i\",\"\u10D9\":\"k\",\"\u10DA\":\"l\",\"\u10DB\":\"m\",\"\u10DC\":\"n\",\"\u10DD\":\"o\",\"\u10DE\":\"p\",\"\u10DF\":\"zh\",\"\u10E0\":\"r\",\"\u10E1\":\"s\",\"\u10E2\":\"t\",\"\u10E3\":\"u\",\"\u10E4\":\"f\",\"\u10E5\":\"k\",\"\u10E6\":\"gh\",\"\u10E7\":\"q\",\"\u10E8\":\"sh\",\"\u10E9\":\"ch\",\"\u10EA\":\"ts\",\"\u10EB\":\"dz\",\"\u10EC\":\"ts\",\"\u10ED\":\"ch\",\"\u10EE\":\"kh\",\"\u10EF\":\"j\",\"\u10F0\":\"h\",\"\u1E62\":\"S\",\"\u1E63\":\"s\",\"\u1E80\":\"W\",\"\u1E81\":\"w\",\"\u1E82\":\"W\",\"\u1E83\":\"w\",\"\u1E84\":\"W\",\"\u1E85\":\"w\",\"\u1E9E\":\"SS\",\"\u1EA0\":\"A\",\"\u1EA1\":\"a\",\"\u1EA2\":\"A\",\"\u1EA3\":\"a\",\"\u1EA4\":\"A\",\"\u1EA5\":\"a\",\"\u1EA6\":\"A\",\"\u1EA7\":\"a\",\"\u1EA8\":\"A\",\"\u1EA9\":\"a\",\"\u1EAA\":\"A\",\"\u1EAB\":\"a\",\"\u1EAC\":\"A\",\"\u1EAD\":\"a\",\"\u1EAE\":\"A\",\"\u1EAF\":\"a\",\"\u1EB0\":\"A\",\"\u1EB1\":\"a\",\"\u1EB2\":\"A\",\"\u1EB3\":\"a\",\"\u1EB4\":\"A\",\"\u1EB5\":\"a\",\"\u1EB6\":\"A\",\"\u1EB7\":\"a\",\"\u1EB8\":\"E\",\"\u1EB9\":\"e\",\"\u1EBA\":\"E\",\"\u1EBB\":\"e\",\"\u1EBC\":\"E\",\"\u1EBD\":\"e\",\"\u1EBE\":\"E\",\"\u1EBF\":\"e\",\"\u1EC0\":\"E\",\"\u1EC1\":\"e\",\"\u1EC2\":\"E\",\"\u1EC3\":\"e\",\"\u1EC4\":\"E\",\"\u1EC5\":\"e\",\"\u1EC6\":\"E\",\"\u1EC7\":\"e\",\"\u1EC8\":\"I\",\"\u1EC9\":\"i\",\"\u1ECA\":\"I\",\"\u1ECB\":\"i\",\"\u1ECC\":\"O\",\"\u1ECD\":\"o\",\"\u1ECE\":\"O\",\"\u1ECF\":\"o\",\"\u1ED0\":\"O\",\"\u1ED1\":\"o\",\"\u1ED2\":\"O\",\"\u1ED3\":\"o\",\"\u1ED4\":\"O\",\"\u1ED5\":\"o\",\"\u1ED6\":\"O\",\"\u1ED7\":\"o\",\"\u1ED8\":\"O\",\"\u1ED9\":\"o\",\"\u1EDA\":\"O\",\"\u1EDB\":\"o\",\"\u1EDC\":\"O\",\"\u1EDD\":\"o\",\"\u1EDE\":\"O\",\"\u1EDF\":\"o\",\"\u1EE0\":\"O\",\"\u1EE1\":\"o\",\"\u1EE2\":\"O\",\"\u1EE3\":\"o\",\"\u1EE4\":\"U\",\"\u1EE5\":\"u\",\"\u1EE6\":\"U\",\"\u1EE7\":\"u\",\"\u1EE8\":\"U\",\"\u1EE9\":\"u\",\"\u1EEA\":\"U\",\"\u1EEB\":\"u\",\"\u1EEC\":\"U\",\"\u1EED\":\"u\",\"\u1EEE\":\"U\",\"\u1EEF\":\"u\",\"\u1EF0\":\"U\",\"\u1EF1\":\"u\",\"\u1EF2\":\"Y\",\"\u1EF3\":\"y\",\"\u1EF4\":\"Y\",\"\u1EF5\":\"y\",\"\u1EF6\":\"Y\",\"\u1EF7\":\"y\",\"\u1EF8\":\"Y\",\"\u1EF9\":\"y\",\"\u2013\":\"-\",\"\u2018\":\"\\'\",\"\u2019\":\"\\'\",\"\u201C\":\"\\\\\\\"\",\"\u201D\":\"\\\\\\\"\",\"\u201E\":\"\\\\\\\"\",\"\u2020\":\"+\",\"\u2022\":\"*\",\"\u2026\":\"...\",\"\u20A0\":\"ecu\",\"\u20A2\":\"cruzeiro\",\"\u20A3\":\"french franc\",\"\u20A4\":\"lira\",\"\u20A5\":\"mill\",\"\u20A6\":\"naira\",\"\u20A7\":\"peseta\",\"\u20A8\":\"rupee\",\"\u20A9\":\"won\",\"\u20AA\":\"new shequel\",\"\u20AB\":\"dong\",\"\u20AC\":\"euro\",\"\u20AD\":\"kip\",\"\u20AE\":\"tugrik\",\"\u20AF\":\"drachma\",\"\u20B0\":\"penny\",\"\u20B1\":\"peso\",\"\u20B2\":\"guarani\",\"\u20B3\":\"austral\",\"\u20B4\":\"hryvnia\",\"\u20B5\":\"cedi\",\"\u20B8\":\"kazakhstani tenge\",\"\u20B9\":\"indian rupee\",\"\u20BA\":\"turkish lira\",\"\u20BD\":\"russian ruble\",\"\u20BF\":\"bitcoin\",\"\u2120\":\"sm\",\"\u2122\":\"tm\",\"\u2202\":\"d\",\"\u2206\":\"delta\",\"\u2211\":\"sum\",\"\u221E\":\"infinity\",\"\u2665\":\"love\",\"\u5143\":\"yuan\",\"\u5186\":\"yen\",\"\uFDFC\":\"rial\",\"\uFEF5\":\"laa\",\"\uFEF7\":\"laa\",\"\uFEF9\":\"lai\",\"\uFEFB\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"\u0419\":\"Y\",\"\u0426\":\"Ts\",\"\u0429\":\"Sht\",\"\u042A\":\"A\",\"\u042C\":\"Y\",\"\u0439\":\"y\",\"\u0446\":\"ts\",\"\u0449\":\"sht\",\"\u044A\":\"a\",\"\u044C\":\"y\"},\"de\":{\"\u00C4\":\"AE\",\"\u00E4\":\"ae\",\"\u00D6\":\"OE\",\"\u00F6\":\"oe\",\"\u00DC\":\"UE\",\"\u00FC\":\"ue\",\"\u00DF\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"\u2211\":\"summe\",\"\u221E\":\"unendlich\",\"\u2665\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"\u00A2\":\"centavos\",\"\u00A3\":\"libras\",\"\u00A4\":\"moneda\",\"\u20A3\":\"francos\",\"\u2211\":\"suma\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"\u00A2\":\"centime\",\"\u00A3\":\"livre\",\"\u00A4\":\"devise\",\"\u20A3\":\"franc\",\"\u2211\":\"somme\",\"\u221E\":\"infini\",\"\u2665\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"\u00A2\":\"centavo\",\"\u2211\":\"soma\",\"\u00A3\":\"libra\",\"\u221E\":\"infinito\",\"\u2665\":\"amor\"},\"uk\":{\"\u0418\":\"Y\",\"\u0438\":\"y\",\"\u0419\":\"Y\",\"\u0439\":\"y\",\"\u0426\":\"Ts\",\"\u0446\":\"ts\",\"\u0425\":\"Kh\",\"\u0445\":\"kh\",\"\u0429\":\"Shch\",\"\u0449\":\"shch\",\"\u0413\":\"H\",\"\u0433\":\"h\"},\"vi\":{\"\u0110\":\"D\",\"\u0111\":\"d\"},\"da\":{\"\u00D8\":\"OE\",\"\u00F8\":\"oe\",\"\u00C5\":\"AA\",\"\u00E5\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"st\u00F8rre end\"},\"nb\":{\"&\":\"og\",\"\u00C5\":\"AA\",\"\u00C6\":\"AE\",\"\u00D8\":\"OE\",\"\u00E5\":\"aa\",\"\u00E6\":\"ae\",\"\u00F8\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"\u00C5\":\"AA\",\"\u00C4\":\"AE\",\"\u00D6\":\"OE\",\"\u00E5\":\"aa\",\"\u00E4\":\"ae\",\"\u00F6\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n", "import {type PluginOptions, transform as baseTransform} from './transform';\n\nexport * from './index';\n\nconst onBundle: NonNullable<PluginOptions['onBundle']> = (args, cache) => {\n copyRuntimeFiles(args, cache);\n};\n\nexport function transform(options: Partial<PluginOptions> = {}) {\n return baseTransform({onBundle, ...options});\n}\n\nconst PATH_TO_RUNTIME = '../runtime';\n\nfunction copyRuntimeFiles(\n {\n runtimeJsPath,\n runtimeCssPath,\n output,\n }: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n) {\n const {join, resolve} = require('node:path');\n const runtimeFiles = {\n 'index.js': runtimeJsPath,\n 'index.css': runtimeCssPath,\n };\n for (const [originFile, outputFile] of Object.entries(runtimeFiles)) {\n const file = join(PATH_TO_RUNTIME, originFile);\n if (!cache.has(file)) {\n cache.add(file);\n copyFile(resolve(__dirname, file), join(output, outputFile));\n }\n }\n}\n\nfunction copyFile(from: string, to: string) {\n const {mkdirSync, copyFileSync} = require('node:fs');\n const {dirname} = require('node:path');\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n", "/**\n * MarkdownIt plugin: finds `{% list tabs %}` blocks, parses tab items, and replaces them\n * with HTML tokens for the chosen variant. Registers runtime script/style in env.meta.\n */\nimport type StateCore from 'markdown-it/lib/rules_core/state_core';\nimport type MarkdownIt from 'markdown-it';\nimport type {IDGenerator} from '@diplodoc/utils';\nimport type {EnabledVariants} from '../common';\n\nimport {createIDGeneratorByStrategy} from '@diplodoc/utils';\n\nimport {TabsVariants} from '../common';\n\nimport {addHiddenProperty} from './utils';\nimport {generateTabsTokens} from './generate';\nimport {findTabs, props, tryToFindTabs} from './find';\n\n/** Options for the tabs plugin (paths, container classes, enabled variants). */\nexport type PluginOptions = {\n runtimeJsPath: string;\n runtimeCssPath: string;\n containerClasses: string;\n bundle: boolean;\n features: {\n enabledVariants: EnabledVariants;\n };\n /** @internal */\n onBundle?: (\n args: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n ) => void;\n};\n\nconst defaultFeatures = {\n enabledVariants: {\n regular: true,\n radio: true,\n },\n} satisfies PluginOptions['features'];\n\nlet runsCounter = 0;\n\ntype TransformOptions = {\n output?: string;\n /** Optional external ID generator provided by the host (e.g. via MarkdownItPluginOpts). */\n generateID?: IDGenerator;\n};\n\n/**\n * Returns a MarkdownIt plugin that transforms `{% list tabs %}` blocks into tab markup.\n * @param options - Paths for runtime JS/CSS, container classes, and enabled variants\n * @returns Plugin function that receives (md, options) and registers the core ruler\n */\nexport function transform({\n runtimeJsPath = '_assets/tabs-extension.js',\n runtimeCssPath = '_assets/tabs-extension.css',\n containerClasses = '',\n bundle = true,\n features = defaultFeatures,\n onBundle,\n}: Partial<PluginOptions> = {}) {\n return function tabs(md: MarkdownIt, options?: TransformOptions) {\n const {output = '.', generateID: externalGenerateID} = options || {};\n\n // Use the external ID generator if provided (e.g. from MarkdownItPluginOpts.generateID),\n // otherwise create a random fallback for standalone usage.\n // The fallback is created once per md.use() call, so it's shared across all parse() calls\n // on the same md instance (including recursive calls from includes plugins).\n const generateID: IDGenerator =\n externalGenerateID ?? (createIDGeneratorByStrategy('random') as IDGenerator);\n\n const plugin = (state: StateCore) => {\n const {env, tokens} = state;\n const runId = String(++runsCounter);\n\n addHiddenProperty(env, 'bundled', new Set<string>());\n\n let i = 0;\n let tabsAreInserted = false;\n\n while (i < tokens.length) {\n const result = tryToFindTabs(tokens, i);\n\n if ('step' in result) {\n i += result.step;\n\n continue;\n }\n\n const {content, closeTokenIndex, extraTokensAfterClose} = result;\n\n const parsedProps = props(content, generateID);\n\n if (!features.enabledVariants[parsedProps.variant]) {\n parsedProps.variant = TabsVariants.Regular;\n }\n\n const tabs = findTabs(state.tokens, i + 3, closeTokenIndex);\n\n if (tabs.length > 0) {\n const tabsTokens = generateTabsTokens(tabs, state, {\n containerClasses,\n tabsGroup: parsedProps.group,\n variant: parsedProps.variant,\n runId,\n generateID,\n });\n\n // Remove tokens including any list closing tokens after endlist\n state.tokens.splice(\n i,\n closeTokenIndex - i + 3 + extraTokensAfterClose,\n ...tabsTokens,\n );\n\n i++;\n tabsAreInserted = true;\n } else {\n state.tokens.splice(i, closeTokenIndex - i + 3 + extraTokensAfterClose);\n }\n }\n\n if (tabsAreInserted) {\n env.meta = env.meta || {};\n env.meta.script = env.meta.script || [];\n env.meta.style = env.meta.style || [];\n env.meta.script.push(runtimeJsPath);\n env.meta.style.push(runtimeCssPath);\n\n if (bundle && onBundle) {\n onBundle({runtimeJsPath, runtimeCssPath, output}, env.bundled);\n }\n }\n };\n\n try {\n md.core.ruler.before('curly_attributes', 'tabs', plugin);\n } catch {\n md.core.ruler.push('tabs', plugin);\n }\n };\n}\n", "/**\n * Shared constants, types and globals for the tabs extension.\n * Used by both the MarkdownIt plugin (compile-time) and the runtime controller (DOM).\n */\nimport {type TabsController} from './runtime/TabsController';\n\n/** Regex to match the opening `{% list tabs ... %}` tag (optionally backtick-escaped). */\nexport const TAB_RE = /`?{% list tabs .*?%}`?/;\n\n/** CSS class names for tab structure. */\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const TAB_GROUP_CLASSNAME = 'yfm-tab-group';\n\n/** Data attributes used by the runtime to identify groups, keys, variants and active state. */\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_VARIANT = 'data-diplodoc-variant';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\nexport const ACTIVE_TAB_TEXT = '{selected}';\nexport const TAB_FORCED_OPEN = 'data-diplodoc-forced';\n\n/** Dropdown variant: container, menu and select element class names. */\nexport const TABS_DROPDOWN_CLASSNAME = 'yfm-tabs-dropdown';\nexport const TABS_DROPDOWN_MENU_CLASSNAME = 'yfm-tabs-dropdown-menu';\nexport const TABS_DROPDOWN_SELECT = 'yfm-tabs-dropdown-select';\n\n/** Accordion variant. */\nexport const TABS_ACCORDION_CLASSNAME = 'yfm-tabs-accordion';\nexport const TABS_ACCORDION_CLIENT_HEIGHT = 'data-yfm-tabs-accordion-client-heights';\n\n/** Radio (vertical) variant. */\nexport const TABS_RADIO_CLASSNAME = 'yfm-tabs-vertical';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\n/** Available tab block variants (regular horizontal, radio, dropdown, accordion). */\nexport enum TabsVariants {\n Regular = 'regular',\n Radio = 'radio',\n Dropdown = 'dropdown',\n Accordion = 'accordion',\n}\n\n/** Which variants are enabled in the plugin (others fall back to Regular). */\nexport type EnabledVariants = Partial<Record<TabsVariants, boolean>>;\n\n/** Identifies a tab: group id, tab key (from content), and variant. */\nexport interface Tab {\n group?: string;\n key: string;\n variant: TabsVariants;\n}\n\n/** Payload passed to onSelectTab handlers when a tab is switched. */\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\n/** Symbol under which the global TabsController instance is stored on `window`. */\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export function trim(target: string) {\n return target.trim();\n}\n\nexport function unquote(target: string) {\n return target.match(/^([\"']).*\\1$/) ? target.slice(1, -1) : target;\n}\n", "/**\n * Helpers for tab content: slug ids, keys, selected marker, and source map ranges.\n */\nimport type Token from 'markdown-it/lib/token';\nimport type {RuntimeTab} from '../types';\n\nimport GithubSlugger from 'github-slugger';\n\nimport {ACTIVE_TAB_TEXT} from '../../common';\nimport {createTabKey} from '../../tab-key';\n\nconst CUSTOM_ID_REGEXP = /\\[?{ ?#(\\S+) ?}]?/;\n\nconst sluggersStorage = new Map<string, GithubSlugger>();\n\nfunction parseName(name: string): {name: string; customAnchor: string | null} {\n const parts = name.match(CUSTOM_ID_REGEXP);\n let customAnchor: string | null = null;\n let pure = name;\n\n if (parts) {\n pure = name.replace(parts[0], '');\n customAnchor = parts[1];\n } else {\n pure = name;\n customAnchor = null;\n }\n\n if (pure.includes(ACTIVE_TAB_TEXT)) {\n pure = pure.replace(ACTIVE_TAB_TEXT, '');\n }\n\n return {\n name: pure.trim(),\n customAnchor,\n };\n}\n\n/**\n * Generate a stable slug id for a tab (used in data-diplodoc-id and anchors).\n * @param tab - Runtime tab\n * @param runId - Plugin run id for slugger\n * @returns Slug string\n */\nexport function getTabId(tab: RuntimeTab, {runId}: {runId: string}): string {\n let slugger = sluggersStorage.get(runId);\n if (!slugger) {\n slugger = new GithubSlugger();\n sluggersStorage.set(runId, slugger);\n }\n\n return slugger.slug(getRawId(tab));\n}\n\n/**\n * True if the tab title contains the {selected} marker.\n * @param tab - Runtime tab\n * @returns Whether tab is selected by default\n */\nexport function isTabSelected(tab: RuntimeTab): boolean {\n const {name} = tab;\n\n return name.includes(ACTIVE_TAB_TEXT);\n}\n\n/**\n * Canonical slug key used in state (localStorage, query).\n * @param tab - Runtime tab\n * @returns Canonical slug key\n */\nexport function getTabKey(tab: RuntimeTab): string {\n return createTabKey(getRawId(tab));\n}\n\n/**\n * Tab title text without custom anchor and without {selected}.\n * @param tab - Runtime tab\n * @returns Display name\n */\nexport function getName(tab: RuntimeTab): string {\n return parseName(tab.name).name;\n}\n\nfunction getRawId(tab: RuntimeTab): string {\n const {customAnchor, name} = parseName(tab.name);\n\n return customAnchor || name;\n}\n\n/**\n * Source map range [startLine, endLine] for the tab content tokens, or null.\n * @param tokens - Content tokens\n * @returns [start, end] or null\n */\nexport function getContentMap(tokens: Token[]): [number, number] | null {\n let firstMap: [number, number] | null = null;\n let lastMap: [number, number] | null = null;\n\n tokens.forEach(({map}) => {\n if (map) {\n firstMap = firstMap ?? map;\n lastMap = map;\n }\n });\n\n return firstMap && lastMap ? [firstMap[0], lastMap[1]] : null;\n}\n", "import slugify from 'slugify';\n\nconst SLUG_OPTIONS = {\n lower: true,\n strict: true,\n} as const;\n\nconst PUNCTUATION_OR_SPACE_REGEXP = /^[\\p{P}\\s]$/u;\nconst PRESERVED_PUNCTUATION = new Set(['#']);\n\n/**\n * Convert characters unsupported by slugify to stable Unicode code point tokens.\n * Punctuation and whitespace keep slugify's default separator/removal behaviour, except for\n * characters such as # that distinguish common tab names (for example C# and C++).\n * @param value - Raw tab key\n * @returns Text safe to pass to slugify\n */\nexport function encodeUnsupportedCodePoints(value: string): string {\n return Array.from(value)\n .map((character) => {\n if (slugify(character, SLUG_OPTIONS)) {\n return character;\n }\n\n if (\n PUNCTUATION_OR_SPACE_REGEXP.test(character) &&\n !PRESERVED_PUNCTUATION.has(character)\n ) {\n return character;\n }\n\n const codePoint = character.codePointAt(0);\n return typeof codePoint === 'number' ? ` u${codePoint.toString(16)} ` : character;\n })\n .join('');\n}\n\n/**\n * Create the canonical key stored in tab markup and new URLs.\n * @param value - Raw tab name or custom id\n * @returns Lowercase ASCII slug, with unsupported characters represented as u<hex>\n */\nexport function createTabKey(value: string): string {\n const normalized = value.normalize('NFC').trim();\n const slug = slugify(encodeUnsupportedCodePoints(normalized), SLUG_OPTIONS);\n\n if (slug) {\n return slug;\n }\n\n return Array.from(normalized)\n .map((character) => `u${character.codePointAt(0)?.toString(16)}`)\n .join('-');\n}\n\n/**\n * Convert a key read from an old URL to the current canonical form.\n * URLSearchParams has already decoded the outer query layer, so legacy keys need one additional\n * decodeURIComponent call before slug generation.\n * @param value - Key parsed from the tabs query parameter\n * @returns Canonical tab key\n */\nexport function normalizeTabKeyFromUrl(value: string): string {\n try {\n return createTabKey(decodeURIComponent(value));\n } catch {\n return createTabKey(value);\n }\n}\n", "/**\n * Attach a non-enumerable property to an object (e.g. env.bundled for plugin state).\n * @param box - Object to extend\n * @param field - Property key\n * @param value - Property value\n * @returns Same object with typed field\n */\nexport function addHiddenProperty<\n B extends Record<string | symbol, unknown>,\n F extends string | symbol,\n V,\n>(box: B, field: F, value: V): B & {[P in F]: V} {\n if (!(field in box)) {\n Object.defineProperty(box, field, {\n enumerable: false,\n value: value,\n });\n }\n\n return box as B & {[P in F]: V};\n}\n\nexport * from './strings';\nexport * from './tabs';\n", "import type {TabsTokensGenerator} from './types';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_DATA_VERTICAL_TAB,\n TAB_FORCED_OPEN,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\n\nexport const regular: TabsTokensGenerator = (\n tabs,\n state,\n {containerClasses, tabsGroup, runId, variant: orientation, generateID},\n) => {\n const tabsTokens = [];\n const tabListTokens = [];\n const tabPanelsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n const tabListOpen = new state.Token('tab-list_open', 'div', 1);\n const tabListClose = new state.Token('tab-list_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n\n tabListOpen.map = [start, end];\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n tabListOpen.block = true;\n tabListClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n const hasDefaultOpenTab = activeTabsCount !== 0;\n\n tabsOpen.attrSet('class', [TABS_CLASSNAME, containerClasses].filter(Boolean).join(' '));\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, 'regular');\n\n tabListOpen.attrSet('class', TABS_LIST_CLASSNAME);\n tabListOpen.attrSet('role', 'tablist');\n\n if (orientation === 'radio') {\n tabsTokens.push(tabsOpen);\n }\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const verticalTabInput = new state.Token('tab-input', 'input', 0);\n const verticalTabLabelOpen = new state.Token('tab-label_open', 'label', 1);\n const verticalTabLabelClose = new state.Token('tab-label_close', 'label', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n /* if user did not provide default open tab we fallback to first tab (in default tabs only) */\n const isTabActive = hasDefaultOpenTab ? didTabHasActiveAttr : i === 0;\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('regular');\n\n verticalTabInput.block = true;\n\n verticalTabInput.attrJoin('class', 'radio');\n verticalTabInput.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet('class', TAB_CLASSNAME);\n tabOpen.attrJoin('class', 'yfm-tab-group');\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (orientation === 'radio') {\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n tabOpen.attrJoin('class', VERTICAL_TAB_CLASSNAME);\n }\n\n if (isTabActive) {\n if (orientation === 'radio') {\n tabOpen.attrSet(TAB_FORCED_OPEN, 'true');\n verticalTabInput.attrSet('checked', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n } else {\n tabOpen.attrSet(TAB_ACTIVE_KEY, i === 0 ? 'true' : 'false');\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n tabOpen.attrSet('aria-selected', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n }\n\n if (orientation === 'radio') {\n tabsTokens.push(\n tabOpen,\n verticalTabInput,\n verticalTabLabelOpen,\n tabInline,\n verticalTabLabelClose,\n tabClose,\n );\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n } else {\n tabListTokens.push(tabOpen, tabInline, tabClose);\n tabPanelsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n }\n\n tabsTokens.push(tabsOpen);\n tabsTokens.push(tabListOpen);\n tabsTokens.push(...tabListTokens);\n tabsTokens.push(tabListClose);\n tabsTokens.push(...tabPanelsTokens);\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_RADIO_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_DATA_VERTICAL_TAB,\n TAB_FORCED_OPEN,\n TAB_GROUP_CLASSNAME,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const radio: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const tabsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_RADIO_CLASSNAME].filter(Boolean).join(' '),\n );\n\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, 'radio');\n tabsTokens.push(tabsOpen);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const verticalTabInput = new state.Token('tab-input', 'input', 0);\n const verticalTabLabelOpen = new state.Token('tab-label_open', 'label', 1);\n const verticalTabLabelClose = new state.Token('tab-label_close', 'label', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('radio');\n\n verticalTabInput.block = true;\n\n verticalTabInput.attrJoin('class', 'radio');\n verticalTabInput.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet(\n 'class',\n [TAB_CLASSNAME, TAB_GROUP_CLASSNAME, VERTICAL_TAB_CLASSNAME].join(' '),\n );\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n\n if (didTabHasActiveAttr) {\n tabOpen.attrSet(TAB_FORCED_OPEN, 'true');\n verticalTabInput.attrSet('checked', 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n tabsTokens.push(\n tabOpen,\n verticalTabInput,\n verticalTabLabelOpen,\n tabInline,\n verticalTabLabelClose,\n tabClose,\n );\n\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_DROPDOWN_CLASSNAME,\n TABS_DROPDOWN_MENU_CLASSNAME,\n TABS_DROPDOWN_SELECT,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_PANEL_CLASSNAME,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const dropdown: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const dropdownTokens = [];\n const dropdownOpen = new state.Token('dropdown_open', 'div', 1);\n const dropdownClose = new state.Token('dropdown_close', 'div', -1);\n const dropdownSelectOpen = new state.Token('dropdown-select_open', 'div', 1);\n const dropdownSelectInline = new state.Token('inline', '', 0);\n const dropdownSelectText = new state.Token('text', '', 0);\n const dropdownSelectClose = new state.Token('dropdown-select_open', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n dropdownOpen.block = true;\n dropdownClose.block = true;\n dropdownSelectOpen.block = true;\n dropdownSelectClose.block = true;\n\n const [activeTab, ...restActiveTabs] = tabs.filter(isTabSelected);\n\n if (restActiveTabs.length) {\n throw new Error('Unable to dropdown tabs with more than 1 active element');\n }\n\n dropdownOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_DROPDOWN_CLASSNAME].filter(Boolean).join(' '),\n );\n\n dropdownOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n dropdownOpen.attrSet(TAB_DATA_VARIANT, 'dropdown');\n\n dropdownSelectOpen.attrSet('role', 'tablist');\n dropdownSelectOpen.attrSet('class', TABS_DROPDOWN_SELECT);\n\n if (activeTab) {\n dropdownSelectOpen.attrJoin('class', 'filled');\n }\n\n dropdownSelectText.content = activeTab ? activeTab.name : '-';\n dropdownSelectInline.children = [dropdownSelectText];\n\n dropdownTokens.push(\n dropdownOpen,\n dropdownSelectOpen,\n dropdownSelectInline,\n dropdownSelectClose,\n );\n\n const dropdownMenuOpen = new state.Token('dropdown-menu_open', 'ul', 1);\n const dropdownMenuClose = new state.Token('dropdown-menu_close', 'ul', -1);\n\n dropdownMenuOpen.attrSet('class', TABS_DROPDOWN_MENU_CLASSNAME);\n\n const tabIds = tabs.map((tab) => getTabId(tab, {runId}));\n\n const menuTokens = tabs.flatMap((tab, i) => {\n const menuListItemOpen = new state.Token('dropdown-menu-item_open', 'li', 1);\n const menuListItemClose = new state.Token('dropdown-menu-item_close', 'li', -1);\n const menuListItemText = new state.Token('text', '', 0);\n const menuListItemInline = new state.Token('inline', '', 0);\n\n const tabId = tabIds[i];\n const tabKey = getTabKey(tab);\n const isActive = tab === activeTab;\n\n menuListItemOpen.attrSet(\n 'class',\n [TAB_CLASSNAME, isActive && ACTIVE_CLASSNAME].filter(Boolean).join(' '),\n );\n menuListItemOpen.attrSet(TAB_DATA_ID, tabId);\n menuListItemOpen.attrSet(TAB_DATA_KEY, tabKey);\n menuListItemOpen.attrSet('aria-selected', String(isActive));\n\n menuListItemText.content = tab.name;\n menuListItemInline.children = [menuListItemText];\n\n return [menuListItemOpen, menuListItemInline, menuListItemClose];\n });\n\n dropdownTokens.push(dropdownMenuOpen, ...menuTokens, dropdownMenuClose);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n const tab = tabs[i];\n const tabId = tabIds[i];\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('dropdown');\n\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (didTabHasActiveAttr) {\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n dropdownTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n dropdownTokens.push(dropdownClose);\n\n return dropdownTokens;\n};\n", "import type StateCore from 'markdown-it/lib/rules_core/state_core';\n\nimport {\n ACTIVE_CLASSNAME,\n GROUP_DATA_KEY,\n TABS_ACCORDION_CLASSNAME,\n TABS_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_FORCED_OPEN,\n TAB_GROUP_CLASSNAME,\n TAB_PANEL_CLASSNAME,\n TabsVariants,\n} from '../../common';\nimport {getContentMap, getName, getTabId, getTabKey, isTabSelected} from '../utils';\nimport {type RuntimeTab} from '../types';\n\nimport {type TabsTokensGenerator} from './types';\n\nexport const accordion: TabsTokensGenerator = (\n tabs: RuntimeTab[],\n state: StateCore,\n {containerClasses, tabsGroup, runId, generateID},\n) => {\n const tabsTokens = [];\n const tabsOpen = new state.Token('tabs_open', 'div', 1);\n const tabsClose = new state.Token('tabs_close', 'div', -1);\n\n if (tabs.length) {\n const [start] = tabs[0].listItem.map ?? [null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (start == null) {\n throw new Error('failed to parse line mapping');\n }\n\n const [_, end] = tabs[tabs.length - 1].listItem.map ?? [null, null];\n // eslint-disable-next-line no-eq-null, eqeqeq\n if (end == null) {\n throw new Error('failed to parse line mapping');\n }\n }\n\n tabsOpen.block = true;\n tabsClose.block = true;\n\n const activeTabsCount = tabs.filter(isTabSelected).length;\n\n if (activeTabsCount > 1) {\n throw new Error('Unable to render tabs with more than 1 active element');\n }\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, TABS_ACCORDION_CLASSNAME].filter(Boolean).join(' '),\n );\n\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabsOpen.attrSet(TAB_DATA_VARIANT, TabsVariants.Accordion);\n tabsTokens.push(tabsOpen);\n\n for (let i = 0; i < tabs.length; i++) {\n const tabOpen = new state.Token('tab_open', 'div', 1);\n const tabInline = new state.Token('inline', '', 0);\n const tabText = new state.Token('text', '', 0);\n const tabClose = new state.Token('tab_close', 'div', -1);\n const tabPanelOpen = new state.Token('tab-panel_open', 'div', 1);\n const tabPanelClose = new state.Token('tab-panel_close', 'div', -1);\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n\n const tab = tabs[i];\n const tabId = getTabId(tab, {runId});\n const tabKey = getTabKey(tab);\n const didTabHasActiveAttr = isTabSelected(tab);\n\n tab.name = getName(tab);\n\n const tabPanelId = generateID('accordion');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\n tabPanelOpen.map = getContentMap(tabs[i].tokens);\n tabText.content = tabs[i].name;\n tabInline.children = [tabText];\n tabOpen.block = true;\n tabClose.block = true;\n tabPanelOpen.block = true;\n tabPanelClose.block = true;\n tabOpen.attrSet(TAB_DATA_ID, tabId);\n tabOpen.attrSet(TAB_DATA_KEY, tabKey);\n tabOpen.attrSet('class', [TAB_CLASSNAME, TAB_GROUP_CLASSNAME].join(' '));\n tabOpen.attrSet('role', 'tab');\n tabOpen.attrSet('aria-controls', tabPanelId);\n tabOpen.attrSet('aria-selected', 'false');\n tabOpen.attrSet('tabindex', i === 0 ? '0' : '-1');\n tabOpen.attrSet(TAB_ACTIVE_KEY, 'false');\n tabPanelOpen.attrSet('id', tabPanelId);\n tabPanelOpen.attrSet('class', TAB_PANEL_CLASSNAME);\n tabPanelOpen.attrSet('role', 'tabpanel');\n tabPanelOpen.attrSet('aria-labelledby', tabId);\n tabPanelOpen.attrSet('data-title', tab.name);\n\n if (didTabHasActiveAttr) {\n tabPanelOpen.attrSet(TAB_FORCED_OPEN, 'true');\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n tabsTokens.push(tabOpen, tabInline, tabClose);\n\n tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);\n }\n\n tabsTokens.push(tabsClose);\n\n return tabsTokens;\n};\n", "/**\n * Variant registry: maps TabsVariants to the function that generates HTML tokens for that variant.\n */\nimport type {TabsVariants} from '../../common';\nimport type {TabsTokensGenerator} from './types';\n\nimport {regular} from './regular';\nimport {radio} from './radio';\nimport {dropdown} from './dropdown';\nimport {accordion} from './accordion';\n\nconst generateByType: Record<TabsVariants, TabsTokensGenerator> = {\n regular,\n radio,\n dropdown,\n accordion,\n};\n\n/**\n * Returns the token generator for the given variant.\n * @param type - Variant name\n * @returns Generator function for that variant\n */\nexport const generateTokensByType = (type: TabsVariants): TabsTokensGenerator => {\n return generateByType[type];\n};\n", "import type Token from 'markdown-it/lib/token';\nimport type StateCore from 'markdown-it/lib/rules_core/state_core';\nimport type {RuntimeTab} from './types';\nimport type {TabsGenerationProps} from './variants/types';\n\nimport {generateTokensByType} from './variants';\n\n/**\n * Generate markdown-it tokens for a tabs block based on the chosen variant.\n * Delegates to the variant-specific generator (regular, radio, dropdown, accordion).\n * @param tabs - Parsed tab items\n * @param state - MarkdownIt state\n * @param props - Generation options (containerClasses, tabsGroup, runId, variant)\n * @returns Token array for the block\n */\nexport function generateTabsTokens(\n tabs: RuntimeTab[],\n state: StateCore,\n props: TabsGenerationProps,\n): Token[] {\n const tokens = generateTokensByType(props.variant)(tabs, state, props);\n\n return tokens;\n}\n", "/**\n * Parsing of `{% list tabs %}` blocks: locate open/close tags, parse props, and extract tab items\n * from the list tokens between them.\n */\nimport type {RuntimeTab, TabsProps} from './types';\nimport type {IDGenerator} from '@diplodoc/utils';\n\nimport Token from 'markdown-it/lib/token';\n\nimport {DEFAULT_TABS_GROUP_PREFIX, TAB_RE, TabsVariants} from '../common';\n\nimport {trim, unquote} from './utils';\n\n/**\n * Find the token index of the matching `{% endlist %}` for a list starting at idx.\n * @param tokens - Full token list\n * @param idx - Start index\n * @returns Index of close token or null\n */\nfunction findCloseTokenIndex(tokens: Token[], idx: number): number | null {\n let level = 0;\n let i = idx;\n while (i < tokens.length) {\n if (matchOpenToken(tokens, i)) {\n level++;\n } else if (matchCloseToken(tokens, i)) {\n if (level === 0) {\n return i;\n }\n level--;\n }\n\n i++;\n }\n\n return null;\n}\n\nfunction matchCloseToken(tokens: Token[], i: number): boolean {\n return (\n tokens[i].type === 'paragraph_open' &&\n tokens[i + 1].type === 'inline' &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n );\n}\n\nfunction matchOpenToken(tokens: Token[], i: number): RegExpMatchArray | null {\n if (tokens[i].type !== 'paragraph_open' || tokens[i + 1].type !== 'inline') {\n return null;\n }\n return tokens[i + 1].content.match(TAB_RE);\n}\n\n/**\n * Parse `{% list tabs group=... %}` content into variant and group id.\n * @param content - Raw tag content after \"list tabs\"\n * @param generateID - per-file isolated ID generator used for default group id\n * @returns Parsed props (variant, group)\n */\nexport function props(content: string, generateID: IDGenerator): TabsProps {\n const clean = trim(content.replace('list tabs', ''));\n\n const props = clean.split(' ');\n const result: TabsProps = {\n content: clean,\n variant: TabsVariants.Regular,\n // DEFAULT_TABS_GROUP_PREFIX ends with '-', so strip it before passing to generateID\n // which appends '-N' itself. Result: 'defaultTabsGroup-1', 'defaultTabsGroup-2', \u2026\n // TabsController checks group.startsWith(DEFAULT_TABS_GROUP_PREFIX) which still matches.\n group: generateID(DEFAULT_TABS_GROUP_PREFIX.replace(/-$/, '')),\n };\n\n for (const prop of props) {\n const [key, value] = prop.split('=').map(trim);\n\n switch (key) {\n case 'horizontal':\n case 'radio':\n case 'dropdown':\n case 'accordion':\n result.variant = key as TabsVariants;\n break;\n case 'group':\n result.group = unquote(value);\n break;\n default:\n // TODO: lint unknown tabs props\n }\n }\n\n return result;\n}\n\ntype Result =\n | {step: number}\n | {\n content: string;\n closeTokenIndex: number;\n extraTokensAfterClose: number;\n };\n\n/**\n * Check if tokens at index start a valid `{% list tabs %}` block.\n * @param tokens - Full token list\n * @param index - Start index\n * @returns Either a step to advance, or the block content and close index for replacement\n */\nexport function tryToFindTabs(tokens: Token[], index: number): Result {\n const match = matchOpenToken(tokens, index);\n const openTag = match && match[0];\n const isNotEscaped = openTag && !(openTag.startsWith('`') && openTag.endsWith('`'));\n\n if (!match || !isNotEscaped) {\n return {\n step: 1,\n };\n }\n\n const closeTokenIndex = findCloseTokenIndex(tokens, index + 3);\n\n if (!closeTokenIndex) {\n tokens[index].attrSet('YFM005', 'true');\n\n return {\n step: 3,\n };\n }\n\n let extraTokensAfterClose = 0;\n const afterEndlistIdx = closeTokenIndex + 3; // After paragraph_open, inline, paragraph_close\n\n const openTokenLevel = tokens[index].level;\n const closeTokenLevel = tokens[closeTokenIndex].level;\n\n // dont handle tabs if closeToken has \"negative\" indent, e.g. closeToken.level < openToken.level\n if (closeTokenLevel < openTokenLevel) {\n tokens[index].attrSet('YFM005', 'true');\n return {\n step: 3,\n };\n }\n\n if (closeTokenLevel > openTokenLevel) {\n const tokenAfter = tokens[afterEndlistIdx];\n\n // do not handle tabs unless {% endlist %} is at the end of the tab content\n if (tokenAfter && tokenAfter.nesting >= 0) {\n tokens[index].attrSet('YFM005', 'true');\n return {\n step: 3,\n };\n }\n\n // remove list close tokens if `{% endlist %}` is inside the content of a tab\n if (\n tokenAfter?.type === 'list_item_close' &&\n tokens[afterEndlistIdx + 1]?.type === 'bullet_list_close'\n ) {\n extraTokensAfterClose = 2;\n }\n }\n\n return {\n content: openTag,\n closeTokenIndex,\n extraTokensAfterClose,\n };\n}\n\n/**\n * Extract tab items (name + tokens) from list tokens between list open and close/endlist.\n * @param tokens - Full token list\n * @param idx - Index after list open\n * @param closeTokenIdx - Index of {% endlist %} paragraph\n * @returns Array of RuntimeTab\n */\nexport function findTabs(tokens: Token[], idx: number, closeTokenIdx: number): RuntimeTab[] {\n const tabs: RuntimeTab[] = [];\n let i = idx;\n let nestedLevel = -1;\n let pending: RuntimeTab = {\n name: '',\n tokens: [],\n listItem: new Token('list_item_open', '', 0),\n };\n\n while (i < tokens.length) {\n const token = tokens[i];\n\n switch (token.type) {\n case 'ordered_list_open':\n case 'bullet_list_open':\n if (nestedLevel > -1) {\n pending.tokens.push(token);\n }\n\n nestedLevel++;\n\n break;\n case 'list_item_open':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n pending = {name: '', tokens: [], listItem: token};\n }\n\n break;\n case 'list_item_close':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n tabs.push(pending);\n }\n\n break;\n case 'ordered_list_close':\n case 'bullet_list_close':\n // The tab list may be interrupted by a dedented block (e.g. a heading)\n // and continue as a new list before {% endlist %}. Keep collecting until\n // {% endlist %}, otherwise transform() would drop everything in between.\n if (nestedLevel) {\n pending.tokens.push(token);\n }\n\n nestedLevel--;\n\n break;\n case 'paragraph_open':\n if (\n i === closeTokenIdx &&\n tokens[i + 1].content &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n ) {\n if (pending && !nestedLevel) {\n tabs.push(pending);\n }\n\n return tabs;\n }\n\n if (!pending.name && tokens[i + 1].type === 'inline') {\n pending.name = tokens[i + 1].content;\n\n i += 2;\n } else {\n pending.tokens.push(token);\n }\n break;\n default:\n pending.tokens.push(token);\n }\n i++;\n }\n\n return tabs;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__export", "__copyProps", "__toCommonJS", "createIDGeneratorByStrategy", "_a", "exports", "module", "exports", "module", "exports", "module", "trim", "transform", "import_utils", "slugify", "GithubSlugger", "props", "props", "Token", "onBundle", "tabs", "transform"]
|
|
7
7
|
}
|