@apia/theme 1.0.4 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/ApiaThemeProvider.d.ts +15 -0
  2. package/dist/ApiaThemeProvider.d.ts.map +1 -0
  3. package/dist/ApiaThemeProvider.js +32 -0
  4. package/dist/ApiaThemeProvider.js.map +1 -0
  5. package/dist/base/alerts.js +128 -0
  6. package/dist/base/alerts.js.map +1 -0
  7. package/dist/base/baseTheme.js +93 -0
  8. package/dist/base/baseTheme.js.map +1 -0
  9. package/dist/base/buttons.js +294 -0
  10. package/dist/base/buttons.js.map +1 -0
  11. package/dist/base/colors/components.js +202 -0
  12. package/dist/base/colors/components.js.map +1 -0
  13. package/dist/base/colors/defaultPalette.js +84 -0
  14. package/dist/base/colors/defaultPalette.js.map +1 -0
  15. package/dist/base/colors/index.js +465 -0
  16. package/dist/base/colors/index.js.map +1 -0
  17. package/dist/base/colors/schemas.js +15 -0
  18. package/dist/base/colors/schemas.js.map +1 -0
  19. package/dist/base/colors/types.d.ts +154 -0
  20. package/dist/base/colors/types.d.ts.map +1 -0
  21. package/dist/base/colors/types.js +6 -0
  22. package/dist/base/colors/types.js.map +1 -0
  23. package/dist/base/colors/util/applyStates.js +35 -0
  24. package/dist/base/colors/util/applyStates.js.map +1 -0
  25. package/dist/base/colors/util/applyStatesGetColor.d.ts +11 -0
  26. package/dist/base/colors/util/applyStatesGetColor.d.ts.map +1 -0
  27. package/dist/base/colors/util/applyStatesGetColor.js +31 -0
  28. package/dist/base/colors/util/applyStatesGetColor.js.map +1 -0
  29. package/dist/base/colors/util/buildColorsObject.js +14 -0
  30. package/dist/base/colors/util/buildColorsObject.js.map +1 -0
  31. package/dist/base/colors/util/buildStateObject.js +60 -0
  32. package/dist/base/colors/util/buildStateObject.js.map +1 -0
  33. package/dist/base/colors/util/getColorState.d.ts +17 -0
  34. package/dist/base/colors/util/getColorState.d.ts.map +1 -0
  35. package/dist/base/colors/util/getColorState.js +52 -0
  36. package/dist/base/colors/util/getColorState.js.map +1 -0
  37. package/dist/base/colors/util/getColorStates.d.ts +11 -0
  38. package/dist/base/colors/util/getColorStates.d.ts.map +1 -0
  39. package/dist/base/colors/util/getColorStates.js +30 -0
  40. package/dist/base/colors/util/getColorStates.js.map +1 -0
  41. package/dist/base/colors/util/getColorsAndStatesByDefinition.d.ts +12 -0
  42. package/dist/base/colors/util/getColorsAndStatesByDefinition.d.ts.map +1 -0
  43. package/dist/base/colors/util/getColorsAndStatesByDefinition.js +28 -0
  44. package/dist/base/colors/util/getColorsAndStatesByDefinition.js.map +1 -0
  45. package/dist/base/colors/util/getColorsAndStatesByPath.d.ts +25 -0
  46. package/dist/base/colors/util/getColorsAndStatesByPath.d.ts.map +1 -0
  47. package/dist/base/colors/util/getColorsAndStatesByPath.js +36 -0
  48. package/dist/base/colors/util/getColorsAndStatesByPath.js.map +1 -0
  49. package/dist/base/colors/util/getColorsByDefinition.d.ts +24 -0
  50. package/dist/base/colors/util/getColorsByDefinition.d.ts.map +1 -0
  51. package/dist/base/colors/util/getColorsByDefinition.js +18 -0
  52. package/dist/base/colors/util/getColorsByDefinition.js.map +1 -0
  53. package/dist/base/colors/util/getColorsByPath.d.ts +17 -0
  54. package/dist/base/colors/util/getColorsByPath.d.ts.map +1 -0
  55. package/dist/base/colors/util/getColorsByPath.js +16 -0
  56. package/dist/base/colors/util/getColorsByPath.js.map +1 -0
  57. package/dist/base/colors/util/getOneColorState.d.ts +15 -0
  58. package/dist/base/colors/util/getOneColorState.d.ts.map +1 -0
  59. package/dist/base/colors/util/getOneColorState.js +18 -0
  60. package/dist/base/colors/util/getOneColorState.js.map +1 -0
  61. package/dist/base/colors/util/parsePalette.d.ts +6 -0
  62. package/dist/base/colors/util/parsePalette.d.ts.map +1 -0
  63. package/dist/base/colors/util/parsePalette.js +124 -0
  64. package/dist/base/colors/util/parsePalette.js.map +1 -0
  65. package/dist/base/colors/util.js +31 -0
  66. package/dist/base/colors/util.js.map +1 -0
  67. package/dist/base/forms/checkbox.js +59 -0
  68. package/dist/base/forms/checkbox.js.map +1 -0
  69. package/dist/base/forms/customCheckbox.js +30 -0
  70. package/dist/base/forms/customCheckbox.js.map +1 -0
  71. package/dist/base/forms/dateInput.js +60 -0
  72. package/dist/base/forms/dateInput.js.map +1 -0
  73. package/dist/base/forms/deletableInput.js +65 -0
  74. package/dist/base/forms/deletableInput.js.map +1 -0
  75. package/dist/base/forms/iconInput.js +28 -0
  76. package/dist/base/forms/iconInput.js.map +1 -0
  77. package/dist/base/forms/index.js +36 -0
  78. package/dist/base/forms/index.js.map +1 -0
  79. package/dist/base/forms/input.js +52 -0
  80. package/dist/base/forms/input.js.map +1 -0
  81. package/dist/base/forms/label.js +31 -0
  82. package/dist/base/forms/label.js.map +1 -0
  83. package/dist/base/forms/radio.js +17 -0
  84. package/dist/base/forms/radio.js.map +1 -0
  85. package/dist/base/forms/select.js +27 -0
  86. package/dist/base/forms/select.js.map +1 -0
  87. package/dist/base/forms/selectMultiple.js +40 -0
  88. package/dist/base/forms/selectMultiple.js.map +1 -0
  89. package/dist/base/forms/switch.js +12 -0
  90. package/dist/base/forms/switch.js.map +1 -0
  91. package/dist/base/forms/textarea.js +14 -0
  92. package/dist/base/forms/textarea.js.map +1 -0
  93. package/dist/base/layout/common/components/accordion.js +124 -0
  94. package/dist/base/layout/common/components/accordion.js.map +1 -0
  95. package/dist/base/layout/common/components/chat.js +98 -0
  96. package/dist/base/layout/common/components/chat.js.map +1 -0
  97. package/dist/base/layout/common/components/index.js +15 -0
  98. package/dist/base/layout/common/components/index.js.map +1 -0
  99. package/dist/base/layout/common/components/pagination/common.js +135 -0
  100. package/dist/base/layout/common/components/pagination/common.js.map +1 -0
  101. package/dist/base/layout/common/components/pagination/datagrid.js +9 -0
  102. package/dist/base/layout/common/components/pagination/datagrid.js.map +1 -0
  103. package/dist/base/layout/common/components/pagination/index.js +13 -0
  104. package/dist/base/layout/common/components/pagination/index.js.map +1 -0
  105. package/dist/base/layout/common/components/pagination/primary.js +9 -0
  106. package/dist/base/layout/common/components/pagination/primary.js.map +1 -0
  107. package/dist/base/layout/common/components/pagination/secondary.js +9 -0
  108. package/dist/base/layout/common/components/pagination/secondary.js.map +1 -0
  109. package/dist/base/layout/common/components/toolbar.js +84 -0
  110. package/dist/base/layout/common/components/toolbar.js.map +1 -0
  111. package/dist/base/layout/common/forms/captcha.js +42 -0
  112. package/dist/base/layout/common/forms/captcha.js.map +1 -0
  113. package/dist/base/layout/common/forms/index.js +9 -0
  114. package/dist/base/layout/common/forms/index.js.map +1 -0
  115. package/dist/base/layout/common/index.js +21 -0
  116. package/dist/base/layout/common/index.js.map +1 -0
  117. package/dist/base/layout/common/modals/apiaApi.js +86 -0
  118. package/dist/base/layout/common/modals/apiaApi.js.map +1 -0
  119. package/dist/base/layout/common/modals/buttonsBar.js +13 -0
  120. package/dist/base/layout/common/modals/buttonsBar.js.map +1 -0
  121. package/dist/base/layout/common/modals/confirm.js +35 -0
  122. package/dist/base/layout/common/modals/confirm.js.map +1 -0
  123. package/dist/base/layout/common/modals/index.js +166 -0
  124. package/dist/base/layout/common/modals/index.js.map +1 -0
  125. package/dist/base/layout/common/modals/overlay.js +29 -0
  126. package/dist/base/layout/common/modals/overlay.js.map +1 -0
  127. package/dist/base/layout/common/tables/accordion.js +66 -0
  128. package/dist/base/layout/common/tables/accordion.js.map +1 -0
  129. package/dist/base/layout/common/tables/clean.js +285 -0
  130. package/dist/base/layout/common/tables/clean.js.map +1 -0
  131. package/dist/base/layout/common/tables/getSelectionStyles.js +39 -0
  132. package/dist/base/layout/common/tables/getSelectionStyles.js.map +1 -0
  133. package/dist/base/layout/common/tables/index.js +23 -0
  134. package/dist/base/layout/common/tables/index.js.map +1 -0
  135. package/dist/base/layout/common/tables/information.js +41 -0
  136. package/dist/base/layout/common/tables/information.js.map +1 -0
  137. package/dist/base/layout/common/tables/primary.js +236 -0
  138. package/dist/base/layout/common/tables/primary.js.map +1 -0
  139. package/dist/base/layout/common/tables/print.js +11 -0
  140. package/dist/base/layout/common/tables/print.js.map +1 -0
  141. package/dist/base/layout/common/tables/responsive.js +41 -0
  142. package/dist/base/layout/common/tables/responsive.js.map +1 -0
  143. package/dist/base/layout/common/tables/secondary.js +46 -0
  144. package/dist/base/layout/common/tables/secondary.js.map +1 -0
  145. package/dist/base/layout/common/tooltips/index.js +9 -0
  146. package/dist/base/layout/common/tooltips/index.js.map +1 -0
  147. package/dist/base/layout/common/tooltips/primary.js +10 -0
  148. package/dist/base/layout/common/tooltips/primary.js.map +1 -0
  149. package/dist/base/layout/common/trees/index.js +8 -0
  150. package/dist/base/layout/common/trees/index.js.map +1 -0
  151. package/dist/base/layout/common/trees/primary.js +122 -0
  152. package/dist/base/layout/common/trees/primary.js.map +1 -0
  153. package/dist/base/layout/index.js +13 -0
  154. package/dist/base/layout/index.js.map +1 -0
  155. package/dist/base/layout/util/collector.js +30 -0
  156. package/dist/base/layout/util/collector.js.map +1 -0
  157. package/dist/base/layout/util/index.js +9 -0
  158. package/dist/base/layout/util/index.js.map +1 -0
  159. package/dist/base/rootStyles/menu.js +122 -0
  160. package/dist/base/rootStyles/menu.js.map +1 -0
  161. package/dist/base/rootStyles/rootStyles.js +152 -0
  162. package/dist/base/rootStyles/rootStyles.js.map +1 -0
  163. package/dist/base/rootStyles/transitions.js +88 -0
  164. package/dist/base/rootStyles/transitions.js.map +1 -0
  165. package/dist/base/text.js +24 -0
  166. package/dist/base/text.js.map +1 -0
  167. package/dist/index.d.ts +36 -387
  168. package/dist/index.js +25 -4666
  169. package/dist/index.js.map +1 -1
  170. package/dist/markdown/builder/MarkdownBuilder.d.ts +40 -0
  171. package/dist/markdown/builder/MarkdownBuilder.d.ts.map +1 -0
  172. package/dist/markdown/builder/MarkdownBuilder.js +108 -0
  173. package/dist/markdown/builder/MarkdownBuilder.js.map +1 -0
  174. package/dist/markdown/builder/elements/MarkdownBlock.d.ts +9 -0
  175. package/dist/markdown/builder/elements/MarkdownBlock.d.ts.map +1 -0
  176. package/dist/markdown/builder/elements/MarkdownBlock.js +5 -0
  177. package/dist/markdown/builder/elements/MarkdownBlock.js.map +1 -0
  178. package/dist/markdown/builder/elements/dialogBox.d.ts +11 -0
  179. package/dist/markdown/builder/elements/dialogBox.d.ts.map +1 -0
  180. package/dist/markdown/builder/elements/dialogBox.js +23 -0
  181. package/dist/markdown/builder/elements/dialogBox.js.map +1 -0
  182. package/dist/markdown/builder/elements/header.d.ts +11 -0
  183. package/dist/markdown/builder/elements/header.d.ts.map +1 -0
  184. package/dist/markdown/builder/elements/header.js +15 -0
  185. package/dist/markdown/builder/elements/header.js.map +1 -0
  186. package/dist/markdown/builder/elements/list.d.ts +19 -0
  187. package/dist/markdown/builder/elements/list.d.ts.map +1 -0
  188. package/dist/markdown/builder/elements/list.js +55 -0
  189. package/dist/markdown/builder/elements/list.js.map +1 -0
  190. package/dist/markdown/builder/elements/paragraph.d.ts +10 -0
  191. package/dist/markdown/builder/elements/paragraph.d.ts.map +1 -0
  192. package/dist/markdown/builder/elements/paragraph.js +14 -0
  193. package/dist/markdown/builder/elements/paragraph.js.map +1 -0
  194. package/dist/markdown/builder/elements/table.d.ts +27 -0
  195. package/dist/markdown/builder/elements/table.d.ts.map +1 -0
  196. package/dist/markdown/builder/elements/table.js +156 -0
  197. package/dist/markdown/builder/elements/table.js.map +1 -0
  198. package/dist/markdown/builder/elements/tableOfContents.d.ts +32 -0
  199. package/dist/markdown/builder/elements/tableOfContents.d.ts.map +1 -0
  200. package/dist/markdown/builder/elements/tableOfContents.js +96 -0
  201. package/dist/markdown/builder/elements/tableOfContents.js.map +1 -0
  202. package/dist/markdown/extensions/error.js +38 -0
  203. package/dist/markdown/extensions/error.js.map +1 -0
  204. package/dist/markdown/extensions/header.js +45 -0
  205. package/dist/markdown/extensions/header.js.map +1 -0
  206. package/dist/markdown/extensions/index.js +16 -0
  207. package/dist/markdown/extensions/index.js.map +1 -0
  208. package/dist/markdown/extensions/success.js +38 -0
  209. package/dist/markdown/extensions/success.js.map +1 -0
  210. package/dist/markdown/extensions/table/index.js +227 -0
  211. package/dist/markdown/extensions/table/index.js.map +1 -0
  212. package/dist/markdown/extensions/table/types.d.ts +20 -0
  213. package/dist/markdown/extensions/table/types.d.ts.map +1 -0
  214. package/dist/markdown/extensions/warning.js +38 -0
  215. package/dist/markdown/extensions/warning.js.map +1 -0
  216. package/dist/markdown/getRemarkable.js +28 -0
  217. package/dist/markdown/getRemarkable.js.map +1 -0
  218. package/dist/markdown/help.js +28 -0
  219. package/dist/markdown/help.js.map +1 -0
  220. package/dist/markdown/html.js +17 -0
  221. package/dist/markdown/html.js.map +1 -0
  222. package/dist/markdown/parseMarkdown.d.ts +10 -0
  223. package/dist/markdown/parseMarkdown.d.ts.map +1 -0
  224. package/dist/markdown/parseMarkdown.js +31 -0
  225. package/dist/markdown/parseMarkdown.js.map +1 -0
  226. package/dist/markdown/styles.js +55 -0
  227. package/dist/markdown/styles.js.map +1 -0
  228. package/dist/markdown/theme/markdownTheme.js +143 -0
  229. package/dist/markdown/theme/markdownTheme.js.map +1 -0
  230. package/dist/markdown/types.d.ts +56 -0
  231. package/dist/markdown/types.d.ts.map +1 -0
  232. package/dist/markdown/types.js +5 -0
  233. package/dist/markdown/types.js.map +1 -0
  234. package/dist/methods/CustomThemeProvider.js +14 -0
  235. package/dist/methods/CustomThemeProvider.js.map +1 -0
  236. package/dist/methods/getMainTheme.js +30 -0
  237. package/dist/methods/getMainTheme.js.map +1 -0
  238. package/dist/methods/injectStyles.d.ts +34 -0
  239. package/dist/methods/injectStyles.d.ts.map +1 -0
  240. package/dist/methods/injectStyles.js +10 -0
  241. package/dist/methods/injectStyles.js.map +1 -0
  242. package/dist/methods/makeStyledComponent.d.ts +29 -0
  243. package/dist/methods/makeStyledComponent.d.ts.map +1 -0
  244. package/dist/methods/makeStyledComponent.js +39 -0
  245. package/dist/methods/makeStyledComponent.js.map +1 -0
  246. package/dist/methods/spacingLayout/index.d.ts +23 -0
  247. package/dist/methods/spacingLayout/index.d.ts.map +1 -0
  248. package/dist/methods/spacingLayout/index.js +29 -0
  249. package/dist/methods/spacingLayout/index.js.map +1 -0
  250. package/dist/methods/useMainTheme.d.ts +8 -0
  251. package/dist/methods/useMainTheme.d.ts.map +1 -0
  252. package/dist/methods/useMainTheme.js +45 -0
  253. package/dist/methods/useMainTheme.js.map +1 -0
  254. package/dist/themeuiExports.d.ts +7 -0
  255. package/dist/themeuiExports.d.ts.map +1 -0
  256. package/dist/util/getVariant.d.ts +7 -0
  257. package/dist/util/getVariant.d.ts.map +1 -0
  258. package/dist/util/getVariant.js +6 -0
  259. package/dist/util/getVariant.js.map +1 -0
  260. package/dist/util.d.ts +43 -0
  261. package/dist/util.d.ts.map +1 -0
  262. package/dist/util.js +34 -0
  263. package/dist/util.js.map +1 -0
  264. package/jsx-runtime/dist/jsx-runtime.d.ts +3 -0
  265. package/jsx-runtime/dist/theme-ui-jsx-runtime.browser.esm.js +2 -0
  266. package/jsx-runtime/dist/theme-ui-jsx-runtime.cjs.d.ts +2 -0
  267. package/jsx-runtime/dist/theme-ui-jsx-runtime.cjs.d.ts.map +1 -0
  268. package/jsx-runtime/dist/theme-ui-jsx-runtime.cjs.dev.js +21 -0
  269. package/jsx-runtime/dist/theme-ui-jsx-runtime.cjs.js +7 -0
  270. package/jsx-runtime/dist/theme-ui-jsx-runtime.cjs.prod.js +21 -0
  271. package/jsx-runtime/dist/theme-ui-jsx-runtime.esm.js +2 -0
  272. package/jsx-runtime/dist/theme-ui-jsx-runtime.worker.esm.js +2 -0
  273. package/jsx-runtime/package.json +8 -0
  274. package/package.json +42 -38
  275. package/LICENSE.md +0 -21
  276. package/README.md +0 -1
  277. package/cleanDist.json +0 -3
@@ -0,0 +1,96 @@
1
+ import { MarkdownParagraph } from './paragraph.js';
2
+
3
+ const tocPlaceholder = "((())) TABLE_OF_CONTENTS ((()))";
4
+ class MarkdownTableOfContents extends MarkdownParagraph {
5
+ constructor() {
6
+ super(tocPlaceholder);
7
+ }
8
+ /**
9
+ * Este método toma el html, busca todos los headings (que ya fueron
10
+ * procesados por setUniqueIds) y crea una tabla de contenidos a partir de
11
+ * esos ids
12
+ */
13
+ static makeTableOfContents(title, html) {
14
+ const idMap = {};
15
+ const parser = new DOMParser();
16
+ const parsedDocument = parser.parseFromString(html, "text/html");
17
+ const headers = parsedDocument.querySelectorAll("h1, h2, h3, h4, h5, h6");
18
+ const root = document.createElement("ul");
19
+ root.id = "TableOfContents";
20
+ const prevParentMap = { 0: root };
21
+ for (const header of headers) {
22
+ this.setUniqueId(idMap, header);
23
+ const depth = this.getNodeDepth(header);
24
+ const parentDepth = depth - 1;
25
+ this.deletePrevValues(prevParentMap, depth);
26
+ const ulParent = this.getParent(prevParentMap, parentDepth);
27
+ this.createNewLevel(header, ulParent, prevParentMap, parentDepth);
28
+ }
29
+ return parsedDocument.documentElement.outerHTML.replace(
30
+ tocPlaceholder,
31
+ `<h2>${title}</h2>${root.outerHTML}`
32
+ );
33
+ }
34
+ static deletePrevValues(prevParentMap, depth) {
35
+ for (let i = depth; i < 7; i++)
36
+ prevParentMap[i] = null;
37
+ }
38
+ static getParent(prevParentMap, depth) {
39
+ for (let i = depth; i >= 0; i--) {
40
+ const parent = prevParentMap[i];
41
+ if (parent)
42
+ return parent;
43
+ }
44
+ throw new Error("Element has no parent");
45
+ }
46
+ static createNewLevel(elem, parentElement, prevParentMap, parentDepth) {
47
+ const newLi = document.createElement("li");
48
+ const newA = document.createElement("a");
49
+ const newB = document.createElement("b");
50
+ newA.href = `#${elem.id}`;
51
+ newB.appendChild(document.createTextNode(elem.textContent));
52
+ newA.appendChild(newB);
53
+ newLi.appendChild(newA);
54
+ parentElement.appendChild(newLi);
55
+ prevParentMap[parentDepth + 1] = document.createElement("ul");
56
+ newLi.appendChild(prevParentMap[parentDepth + 1]);
57
+ }
58
+ static getNodeDepth(node) {
59
+ return parseInt(node.nodeName.replace("H", ""));
60
+ }
61
+ /**
62
+ * Este método toma el html original, busca todos los headings y a cada uno
63
+ * le pone un id único, reemplazando el id original si lo tuviera:
64
+ *
65
+ * Si un heading no tiene id: le agrega uno autogenerado con autoincrement +
66
+ * texto del heading procesado (reemplazar espacios por guiones, etc)
67
+ *
68
+ * Si un heading tiene id: le agrega un autoincrement con un sufijo:
69
+ * {id_original}_-_{autoincrement}
70
+ *
71
+ * De esta forma, nos aseguramos que ningún heading tenga un id igual a otro
72
+ */
73
+ static setUniqueId(idMap, element) {
74
+ const replacementRegex = /[\s\(\)]+/g;
75
+ const replacementChar = "-";
76
+ const id = (element.id ? element.id : element.textContent)?.toLocaleLowerCase().trim().replaceAll(replacementRegex, replacementChar);
77
+ const tokens = id.split("_-_", 2);
78
+ if (tokens.length !== 2)
79
+ tokens[1] = 0;
80
+ let cond = true;
81
+ for (
82
+ ;
83
+ cond;
84
+ // eslint-disable-next-line no-param-reassign
85
+ (idMap[`${tokens[0]}_-_${tokens[1]}`] = true) && tokens[1]++
86
+ )
87
+ cond = idMap[`${tokens[0]}_-_${tokens[1]}`];
88
+ element.id = `${tokens[0]}_-_${tokens[1]}`;
89
+ }
90
+ static appendTableOfContents(title, html) {
91
+ return this.makeTableOfContents(title, html);
92
+ }
93
+ }
94
+
95
+ export { MarkdownTableOfContents };
96
+ //# sourceMappingURL=tableOfContents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableOfContents.js","sources":["../../../../src/markdown/builder/elements/tableOfContents.ts"],"sourcesContent":["import { MarkdownParagraph } from './paragraph';\n\nconst tocPlaceholder = '((())) TABLE_OF_CONTENTS ((()))';\n\nexport class MarkdownTableOfContents extends MarkdownParagraph {\n constructor() {\n super(tocPlaceholder);\n }\n\n /**\n * Este método toma el html, busca todos los headings (que ya fueron\n * procesados por setUniqueIds) y crea una tabla de contenidos a partir de\n * esos ids\n */\n private static makeTableOfContents(title: string, html: string) {\n const idMap: Record<string, boolean> = {};\n const parser: DOMParser = new DOMParser();\n const parsedDocument: Document = parser.parseFromString(html, 'text/html');\n\n const headers: NodeListOf<HTMLHeadElement> =\n parsedDocument.querySelectorAll('h1, h2, h3, h4, h5, h6');\n\n const root: HTMLUListElement = document.createElement('ul');\n root.id = 'TableOfContents';\n\n const prevParentMap: Record<number, HTMLElement> = { 0: root };\n\n for (const header of headers) {\n // eslint-disable-next-line no-param-reassign\n this.setUniqueId(idMap, header);\n\n const depth = this.getNodeDepth(header);\n const parentDepth = depth - 1;\n\n this.deletePrevValues(prevParentMap, depth);\n\n const ulParent = this.getParent(prevParentMap, parentDepth);\n\n this.createNewLevel(header, ulParent, prevParentMap, parentDepth);\n }\n\n return parsedDocument.documentElement.outerHTML.replace(\n tocPlaceholder,\n `<h2>${title}</h2>${root.outerHTML}`,\n );\n }\n\n private static deletePrevValues(\n prevParentMap: Record<number, HTMLElement | null>,\n depth: number,\n ): void {\n // eslint-disable-next-line no-param-reassign\n for (let i = depth; i < 7; i++) prevParentMap[i] = null;\n }\n\n private static getParent(\n prevParentMap: Record<number, HTMLElement>,\n depth: number,\n ): HTMLElement {\n // eslint-disable-next-line no-param-reassign\n for (let i = depth; i >= 0; i--) {\n const parent = prevParentMap[i];\n if (parent) return parent;\n }\n throw new Error('Element has no parent');\n }\n\n private static createNewLevel(\n elem: HTMLElement,\n parentElement: HTMLElement,\n prevParentMap: Record<number, HTMLElement>,\n parentDepth: number,\n ) {\n const newLi = document.createElement('li');\n const newA = document.createElement('a');\n const newB = document.createElement('b');\n newA.href = `#${elem.id}`;\n newB.appendChild(document.createTextNode(elem.textContent as string));\n newA.appendChild(newB);\n newLi.appendChild(newA);\n parentElement.appendChild(newLi);\n // eslint-disable-next-line no-param-reassign\n prevParentMap[parentDepth + 1] = document.createElement('ul');\n newLi.appendChild(prevParentMap[parentDepth + 1]);\n }\n\n private static getNodeDepth(node: HTMLElement): number {\n return parseInt(node.nodeName.replace('H', ''));\n }\n\n /**\n * Este método toma el html original, busca todos los headings y a cada uno\n * le pone un id único, reemplazando el id original si lo tuviera:\n *\n * Si un heading no tiene id: le agrega uno autogenerado con autoincrement +\n * texto del heading procesado (reemplazar espacios por guiones, etc)\n *\n * Si un heading tiene id: le agrega un autoincrement con un sufijo:\n * {id_original}_-_{autoincrement}\n *\n * De esta forma, nos aseguramos que ningún heading tenga un id igual a otro\n */\n private static setUniqueId(\n idMap: Record<string, boolean>,\n element: HTMLHeadElement,\n ) {\n const replacementRegex = /[\\s\\(\\)]+/g;\n const replacementChar = '-';\n\n const id = (element.id ? element.id : element.textContent!)\n ?.toLocaleLowerCase()\n .trim()\n .replaceAll(replacementRegex, replacementChar);\n\n const tokens: (string | number)[] = id.split('_-_', 2);\n if (tokens.length !== 2) tokens[1] = 0;\n let cond = true;\n for (\n ;\n cond;\n // eslint-disable-next-line no-param-reassign\n (idMap[`${tokens[0]}_-_${tokens[1]}`] = true) && (tokens[1] as number)++\n )\n cond = idMap[`${tokens[0]}_-_${tokens[1]}`];\n\n // eslint-disable-next-line no-param-reassign\n element.id = `${tokens[0]}_-_${tokens[1]}`;\n }\n\n public static appendTableOfContents(title: string, html: string): string {\n return this.makeTableOfContents(title, html);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ const name = "error";
2
+ const errorExtension = {
3
+ name,
4
+ parser: (state, silent) => {
5
+ const start = state.pos;
6
+ if (state.src.charCodeAt(start) !== 33 || state.src.charCodeAt(start + 1) !== 33 || state.src.charCodeAt(start + 2) !== 33) {
7
+ return false;
8
+ }
9
+ const match = state.src.slice(start).match(/^!!!(.+?)!!!/);
10
+ if (!match || start + match[0].length > state.posMax) {
11
+ return false;
12
+ }
13
+ if (!silent) {
14
+ state.push({
15
+ type: name,
16
+ content: match[1],
17
+ level: state.level
18
+ });
19
+ }
20
+ state.pos += match[0].length;
21
+ return true;
22
+ },
23
+ replacer: (md) => (tokens, idx) => {
24
+ const token = tokens[idx];
25
+ return `<div class="${name}">${md.renderInline(token.content)}</div>`;
26
+ },
27
+ styles: () => `.${name} {
28
+ padding: var(--space-5);
29
+ background-color: var(--color-error-back);
30
+ border-left: 3px solid var(--color-error-border);
31
+ color: var(--color-error-text);
32
+ margin: 10px 0;
33
+ box-shadow: 0 2px 2px rgba(0,0,0,0.2);
34
+ }`
35
+ };
36
+
37
+ export { errorExtension };
38
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sources":["../../../src/markdown/extensions/error.ts"],"sourcesContent":["import type { IRemarkableInlineExtension } from '../types';\n\ntype ErrorToken = {\n type: string;\n content: string;\n level: number;\n};\n\nconst name = 'error';\n\n/**\n * Esta extensión permite mostrar un cuadro de advertencia usando la sintaxis:\n *\n * !!! Esto es una advertencia !!!\n */\nexport const errorExtension: IRemarkableInlineExtension = {\n name,\n parser: (state, silent) => {\n const start = state.pos;\n if (\n state.src.charCodeAt(start) !== 0x21 /* ! */ ||\n state.src.charCodeAt(start + 1) !== 0x21 /* ! */ ||\n state.src.charCodeAt(start + 2) !== 0x21 /* ! */\n ) {\n return false;\n }\n\n const match = state.src.slice(start).match(/^!!!(.+?)!!!/);\n\n if (!match || start + match[0].length > state.posMax) {\n return false;\n }\n\n if (!silent) {\n state.push({\n type: name,\n content: match[1],\n level: state.level,\n });\n }\n\n state.pos += match[0].length;\n return true;\n },\n\n replacer: (md) => (tokens, idx) => {\n const token = tokens[idx] as ErrorToken;\n return `<div class=\"${name}\">${md.renderInline(token.content)}</div>`;\n },\n\n styles: () => `.${name} {\n padding: var(--space-5);\n background-color: var(--color-error-back);\n border-left: 3px solid var(--color-error-border);\n color: var(--color-error-text);\n margin: 10px 0;\n box-shadow: 0 2px 2px rgba(0,0,0,0.2);\n}`,\n};\n"],"names":[],"mappings":"AAQA,MAAM,IAAO,GAAA,OAAA,CAAA;AAON,MAAM,cAA6C,GAAA;AAAA,EACxD,IAAA;AAAA,EACA,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAW,KAAA;AACzB,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAA;AACpB,IAAA,IACE,MAAM,GAAI,CAAA,UAAA,CAAW,KAAK,CAAM,KAAA,EAAA,IAChC,MAAM,GAAI,CAAA,UAAA,CAAW,QAAQ,CAAC,CAAA,KAAM,MACpC,KAAM,CAAA,GAAA,CAAI,WAAW,KAAQ,GAAA,CAAC,MAAM,EACpC,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,CAAE,MAAM,cAAc,CAAA,CAAA;AAEzD,IAAI,IAAA,CAAC,SAAS,KAAQ,GAAA,KAAA,CAAM,CAAC,CAAE,CAAA,MAAA,GAAS,MAAM,MAAQ,EAAA;AACpD,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,KAAA,CAAM,IAAK,CAAA;AAAA,QACT,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,QAChB,OAAO,KAAM,CAAA,KAAA;AAAA,OACd,CAAA,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,GAAA,IAAO,KAAM,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,QAAU,EAAA,CAAC,EAAO,KAAA,CAAC,QAAQ,GAAQ,KAAA;AACjC,IAAM,MAAA,KAAA,GAAQ,OAAO,GAAG,CAAA,CAAA;AACxB,IAAA,OAAO,eAAe,IAAI,CAAA,EAAA,EAAK,GAAG,YAAa,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,MAAA,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,MAAA,EAAQ,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAQxB;;;;"}
@@ -0,0 +1,45 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ class HeadingToken {
8
+ constructor(content, level) {
9
+ this.level = level;
10
+ __publicField(this, "_content");
11
+ __publicField(this, "type", "heading");
12
+ this._content = content;
13
+ }
14
+ get content() {
15
+ return JSON.stringify(this._content);
16
+ }
17
+ }
18
+ const name = "heading";
19
+ const headerExtension = {
20
+ name,
21
+ parser(state, startLine, endLine, silent) {
22
+ const line = state.getLines(startLine, startLine + 1, 0, false);
23
+ const result = line.match(/(#+) ([^\{\n]+)(?:\{: #([^\}]+?) *\})?/);
24
+ if (!result)
25
+ return false;
26
+ const level = result[1].length;
27
+ const text = result[2];
28
+ const id = (result[3] ?? result[2]).replaceAll(/\s+/g, "-");
29
+ if (!silent)
30
+ state.tokens.push(new HeadingToken({ level, text, id }, state.level));
31
+ state.line += 1;
32
+ return true;
33
+ },
34
+ replacer: (md) => (tokens, idx) => {
35
+ const token = tokens[idx];
36
+ const tag = `h${token._content.level}`;
37
+ return `<${tag} ${token._content.id ? `id="${token._content.id.toLowerCase()}"` : ""}>${md.renderInline(token._content.text)}</${tag}>`;
38
+ },
39
+ styles() {
40
+ return "";
41
+ }
42
+ };
43
+
44
+ export { headerExtension };
45
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sources":["../../../src/markdown/extensions/header.ts"],"sourcesContent":["import { IRemarkableBlockExtension } from '../types';\n\nclass HeadingToken {\n _content: { level: number; text: string; id?: string };\n\n get content() {\n return JSON.stringify(this._content);\n }\n\n type = 'heading';\n\n constructor(\n content: { level: number; text: string; id?: string },\n public level: number,\n ) {\n this._content = content;\n }\n}\n\nconst name = 'heading';\n\nexport const headerExtension: IRemarkableBlockExtension = {\n name,\n parser(state, startLine, endLine, silent) {\n const line = state.getLines(startLine, startLine + 1, 0, false);\n const result = line.match(/(#+) ([^\\{\\n]+)(?:\\{: #([^\\}]+?) *\\})?/);\n if (!result) return false;\n\n const level = result[1].length;\n const text = result[2];\n const id = (result[3] ?? result[2]).replaceAll(/\\s+/g, '-');\n\n if (!silent)\n state.tokens.push(new HeadingToken({ level, text, id }, state.level));\n\n state.line += 1;\n return true;\n },\n replacer: (md) => (tokens, idx) => {\n const token = tokens[idx] as HeadingToken;\n const tag = `h${token._content.level}`;\n return `<${tag} ${\n token._content.id ? `id=\"${token._content.id.toLowerCase()}\"` : ''\n }>${md.renderInline(token._content.text)}</${tag}>`;\n },\n styles() {\n return '';\n },\n};\n"],"names":[],"mappings":";;;;;;AAEA,MAAM,YAAa,CAAA;AAAA,EASjB,WAAA,CACE,SACO,KACP,EAAA;AADO,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAVT,IAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAMA,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,SAAA,CAAA,CAAA;AAML,IAAA,IAAA,CAAK,QAAW,GAAA,OAAA,CAAA;AAAA,GAClB;AAAA,EAXA,IAAI,OAAU,GAAA;AACZ,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,GACrC;AAUF,CAAA;AAEA,MAAM,IAAO,GAAA,SAAA,CAAA;AAEN,MAAM,eAA6C,GAAA;AAAA,EACxD,IAAA;AAAA,EACA,MAAO,CAAA,KAAA,EAAO,SAAW,EAAA,OAAA,EAAS,MAAQ,EAAA;AACxC,IAAA,MAAM,OAAO,KAAM,CAAA,QAAA,CAAS,WAAW,SAAY,GAAA,CAAA,EAAG,GAAG,KAAK,CAAA,CAAA;AAC9D,IAAM,MAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,wCAAwC,CAAA,CAAA;AAClE,IAAA,IAAI,CAAC,MAAA;AAAQ,MAAO,OAAA,KAAA,CAAA;AAEpB,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AACxB,IAAM,MAAA,IAAA,GAAO,OAAO,CAAC,CAAA,CAAA;AACrB,IAAM,MAAA,EAAA,GAAA,CAAM,OAAO,CAAC,CAAA,IAAK,OAAO,CAAC,CAAA,EAAG,UAAW,CAAA,MAAA,EAAQ,GAAG,CAAA,CAAA;AAE1D,IAAA,IAAI,CAAC,MAAA;AACH,MAAM,KAAA,CAAA,MAAA,CAAO,IAAK,CAAA,IAAI,YAAa,CAAA,EAAE,KAAO,EAAA,IAAA,EAAM,EAAG,EAAA,EAAG,KAAM,CAAA,KAAK,CAAC,CAAA,CAAA;AAEtE,IAAA,KAAA,CAAM,IAAQ,IAAA,CAAA,CAAA;AACd,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EACA,QAAU,EAAA,CAAC,EAAO,KAAA,CAAC,QAAQ,GAAQ,KAAA;AACjC,IAAM,MAAA,KAAA,GAAQ,OAAO,GAAG,CAAA,CAAA;AACxB,IAAA,MAAM,GAAM,GAAA,CAAA,CAAA,EAAI,KAAM,CAAA,QAAA,CAAS,KAAK,CAAA,CAAA,CAAA;AACpC,IAAO,OAAA,CAAA,CAAA,EAAI,GAAG,CACZ,CAAA,EAAA,KAAA,CAAM,SAAS,EAAK,GAAA,CAAA,IAAA,EAAO,KAAM,CAAA,QAAA,CAAS,EAAG,CAAA,WAAA,EAAa,CAAM,CAAA,CAAA,GAAA,EAClE,IAAI,EAAG,CAAA,YAAA,CAAa,MAAM,QAAS,CAAA,IAAI,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAA,CAAA;AAAA,GAClD;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACF;;;;"}
@@ -0,0 +1,16 @@
1
+ import { errorExtension } from './error.js';
2
+ import { headerExtension } from './header.js';
3
+ import { successExtension } from './success.js';
4
+ import { TableExtension } from './table/index.js';
5
+ import { warningExtension } from './warning.js';
6
+
7
+ const markdownExtensions = [
8
+ headerExtension,
9
+ errorExtension,
10
+ successExtension,
11
+ new TableExtension(),
12
+ warningExtension
13
+ ];
14
+
15
+ export { markdownExtensions };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/markdown/extensions/index.ts"],"sourcesContent":["import { errorExtension } from './error';\nimport { headerExtension } from './header';\nimport { successExtension } from './success';\nimport { TableExtension } from './table';\nimport { warningExtension } from './warning';\n\nexport const markdownExtensions = [\n headerExtension,\n errorExtension,\n successExtension,\n new TableExtension(),\n warningExtension,\n];\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,kBAAqB,GAAA;AAAA,EAChC,eAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,IAAI,cAAe,EAAA;AAAA,EACnB,gBAAA;AACF;;;;"}
@@ -0,0 +1,38 @@
1
+ const name = "success";
2
+ const successExtension = {
3
+ name,
4
+ parser: (state, silent) => {
5
+ const start = state.pos;
6
+ if (state.src.charAt(start + 1) !== "$" || state.src.charAt(start + 1) !== "$") {
7
+ return false;
8
+ }
9
+ const match = state.src.slice(start).match(/^\$\$(.+?)\$\$/);
10
+ if (!match || start + match[0].length > state.posMax) {
11
+ return false;
12
+ }
13
+ if (!silent) {
14
+ state.push({
15
+ type: name,
16
+ content: match[1],
17
+ level: state.level
18
+ });
19
+ }
20
+ state.pos += match[0].length;
21
+ return true;
22
+ },
23
+ replacer: (md) => (tokens, idx) => {
24
+ const token = tokens[idx];
25
+ return `<div class="${name}">${md.renderInline(token.content)}</div>`;
26
+ },
27
+ styles: () => `.${name} {
28
+ padding: var(--space-5);
29
+ background-color: var(--color-success-back);
30
+ border-left: 3px solid var(--color-success-border);
31
+ color: var(--color-success-text);
32
+ margin: 10px 0;
33
+ box-shadow: 0 2px 2px rgba(0,0,0,0.2);
34
+ }`
35
+ };
36
+
37
+ export { successExtension };
38
+ //# sourceMappingURL=success.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"success.js","sources":["../../../src/markdown/extensions/success.ts"],"sourcesContent":["import type { IRemarkableInlineExtension } from '../types';\n\ntype SuccessToken = {\n type: string;\n content: string;\n level: number;\n};\n\nconst name = 'success';\n\n/**\n * Esta extensión permite mostrar un cuadro de advertencia usando la sintaxis:\n *\n * !!! Esto es una advertencia !!!\n */\nexport const successExtension: IRemarkableInlineExtension = {\n name,\n parser: (state, silent) => {\n const start = state.pos;\n if (\n state.src.charAt(start + 1) !== '$' ||\n state.src.charAt(start + 1) !== '$'\n ) {\n return false;\n }\n\n const match = state.src.slice(start).match(/^\\$\\$(.+?)\\$\\$/);\n\n if (!match || start + match[0].length > state.posMax) {\n return false;\n }\n\n if (!silent) {\n state.push({\n type: name,\n content: match[1],\n level: state.level,\n });\n }\n\n state.pos += match[0].length;\n return true;\n },\n\n replacer: (md) => (tokens, idx) => {\n const token = tokens[idx] as SuccessToken;\n return `<div class=\"${name}\">${md.renderInline(token.content)}</div>`;\n },\n\n styles: () => `.${name} {\n padding: var(--space-5);\n background-color: var(--color-success-back);\n border-left: 3px solid var(--color-success-border);\n color: var(--color-success-text);\n margin: 10px 0;\n box-shadow: 0 2px 2px rgba(0,0,0,0.2);\n}`,\n};\n"],"names":[],"mappings":"AAQA,MAAM,IAAO,GAAA,SAAA,CAAA;AAON,MAAM,gBAA+C,GAAA;AAAA,EAC1D,IAAA;AAAA,EACA,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAW,KAAA;AACzB,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAA;AACpB,IAAA,IACE,KAAM,CAAA,GAAA,CAAI,MAAO,CAAA,KAAA,GAAQ,CAAC,CAAA,KAAM,GAChC,IAAA,KAAA,CAAM,GAAI,CAAA,MAAA,CAAO,KAAQ,GAAA,CAAC,MAAM,GAChC,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,CAAE,MAAM,gBAAgB,CAAA,CAAA;AAE3D,IAAI,IAAA,CAAC,SAAS,KAAQ,GAAA,KAAA,CAAM,CAAC,CAAE,CAAA,MAAA,GAAS,MAAM,MAAQ,EAAA;AACpD,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,KAAA,CAAM,IAAK,CAAA;AAAA,QACT,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,QAChB,OAAO,KAAM,CAAA,KAAA;AAAA,OACd,CAAA,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,GAAA,IAAO,KAAM,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,QAAU,EAAA,CAAC,EAAO,KAAA,CAAC,QAAQ,GAAQ,KAAA;AACjC,IAAM,MAAA,KAAA,GAAQ,OAAO,GAAG,CAAA,CAAA;AACxB,IAAA,OAAO,eAAe,IAAI,CAAA,EAAA,EAAK,GAAG,YAAa,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,MAAA,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,MAAA,EAAQ,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAQxB;;;;"}
@@ -0,0 +1,227 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ var __accessCheck = (obj, member, msg) => {
8
+ if (!member.has(obj))
9
+ throw TypeError("Cannot " + msg);
10
+ };
11
+ var __privateGet = (obj, member, getter) => {
12
+ __accessCheck(obj, member, "read from private field");
13
+ return getter ? getter.call(obj) : member.get(obj);
14
+ };
15
+ var __privateAdd = (obj, member, value) => {
16
+ if (member.has(obj))
17
+ throw TypeError("Cannot add the same private member more than once");
18
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
19
+ };
20
+ var __privateMethod = (obj, member, method) => {
21
+ __accessCheck(obj, member, "access private method");
22
+ return method;
23
+ };
24
+ var _getColumnAlignment, getColumnAlignment_fn, _cellParsers, _parseCell, parseCell_fn, _parseHeadRow, parseHeadRow_fn, _parseRow, parseRow_fn;
25
+ function getCell(c) {
26
+ return typeof c === "string" ? { content: c } : c;
27
+ }
28
+ class TableToken {
29
+ constructor(content, lines) {
30
+ this.lines = lines;
31
+ __privateAdd(this, _getColumnAlignment);
32
+ __publicField(this, "content");
33
+ __publicField(this, "level", 1);
34
+ __publicField(this, "type", name);
35
+ this.content = JSON.stringify(content);
36
+ }
37
+ getTable() {
38
+ const newTable = JSON.parse(this.content);
39
+ newTable.header = newTable.header.map((c) => getCell(c));
40
+ newTable.rows = newTable.rows.map(
41
+ (row) => row.map((cell) => getCell(cell))
42
+ );
43
+ return newTable;
44
+ }
45
+ getTableString(parsers, md) {
46
+ const table = this.getTable();
47
+ const head = "<thead><tr>" + table.header.map((current) => {
48
+ const cell = getCell(current);
49
+ return `<th ${parsers.map((parser) => parser.getHtmlAttributes(current)).join(" ")}>${md.renderInline(cell.content)}</th>`;
50
+ }).join("") + "</tr></thead>";
51
+ const body = "<tbody>" + table.rows.map((row) => {
52
+ return "<tr>" + row.map((current, i) => {
53
+ current.align = __privateMethod(this, _getColumnAlignment, getColumnAlignment_fn).call(this, table, i);
54
+ return `<td ${parsers.map((parser) => parser.getHtmlAttributes(current)).join(" ")}>${md.renderInline(current.content)}</td>`;
55
+ }).join("") + "</tr>";
56
+ }).join("\n") + "</tbody>";
57
+ return `<table ${table.id ? `id="${table.id}"` : ""}>${head}${body}</table>`;
58
+ }
59
+ }
60
+ _getColumnAlignment = new WeakSet();
61
+ getColumnAlignment_fn = function(table, index) {
62
+ let sum = 0, i = 0;
63
+ for (i = 0; i < table.header.length && sum <= index; i++) {
64
+ sum += Number.parseInt(getCell(table.header[i]).colSpan ?? "1", 10);
65
+ }
66
+ return getCell(table.header[i - 1]).align;
67
+ };
68
+ const name = "advancedTable";
69
+ const headerRowRegex = /^ *(?:\{ *#([\w\-]+) *\})? *((?:\|.+)+\|) *$/;
70
+ const rowRegex = /^ *(?:\|.+)+\| *$/;
71
+ const separatorRegex = /^ *(?:\| *:? *----* *:? *)+\| *$/;
72
+ class TableExtension {
73
+ constructor() {
74
+ __privateAdd(this, _parseCell);
75
+ __privateAdd(this, _parseHeadRow);
76
+ __privateAdd(this, _parseRow);
77
+ __privateAdd(this, _cellParsers, [
78
+ {
79
+ /** className */
80
+ getHtmlAttributes(cell) {
81
+ return `${cell.className ? ` class="${cell.className ?? ""}"` : ""}`;
82
+ },
83
+ parseCellString(content) {
84
+ const classNameRegex = /\(\.([^\)]+)\)/;
85
+ const className = content.match(classNameRegex)?.[1];
86
+ return {
87
+ parsedCell: { className },
88
+ newContent: content.replace(classNameRegex, "")
89
+ };
90
+ }
91
+ },
92
+ {
93
+ /** rowSpan & colSpan */
94
+ getHtmlAttributes(cell) {
95
+ return [
96
+ `${cell.rowSpan ? `rowspan="${cell.rowSpan}"` : ""}`,
97
+ `${cell.colSpan ? `colspan="${cell.colSpan}"` : ""}`
98
+ ].join(" ");
99
+ },
100
+ parseCellString(content) {
101
+ const rowSpanRegex = /\(\{rowSpan:(\d+)\}\)/;
102
+ const rowSpan = content.match(rowSpanRegex)?.[1];
103
+ const colSpanRegex = /\(\{colSpan:(\d+)\}\)/;
104
+ const colSpan = content.match(colSpanRegex)?.[1];
105
+ return {
106
+ parsedCell: {
107
+ rowSpan,
108
+ colSpan
109
+ },
110
+ newContent: content.replace(rowSpanRegex, "").replace(colSpanRegex, "")
111
+ };
112
+ }
113
+ },
114
+ {
115
+ /** styles */
116
+ getHtmlAttributes(cell) {
117
+ const styles = [];
118
+ if (cell.align)
119
+ styles.push(`text-align: ${cell.align}`);
120
+ if (cell.style)
121
+ styles.push(cell.style);
122
+ const style = styles.join("; ");
123
+ return `${style ? ` style="${style}"` : ""}`;
124
+ },
125
+ parseCellString(content) {
126
+ const stylesRegex = /\(\{style:([^\}]+)\}\)/;
127
+ const style = content.match(stylesRegex)?.[1] ?? "";
128
+ return {
129
+ parsedCell: { style },
130
+ newContent: content.replace(stylesRegex, "")
131
+ };
132
+ }
133
+ }
134
+ ]);
135
+ __publicField(this, "name", name);
136
+ __publicField(this, "parser", (state, startLine, endLine, checkMode) => {
137
+ if (startLine + 1 >= endLine) {
138
+ return false;
139
+ }
140
+ const firstLineIsHeader = !!state.getLines(startLine, startLine + 1, 0, false).match(headerRowRegex);
141
+ if (checkMode) {
142
+ return firstLineIsHeader;
143
+ }
144
+ if (firstLineIsHeader) {
145
+ const headLine = state.getLines(startLine, startLine + 1, 0, false);
146
+ const separatorLine = state.getLines(
147
+ startLine + 1,
148
+ startLine + 2,
149
+ 0,
150
+ false
151
+ );
152
+ if (!separatorLine.match(separatorRegex))
153
+ return false;
154
+ try {
155
+ const parsedHead = __privateMethod(this, _parseHeadRow, parseHeadRow_fn).call(this, headLine);
156
+ const alignments = separatorLine.split(/ *\| */).filter(Boolean);
157
+ alignments.map((current, i2) => {
158
+ if (current.match(/: *----* *:/)) {
159
+ parsedHead.content[i2].align = "center";
160
+ } else if (current.match(/----* *:/)) {
161
+ parsedHead.content[i2].align = "right";
162
+ }
163
+ });
164
+ const rows = [];
165
+ let i = startLine + 2;
166
+ let line = null;
167
+ while (line = state.getLines(i, i + 1, 0, false)) {
168
+ if (line.match(rowRegex)) {
169
+ const rowCells = __privateMethod(this, _parseRow, parseRow_fn).call(this, line);
170
+ line = state.getLines(++i, i + 1, 0, false);
171
+ rows.push(rowCells);
172
+ } else {
173
+ break;
174
+ }
175
+ }
176
+ state.tokens.push(
177
+ new TableToken(
178
+ { id: parsedHead.id, header: parsedHead.content, rows },
179
+ [startLine, startLine + 2 + rows.length]
180
+ )
181
+ );
182
+ state.line += 2 + rows.length;
183
+ return true;
184
+ } catch (e) {
185
+ console.error(e);
186
+ return false;
187
+ }
188
+ }
189
+ return false;
190
+ });
191
+ __publicField(this, "replacer", (md) => (tokens, idx) => {
192
+ return tokens[idx].getTableString(__privateGet(this, _cellParsers), md);
193
+ });
194
+ __publicField(this, "styles", () => "");
195
+ }
196
+ }
197
+ _cellParsers = new WeakMap();
198
+ _parseCell = new WeakSet();
199
+ parseCell_fn = function(content) {
200
+ const cell = { content };
201
+ __privateGet(this, _cellParsers).forEach((current) => {
202
+ const result = current.parseCellString(cell.content);
203
+ Object.assign(cell, result.parsedCell, { content: result.newContent });
204
+ });
205
+ return cell;
206
+ };
207
+ _parseHeadRow = new WeakSet();
208
+ parseHeadRow_fn = function(line) {
209
+ const result = line.match(headerRowRegex);
210
+ const id = result[1] ?? "";
211
+ const content = result[2];
212
+ return {
213
+ id,
214
+ content: content.split(/ *\| */).slice(1, -1).map((current) => {
215
+ return __privateMethod(this, _parseCell, parseCell_fn).call(this, current);
216
+ })
217
+ };
218
+ };
219
+ _parseRow = new WeakSet();
220
+ parseRow_fn = function(content) {
221
+ return content.split(/ *\| */).slice(1, -1).map((current) => {
222
+ return __privateMethod(this, _parseCell, parseCell_fn).call(this, current);
223
+ });
224
+ };
225
+
226
+ export { TableExtension };
227
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/markdown/extensions/table/index.ts"],"sourcesContent":["import { IRemarkableBlockExtension } from '../../types';\nimport type { Remarkable } from 'remarkable';\nimport {\n MarkdownTableDefinition,\n MarkdownTableCell,\n MarkdownTableObjectCell,\n} from './types';\nimport { CellParser } from './CellParser';\nimport { StateBlock, TagToken } from 'remarkable/lib';\n\nfunction getCell(c: MarkdownTableCell): MarkdownTableObjectCell {\n return typeof c === 'string' ? { content: c } : c;\n}\n\nclass TableToken {\n content: string;\n level = 1;\n type = name;\n constructor(\n content: MarkdownTableDefinition,\n public lines: [number, number],\n ) {\n this.content = JSON.stringify(content);\n }\n\n getTable() {\n const newTable = JSON.parse(this.content) as MarkdownTableDefinition;\n\n newTable.header = newTable.header.map((c) => getCell(c));\n newTable.rows = newTable.rows.map((row) =>\n row.map((cell) => getCell(cell)),\n );\n\n return newTable;\n }\n\n #getColumnAlignment(table: MarkdownTableDefinition, index: number) {\n let sum = 0,\n i = 0;\n for (i = 0; i < table.header.length && sum <= index; i++) {\n sum += Number.parseInt(getCell(table.header[i]).colSpan ?? '1', 10);\n }\n return getCell(table.header[i - 1]).align;\n }\n getTableString(parsers: CellParser[], md: Remarkable) {\n const table = this.getTable();\n\n const head =\n '<thead><tr>' +\n table.header\n .map((current) => {\n const cell = getCell(current);\n\n return `<th ${parsers\n .map((parser) => parser.getHtmlAttributes(current))\n .join(' ')}>${md.renderInline(cell.content)}</th>`;\n })\n .join('') +\n '</tr></thead>';\n\n const body =\n '<tbody>' +\n table.rows\n .map((row) => {\n return (\n '<tr>' +\n row\n .map((current, i) => {\n // eslint-disable-next-line no-param-reassign\n current.align = this.#getColumnAlignment(table, i);\n\n return `<td ${parsers\n .map((parser) => parser.getHtmlAttributes(current))\n .join(' ')}>${md.renderInline(current.content)}</td>`;\n })\n .join('') +\n '</tr>'\n );\n })\n .join('\\n') +\n '</tbody>';\n\n return `<table ${\n table.id ? `id=\"${table.id}\"` : ''\n }>${head}${body}</table>`;\n }\n}\n\nconst name = 'advancedTable';\n/**\n * Identifica si una línea es una fila de cabecera válida\n */\nconst headerRowRegex = /^ *(?:\\{ *#([\\w\\-]+) *\\})? *((?:\\|.+)+\\|) *$/;\n/**\n * Identifica si una línea es una fila válida\n */\nconst rowRegex = /^ *(?:\\|.+)+\\| *$/;\n/**\n * Identifica si una línea es el separador entre header y body de la tabla\n */\nconst separatorRegex = /^ *(?:\\| *:? *----* *:? *)+\\| *$/;\n/**\n * Identifica los elementos de una celda\n */\n\n/**\n * How a table looks like:\n * \n| (.class) Cell1 | Cell2 | Cell3 | **_Cell4_** | Cell5 |\n|-------|-------|:-----:|------------:|-------|\n| (.class) CellContent | | | | |\n */\n\n/**\n * Esta extensión permite implementar tablas más complejas en markdown\n */\nexport class TableExtension implements IRemarkableBlockExtension {\n #cellParsers: CellParser[] = [\n {\n /** className */\n getHtmlAttributes(cell) {\n return `${cell.className ? ` class=\"${cell.className ?? ''}\"` : ''}`;\n },\n parseCellString(content) {\n const classNameRegex = /\\(\\.([^\\)]+)\\)/;\n const className = content.match(classNameRegex)?.[1];\n\n return {\n parsedCell: { className },\n newContent: content.replace(classNameRegex, ''),\n };\n },\n },\n {\n /** rowSpan & colSpan */\n getHtmlAttributes(cell) {\n return [\n `${cell.rowSpan ? `rowspan=\"${cell.rowSpan}\"` : ''}`,\n `${cell.colSpan ? `colspan=\"${cell.colSpan}\"` : ''}`,\n ].join(' ');\n },\n parseCellString(content) {\n const rowSpanRegex = /\\(\\{rowSpan:(\\d+)\\}\\)/;\n const rowSpan = content.match(rowSpanRegex)?.[1];\n const colSpanRegex = /\\(\\{colSpan:(\\d+)\\}\\)/;\n const colSpan = content.match(colSpanRegex)?.[1];\n\n return {\n parsedCell: {\n rowSpan,\n colSpan,\n },\n newContent: content\n .replace(rowSpanRegex, '')\n .replace(colSpanRegex, ''),\n };\n },\n },\n {\n /** styles */\n getHtmlAttributes(cell) {\n const styles = [];\n\n if (cell.align) styles.push(`text-align: ${cell.align}`);\n if (cell.style) styles.push(cell.style);\n\n const style = styles.join('; ');\n\n return `${style ? ` style=\"${style}\"` : ''}`;\n },\n parseCellString(content) {\n const stylesRegex = /\\(\\{style:([^\\}]+)\\}\\)/;\n const style = content.match(stylesRegex)?.[1] ?? '';\n\n return {\n parsedCell: { style },\n newContent: content.replace(stylesRegex, ''),\n };\n },\n },\n ];\n #parseCell(content: string) {\n const cell: MarkdownTableCell = { content };\n this.#cellParsers.forEach((current) => {\n const result = current.parseCellString(cell.content);\n Object.assign(cell, result.parsedCell, { content: result.newContent });\n });\n return cell;\n }\n\n #parseHeadRow(line: string) {\n const result = line.match(headerRowRegex);\n const id = result![1] ?? '';\n const content = result![2]!;\n\n return {\n id,\n content: content\n .split(/ *\\| */)\n .slice(1, -1)\n .map((current) => {\n return this.#parseCell(current);\n }),\n };\n }\n\n #parseRow(content: string) {\n return content\n .split(/ *\\| */)\n .slice(1, -1)\n .map((current) => {\n return this.#parseCell(current);\n });\n }\n\n name = name;\n parser = (\n state: StateBlock,\n startLine: number,\n endLine: number,\n checkMode: boolean,\n ): boolean => {\n if (startLine + 1 >= endLine) {\n return false;\n }\n\n const firstLineIsHeader = !!state\n .getLines(startLine, startLine + 1, 0, false)\n .match(headerRowRegex);\n\n if (checkMode) {\n return firstLineIsHeader;\n }\n\n if (firstLineIsHeader) {\n const headLine = state.getLines(startLine, startLine + 1, 0, false);\n const separatorLine = state.getLines(\n startLine + 1,\n startLine + 2,\n 0,\n false,\n );\n\n if (!separatorLine.match(separatorRegex)) return false;\n\n try {\n const parsedHead = this.#parseHeadRow(headLine);\n\n const alignments = separatorLine.split(/ *\\| */).filter(Boolean);\n\n alignments.map((current, i) => {\n if (current.match(/: *----* *:/)) {\n parsedHead.content[i].align = 'center';\n } else if (current.match(/----* *:/)) {\n parsedHead.content[i].align = 'right';\n }\n });\n\n const rows: MarkdownTableObjectCell[][] = [];\n let i = startLine + 2;\n let line: string | null = null;\n while ((line = state.getLines(i, i + 1, 0, false))) {\n if (line.match(rowRegex)) {\n const rowCells = this.#parseRow(line);\n line = state.getLines(++i, i + 1, 0, false);\n rows.push(rowCells);\n } else {\n break;\n }\n }\n\n state.tokens.push(\n new TableToken(\n { id: parsedHead.id, header: parsedHead.content, rows },\n [startLine, startLine + 2 + rows.length],\n ),\n );\n state.line += 2 + rows.length;\n\n return true;\n } catch (e) {\n console.error(e);\n return false;\n }\n }\n\n return false;\n };\n replacer = (md: Remarkable) => (tokens: TagToken[], idx: number) => {\n return (tokens[idx] as TableToken).getTableString(this.#cellParsers, md);\n };\n styles = () => '';\n}\n"],"names":["i"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ type TMarkdownTableAlignment = 'left' | 'center' | 'right' | 'justify';
2
+ type MarkdownTableObjectCell = {
3
+ /**
4
+ * The html element class attribute, may contain one or more classes
5
+ * separated by space.
6
+ */
7
+ className?: string;
8
+ colSpan?: string;
9
+ content: string;
10
+ rowSpan?: string;
11
+ /**
12
+ * Any valid style attribute value: CSS properties separated by ;
13
+ */
14
+ style?: string;
15
+ align?: TMarkdownTableAlignment;
16
+ };
17
+ type MarkdownTableCell = string | MarkdownTableObjectCell;
18
+
19
+ export type { MarkdownTableCell, MarkdownTableObjectCell, TMarkdownTableAlignment };
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ const name = "warning";
2
+ const warningExtension = {
3
+ name,
4
+ parser: (state, silent) => {
5
+ const start = state.pos;
6
+ if (state.src.charCodeAt(start) !== 33 || state.src.charCodeAt(start + 1) !== 33) {
7
+ return false;
8
+ }
9
+ const match = state.src.slice(start).match(/^!!(.+?)!!/);
10
+ if (!match || start + match[0].length > state.posMax) {
11
+ return false;
12
+ }
13
+ if (!silent) {
14
+ state.push({
15
+ type: name,
16
+ content: match[1],
17
+ level: state.level
18
+ });
19
+ }
20
+ state.pos += match[0].length;
21
+ return true;
22
+ },
23
+ replacer: (md) => (tokens, idx) => {
24
+ const token = tokens[idx];
25
+ return `<div class="${name}">${md.renderInline(token.content)}</div>`;
26
+ },
27
+ styles: () => `.${name} {
28
+ padding: var(--space-5);
29
+ background-color: var(--color-warning-back);
30
+ border-left: 3px solid var(--color-warning-border);
31
+ color: var(--color-warning-text);
32
+ margin: 10px 0;
33
+ box-shadow: 0 2px 2px rgba(0,0,0,0.2);
34
+ }`
35
+ };
36
+
37
+ export { warningExtension };
38
+ //# sourceMappingURL=warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning.js","sources":["../../../src/markdown/extensions/warning.ts"],"sourcesContent":["import type { IRemarkableInlineExtension } from '../types';\n\ntype WarningToken = {\n type: string;\n content: string;\n level: number;\n};\n\nconst name = 'warning';\n\n/**\n * Esta extensión permite mostrar un cuadro de advertencia usando la sintaxis:\n *\n * !! Esto es una advertencia !!\n */\nexport const warningExtension: IRemarkableInlineExtension = {\n name,\n parser: (state, silent) => {\n const start = state.pos;\n if (\n state.src.charCodeAt(start) !== 0x21 /* ! */ ||\n state.src.charCodeAt(start + 1) !== 0x21 /* ! */\n ) {\n return false;\n }\n\n const match = state.src.slice(start).match(/^!!(.+?)!!/);\n\n if (!match || start + match[0].length > state.posMax) {\n return false;\n }\n\n if (!silent) {\n state.push({\n type: name,\n content: match[1],\n level: state.level,\n });\n }\n\n state.pos += match[0].length;\n return true;\n },\n\n replacer: (md) => (tokens, idx) => {\n const token = tokens[idx] as WarningToken;\n return `<div class=\"${name}\">${md.renderInline(token.content)}</div>`;\n },\n\n styles: () => `.${name} {\n padding: var(--space-5);\n background-color: var(--color-warning-back);\n border-left: 3px solid var(--color-warning-border);\n color: var(--color-warning-text);\n margin: 10px 0;\n box-shadow: 0 2px 2px rgba(0,0,0,0.2);\n}`,\n};\n"],"names":[],"mappings":"AAQA,MAAM,IAAO,GAAA,SAAA,CAAA;AAON,MAAM,gBAA+C,GAAA;AAAA,EAC1D,IAAA;AAAA,EACA,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAW,KAAA;AACzB,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAA;AACpB,IAAA,IACE,KAAM,CAAA,GAAA,CAAI,UAAW,CAAA,KAAK,CAAM,KAAA,EAAA,IAChC,KAAM,CAAA,GAAA,CAAI,UAAW,CAAA,KAAA,GAAQ,CAAC,CAAA,KAAM,EACpC,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,QAAQ,KAAM,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,CAAE,MAAM,YAAY,CAAA,CAAA;AAEvD,IAAI,IAAA,CAAC,SAAS,KAAQ,GAAA,KAAA,CAAM,CAAC,CAAE,CAAA,MAAA,GAAS,MAAM,MAAQ,EAAA;AACpD,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,KAAA,CAAM,IAAK,CAAA;AAAA,QACT,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,QAChB,OAAO,KAAM,CAAA,KAAA;AAAA,OACd,CAAA,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,GAAA,IAAO,KAAM,CAAA,CAAC,CAAE,CAAA,MAAA,CAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,QAAU,EAAA,CAAC,EAAO,KAAA,CAAC,QAAQ,GAAQ,KAAA;AACjC,IAAM,MAAA,KAAA,GAAQ,OAAO,GAAG,CAAA,CAAA;AACxB,IAAA,OAAO,eAAe,IAAI,CAAA,EAAA,EAAK,GAAG,YAAa,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,MAAA,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEA,MAAA,EAAQ,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAQxB;;;;"}
@@ -0,0 +1,28 @@
1
+ import { markdownExtensions } from './extensions/index.js';
2
+ import { ErrorImporting } from './types.js';
3
+
4
+ function isInlineExtension(ext) {
5
+ return ext.parser.length === 2;
6
+ }
7
+ function isBlockExtension(ext) {
8
+ return ext.parser.length === 4;
9
+ }
10
+ async function getRemarkable(extensions) {
11
+ const md = new ((await import('remarkable'))?.Remarkable ?? ErrorImporting)({
12
+ html: true
13
+ });
14
+ if (md instanceof ErrorImporting)
15
+ throw new Error("Could not import remarkable, cannot continue");
16
+ md.block.ruler.disable(["table"]);
17
+ [...extensions ?? [], ...markdownExtensions].forEach((ext) => {
18
+ if (isInlineExtension(ext))
19
+ md.inline.ruler.before("text", ext.name, ext.parser, {});
20
+ else if (isBlockExtension(ext))
21
+ md.block.ruler.before("code", ext.name, ext.parser, {});
22
+ md.renderer.rules[ext.name] = ext.replacer(md);
23
+ });
24
+ return md;
25
+ }
26
+
27
+ export { getRemarkable };
28
+ //# sourceMappingURL=getRemarkable.js.map