@diplodoc/tabs-extension 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,7 @@ Attach the plugin to the transformer:
16
16
 
17
17
  ```js
18
18
  import tabsExtension from '@diplodoc/tabs-extension';
19
- import transform from '@doc-tools/transform';
19
+ import transform from '@diplodoc/transform';
20
20
 
21
21
  const {result} = await transform(`
22
22
  {% list tabs %}
@@ -58,7 +58,7 @@ import '@diplodoc/tabs-extension/runtime/styles.css'
58
58
 
59
59
  ## MarkdownIt transform plugin
60
60
 
61
- Plugin for [@doc-tools/transform](https://github.com/diplodoc-platform/transform) package.
61
+ Plugin for [@diplodoc/transform](https://github.com/diplodoc-platform/transform) package.
62
62
 
63
63
  Options:
64
64
  - `runtimeJsPath` - name on runtime script which will be exposed in results `script` section.<br>
@@ -103,7 +103,7 @@ Example:
103
103
  Additionally, you can use radiobatons using a contruction
104
104
 
105
105
  ```
106
- {% list tabs vertical %}
106
+ {% list tabs radio %}
107
107
 
108
108
  - Tab 1
109
109
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@diplodoc/tabs-extension",
3
- "version": "2.2.0",
4
- "description": "TBD",
3
+ "version": "3.0.0",
4
+ "description": "Tabs plugin for Diplodoc transformer and builder",
5
5
  "main": "plugin/index.js",
6
6
  "types": "plugin/index.d.ts",
7
7
  "exports": {
package/plugin/index.js CHANGED
@@ -183,7 +183,7 @@ var DEFAULT_TABS_GROUP_PREFIX = "defaultTabsGroup-";
183
183
  var GLOBAL_SYMBOL = Symbol.for("diplodocTabs");
184
184
 
185
185
  // src/plugin/transform.ts
186
- var TAB_RE = /`?{% list tabs( group=([^ ]*))?( (vertical)|(horizontal))? %}`?/;
186
+ var TAB_RE = /`?{% list tabs( group=([^ ]*))?( (radio)|(horizontal))? %}`?/;
187
187
  var runsCounter = 0;
188
188
  function findTabs(tokens, idx) {
189
189
  const tabs = [];
@@ -275,7 +275,7 @@ function insertTabs(tabs, state, align, { start, end }, {
275
275
  tabsClose.block = true;
276
276
  tabListOpen.block = true;
277
277
  tabListClose.block = true;
278
- const areTabsVerticalClass = align === "vertical" && TABS_VERTICAL_CLASSNAME;
278
+ const areTabsVerticalClass = align === "radio" && TABS_VERTICAL_CLASSNAME;
279
279
  tabsOpen.attrSet(
280
280
  "class",
281
281
  [TABS_CLASSNAME, containerClasses, areTabsVerticalClass].filter(Boolean).join(" ")
@@ -283,7 +283,7 @@ function insertTabs(tabs, state, align, { start, end }, {
283
283
  tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);
284
284
  tabListOpen.attrSet("class", TABS_LIST_CLASSNAME);
285
285
  tabListOpen.attrSet("role", "tablist");
286
- if (align === "vertical") {
286
+ if (align === "radio") {
287
287
  tabsTokens.push(tabsOpen);
288
288
  }
289
289
  for (let i = 0; i < tabs.length; i++) {
@@ -327,7 +327,7 @@ function insertTabs(tabs, state, align, { start, end }, {
327
327
  tabPanelOpen.attrSet("role", "tabpanel");
328
328
  tabPanelOpen.attrSet("aria-labelledby", tabId);
329
329
  tabPanelOpen.attrSet("data-title", tab.name);
330
- if (align === "vertical") {
330
+ if (align === "radio") {
331
331
  tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, "true");
332
332
  tabOpen.attrJoin("class", VERTICAL_TAB_CLASSNAME);
333
333
  }
@@ -340,7 +340,7 @@ function insertTabs(tabs, state, align, { start, end }, {
340
340
  }
341
341
  tabPanelOpen.attrJoin("class", ACTIVE_CLASSNAME);
342
342
  }
343
- if (align === "vertical") {
343
+ if (align === "radio") {
344
344
  tabsTokens.push(tabOpen, verticalTabOpen, verticalTabLabelOpen, tabInline, tabClose);
345
345
  tabsTokens.push(tabPanelOpen, ...tabs[i].tokens, tabPanelClose);
346
346
  } else {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/github-slugger/regex.js", "../node_modules/github-slugger/index.js", "../src/plugin/index.ts", "../src/plugin/transform.ts", "../src/plugin/utils.ts", "../src/plugin/copyRuntimeFiles.ts", "../src/plugin/getTabId.ts", "../src/common.ts"],
4
- "sourcesContent": ["// 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", "export {transform} from './transform';\n", "import MarkdownIt from 'markdown-it';\nimport StateCore from 'markdown-it/lib/rules_core/state_core';\nimport Token from 'markdown-it/lib/token';\n\nimport {addHiddenProperty, generateID} from './utils';\nimport {copyRuntimeFiles} from './copyRuntimeFiles';\nimport {getName, getTabId, getTabKey} from './getTabId';\nimport {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VERTICAL_TAB,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../common';\n\nexport type PluginOptions = {\n runtimeJsPath: string;\n runtimeCssPath: string;\n containerClasses: string;\n bundle: boolean;\n};\n\nexport type TabsOrientation = 'vertical' | 'horizontal';\n\nconst TAB_RE = /`?{% list tabs( group=([^ ]*))?( (vertical)|(horizontal))? %}`?/;\n\nlet runsCounter = 0;\n\nexport type Tab = {\n name: string;\n tokens: Token[];\n listItem: Token;\n};\n\ntype TransformOptions = {\n output?: string;\n};\n\nfunction findTabs(tokens: Token[], idx: number) {\n const tabs = [];\n let i = idx,\n nestedLevel = -1,\n pending: Tab = {name: '', tokens: [], listItem: new Token('list_item_open', '', 0)};\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 nestedLevel++;\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 break;\n case 'list_item_close':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n tabs.push(pending);\n }\n break;\n case 'ordered_list_close':\n case 'bullet_list_close':\n if (!nestedLevel) {\n return {\n tabs,\n index: i,\n };\n }\n\n nestedLevel--;\n\n pending.tokens.push(token);\n\n break;\n case 'paragraph_open':\n if (\n !pending &&\n tokens[i + 1].content &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n ) {\n return {\n tabs,\n index: i + 2,\n };\n }\n\n if (!pending.name && tokens[i + 1].type === 'inline') {\n pending.name = tokens[i + 1].content;\n i += 2;\n } else {\n pending.tokens.push(token);\n }\n break;\n default:\n pending.tokens.push(token);\n }\n\n i++;\n }\n\n return {\n tabs,\n index: i,\n };\n}\n\nfunction insertTabs(\n tabs: Tab[],\n state: StateCore,\n align: TabsOrientation,\n {start, end}: {start: number; end: number},\n {\n containerClasses,\n tabsGroup,\n runId,\n }: {containerClasses: string; tabsGroup: string; runId: string},\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 areTabsVerticalClass = align === 'vertical' && TABS_VERTICAL_CLASSNAME;\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, areTabsVerticalClass].filter(Boolean).join(' '),\n );\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabListOpen.attrSet('class', TABS_LIST_CLASSNAME);\n tabListOpen.attrSet('role', 'tablist');\n\n if (align === 'vertical') {\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 verticalTabOpen = new state.Token('tab_open', 'input', 0);\n const verticalTabLabelOpen = new state.Token('label_open', '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 tab.name = getName(tab);\n\n const tabPanelId = generateID();\n\n verticalTabOpen.block = true;\n\n verticalTabOpen.attrJoin('class', 'radio');\n verticalTabOpen.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\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(TAB_ACTIVE_KEY, i === 0 ? 'true' : 'false');\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 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 (align === 'vertical') {\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n tabOpen.attrJoin('class', VERTICAL_TAB_CLASSNAME);\n }\n\n if (i === 0) {\n if (align === 'horizontal') {\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n tabOpen.attrSet('aria-selected', 'true');\n } else {\n verticalTabOpen.attrSet('checked', 'true');\n }\n\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n if (align === 'vertical') {\n tabsTokens.push(tabOpen, verticalTabOpen, verticalTabLabelOpen, tabInline, tabClose);\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 if (align === 'horizontal') {\n tabsTokens.push(tabsOpen);\n tabsTokens.push(tabListOpen);\n tabsTokens.push(...tabListTokens);\n tabsTokens.push(tabListClose);\n tabsTokens.push(...tabPanelsTokens);\n }\n\n tabsTokens.push(tabsClose);\n\n state.tokens.splice(start, end - start + 1, ...tabsTokens);\n\n return tabsTokens.length;\n}\n\nfunction findCloseTokenIdx(tokens: Token[], idx: number) {\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) {\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) {\n return (\n tokens[i].type === 'paragraph_open' &&\n tokens[i + 1].type === 'inline' &&\n tokens[i + 1].content.match(TAB_RE)\n );\n}\n\nexport function transform({\n runtimeJsPath = '_assets/tabs-extension.js',\n runtimeCssPath = '_assets/tabs-extension.css',\n containerClasses = '',\n bundle = true,\n}: Partial<PluginOptions> = {}) {\n return function tabs(md: MarkdownIt, options?: TransformOptions) {\n const {output = '.'} = options || {};\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 match = matchOpenToken(tokens, i);\n const openTag = match && match[0];\n const isNotEscaped = openTag && !(openTag.startsWith('`') && openTag.endsWith('`'));\n\n if (!match || !isNotEscaped) {\n i++;\n continue;\n }\n\n const closeTokenIdx = findCloseTokenIdx(tokens, i + 3);\n\n if (!closeTokenIdx) {\n tokens[i].attrSet('YFM005', 'true');\n i += 3;\n continue;\n }\n\n const tabsGroup = match[2] || `${DEFAULT_TABS_GROUP_PREFIX}${generateID()}`;\n const orientation = (match[4] || 'horizontal') as TabsOrientation;\n\n const {tabs, index} = findTabs(state.tokens, i + 3);\n\n if (tabs.length > 0) {\n insertTabs(\n tabs,\n state,\n orientation,\n {start: i, end: index + 3},\n {\n containerClasses,\n tabsGroup,\n runId,\n },\n );\n i++;\n tabsAreInserted = true;\n } else {\n state.tokens.splice(i, index - i);\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) {\n copyRuntimeFiles({runtimeJsPath, runtimeCssPath, output}, env.bundled);\n }\n }\n };\n\n try {\n md.core.ruler.before('curly_attributes', 'tabs', plugin);\n } catch (e) {\n md.core.ruler.push('tabs', plugin);\n }\n };\n}\n", "export function generateID() {\n const id = Math.random().toString(36).substr(2, 8);\n return id.substring(id.length - 8);\n}\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) {\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", "const PATH_TO_RUNTIME = '../runtime';\n\nexport function copyRuntimeFiles(\n {\n runtimeJsPath,\n runtimeCssPath,\n output,\n }: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n) {\n const {join, resolve} = dynrequire('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} = dynrequire('node:fs');\n const {dirname} = dynrequire('node:path');\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n\n/*\n * Runtime require hidden for builders.\n * Used for nodejs api\n */\nfunction dynrequire(module: string) {\n // eslint-disable-next-line no-eval\n return eval(`require('${module}')`);\n}\n", "import GithubSlugger from 'github-slugger';\n\nimport {Tab} from './transform';\n\nconst CUSTOM_ID_REGEXP = /\\[?{ ?#(\\S+) ?}]?/;\n\nconst sluggersStorage = new Map<string, GithubSlugger>();\n\nfunction parseName(name: string) {\n const parts = name.match(CUSTOM_ID_REGEXP);\n if (!parts) {\n return {\n name,\n customAnchor: null,\n };\n }\n\n return {\n name: name.replace(parts[0], '').trim(),\n customAnchor: parts[1],\n };\n}\n\nexport function getTabId(tab: Tab, {runId}: {runId: 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\nexport function getTabKey(tab: Tab) {\n return encodeURIComponent(getRawId(tab)).toLocaleLowerCase();\n}\n\nexport function getName(tab: Tab) {\n return parseName(tab.name).name;\n}\n\nfunction getRawId(tab: Tab): string {\n return parseName(tab.name).customAnchor || tab.name;\n}\n", "import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,yCAAAA,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;AAAa,eAAO,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;AAAU,eAAO;AACvC,UAAI,CAAC;AAAc,iBAAS,OAAO,YAAY;AAC/C,aAAO,OAAO,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,GAAG;AAAA,IACpD;AAEA,eAAW,OAAO;AAAA;AAAA;;;ACjDlB;AAAA;AAAA;AAAA;AAAA;;;ACEA,mBAAkB;;;ACFX,SAAS,aAAa;AACzB,QAAM,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AACjD,SAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AACrC;AAEO,SAAS,kBAId,KAAQ,OAAU,OAAU;AAC1B,MAAI,EAAE,SAAS,MAAM;AACjB,WAAO,eAAe,KAAK,OAAO;AAAA,MAC9B,YAAY;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;;;AClBA,IAAM,kBAAkB;AAEjB,SAAS,iBACZ;AAAA,EACI;AAAA,EACA;AAAA,EACA;AACJ,GACA,OACF;AACE,QAAM,EAAC,MAAM,QAAO,IAAI,WAAW,WAAW;AAC9C,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,WAAW,SAAS;AACtD,QAAM,EAAC,QAAO,IAAI,WAAW,WAAW;AACxC,YAAU,QAAQ,EAAE,GAAG,EAAC,WAAW,KAAI,CAAC;AACxC,eAAa,MAAM,EAAE;AACzB;AAMA,SAAS,WAAW,QAAgB;AAEhC,SAAO,KAAK,YAAY,MAAM,IAAI;AACtC;;;ACtCA,4BAA0B;AAI1B,IAAM,mBAAmB;AAEzB,IAAM,kBAAkB,oBAAI,IAA2B;AAEvD,SAAS,UAAU,MAAc;AAC7B,QAAM,QAAQ,KAAK,MAAM,gBAAgB;AACzC,MAAI,CAAC,OAAO;AACR,WAAO;AAAA,MACH;AAAA,MACA,cAAc;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,MAAM,KAAK,QAAQ,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK;AAAA,IACtC,cAAc,MAAM,CAAC;AAAA,EACzB;AACJ;AAEO,SAAS,SAAS,KAAU,EAAC,MAAK,GAAoB;AACzD,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;AAEO,SAAS,UAAU,KAAU;AAChC,SAAO,mBAAmB,SAAS,GAAG,CAAC,EAAE,kBAAkB;AAC/D;AAEO,SAAS,QAAQ,KAAU;AAC9B,SAAO,UAAU,IAAI,IAAI,EAAE;AAC/B;AAEA,SAAS,SAAS,KAAkB;AAChC,SAAO,UAAU,IAAI,IAAI,EAAE,gBAAgB,IAAI;AACnD;;;ACxCO,IAAM,iBAAiB;AACvB,IAAM,0BAA0B;AAChC,IAAM,sBAAsB;AAC5B,IAAM,gBAAgB;AACtB,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB;AACzB,IAAM,yBAAyB;AAE/B,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAM,cAAc;AACpB,IAAM,wBAAwB;AAC9B,IAAM,iBAAiB;AAGvB,IAAM,4BAA4B;AAalC,IAAM,gBAA+B,OAAO,IAAI,cAAc;;;AJCrE,IAAM,SAAS;AAEf,IAAI,cAAc;AAYlB,SAAS,SAAS,QAAiB,KAAa;AAC5C,QAAM,OAAO,CAAC;AACd,MAAI,IAAI,KACJ,cAAc,IACd,UAAe,EAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,UAAU,IAAI,aAAAC,QAAM,kBAAkB,IAAI,CAAC,EAAC;AAEtF,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;AACA;AACA;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;AACA;AAAA,MACJ,KAAK;AACD,YAAI,aAAa;AACb,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B,OAAO;AACH,eAAK,KAAK,OAAO;AAAA,QACrB;AACA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AACD,YAAI,CAAC,aAAa;AACd,iBAAO;AAAA,YACH;AAAA,YACA,OAAO;AAAA,UACX;AAAA,QACJ;AAEA;AAEA,gBAAQ,OAAO,KAAK,KAAK;AAEzB;AAAA,MACJ,KAAK;AACD,YACI,CAAC,WACD,OAAO,IAAI,CAAC,EAAE,WACd,OAAO,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM,iBACnC;AACE,iBAAO;AAAA,YACH;AAAA,YACA,OAAO,IAAI;AAAA,UACf;AAAA,QACJ;AAEA,YAAI,CAAC,QAAQ,QAAQ,OAAO,IAAI,CAAC,EAAE,SAAS,UAAU;AAClD,kBAAQ,OAAO,OAAO,IAAI,CAAC,EAAE;AAC7B,eAAK;AAAA,QACT,OAAO;AACH,kBAAQ,OAAO,KAAK,KAAK;AAAA,QAC7B;AACA;AAAA,MACJ;AACI,gBAAQ,OAAO,KAAK,KAAK;AAAA,IACjC;AAEA;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA,OAAO;AAAA,EACX;AACJ;AAEA,SAAS,WACL,MACA,OACA,OACA,EAAC,OAAO,IAAG,GACX;AAAA,EACI;AAAA,EACA;AAAA,EACA;AACJ,GACF;AArIF;AAsII,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,CAACC,MAAK,KAAI,UAAK,CAAC,EAAE,SAAS,QAAjB,YAAwB,CAAC,IAAI;AAE7C,QAAIA,UAAS,MAAM;AACf,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,CAAC,GAAGC,IAAG,KAAI,UAAK,KAAK,SAAS,CAAC,EAAE,SAAS,QAA/B,YAAsC,CAAC,MAAM,IAAI;AAElE,QAAIA,QAAO,MAAM;AACb,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,gBAAY,MAAM,CAACD,QAAOC,IAAG;AAAA,EACjC;AAEA,WAAS,QAAQ;AACjB,YAAU,QAAQ;AAClB,cAAY,QAAQ;AACpB,eAAa,QAAQ;AAErB,QAAM,uBAAuB,UAAU,cAAc;AAErD,WAAS;AAAA,IACL;AAAA,IACA,CAAC,gBAAgB,kBAAkB,oBAAoB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACrF;AACA,WAAS,QAAQ,gBAAgB,SAAS;AAC1C,cAAY,QAAQ,SAAS,mBAAmB;AAChD,cAAY,QAAQ,QAAQ,SAAS;AAErC,MAAI,UAAU,YAAY;AACtB,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,kBAAkB,IAAI,MAAM,MAAM,YAAY,SAAS,CAAC;AAC9D,UAAM,uBAAuB,IAAI,MAAM,MAAM,cAAc,SAAS,CAAC;AAErE,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,QAAI,OAAO,QAAQ,GAAG;AAEtB,UAAM,aAAa,WAAW;AAE9B,oBAAgB,QAAQ;AAExB,oBAAgB,SAAS,SAAS,OAAO;AACzC,oBAAgB,QAAQ,QAAQ,OAAO;AAEvC,YAAQ,MAAM,KAAK,CAAC,EAAE,SAAS;AAC/B,YAAQ,SAAS,KAAK,CAAC,EAAE,SAAS;AAClC,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,gBAAgB,MAAM,IAAI,SAAS,OAAO;AAC1D,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,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,UAAU,YAAY;AACtB,cAAQ,QAAQ,uBAAuB,MAAM;AAC7C,cAAQ,SAAS,SAAS,sBAAsB;AAAA,IACpD;AAEA,QAAI,MAAM,GAAG;AACT,UAAI,UAAU,cAAc;AACxB,gBAAQ,SAAS,SAAS,gBAAgB;AAC1C,gBAAQ,QAAQ,iBAAiB,MAAM;AAAA,MAC3C,OAAO;AACH,wBAAgB,QAAQ,WAAW,MAAM;AAAA,MAC7C;AAEA,mBAAa,SAAS,SAAS,gBAAgB;AAAA,IACnD;AAEA,QAAI,UAAU,YAAY;AACtB,iBAAW,KAAK,SAAS,iBAAiB,sBAAsB,WAAW,QAAQ;AACnF,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,MAAI,UAAU,cAAc;AACxB,eAAW,KAAK,QAAQ;AACxB,eAAW,KAAK,WAAW;AAC3B,eAAW,KAAK,GAAG,aAAa;AAChC,eAAW,KAAK,YAAY;AAC5B,eAAW,KAAK,GAAG,eAAe;AAAA,EACtC;AAEA,aAAW,KAAK,SAAS;AAEzB,QAAM,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG,GAAG,UAAU;AAEzD,SAAO,WAAW;AACtB;AAEA,SAAS,kBAAkB,QAAiB,KAAa;AACrD,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,GAAW;AACjD,SACI,OAAO,CAAC,EAAE,SAAS,oBACnB,OAAO,IAAI,CAAC,EAAE,SAAS,YACvB,OAAO,IAAI,CAAC,EAAE,QAAQ,KAAK,MAAM;AAEzC;AAEA,SAAS,eAAe,QAAiB,GAAW;AAChD,SACI,OAAO,CAAC,EAAE,SAAS,oBACnB,OAAO,IAAI,CAAC,EAAE,SAAS,YACvB,OAAO,IAAI,CAAC,EAAE,QAAQ,MAAM,MAAM;AAE1C;AAEO,SAAS,UAAU;AAAA,EACtB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,SAAS;AACb,IAA4B,CAAC,GAAG;AAC5B,SAAO,SAAS,KAAK,IAAgB,SAA4B;AAC7D,UAAM,EAAC,SAAS,IAAG,IAAI,WAAW,CAAC;AACnC,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,QAAQ,eAAe,QAAQ,CAAC;AACtC,cAAM,UAAU,SAAS,MAAM,CAAC;AAChC,cAAM,eAAe,WAAW,EAAE,QAAQ,WAAW,GAAG,KAAK,QAAQ,SAAS,GAAG;AAEjF,YAAI,CAAC,SAAS,CAAC,cAAc;AACzB;AACA;AAAA,QACJ;AAEA,cAAM,gBAAgB,kBAAkB,QAAQ,IAAI,CAAC;AAErD,YAAI,CAAC,eAAe;AAChB,iBAAO,CAAC,EAAE,QAAQ,UAAU,MAAM;AAClC,eAAK;AACL;AAAA,QACJ;AAEA,cAAM,YAAY,MAAM,CAAC,KAAK,GAAG,yBAAyB,GAAG,WAAW,CAAC;AACzE,cAAM,cAAe,MAAM,CAAC,KAAK;AAEjC,cAAM,EAAC,MAAAC,OAAM,MAAK,IAAI,SAAS,MAAM,QAAQ,IAAI,CAAC;AAElD,YAAIA,MAAK,SAAS,GAAG;AACjB;AAAA,YACIA;AAAA,YACA;AAAA,YACA;AAAA,YACA,EAAC,OAAO,GAAG,KAAK,QAAQ,EAAC;AAAA,YACzB;AAAA,cACI;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AACA;AACA,4BAAkB;AAAA,QACtB,OAAO;AACH,gBAAM,OAAO,OAAO,GAAG,QAAQ,CAAC;AAAA,QACpC;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,QAAQ;AACR,2BAAiB,EAAC,eAAe,gBAAgB,OAAM,GAAG,IAAI,OAAO;AAAA,QACzE;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI;AACA,SAAG,KAAK,MAAM,OAAO,oBAAoB,QAAQ,MAAM;AAAA,IAC3D,SAAS,GAAG;AACR,SAAG,KAAK,MAAM,KAAK,QAAQ,MAAM;AAAA,IACrC;AAAA,EACJ;AACJ;",
4
+ "sourcesContent": ["// 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", "export {transform} from './transform';\n", "import MarkdownIt from 'markdown-it';\nimport StateCore from 'markdown-it/lib/rules_core/state_core';\nimport Token from 'markdown-it/lib/token';\n\nimport {addHiddenProperty, generateID} from './utils';\nimport {copyRuntimeFiles} from './copyRuntimeFiles';\nimport {getName, getTabId, getTabKey} from './getTabId';\nimport {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_ACTIVE_KEY,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VERTICAL_TAB,\n TAB_PANEL_CLASSNAME,\n VERTICAL_TAB_CLASSNAME,\n} from '../common';\n\nexport type PluginOptions = {\n runtimeJsPath: string;\n runtimeCssPath: string;\n containerClasses: string;\n bundle: boolean;\n};\n\nexport type TabsOrientation = 'radio' | 'horizontal';\n\nconst TAB_RE = /`?{% list tabs( group=([^ ]*))?( (radio)|(horizontal))? %}`?/;\n\nlet runsCounter = 0;\n\nexport type Tab = {\n name: string;\n tokens: Token[];\n listItem: Token;\n};\n\ntype TransformOptions = {\n output?: string;\n};\n\nfunction findTabs(tokens: Token[], idx: number) {\n const tabs = [];\n let i = idx,\n nestedLevel = -1,\n pending: Tab = {name: '', tokens: [], listItem: new Token('list_item_open', '', 0)};\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 nestedLevel++;\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 break;\n case 'list_item_close':\n if (nestedLevel) {\n pending.tokens.push(token);\n } else {\n tabs.push(pending);\n }\n break;\n case 'ordered_list_close':\n case 'bullet_list_close':\n if (!nestedLevel) {\n return {\n tabs,\n index: i,\n };\n }\n\n nestedLevel--;\n\n pending.tokens.push(token);\n\n break;\n case 'paragraph_open':\n if (\n !pending &&\n tokens[i + 1].content &&\n tokens[i + 1].content.trim() === '{% endlist %}'\n ) {\n return {\n tabs,\n index: i + 2,\n };\n }\n\n if (!pending.name && tokens[i + 1].type === 'inline') {\n pending.name = tokens[i + 1].content;\n i += 2;\n } else {\n pending.tokens.push(token);\n }\n break;\n default:\n pending.tokens.push(token);\n }\n\n i++;\n }\n\n return {\n tabs,\n index: i,\n };\n}\n\nfunction insertTabs(\n tabs: Tab[],\n state: StateCore,\n align: TabsOrientation,\n {start, end}: {start: number; end: number},\n {\n containerClasses,\n tabsGroup,\n runId,\n }: {containerClasses: string; tabsGroup: string; runId: string},\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 areTabsVerticalClass = align === 'radio' && TABS_VERTICAL_CLASSNAME;\n\n tabsOpen.attrSet(\n 'class',\n [TABS_CLASSNAME, containerClasses, areTabsVerticalClass].filter(Boolean).join(' '),\n );\n tabsOpen.attrSet(GROUP_DATA_KEY, tabsGroup);\n tabListOpen.attrSet('class', TABS_LIST_CLASSNAME);\n tabListOpen.attrSet('role', 'tablist');\n\n if (align === '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 verticalTabOpen = new state.Token('tab_open', 'input', 0);\n const verticalTabLabelOpen = new state.Token('label_open', '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 tab.name = getName(tab);\n\n const tabPanelId = generateID();\n\n verticalTabOpen.block = true;\n\n verticalTabOpen.attrJoin('class', 'radio');\n verticalTabOpen.attrSet('type', 'radio');\n\n tabOpen.map = tabs[i].listItem.map;\n tabOpen.markup = tabs[i].listItem.markup;\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(TAB_ACTIVE_KEY, i === 0 ? 'true' : 'false');\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 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 (align === 'radio') {\n tabOpen.attrSet(TAB_DATA_VERTICAL_TAB, 'true');\n tabOpen.attrJoin('class', VERTICAL_TAB_CLASSNAME);\n }\n\n if (i === 0) {\n if (align === 'horizontal') {\n tabOpen.attrJoin('class', ACTIVE_CLASSNAME);\n tabOpen.attrSet('aria-selected', 'true');\n } else {\n verticalTabOpen.attrSet('checked', 'true');\n }\n\n tabPanelOpen.attrJoin('class', ACTIVE_CLASSNAME);\n }\n\n if (align === 'radio') {\n tabsTokens.push(tabOpen, verticalTabOpen, verticalTabLabelOpen, tabInline, tabClose);\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 if (align === 'horizontal') {\n tabsTokens.push(tabsOpen);\n tabsTokens.push(tabListOpen);\n tabsTokens.push(...tabListTokens);\n tabsTokens.push(tabListClose);\n tabsTokens.push(...tabPanelsTokens);\n }\n\n tabsTokens.push(tabsClose);\n\n state.tokens.splice(start, end - start + 1, ...tabsTokens);\n\n return tabsTokens.length;\n}\n\nfunction findCloseTokenIdx(tokens: Token[], idx: number) {\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) {\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) {\n return (\n tokens[i].type === 'paragraph_open' &&\n tokens[i + 1].type === 'inline' &&\n tokens[i + 1].content.match(TAB_RE)\n );\n}\n\nexport function transform({\n runtimeJsPath = '_assets/tabs-extension.js',\n runtimeCssPath = '_assets/tabs-extension.css',\n containerClasses = '',\n bundle = true,\n}: Partial<PluginOptions> = {}) {\n return function tabs(md: MarkdownIt, options?: TransformOptions) {\n const {output = '.'} = options || {};\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 match = matchOpenToken(tokens, i);\n const openTag = match && match[0];\n const isNotEscaped = openTag && !(openTag.startsWith('`') && openTag.endsWith('`'));\n\n if (!match || !isNotEscaped) {\n i++;\n continue;\n }\n\n const closeTokenIdx = findCloseTokenIdx(tokens, i + 3);\n\n if (!closeTokenIdx) {\n tokens[i].attrSet('YFM005', 'true');\n i += 3;\n continue;\n }\n\n const tabsGroup = match[2] || `${DEFAULT_TABS_GROUP_PREFIX}${generateID()}`;\n const orientation = (match[4] || 'horizontal') as TabsOrientation;\n\n const {tabs, index} = findTabs(state.tokens, i + 3);\n\n if (tabs.length > 0) {\n insertTabs(\n tabs,\n state,\n orientation,\n {start: i, end: index + 3},\n {\n containerClasses,\n tabsGroup,\n runId,\n },\n );\n i++;\n tabsAreInserted = true;\n } else {\n state.tokens.splice(i, index - i);\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) {\n copyRuntimeFiles({runtimeJsPath, runtimeCssPath, output}, env.bundled);\n }\n }\n };\n\n try {\n md.core.ruler.before('curly_attributes', 'tabs', plugin);\n } catch (e) {\n md.core.ruler.push('tabs', plugin);\n }\n };\n}\n", "export function generateID() {\n const id = Math.random().toString(36).substr(2, 8);\n return id.substring(id.length - 8);\n}\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) {\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", "const PATH_TO_RUNTIME = '../runtime';\n\nexport function copyRuntimeFiles(\n {\n runtimeJsPath,\n runtimeCssPath,\n output,\n }: {runtimeJsPath: string; runtimeCssPath: string; output: string},\n cache: Set<string>,\n) {\n const {join, resolve} = dynrequire('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} = dynrequire('node:fs');\n const {dirname} = dynrequire('node:path');\n mkdirSync(dirname(to), {recursive: true});\n copyFileSync(from, to);\n}\n\n/*\n * Runtime require hidden for builders.\n * Used for nodejs api\n */\nfunction dynrequire(module: string) {\n // eslint-disable-next-line no-eval\n return eval(`require('${module}')`);\n}\n", "import GithubSlugger from 'github-slugger';\n\nimport {Tab} from './transform';\n\nconst CUSTOM_ID_REGEXP = /\\[?{ ?#(\\S+) ?}]?/;\n\nconst sluggersStorage = new Map<string, GithubSlugger>();\n\nfunction parseName(name: string) {\n const parts = name.match(CUSTOM_ID_REGEXP);\n if (!parts) {\n return {\n name,\n customAnchor: null,\n };\n }\n\n return {\n name: name.replace(parts[0], '').trim(),\n customAnchor: parts[1],\n };\n}\n\nexport function getTabId(tab: Tab, {runId}: {runId: 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\nexport function getTabKey(tab: Tab) {\n return encodeURIComponent(getRawId(tab)).toLocaleLowerCase();\n}\n\nexport function getName(tab: Tab) {\n return parseName(tab.name).name;\n}\n\nfunction getRawId(tab: Tab): string {\n return parseName(tab.name).customAnchor || tab.name;\n}\n", "import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["exports", "module", "exports", "module", "GithubSlugger", "Token", "start", "end", "tabs"]
7
7
  }
@@ -6,7 +6,7 @@ export type PluginOptions = {
6
6
  containerClasses: string;
7
7
  bundle: boolean;
8
8
  };
9
- export type TabsOrientation = 'vertical' | 'horizontal';
9
+ export type TabsOrientation = 'radio' | 'horizontal';
10
10
  export type Tab = {
11
11
  name: string;
12
12
  tokens: Token[];
package/react/index.js CHANGED
@@ -44,7 +44,6 @@ function useDiplodocTabs(callback) {
44
44
  (tabId, options) => window[GLOBAL_SYMBOL].selectTabById(tabId, options),
45
45
  []
46
46
  ),
47
- // @todo remove
48
47
  selectTab: (0, import_react.useCallback)((tab) => window[GLOBAL_SYMBOL].selectTab(tab), [])
49
48
  };
50
49
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/react/index.ts", "../src/react/useDiplodocTabs.ts", "../src/common.ts"],
4
- "sourcesContent": ["export type {Tab, UseDiplodocTabsCallback} from './useDiplodocTabs';\nexport {useDiplodocTabs} from './useDiplodocTabs';\n", "import {useCallback, useEffect} from 'react';\nimport {GLOBAL_SYMBOL, SelectedTabEvent, Tab} from '../common';\nimport {ISelectTabByIdOptions} from '../runtime/TabsController';\n\nexport type {Tab};\n\nexport type UseDiplodocTabsCallback = (tab: Tab, currentTabId?: string) => void;\n\nexport function useDiplodocTabs(callback: UseDiplodocTabsCallback) {\n const selectTabHandle = useCallback(\n ({tab, currentTabId}: SelectedTabEvent) => {\n callback(tab, currentTabId);\n },\n [callback],\n );\n\n useEffect(() => window[GLOBAL_SYMBOL].onSelectTab(selectTabHandle), [selectTabHandle]);\n\n return {\n selectTabById: useCallback(\n (tabId: string, options?: ISelectTabByIdOptions) =>\n window[GLOBAL_SYMBOL].selectTabById(tabId, options),\n [],\n ),\n // @todo remove\n selectTab: useCallback((tab: Tab) => window[GLOBAL_SYMBOL].selectTab(tab), []),\n };\n}\n", "import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAqC;;;AC+B9B,IAAM,gBAA+B,OAAO,IAAI,cAAc;;;ADvB9D,SAAS,gBAAgB,UAAmC;AAC/D,QAAM,sBAAkB;AAAA,IACpB,CAAC,EAAC,KAAK,aAAY,MAAwB;AACvC,eAAS,KAAK,YAAY;AAAA,IAC9B;AAAA,IACA,CAAC,QAAQ;AAAA,EACb;AAEA,8BAAU,MAAM,OAAO,aAAa,EAAE,YAAY,eAAe,GAAG,CAAC,eAAe,CAAC;AAErF,SAAO;AAAA,IACH,mBAAe;AAAA,MACX,CAAC,OAAe,YACZ,OAAO,aAAa,EAAE,cAAc,OAAO,OAAO;AAAA,MACtD,CAAC;AAAA,IACL;AAAA;AAAA,IAEA,eAAW,0BAAY,CAAC,QAAa,OAAO,aAAa,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;AAAA,EACjF;AACJ;",
4
+ "sourcesContent": ["export type {Tab, UseDiplodocTabsCallback} from './useDiplodocTabs';\nexport {useDiplodocTabs} from './useDiplodocTabs';\n", "import {useCallback, useEffect} from 'react';\nimport {GLOBAL_SYMBOL, SelectedTabEvent, Tab} from '../common';\nimport {ISelectTabByIdOptions} from '../runtime/TabsController';\n\nexport type {Tab};\n\nexport type UseDiplodocTabsCallback = (tab: Tab, currentTabId?: string) => void;\n\nexport function useDiplodocTabs(callback: UseDiplodocTabsCallback) {\n const selectTabHandle = useCallback(\n ({tab, currentTabId}: SelectedTabEvent) => {\n callback(tab, currentTabId);\n },\n [callback],\n );\n\n useEffect(() => window[GLOBAL_SYMBOL].onSelectTab(selectTabHandle), [selectTabHandle]);\n\n return {\n selectTabById: useCallback(\n (tabId: string, options?: ISelectTabByIdOptions) =>\n window[GLOBAL_SYMBOL].selectTabById(tabId, options),\n [],\n ),\n selectTab: useCallback((tab: Tab) => window[GLOBAL_SYMBOL].selectTab(tab), []),\n };\n}\n", "import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAqC;;;AC+B9B,IAAM,gBAA+B,OAAO,IAAI,cAAc;;;ADvB9D,SAAS,gBAAgB,UAAmC;AAC/D,QAAM,sBAAkB;AAAA,IACpB,CAAC,EAAC,KAAK,aAAY,MAAwB;AACvC,eAAS,KAAK,YAAY;AAAA,IAC9B;AAAA,IACA,CAAC,QAAQ;AAAA,EACb;AAEA,8BAAU,MAAM,OAAO,aAAa,EAAE,YAAY,eAAe,GAAG,CAAC,eAAe,CAAC;AAErF,SAAO;AAAA,IACH,mBAAe;AAAA,MACX,CAAC,OAAe,YACZ,OAAO,aAAa,EAAE,cAAc,OAAO,OAAO;AAAA,MACtD,CAAC;AAAA,IACL;AAAA,IACA,eAAW,0BAAY,CAAC,QAAa,OAAO,aAAa,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;AAAA,EACjF;AACJ;",
6
6
  "names": []
7
7
  }
package/runtime/index.css CHANGED
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.yfm-tabs{margin-bottom:15px}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol{counter-reset:tabs-list}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol>li{counter-increment:tabs-list}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol>li:before{content:counters(tabs-list,".") ". "}.yfm-tab-list{display:flex;flex-wrap:wrap;margin-bottom:15px;border-bottom:1px solid rgba(0,0,0,.07)}.yfm-tabs-vertical>.yfm-tab-list{flex-direction:column;border-bottom:unset}.yfm-tabs-vertical>.yfm-tab-panel{margin-left:30px}.yfm-tabs-vertical>.yfm-tab-group{display:flex;flex-direction:row;margin-bottom:5px}.yfm-tabs-vertical .yfm-vertical-tab>input[type=radio]{visibility:hidden;width:0;height:0}.yfm-tabs-vertical .yfm-vertical-tab>label{display:inline-block;cursor:pointer;position:relative;padding-left:25px;margin-right:0;line-height:18px;user-select:none}.yfm-tabs-vertical .yfm-vertical-tab>label:before{content:"";position:absolute;left:0;bottom:1px;border-radius:50%;width:18px;height:18px;border:#dfdfdf 1px solid;background-color:#fff}.yfm-tabs-vertical .yfm-vertical-tab input[type=radio]:checked+label:before{content:"\2022";background-color:#5282ff;text-align:center;vertical-align:middle;font-size:20px;white-space:pre;display:inline-flex;justify-content:center;align-items:center;color:#fff}.yfm-tabs-vertical .yfm-vertical-tab{border-bottom:unset!important}.yfm-tab{margin-bottom:-1px;margin-right:20px;border-bottom:2px solid transparent;padding:6px 0 7px;font-weight:700;outline:none;cursor:pointer;user-select:none;white-space:break-spaces}.yfm-tab:last-child{margin-right:0}.yfm-tab:hover,.yfm-tab:active{color:#004080}.yfm-tab.active{border-bottom-color:#027bf3}.yfm-tab:focus{outline:2px solid #4d90fe;border-radius:2px}.yfm-tab:focus:not(:focus-visible){outline:0}.yfm-tab-panel{position:relative;visibility:hidden;overflow:hidden;height:0}.yfm-tab-panel:first-child{margin-top:0!important}.yfm-tab-panel:last-child{margin-bottom:0!important}.yfm-tab-panel.active{visibility:visible;height:auto}
1
+ @charset "UTF-8";.yfm-tabs{margin-bottom:15px}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol{counter-reset:tabs-list}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol>li{counter-increment:tabs-list}.yfm:not(.yfm_no-list-reset) .yfm-tabs ol>li:before{content:counters(tabs-list,".") ". "}.yfm-tab-list{display:flex;flex-wrap:wrap;margin-bottom:15px;border-bottom:1px solid rgba(0,0,0,.07)}.yfm-tabs-vertical>.yfm-tab-list{flex-direction:column;border-bottom:unset}.yfm-tabs-vertical>.yfm-tab-panel{margin-left:30px}.yfm-tabs-vertical>.yfm-tab-group{display:flex;flex-direction:row;margin-bottom:5px}.yfm-tabs-vertical .yfm-vertical-tab>input[type=radio]{visibility:hidden;width:0;height:0}.yfm-tabs-vertical .yfm-vertical-tab>label{display:inline-block;cursor:pointer;position:relative;padding-left:25px;margin-right:0;line-height:18px;user-select:none}.yfm-tabs-vertical .yfm-vertical-tab>label:before{font-family:initial!important;content:"";position:absolute;left:0;bottom:1px;border-radius:50%;width:18px;height:18px;border:#dfdfdf 1px solid;background-color:#fff}.yfm-tabs-vertical .yfm-vertical-tab input[type=radio]:checked+label:before{content:"\2022";background-color:#5282ff;text-align:center;vertical-align:middle;font-size:20px;white-space:pre;display:inline-flex;justify-content:center;align-items:center;color:#fff}.yfm-tabs-vertical .yfm-vertical-tab{border-bottom:unset!important}.yfm-tab{margin-bottom:-1px;margin-right:20px;border-bottom:2px solid transparent;padding:6px 0 7px;font-weight:700;outline:none;cursor:pointer;user-select:none;white-space:break-spaces}.yfm-tab:last-child{margin-right:0}.yfm-tab:hover,.yfm-tab:active{color:#004080}.yfm-tab.active{border-bottom-color:#027bf3}.yfm-tab:focus{outline:2px solid #4d90fe;border-radius:2px}.yfm-tab:focus:not(:focus-visible){outline:0}.yfm-tab-panel{position:relative;visibility:hidden;overflow:hidden;height:0}.yfm-tab-panel:first-child{margin-top:0!important}.yfm-tab-panel:last-child{margin-bottom:0!important}.yfm-tab-panel.active{visibility:visible;height:auto}
2
2
  /*# sourceMappingURL=index.css.map */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/runtime/scss/tabs.scss"],
4
- "sourcesContent": [".yfm-tabs {\n margin-bottom: 15px;\n\n .yfm:not(.yfm_no-list-reset) & ol {\n counter-reset: tabs-list;\n\n & > li {\n counter-increment: tabs-list;\n\n &::before {\n content: counters(tabs-list, '.') '. ';\n }\n }\n }\n}\n\n.yfm-tab-list {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n}\n\n.yfm-tabs-vertical {\n & > .yfm-tab-list {\n flex-direction: column;\n border-bottom: unset;\n }\n\n & > .yfm-tab-panel {\n margin-left: 30px;\n }\n\n & > .yfm-tab-group {\n display: flex;\n flex-direction: row;\n margin-bottom: 5px;\n }\n\n .yfm-vertical-tab > input[type=radio] {\n visibility: hidden;\n width: 0;\n height: 0;\n }\n\n .yfm-vertical-tab > label {\n display: inline-block;\n cursor: pointer;\n position: relative;\n padding-left: 25px;\n margin-right: 0;\n line-height: 18px;\n user-select: none;\n }\n\n .yfm-vertical-tab > label:before {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 1px;\n border-radius: 50%;\n width: 18px;\n height: 18px; \n border: #dfdfdf 1px solid;\n background-color: white;\n }\n \n /* Checked */\n .yfm-vertical-tab input[type=radio]:checked + label:before {\n content: \"•\";\n background-color: rgb(82, 130, 255);\n text-align: center;\n vertical-align: middle;\n font-size: 20px;\n white-space: pre;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: white;\n }\n \n .yfm-vertical-tab {\n border-bottom: unset !important;\n }\n\n}\n\n.yfm-tab {\n margin-bottom: -1px;\n margin-right: 20px;\n border-bottom: 2px solid transparent;\n\n padding: 6px 0 7px 0;\n font-weight: 700;\n outline: none;\n cursor: pointer;\n user-select: none;\n white-space: break-spaces;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover, &:active {\n color: #004080;\n }\n\n &.active {\n border-bottom-color: #027bf3;\n }\n\n &:focus {\n outline: 2px solid #4d90fe;\n border-radius: 2px;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n}\n\n.yfm-tab-panel {\n position: relative;\n visibility: hidden;\n overflow: hidden;\n height: 0;\n\n &:first-child {\n margin-top: 0 !important;\n }\n\n &:last-child {\n margin-bottom: 0 !important;\n }\n\n &.active {\n visibility: visible;\n height: auto;\n }\n}\n"],
5
- "mappings": "iBAAA,CAAA,SACI,cAAA,KAEA,CAAA,GAAA,KAAA,CAAA,mBAAA,CAHJ,SAGI,GACI,cAAA,UAEA,CAHJ,GAGI,KAAA,CAHJ,mBAGI,CANR,SAMQ,EAAA,CAAA,GACI,kBAAA,UAEA,CANR,GAMQ,KAAA,CANR,mBAMQ,CATZ,SASY,EAAA,CAAA,EAAA,QACI,QAAA,SAAA,SAAA,CAAA,KAAA,KAMhB,CAAA,aACI,QAAA,KACA,UAAA,KACA,cAAA,KAEA,cAAA,IAAA,MAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAIA,CADJ,iBACI,CAAA,CATJ,aAUQ,eAAA,OACA,cAAA,MAGJ,CANJ,iBAMI,CAAA,CAAA,cACI,YAAA,KAGJ,CAVJ,iBAUI,CAAA,CAAA,cACI,QAAA,KACA,eAAA,IACA,cAAA,IAGJ,CAhBJ,kBAgBI,CAAA,gBAAA,CAAA,KAAA,CAAA,YACI,WAAA,OACA,MAAA,EACA,OAAA,EAGJ,CAtBJ,kBAsBI,CANA,gBAMA,CAAA,MACI,QAAA,aACA,OAAA,QACA,SAAA,SACA,aAAA,KACA,aAAA,EACA,YAAA,KACA,YAAA,KAGJ,CAhCJ,kBAgCI,CAhBA,gBAgBA,CAAA,KAAA,QACI,QAAA,GACA,SAAA,SACA,KAAA,EACA,OAAA,kBACA,IACA,MAAA,KACA,OAAA,KACA,OAAA,QAAA,IAAA,MACA,iBAAA,KAIJ,CA7CJ,kBA6CI,CA7BA,iBA6BA,KAAA,CAAA,WAAA,QAAA,CAAA,KAAA,QACI,QAAA,QACA,iBAAA,QACA,WAAA,OACA,eAAA,OACA,UAAA,KACA,YAAA,IACA,QAAA,YACA,gBAAA,OACA,YAAA,OACA,MAAA,KAGJ,CA1DJ,kBA0DI,CA1CA,iBA2CI,cAAA,gBAKR,CAAA,QACI,cAAA,KACA,aAAA,KACA,cAAA,IAAA,MAAA,oBAEA,IAAA,EAAA,IACA,YAAA,IACA,QAAA,KACA,OAAA,QACA,YAAA,KACA,YAAA,aAEA,CAZJ,OAYI,YACI,aAAA,EAGJ,CAhBJ,OAgBI,OAAA,CAhBJ,OAgBI,QACI,MAAA,QAGJ,CApBJ,OAoBI,CAAA,OACI,oBAAA,QAGJ,CAxBJ,OAwBI,OACI,QAAA,IAAA,MAAA,sBACA,IAEJ,CA5BJ,OA4BI,MAAA,KAAA,gBACI,QAAA,EAIR,CA3FI,cA4FA,SAAA,SACA,WAAA,OACA,SAAA,OACA,OAAA,EAEA,CAjGA,aAiGA,aACI,WAAA,YAGJ,CArGA,aAqGA,YACI,cAAA,YAGJ,CAzGA,aAyGA,CA3BA,OA4BI,WAAA,QACA,OAAA",
4
+ "sourcesContent": [".yfm-tabs {\n margin-bottom: 15px;\n\n .yfm:not(.yfm_no-list-reset) & ol {\n counter-reset: tabs-list;\n\n & > li {\n counter-increment: tabs-list;\n\n &::before {\n content: counters(tabs-list, '.') '. ';\n }\n }\n }\n}\n\n.yfm-tab-list {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n}\n\n.yfm-tabs-vertical {\n & > .yfm-tab-list {\n flex-direction: column;\n border-bottom: unset;\n }\n\n & > .yfm-tab-panel {\n margin-left: 30px;\n }\n\n & > .yfm-tab-group {\n display: flex;\n flex-direction: row;\n margin-bottom: 5px;\n }\n\n .yfm-vertical-tab > input[type=radio] {\n visibility: hidden;\n width: 0;\n height: 0;\n }\n\n .yfm-vertical-tab > label {\n display: inline-block;\n cursor: pointer;\n position: relative;\n padding-left: 25px;\n margin-right: 0;\n line-height: 18px;\n user-select: none;\n }\n\n .yfm-vertical-tab > label:before {\n font-family: initial !important;\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 1px;\n border-radius: 50%;\n width: 18px;\n height: 18px; \n border: #dfdfdf 1px solid;\n background-color: white;\n }\n \n /* Checked */\n .yfm-vertical-tab input[type=radio]:checked + label:before {\n content: \"•\";\n background-color: rgb(82, 130, 255);\n text-align: center;\n vertical-align: middle;\n font-size: 20px;\n white-space: pre;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: white;\n }\n \n .yfm-vertical-tab {\n border-bottom: unset !important;\n }\n\n}\n\n.yfm-tab {\n margin-bottom: -1px;\n margin-right: 20px;\n border-bottom: 2px solid transparent;\n\n padding: 6px 0 7px 0;\n font-weight: 700;\n outline: none;\n cursor: pointer;\n user-select: none;\n white-space: break-spaces;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover, &:active {\n color: #004080;\n }\n\n &.active {\n border-bottom-color: #027bf3;\n }\n\n &:focus {\n outline: 2px solid #4d90fe;\n border-radius: 2px;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n}\n\n.yfm-tab-panel {\n position: relative;\n visibility: hidden;\n overflow: hidden;\n height: 0;\n\n &:first-child {\n margin-top: 0 !important;\n }\n\n &:last-child {\n margin-bottom: 0 !important;\n }\n\n &.active {\n visibility: visible;\n height: auto;\n }\n}\n"],
5
+ "mappings": "iBAAA,CAAA,SACI,cAAA,KAEA,CAAA,GAAA,KAAA,CAAA,mBAAA,CAHJ,SAGI,GACI,cAAA,UAEA,CAHJ,GAGI,KAAA,CAHJ,mBAGI,CANR,SAMQ,EAAA,CAAA,GACI,kBAAA,UAEA,CANR,GAMQ,KAAA,CANR,mBAMQ,CATZ,SASY,EAAA,CAAA,EAAA,QACI,QAAA,SAAA,SAAA,CAAA,KAAA,KAMhB,CAAA,aACI,QAAA,KACA,UAAA,KACA,cAAA,KAEA,cAAA,IAAA,MAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAIA,CADJ,iBACI,CAAA,CATJ,aAUQ,eAAA,OACA,cAAA,MAGJ,CANJ,iBAMI,CAAA,CAAA,cACI,YAAA,KAGJ,CAVJ,iBAUI,CAAA,CAAA,cACI,QAAA,KACA,eAAA,IACA,cAAA,IAGJ,CAhBJ,kBAgBI,CAAA,gBAAA,CAAA,KAAA,CAAA,YACI,WAAA,OACA,MAAA,EACA,OAAA,EAGJ,CAtBJ,kBAsBI,CANA,gBAMA,CAAA,MACI,QAAA,aACA,OAAA,QACA,SAAA,SACA,aAAA,KACA,aAAA,EACA,YAAA,KACA,YAAA,KAGJ,CAhCJ,kBAgCI,CAhBA,gBAgBA,CAAA,KAAA,QACI,YAAA,kBACA,QAAA,GACA,SAAA,SACA,KAAA,EACA,OAAA,kBACA,IACA,MAAA,KACA,OAAA,KACA,OAAA,QAAA,IAAA,MACA,iBAAA,KAIJ,CA9CJ,kBA8CI,CA9BA,iBA8BA,KAAA,CAAA,WAAA,QAAA,CAAA,KAAA,QACI,QAAA,QACA,iBAAA,QACA,WAAA,OACA,eAAA,OACA,UAAA,KACA,YAAA,IACA,QAAA,YACA,gBAAA,OACA,YAAA,OACA,MAAA,KAGJ,CA3DJ,kBA2DI,CA3CA,iBA4CI,cAAA,gBAKR,CAAA,QACI,cAAA,KACA,aAAA,KACA,cAAA,IAAA,MAAA,oBAEA,IAAA,EAAA,IACA,YAAA,IACA,QAAA,KACA,OAAA,QACA,YAAA,KACA,YAAA,aAEA,CAZJ,OAYI,YACI,aAAA,EAGJ,CAhBJ,OAgBI,OAAA,CAhBJ,OAgBI,QACI,MAAA,QAGJ,CApBJ,OAoBI,CAAA,OACI,oBAAA,QAGJ,CAxBJ,OAwBI,OACI,QAAA,IAAA,MAAA,sBACA,IAEJ,CA5BJ,OA4BI,MAAA,KAAA,gBACI,QAAA,EAIR,CA5FI,cA6FA,SAAA,SACA,WAAA,OACA,SAAA,OACA,OAAA,EAEA,CAlGA,aAkGA,aACI,WAAA,YAGJ,CAtGA,aAsGA,YACI,cAAA,YAGJ,CA1GA,aA0GA,CA3BA,OA4BI,WAAA,QACA,OAAA",
6
6
  "names": []
7
7
  }
package/runtime/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{var O="yfm-tabs",x="yfm-tabs-vertical",X="yfm-tab-list",E="yfm-tab",u="yfm-tab-panel",T="active";var p="data-diplodoc-group",B="data-diplodoc-key",S="data-diplodoc-id";var v="defaultTabsGroup-",f=Symbol.for("diplodocTabs");var m=g=>{let t=g.composedPath();return Array.isArray(t)&&t.length>0?t[0]:g.target},G=g=>{let t=m(g);return!t||!t.matches},y=g=>Math.abs(g.scrollHeight-g.clientHeight)>1?g:g.parentElement?y(g.parentElement):void 0,h=(g,t)=>{let e=g.getBoundingClientRect(),o=t.getBoundingClientRect();return{top:e.top-o.top,left:e.left-o.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}};var r={TABS:`.${O}`,TAB_LIST:`.${X}`,TAB:`.${E}`,TAB_PANEL:`.${u}`,VERTICAL_TABS:`.${x}`},C=class{constructor(t){this._onSelectTabHandlers=new Set;this._document=t,this._document.addEventListener("click",e=>{let o=m(e),l=this.areTabsVertical(o);if(G(e)||!(this.isValidTabElement(o)||l))return;let i=this.getTabDataFromHTMLElement(o);i&&this._selectTab(i,o)}),this._document.addEventListener("keydown",e=>{let o=null;switch(e.key){case"ArrowLeft":{o="left";break}case"ArrowRight":{o="right";break}}if(!o)return;let l=m(e);if(G(e)||!this.isValidTabElement(l))return;let{tabs:i,nodes:n}=this.getTabs(l),a=this.getTabDataFromHTMLElement(l),c=i.findIndex(({key:A})=>(a==null?void 0:a.key)&&A===a.key);if(!a||i.length<=1||c===-1)return;let s=(c+(o==="left"?-1:1)+i.length)%i.length;this.selectTab(i[s]),n[s].focus()})}onSelectTab(t){return this._onSelectTabHandlers.add(t),()=>{this._onSelectTabHandlers.delete(t)}}selectTabById(t,e){let o=this._document.querySelector(`${r.TAB}[${S}="${t}"]`);if(!o||!this.isValidTabElement(o))return;let l=this.getTabDataFromHTMLElement(o);l&&this._selectTab(l,o),e!=null&&e.scrollToElement&&o.scrollIntoView()}selectTab(t){this._selectTab(t)}_selectTab(t,e){let{group:o,key:l,align:i}=t;if(!o)return;let n=e&&y(e),a=n&&h(e,n);this.updateHTML({group:o,key:l,align:i},i)>0&&(this.fireSelectTabEvent({group:o,key:l,align:i},e==null?void 0:e.dataset.diplodocId),a&&this.resetScroll(e,n,a))}updateHTML(t,e){switch(e){case"vertical":return this.updateHTMLVertical(t);case"horizontal":return this.updateHTMLHorizontal(t)}return 0}updateHTMLVertical(t){let{group:e,key:o}=t,[l]=this._document.querySelectorAll(`${r.TABS}[${p}="${e}"] ${r.TAB}[${B}="${o}"]`),i=0,a=l.parentNode.children;for(let c=0;c<a.length;c+=2){let[s,A]=[a.item(c),a.item(c+1)],I=s.children.item(0);I.hasAttribute("checked")&&(s.classList.remove("active"),A==null||A.classList.remove("active"),I.removeAttribute("checked")),s===l&&(s.classList.add("active"),A==null||A.classList.add("active"),I.setAttribute("checked","true")),i++}return i}updateHTMLHorizontal(t){let{group:e,key:o}=t,l=this._document.querySelectorAll(`${r.TABS}[${p}="${e}"] ${r.TAB}[${B}="${o}"]`),i=0;return l.forEach(n=>{let a=n;if(!this.isValidTabElement(a)||a.dataset.diplodocIsActive==="true")return;i++;let c=n,s=c.parentNode,A=s==null?void 0:s.parentNode,I=Array.from((s==null?void 0:s.querySelectorAll(r.TAB))||[]),F=Array.from((A==null?void 0:A.children)||[]).filter(b=>b.classList.contains(u)),H=I.indexOf(c);I.forEach((b,L)=>{let N=F[L],d=L===H,W=b;W.dataset.diplodocIsActive=d?"true":"false",b.classList.toggle(T,d),b.setAttribute("aria-selected",d.toString()),b.setAttribute("tabindex",d?"0":"-1"),N.classList.toggle(T,d)})}),i}resetScroll(t,e,o){let l=h(t,e),i=l.top-o.top,n=l.left-o.left,a=l.scrollTop-o.scrollTop,c=l.scrollLeft-o.scrollLeft;e.scrollTo(e.scrollLeft+n-c,e.scrollTop+i-a)}fireSelectTabEvent(t,e){let{group:o,key:l,align:i}=t,n=o.startsWith(v)?{key:l,align:i}:t;this._onSelectTabHandlers.forEach(a=>{a({tab:n,currentTabId:e})})}isValidTabElement(t){let e=t.matches(r.TAB)&&t.dataset.diplodocId?t.closest(r.TAB_LIST):null;return e==null?void 0:e.closest(r.TABS)}areTabsVertical(t){let e=t.parentElement;return t.dataset.diplodocVerticalTab||!!(e!=null&&e.dataset.diplodocVerticalTab)}getTabDataFromHTMLElement(t){var l,i;if(this.areTabsVertical(t)){let n=t.dataset.diplodocVerticalTab?t:t.parentElement,a=n.dataset.diplodocKey,c=(l=n.closest(r.TABS))==null?void 0:l.dataset.diplodocGroup;return a&&c?{group:c,key:a,align:"vertical"}:null}let e=t.dataset.diplodocKey,o=(i=t.closest(r.TABS))==null?void 0:i.dataset.diplodocGroup;return e&&o?{group:o,key:e,align:"horizontal"}:null}getTabs(t){var i,n;let e=(i=t.closest(r.TABS))==null?void 0:i.dataset.diplodocGroup,o=(n=t.closest(r.TAB_LIST))==null?void 0:n.querySelectorAll(r.TAB),l=[];return o.forEach(a=>{let c=a==null?void 0:a.dataset.diplodocKey;c&&l.push({group:e,key:c,align:"horizontal"})}),{tabs:l,nodes:o}}};typeof window!="undefined"&&typeof document!="undefined"&&!window[f]&&(window[f]=new C(document));})();
1
+ "use strict";(()=>{var L="yfm-tabs",O="yfm-tabs-vertical",X="yfm-tab-list",E="yfm-tab",p="yfm-tab-panel",u="active";var T="data-diplodoc-group",B="data-diplodoc-key",V="data-diplodoc-id";var F="defaultTabsGroup-",f=Symbol.for("diplodocTabs");var C=g=>{let t=g.composedPath();return Array.isArray(t)&&t.length>0?t[0]:g.target},G=g=>{let t=C(g);return!t||!t.matches},y=g=>Math.abs(g.scrollHeight-g.clientHeight)>1?g:g.parentElement?y(g.parentElement):void 0,h=(g,t)=>{let e=g.getBoundingClientRect(),i=t.getBoundingClientRect();return{top:e.top-i.top,left:e.left-i.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}};var r={TABS:`.${L}`,TAB_LIST:`.${X}`,TAB:`.${E}`,TAB_PANEL:`.${p}`,VERTICAL_TABS:`.${O}`},m=class{constructor(t){this._onSelectTabHandlers=new Set;this._document=t,this._document.addEventListener("click",e=>{let i=C(e),o=this.areTabsVertical(i);if(G(e)||!(this.isValidTabElement(i)||o))return;let l=this.getTabDataFromHTMLElement(i);l&&this._selectTab(l,i)}),this._document.addEventListener("keydown",e=>{let i=null;switch(e.key){case"ArrowLeft":{i="left";break}case"ArrowRight":{i="right";break}}if(!i)return;let o=C(e);if(G(e)||!this.isValidTabElement(o))return;let{tabs:l,nodes:a}=this.getTabs(o),c=this.getTabDataFromHTMLElement(o),n=l.findIndex(({key:A})=>(c==null?void 0:c.key)&&A===c.key);if(!c||l.length<=1||n===-1)return;let s=(n+(i==="left"?-1:1)+l.length)%l.length;this.selectTab(l[s]),a[s].focus()})}onSelectTab(t){return this._onSelectTabHandlers.add(t),()=>{this._onSelectTabHandlers.delete(t)}}selectTabById(t,e){let i=this._document.querySelector(`${r.TAB}[${V}="${t}"]`);if(!i||!this.isValidTabElement(i))return;let o=this.getTabDataFromHTMLElement(i);o&&this._selectTab(o,i),e!=null&&e.scrollToElement&&i.scrollIntoView()}selectTab(t){this._selectTab(t)}_selectTab(t,e){let{group:i,key:o,align:l}=t;if(!i)return;let a=e&&y(e),c=a&&h(e,a);this.updateHTML({group:i,key:o,align:l},l)>0&&(this.fireSelectTabEvent({group:i,key:o,align:l},e==null?void 0:e.dataset.diplodocId),c&&this.resetScroll(e,a,c))}updateHTML(t,e){switch(e){case"radio":return this.updateHTMLVertical(t);case"horizontal":return this.updateHTMLHorizontal(t)}return 0}updateHTMLVertical(t){let{group:e,key:i}=t,[o]=this._document.querySelectorAll(`${r.TABS}[${T}="${e}"] ${r.TAB}[${B}="${i}"]`),l=0,c=o.parentNode.children;for(let n=0;n<c.length;n+=2){let[s,A]=[c.item(n),c.item(n+1)],I=s.children.item(0);I.hasAttribute("checked")&&(s.classList.remove("active"),A==null||A.classList.remove("active"),I.removeAttribute("checked")),s===o&&(s.classList.add("active"),A==null||A.classList.add("active"),I.setAttribute("checked","true")),l++}return l}updateHTMLHorizontal(t){let{group:e,key:i}=t,o=this._document.querySelectorAll(`${r.TABS}[${T}="${e}"] ${r.TAB}[${B}="${i}"]`),l=0;return o.forEach(a=>{let c=a;if(!this.isValidTabElement(c)||c.dataset.diplodocIsActive==="true")return;l++;let n=a,s=n.parentNode,A=s==null?void 0:s.parentNode,I=Array.from((s==null?void 0:s.querySelectorAll(r.TAB))||[]),Q=Array.from((A==null?void 0:A.children)||[]).filter(b=>b.classList.contains(p)),S=I.indexOf(n);I.forEach((b,x)=>{let R=Q[x],d=x===S,Z=b;Z.dataset.diplodocIsActive=d?"true":"false",b.classList.toggle(u,d),b.setAttribute("aria-selected",d.toString()),b.setAttribute("tabindex",d?"0":"-1"),R.classList.toggle(u,d)})}),l}resetScroll(t,e,i){let o=h(t,e),l=o.top-i.top,a=o.left-i.left,c=o.scrollTop-i.scrollTop,n=o.scrollLeft-i.scrollLeft;e.scrollTo(e.scrollLeft+a-n,e.scrollTop+l-c)}fireSelectTabEvent(t,e){let{group:i,key:o,align:l}=t,a=i.startsWith(F)?{key:o,align:l}:t;this._onSelectTabHandlers.forEach(c=>{c({tab:a,currentTabId:e})})}isValidTabElement(t){let e=t.matches(r.TAB)&&t.dataset.diplodocId?t.closest(r.TAB_LIST):null;return e==null?void 0:e.closest(r.TABS)}areTabsVertical(t){let e=t.parentElement;return t.dataset.diplodocVerticalTab||!!(e!=null&&e.dataset.diplodocVerticalTab)}getTabDataFromHTMLElement(t){var o,l;if(this.areTabsVertical(t)){let a=t.dataset.diplodocVerticalTab?t:t.parentElement,c=a.dataset.diplodocKey,n=(o=a.closest(r.TABS))==null?void 0:o.dataset.diplodocGroup;return c&&n?{group:n,key:c,align:"radio"}:null}let e=t.dataset.diplodocKey,i=(l=t.closest(r.TABS))==null?void 0:l.dataset.diplodocGroup;return e&&i?{group:i,key:e,align:"horizontal"}:null}getTabs(t){var l,a;let e=(l=t.closest(r.TABS))==null?void 0:l.dataset.diplodocGroup,i=(a=t.closest(r.TAB_LIST))==null?void 0:a.querySelectorAll(r.TAB),o=[];return i.forEach(c=>{let n=c==null?void 0:c.dataset.diplodocKey;n&&o.push({group:e,key:n,align:"horizontal"})}),{tabs:o,nodes:i}}};typeof window!="undefined"&&typeof document!="undefined"&&!window[f]&&(window[f]=new m(document));})();
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/common.ts", "../src/runtime/utils.ts", "../src/runtime/TabsController.ts", "../src/runtime/index.ts"],
4
- "sourcesContent": ["import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_PANEL_CLASSNAME,\n Tab,\n} from '../common';\nimport type {TabsOrientation} from '../plugin/transform';\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_VERTICAL_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport class TabsController {\n private _document: Document;\n\n private _onSelectTabHandlers: Set<Handler> = new Set();\n\n constructor(document: Document) {\n this._document = document;\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n const areVertical = this.areTabsVertical(target);\n\n if (isCustom(event)) {\n return;\n }\n\n if (!(this.isValidTabElement(target) || areVertical)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, align} = tab;\n\n if (!group) {\n return;\n }\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, align}, align);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, align}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, align: TabsOrientation) {\n switch (align) {\n case 'vertical': {\n return this.updateHTMLVertical(tab);\n }\n case 'horizontal': {\n return this.updateHTMLHorizontal(tab);\n }\n }\n\n return 0;\n }\n\n private updateHTMLVertical(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const [tabs] = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n const root = tabs.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n input.removeAttribute('checked');\n }\n\n if (title === tabs) {\n title.classList.add('active');\n content?.classList.add('active');\n input.setAttribute('checked', 'true');\n }\n\n updated++;\n }\n\n return updated;\n }\n\n private updateHTMLHorizontal(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX) ? {key, align} : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private isValidTabElement(element: HTMLElement) {\n const tabList =\n element.matches(Selector.TAB) && element.dataset.diplodocId\n ? element.closest(Selector.TAB_LIST)\n : null;\n\n return tabList?.closest(Selector.TABS);\n }\n\n private areTabsVertical(target: HTMLElement) {\n const parent = target.parentElement;\n\n return target.dataset.diplodocVerticalTab || Boolean(parent?.dataset.diplodocVerticalTab);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n if (this.areTabsVertical(target)) {\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'vertical'} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'horizontal'} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n align: 'horizontal',\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {TabsOrientation} from './plugin/transform';\nimport type {TabsController} from './runtime/TabsController';\n\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TABS_VERTICAL_CLASSNAME = 'yfm-tabs-vertical';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\n\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\n\nexport interface Tab {\n group?: string;\n key: string;\n align: TabsOrientation;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_LIST_CLASSNAME,\n TABS_VERTICAL_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_PANEL_CLASSNAME,\n Tab,\n} from '../common';\nimport type {TabsOrientation} from '../plugin/transform';\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_VERTICAL_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport class TabsController {\n private _document: Document;\n\n private _onSelectTabHandlers: Set<Handler> = new Set();\n\n constructor(document: Document) {\n this._document = document;\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n const areVertical = this.areTabsVertical(target);\n\n if (isCustom(event)) {\n return;\n }\n\n if (!(this.isValidTabElement(target) || areVertical)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, align} = tab;\n\n if (!group) {\n return;\n }\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, align}, align);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, align}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, align: TabsOrientation) {\n switch (align) {\n case 'radio': {\n return this.updateHTMLVertical(tab);\n }\n case 'horizontal': {\n return this.updateHTMLHorizontal(tab);\n }\n }\n\n return 0;\n }\n\n private updateHTMLVertical(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const [tabs] = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n const root = tabs.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n input.removeAttribute('checked');\n }\n\n if (title === tabs) {\n title.classList.add('active');\n content?.classList.add('active');\n input.setAttribute('checked', 'true');\n }\n\n updated++;\n }\n\n return updated;\n }\n\n private updateHTMLHorizontal(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX) ? {key, align} : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private isValidTabElement(element: HTMLElement) {\n const tabList =\n element.matches(Selector.TAB) && element.dataset.diplodocId\n ? element.closest(Selector.TAB_LIST)\n : null;\n\n return tabList?.closest(Selector.TABS);\n }\n\n private areTabsVertical(target: HTMLElement) {\n const parent = target.parentElement;\n\n return target.dataset.diplodocVerticalTab || Boolean(parent?.dataset.diplodocVerticalTab);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n if (this.areTabsVertical(target)) {\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'radio'} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, align: 'horizontal'} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n align: 'horizontal',\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["TABS_CLASSNAME", "TABS_VERTICAL_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "ACTIVE_CLASSNAME", "GROUP_DATA_KEY", "TAB_DATA_KEY", "TAB_DATA_ID", "DEFAULT_TABS_GROUP_PREFIX", "GLOBAL_SYMBOL", "getEventTarget", "event", "path", "isCustom", "target", "getClosestScrollableParent", "element", "getOffsetByScrollableParent", "scrollableParent", "elementBounds", "scrollableParentBounds", "Selector", "TABS_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "TABS_VERTICAL_CLASSNAME", "TabsController", "document", "event", "target", "getEventTarget", "areVertical", "isCustom", "tab", "direction", "tabs", "nodes", "currentTab", "currentTabIndex", "key", "newIndex", "handler", "id", "options", "TAB_DATA_ID", "targetTab", "group", "align", "scrollableParent", "getClosestScrollableParent", "previousTargetOffset", "getOffsetByScrollableParent", "GROUP_DATA_KEY", "TAB_DATA_KEY", "updated", "elements", "i", "title", "content", "input", "element", "htmlElem", "tabList", "tabsContainer", "allTabs", "allPanels", "node", "targetIndex", "panel", "isTargetTab", "ACTIVE_CLASSNAME", "targetOffset", "topDelta", "leftDelta", "scrollTopDelta", "scrollLeftDelta", "diplodocId", "eventTab", "DEFAULT_TABS_GROUP_PREFIX", "parent", "_a", "_b", "tabEl", "GLOBAL_SYMBOL", "TabsController"]
7
7
  }