@mono-lit/helper 0.0.0-stage → 0.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 (538) hide show
  1. package/LICENSE.md +55 -0
  2. package/README.md +34 -2
  3. package/dist/breakpoints-CAbhDUht.js +84 -0
  4. package/dist/checkbox-Cqpie9Ap.js +4 -0
  5. package/dist/chip-DBUUa2eB.js +4 -0
  6. package/dist/chip-limits-BMoO31JM.js +213 -0
  7. package/dist/chip-strip-Cw3gyz0q.js +213 -0
  8. package/dist/color-DHYrfXsX.js +253 -0
  9. package/dist/css-class-BRKRzHx-.js +60 -0
  10. package/dist/css-size-DhHSVZJK.js +37 -0
  11. package/dist/data/theme/presets.json.d.ts +140 -0
  12. package/dist/data-search-Bwo5bg8K.js +573 -0
  13. package/dist/data-source-controller-C50Qyfzh.js +178 -0
  14. package/dist/data-source-options-BTpfrOZ_.js +535 -0
  15. package/dist/data-source-options-CQSTZHPE.js +537 -0
  16. package/dist/data-source-read-CUX-lgrQ.js +216 -0
  17. package/dist/data-source-read-DL88aH8t.js +217 -0
  18. package/dist/decorate-DEXtNagw.js +141 -0
  19. package/dist/element-props-CLB6yvbm.js +114 -0
  20. package/dist/esm-Ptok4SQZ.js +2026 -0
  21. package/dist/excel-CY6zGkcx.js +608 -0
  22. package/dist/excel-DopRbEMK.js +608 -0
  23. package/dist/export-BvlBx_GZ.js +2302 -0
  24. package/dist/export.d.ts +1 -0
  25. package/dist/export.js +2302 -0
  26. package/dist/field-icons-BoOG6KrL.js +51 -0
  27. package/dist/field-path-C92eGLg3.js +251 -0
  28. package/dist/filter-builder-Bke3qOgJ.js +205 -0
  29. package/dist/filter-builder-CE4zE0V5.js +205 -0
  30. package/dist/filter-eval-DIfU2EAn.js +173 -0
  31. package/dist/filter-odata-C1vSGZaY.js +591 -0
  32. package/dist/form-control-core-B8d7k6vk.js +223 -0
  33. package/dist/form-control-core-eeRr0zLU.js +223 -0
  34. package/dist/hydration-flush-RB5Tz5nl.js +1001 -0
  35. package/dist/icon-CJkTlmTb.js +55 -0
  36. package/dist/icon-dVhYJUIH.js +17 -0
  37. package/dist/import-BgJdkwBI.js +606 -0
  38. package/dist/import.d.ts +1 -0
  39. package/dist/import.js +606 -0
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js +16 -0
  42. package/dist/index.node-DjvYOL-J.js +395 -0
  43. package/dist/index.node.d.ts +1 -0
  44. package/dist/index.node.js +16 -0
  45. package/dist/input-zGOULADt.js +4 -0
  46. package/dist/layout-var-CZnzMC0s.js +73 -0
  47. package/dist/light-slots-BVJwyg_2.js +244 -0
  48. package/dist/light-slots-DW1WgfgT.js +254 -0
  49. package/dist/markdown-DfqrfOJN.js +20146 -0
  50. package/dist/mono-button-CoVnBLav.js +873 -0
  51. package/dist/mono-button.shadow-FfP_hMH4.js +784 -0
  52. package/dist/mono-data-chart-ChU4Ii3p.js +738 -0
  53. package/dist/mono-data-dropdown-BAUl58kW.js +357 -0
  54. package/dist/mono-data-grid-CLBK8clE.js +4140 -0
  55. package/dist/mono-data-grid-Db80FzdZ.js +4142 -0
  56. package/dist/mono-element-B0kP_96P.js +232 -0
  57. package/dist/mono-event-Bi1qP9uN.js +129 -0
  58. package/dist/mono-form-controller-5PfsU4qa.js +409 -0
  59. package/dist/mono-modal-controller-BMO3n3rP.js +223 -0
  60. package/dist/mono-ui-CPV7rrdo.js +358 -0
  61. package/dist/notifier-CE4yxMUQ.js +88 -0
  62. package/dist/nuxt.d.ts +1 -0
  63. package/dist/nuxt.js +130 -0
  64. package/dist/popup-portal-BziRX1yG.js +465 -0
  65. package/dist/popup-stack-CEEMib__.js +189 -0
  66. package/dist/rate-limit-BBa2PO79.js +521 -0
  67. package/dist/reactive-BHsqVjRh.js +789 -0
  68. package/dist/reactive-D3EERqgO.js +47 -0
  69. package/dist/search.d.ts +1 -0
  70. package/dist/search.js +97 -0
  71. package/dist/src/components/accordion/accordion-core.d.ts +62 -0
  72. package/dist/src/components/accordion/accordion-types.d.ts +62 -0
  73. package/dist/src/components/accordion/index.d.ts +3 -0
  74. package/dist/src/components/accordion/index.shadow.d.ts +5 -0
  75. package/dist/src/components/accordion/mono-accordion.d.ts +55 -0
  76. package/dist/src/components/accordion/mono-accordion.shadow.d.ts +56 -0
  77. package/dist/src/components/alert/alert-core.d.ts +46 -0
  78. package/dist/src/components/alert/alert-types.d.ts +44 -0
  79. package/dist/src/components/alert/index.d.ts +3 -0
  80. package/dist/src/components/alert/index.shadow.d.ts +5 -0
  81. package/dist/src/components/alert/mono-alert.d.ts +44 -0
  82. package/dist/src/components/alert/mono-alert.shadow.d.ts +34 -0
  83. package/dist/src/components/breadcrumb/breadcrumb-core.d.ts +61 -0
  84. package/dist/src/components/breadcrumb/breadcrumb-list-core.d.ts +49 -0
  85. package/dist/src/components/breadcrumb/breadcrumb-render.d.ts +31 -0
  86. package/dist/src/components/breadcrumb/breadcrumb-types.d.ts +117 -0
  87. package/dist/src/components/breadcrumb/breadcrumb-utils.d.ts +43 -0
  88. package/dist/src/components/breadcrumb/index.d.ts +6 -0
  89. package/dist/src/components/breadcrumb/index.shadow.d.ts +8 -0
  90. package/dist/src/components/breadcrumb/mono-breadcrumb-list.d.ts +29 -0
  91. package/dist/src/components/breadcrumb/mono-breadcrumb-list.shadow.d.ts +48 -0
  92. package/dist/src/components/breadcrumb/mono-breadcrumb.d.ts +38 -0
  93. package/dist/src/components/breadcrumb/mono-breadcrumb.shadow.d.ts +73 -0
  94. package/dist/src/components/button/button-core.d.ts +90 -0
  95. package/dist/src/components/button/button-dropdown-core.d.ts +57 -0
  96. package/dist/src/components/button/button-dropdown-types.d.ts +129 -0
  97. package/dist/src/components/button/button-types.d.ts +219 -0
  98. package/dist/src/components/button/button-utils.d.ts +18 -0
  99. package/dist/src/components/button/index.button-dropdown.d.ts +4 -0
  100. package/dist/src/components/button/index.button-dropdown.shadow.d.ts +4 -0
  101. package/dist/src/components/button/index.d.ts +8 -0
  102. package/dist/src/components/button/index.shadow.d.ts +5 -0
  103. package/dist/src/components/button/mono-button-dropdown.d.ts +35 -0
  104. package/dist/src/components/button/mono-button-dropdown.shadow.d.ts +45 -0
  105. package/dist/src/components/button/mono-button.d.ts +123 -0
  106. package/dist/src/components/button/mono-button.shadow.d.ts +56 -0
  107. package/dist/src/components/card/card-core.d.ts +74 -0
  108. package/dist/src/components/card/card-types.d.ts +137 -0
  109. package/dist/src/components/card/card-utils.d.ts +23 -0
  110. package/dist/src/components/card/index.d.ts +4 -0
  111. package/dist/src/components/card/index.shadow.d.ts +6 -0
  112. package/dist/src/components/card/mono-card.d.ts +56 -0
  113. package/dist/src/components/card/mono-card.shadow.d.ts +52 -0
  114. package/dist/src/components/chart/chart-core.d.ts +43 -0
  115. package/dist/src/components/chart/chart-odata.d.ts +52 -0
  116. package/dist/src/components/chart/chart-types.d.ts +337 -0
  117. package/dist/src/components/chart/index.d.ts +8 -0
  118. package/dist/src/components/chart/index.shadow.d.ts +7 -0
  119. package/dist/src/components/chart/mono-chart-presets.d.ts +43 -0
  120. package/dist/src/components/chart/mono-chart-presets.shadow.d.ts +43 -0
  121. package/dist/src/components/chart/mono-chart.d.ts +30 -0
  122. package/dist/src/components/chart/mono-chart.shadow.d.ts +22 -0
  123. package/dist/src/components/chart/mono-data-chart.d.ts +27 -0
  124. package/dist/src/components/checkbox/checkbox-core.d.ts +53 -0
  125. package/dist/src/components/checkbox/checkbox-types.d.ts +69 -0
  126. package/dist/src/components/checkbox/checkbox-utils.d.ts +35 -0
  127. package/dist/src/components/checkbox/index.d.ts +4 -0
  128. package/dist/src/components/checkbox/index.shadow.d.ts +5 -0
  129. package/dist/src/components/checkbox/mono-checkbox.d.ts +34 -0
  130. package/dist/src/components/checkbox/mono-checkbox.shadow.d.ts +45 -0
  131. package/dist/src/components/chip/chip-core.d.ts +58 -0
  132. package/dist/src/components/chip/chip-types.d.ts +142 -0
  133. package/dist/src/components/chip/chip-utils.d.ts +24 -0
  134. package/dist/src/components/chip/index.d.ts +8 -0
  135. package/dist/src/components/chip/index.shadow.d.ts +6 -0
  136. package/dist/src/components/chip/mono-chip.d.ts +48 -0
  137. package/dist/src/components/chip/mono-chip.shadow.d.ts +33 -0
  138. package/dist/src/components/chip/mono-status-dot.d.ts +34 -0
  139. package/dist/src/components/date/date-core.d.ts +80 -0
  140. package/dist/src/components/date/date-types.d.ts +163 -0
  141. package/dist/src/components/date/index.d.ts +3 -0
  142. package/dist/src/components/date/index.shadow.d.ts +4 -0
  143. package/dist/src/components/date/mono-date.d.ts +22 -0
  144. package/dist/src/components/date/mono-date.shadow.d.ts +31 -0
  145. package/dist/src/components/drawer/drawer-core.d.ts +99 -0
  146. package/dist/src/components/drawer/drawer-types.d.ts +153 -0
  147. package/dist/src/components/drawer/index.d.ts +3 -0
  148. package/dist/src/components/drawer/index.shadow.d.ts +4 -0
  149. package/dist/src/components/drawer/mono-drawer.d.ts +45 -0
  150. package/dist/src/components/drawer/mono-drawer.shadow.d.ts +46 -0
  151. package/dist/src/components/dropdown/dropdown-core.d.ts +33 -0
  152. package/dist/src/components/dropdown/dropdown-types.d.ts +88 -0
  153. package/dist/src/components/dropdown/index.d.ts +3 -0
  154. package/dist/src/components/dropdown/index.shadow.d.ts +4 -0
  155. package/dist/src/components/dropdown/mono-dropdown.d.ts +34 -0
  156. package/dist/src/components/dropdown/mono-dropdown.shadow.d.ts +28 -0
  157. package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +65 -0
  158. package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +278 -0
  159. package/dist/src/components/dropdown-table/index.d.ts +5 -0
  160. package/dist/src/components/dropdown-table/index.shadow.d.ts +6 -0
  161. package/dist/src/components/dropdown-table/mono-data-dropdown.d.ts +152 -0
  162. package/dist/src/components/dropdown-table/mono-dropdown-table.d.ts +46 -0
  163. package/dist/src/components/dropdown-table/mono-dropdown-table.shadow.d.ts +22 -0
  164. package/dist/src/components/file-upload/file-upload-core.d.ts +60 -0
  165. package/dist/src/components/file-upload/file-upload-types.d.ts +145 -0
  166. package/dist/src/components/file-upload/file-upload-utils.d.ts +16 -0
  167. package/dist/src/components/file-upload/index.d.ts +4 -0
  168. package/dist/src/components/file-upload/index.shadow.d.ts +5 -0
  169. package/dist/src/components/file-upload/mono-file-upload.d.ts +33 -0
  170. package/dist/src/components/file-upload/mono-file-upload.shadow.d.ts +50 -0
  171. package/dist/src/components/filter/filter-builder-core.d.ts +36 -0
  172. package/dist/src/components/filter/filter-builder.d.ts +23 -0
  173. package/dist/src/components/filter/filter-odata.d.ts +27 -0
  174. package/dist/src/components/filter/filter-operators.d.ts +13 -0
  175. package/dist/src/components/filter/filter-types.d.ts +253 -0
  176. package/dist/src/components/filter/index.d.ts +6 -0
  177. package/dist/src/components/filter/index.shadow.d.ts +7 -0
  178. package/dist/src/components/filter/mono-filter-builder.d.ts +21 -0
  179. package/dist/src/components/filter/mono-filter-builder.shadow.d.ts +17 -0
  180. package/dist/src/components/form/form-control-core.d.ts +37 -0
  181. package/dist/src/components/form/form-rules.d.ts +25 -0
  182. package/dist/src/components/form/form-types.d.ts +307 -0
  183. package/dist/src/components/form/index.d.ts +6 -0
  184. package/dist/src/components/form/mono-form-controller.d.ts +16 -0
  185. package/dist/src/components/input/index.d.ts +6 -0
  186. package/dist/src/components/input/index.shadow.d.ts +8 -0
  187. package/dist/src/components/input/input-core.d.ts +91 -0
  188. package/dist/src/components/input/input-format.d.ts +118 -0
  189. package/dist/src/components/input/input-types.d.ts +179 -0
  190. package/dist/src/components/input/input-utils.d.ts +10 -0
  191. package/dist/src/components/input/mono-input.d.ts +46 -0
  192. package/dist/src/components/input/mono-input.shadow.d.ts +34 -0
  193. package/dist/src/components/menu/index.d.ts +6 -0
  194. package/dist/src/components/menu/index.shadow.d.ts +7 -0
  195. package/dist/src/components/menu/menu-core.d.ts +65 -0
  196. package/dist/src/components/menu/menu-render.d.ts +55 -0
  197. package/dist/src/components/menu/menu-types.d.ts +195 -0
  198. package/dist/src/components/menu/menu-utils.d.ts +53 -0
  199. package/dist/src/components/menu/mono-menu-list.d.ts +118 -0
  200. package/dist/src/components/menu/mono-menu.d.ts +39 -0
  201. package/dist/src/components/menu/mono-menu.shadow.d.ts +40 -0
  202. package/dist/src/components/modal/index.d.ts +4 -0
  203. package/dist/src/components/modal/index.shadow.d.ts +5 -0
  204. package/dist/src/components/modal/modal-core.d.ts +110 -0
  205. package/dist/src/components/modal/modal-types.d.ts +304 -0
  206. package/dist/src/components/modal/mono-modal-controller.d.ts +4 -0
  207. package/dist/src/components/modal/mono-modal.d.ts +45 -0
  208. package/dist/src/components/modal/mono-modal.shadow.d.ts +50 -0
  209. package/dist/src/components/nav/index.d.ts +4 -0
  210. package/dist/src/components/nav/index.shadow.d.ts +6 -0
  211. package/dist/src/components/nav/mono-nav.d.ts +41 -0
  212. package/dist/src/components/nav/mono-nav.shadow.d.ts +21 -0
  213. package/dist/src/components/nav/nav-core.d.ts +34 -0
  214. package/dist/src/components/nav/nav-types.d.ts +48 -0
  215. package/dist/src/components/nav/nav-utils.d.ts +12 -0
  216. package/dist/src/components/radio/index.d.ts +4 -0
  217. package/dist/src/components/radio/index.shadow.d.ts +5 -0
  218. package/dist/src/components/radio/mono-radio.d.ts +31 -0
  219. package/dist/src/components/radio/mono-radio.shadow.d.ts +35 -0
  220. package/dist/src/components/radio/radio-core.d.ts +45 -0
  221. package/dist/src/components/radio/radio-types.d.ts +58 -0
  222. package/dist/src/components/radio/radio-utils.d.ts +12 -0
  223. package/dist/src/components/rich-text-editor/index.d.ts +5 -0
  224. package/dist/src/components/rich-text-editor/index.shadow.d.ts +6 -0
  225. package/dist/src/components/rich-text-editor/mono-rich-text-editor.d.ts +31 -0
  226. package/dist/src/components/rich-text-editor/mono-rich-text-editor.shadow.d.ts +34 -0
  227. package/dist/src/components/rich-text-editor/rich-text-editor-core.d.ts +100 -0
  228. package/dist/src/components/rich-text-editor/rich-text-editor-loader.d.ts +17 -0
  229. package/dist/src/components/rich-text-editor/rich-text-editor-toolbar.d.ts +65 -0
  230. package/dist/src/components/rich-text-editor/rich-text-editor-types.d.ts +231 -0
  231. package/dist/src/components/select/index.d.ts +4 -0
  232. package/dist/src/components/select/index.shadow.d.ts +5 -0
  233. package/dist/src/components/select/mono-select.d.ts +69 -0
  234. package/dist/src/components/select/mono-select.shadow.d.ts +48 -0
  235. package/dist/src/components/select/select-core.d.ts +98 -0
  236. package/dist/src/components/select/select-types.d.ts +258 -0
  237. package/dist/src/components/select/select-utils.d.ts +7 -0
  238. package/dist/src/components/sidebar/index.d.ts +4 -0
  239. package/dist/src/components/sidebar/index.shadow.d.ts +6 -0
  240. package/dist/src/components/sidebar/mono-sidebar.d.ts +34 -0
  241. package/dist/src/components/sidebar/mono-sidebar.shadow.d.ts +27 -0
  242. package/dist/src/components/sidebar/sidebar-core.d.ts +51 -0
  243. package/dist/src/components/sidebar/sidebar-types.d.ts +119 -0
  244. package/dist/src/components/sidebar/sidebar-utils.d.ts +55 -0
  245. package/dist/src/components/switch/index.d.ts +4 -0
  246. package/dist/src/components/switch/index.shadow.d.ts +5 -0
  247. package/dist/src/components/switch/mono-switch.d.ts +31 -0
  248. package/dist/src/components/switch/mono-switch.shadow.d.ts +36 -0
  249. package/dist/src/components/switch/switch-core.d.ts +49 -0
  250. package/dist/src/components/switch/switch-types.d.ts +64 -0
  251. package/dist/src/components/switch/switch-utils.d.ts +12 -0
  252. package/dist/src/components/table/array-source.d.ts +44 -0
  253. package/dist/src/components/table/date-filter-tree.d.ts +93 -0
  254. package/dist/src/components/table/grouping.d.ts +55 -0
  255. package/dist/src/components/table/index.d.ts +33 -0
  256. package/dist/src/components/table/index.shadow.d.ts +47 -0
  257. package/dist/src/components/table/mono-data-grid.d.ts +1756 -0
  258. package/dist/src/components/table/mono-table-checkbox-core.d.ts +76 -0
  259. package/dist/src/components/table/mono-table-checkbox.d.ts +34 -0
  260. package/dist/src/components/table/mono-table-checkbox.shadow.d.ts +26 -0
  261. package/dist/src/components/table/mono-table-detail-core.d.ts +87 -0
  262. package/dist/src/components/table/mono-table-detail.d.ts +32 -0
  263. package/dist/src/components/table/mono-table-detail.shadow.d.ts +31 -0
  264. package/dist/src/components/table/mono-table-empty-core.d.ts +60 -0
  265. package/dist/src/components/table/mono-table-empty.d.ts +35 -0
  266. package/dist/src/components/table/mono-table-empty.shadow.d.ts +40 -0
  267. package/dist/src/components/table/mono-table-error-core.d.ts +84 -0
  268. package/dist/src/components/table/mono-table-error.d.ts +28 -0
  269. package/dist/src/components/table/mono-table-error.shadow.d.ts +21 -0
  270. package/dist/src/components/table/mono-table-info-core.d.ts +13 -0
  271. package/dist/src/components/table/mono-table-info.d.ts +19 -0
  272. package/dist/src/components/table/mono-table-info.shadow.d.ts +14 -0
  273. package/dist/src/components/table/mono-table-loading-core.d.ts +41 -0
  274. package/dist/src/components/table/mono-table-loading.d.ts +50 -0
  275. package/dist/src/components/table/mono-table-loading.shadow.d.ts +14 -0
  276. package/dist/src/components/table/mono-table-page-size-core.d.ts +14 -0
  277. package/dist/src/components/table/mono-table-page-size.d.ts +16 -0
  278. package/dist/src/components/table/mono-table-page-size.shadow.d.ts +11 -0
  279. package/dist/src/components/table/mono-table-paging-core.d.ts +22 -0
  280. package/dist/src/components/table/mono-table-paging-group-core.d.ts +18 -0
  281. package/dist/src/components/table/mono-table-paging-group.d.ts +20 -0
  282. package/dist/src/components/table/mono-table-paging-group.shadow.d.ts +13 -0
  283. package/dist/src/components/table/mono-table-paging.d.ts +16 -0
  284. package/dist/src/components/table/mono-table-paging.shadow.d.ts +11 -0
  285. package/dist/src/components/table/mono-table-search-core.d.ts +74 -0
  286. package/dist/src/components/table/mono-table-search.d.ts +34 -0
  287. package/dist/src/components/table/mono-table-search.shadow.d.ts +21 -0
  288. package/dist/src/components/table/mono-table-sort-core.d.ts +35 -0
  289. package/dist/src/components/table/mono-table-sort.d.ts +38 -0
  290. package/dist/src/components/table/mono-table-sort.shadow.d.ts +20 -0
  291. package/dist/src/components/table/mono-table-summary-core.d.ts +26 -0
  292. package/dist/src/components/table/mono-table-summary.d.ts +24 -0
  293. package/dist/src/components/table/mono-table-summary.shadow.d.ts +14 -0
  294. package/dist/src/components/table/mono-table-th-core.d.ts +56 -0
  295. package/dist/src/components/table/mono-table-th.d.ts +41 -0
  296. package/dist/src/components/table/mono-table-th.shadow.d.ts +19 -0
  297. package/dist/src/components/table/store-group-source.d.ts +24 -0
  298. package/dist/src/components/table/table-controller-core.d.ts +40 -0
  299. package/dist/src/components/table/table-filter-icons.d.ts +3 -0
  300. package/dist/src/components/table/table-menu-core.d.ts +65 -0
  301. package/dist/src/components/table/table-overlay.d.ts +165 -0
  302. package/dist/src/components/table/table-sort-icons.d.ts +4 -0
  303. package/dist/src/components/table/table-sort-utils.d.ts +20 -0
  304. package/dist/src/components/table/table-types.d.ts +475 -0
  305. package/dist/src/components/tabs/index.d.ts +3 -0
  306. package/dist/src/components/tabs/index.shadow.d.ts +4 -0
  307. package/dist/src/components/tabs/mono-tabs.d.ts +33 -0
  308. package/dist/src/components/tabs/mono-tabs.shadow.d.ts +37 -0
  309. package/dist/src/components/tabs/tabs-core.d.ts +57 -0
  310. package/dist/src/components/tabs/tabs-types.d.ts +65 -0
  311. package/dist/src/components/tag-input/index.d.ts +4 -0
  312. package/dist/src/components/tag-input/index.shadow.d.ts +5 -0
  313. package/dist/src/components/tag-input/mono-tag-input.d.ts +66 -0
  314. package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +40 -0
  315. package/dist/src/components/tag-input/tag-input-core.d.ts +108 -0
  316. package/dist/src/components/tag-input/tag-input-types.d.ts +394 -0
  317. package/dist/src/components/tag-input/tag-input-utils.d.ts +8 -0
  318. package/dist/src/components/textarea/index.d.ts +4 -0
  319. package/dist/src/components/textarea/index.shadow.d.ts +5 -0
  320. package/dist/src/components/textarea/mono-textarea.d.ts +29 -0
  321. package/dist/src/components/textarea/mono-textarea.shadow.d.ts +31 -0
  322. package/dist/src/components/textarea/textarea-core.d.ts +60 -0
  323. package/dist/src/components/textarea/textarea-types.d.ts +131 -0
  324. package/dist/src/components/textarea/textarea-utils.d.ts +7 -0
  325. package/dist/src/components/tooltip/control-tooltip.d.ts +36 -0
  326. package/dist/src/components/tooltip/index.d.ts +6 -0
  327. package/dist/src/components/tooltip/tooltip-config.d.ts +27 -0
  328. package/dist/src/components/tooltip/tooltip-declarative.d.ts +41 -0
  329. package/dist/src/components/tooltip/tooltip-loader.d.ts +1 -0
  330. package/dist/src/components/tooltip/tooltip-types.d.ts +110 -0
  331. package/dist/src/composables/breakpoints.d.ts +59 -0
  332. package/dist/src/composables/chip-limits.d.ts +48 -0
  333. package/dist/src/composables/chip-strip.d.ts +93 -0
  334. package/dist/src/composables/color.d.ts +103 -0
  335. package/dist/src/composables/css-class.d.ts +27 -0
  336. package/dist/src/composables/css-size.d.ts +40 -0
  337. package/dist/src/composables/data-source-controller.d.ts +84 -0
  338. package/dist/src/composables/element-props.d.ts +46 -0
  339. package/dist/src/composables/field-icons.d.ts +7 -0
  340. package/dist/src/composables/hybird-prop.d.ts +79 -0
  341. package/dist/src/composables/hydration-flush.d.ts +34 -0
  342. package/dist/src/composables/icon.d.ts +17 -0
  343. package/dist/src/composables/layout-var.d.ts +34 -0
  344. package/dist/src/composables/light-slots.d.ts +133 -0
  345. package/dist/src/composables/mdi-glyphs.d.ts +4 -0
  346. package/dist/src/composables/mono-element.d.ts +9 -0
  347. package/dist/src/composables/mono-event.d.ts +55 -0
  348. package/dist/src/composables/mono-pending.d.ts +8 -0
  349. package/dist/src/composables/mono-skeleton.d.ts +193 -0
  350. package/dist/src/composables/mono-ui.d.ts +58 -0
  351. package/dist/src/composables/notifier.d.ts +46 -0
  352. package/dist/src/composables/popup-portal.d.ts +226 -0
  353. package/dist/src/composables/popup-stack.d.ts +70 -0
  354. package/dist/src/composables/rate-limit.d.ts +108 -0
  355. package/dist/src/composables/reactive.d.ts +53 -0
  356. package/dist/src/composables/shadow-css.d.ts +42 -0
  357. package/dist/src/composables/visibility.d.ts +36 -0
  358. package/dist/src/data/theme/index.d.ts +30 -0
  359. package/dist/src/data/theme/presets.d.ts +94 -0
  360. package/dist/src/entries/index.d.ts +2 -0
  361. package/dist/src/entries/index.node.d.ts +42 -0
  362. package/dist/src/entries/search.d.ts +3 -0
  363. package/dist/src/export/detail.d.ts +29 -0
  364. package/dist/src/export/download.d.ts +9 -0
  365. package/dist/src/export/excel/index.d.ts +27 -0
  366. package/dist/src/export/excel/nodes.d.ts +123 -0
  367. package/dist/src/export/expression.d.ts +36 -0
  368. package/dist/src/export/helpers.d.ts +6 -0
  369. package/dist/src/export/index.d.ts +13 -0
  370. package/dist/src/export/markdown.d.ts +52 -0
  371. package/dist/src/export/resolve-data.d.ts +31 -0
  372. package/dist/src/export/sentinel.d.ts +97 -0
  373. package/dist/src/export/sheet-name.d.ts +45 -0
  374. package/dist/src/export/styles.d.ts +33 -0
  375. package/dist/src/export/template.d.ts +10 -0
  376. package/dist/src/export/types.d.ts +259 -0
  377. package/dist/src/import/coerce.d.ts +38 -0
  378. package/dist/src/import/index.d.ts +16 -0
  379. package/dist/src/import/match.d.ts +54 -0
  380. package/dist/src/import/parse.d.ts +15 -0
  381. package/dist/src/import/types.d.ts +153 -0
  382. package/dist/src/nuxt/index.d.ts +94 -0
  383. package/dist/src/search/data-search.d.ts +207 -0
  384. package/dist/src/search/field-path.d.ts +107 -0
  385. package/dist/src/search/filter-eval.d.ts +30 -0
  386. package/dist/src/search/index.d.ts +22 -0
  387. package/dist/src/search/odata-search.d.ts +18 -0
  388. package/dist/src/search/search-expr.d.ts +160 -0
  389. package/dist/src/utils/data-source-apply.d.ts +97 -0
  390. package/dist/src/utils/data-source-options.d.ts +116 -0
  391. package/dist/src/utils/data-source-read.d.ts +85 -0
  392. package/dist/src/utils/data-source-summary.d.ts +55 -0
  393. package/dist/src/utils/normalize-error.d.ts +60 -0
  394. package/dist/src/vite/index.d.ts +48 -0
  395. package/dist/src/vite/mono-client-only.d.ts +35 -0
  396. package/dist/src/vite/mono-ssr-stub.d.ts +20 -0
  397. package/dist/src/vite/shadow-manifest.d.ts +8 -0
  398. package/dist/styles-BIJ31TM4.js +20146 -0
  399. package/dist/tooltip-CysgRgBi.js +760 -0
  400. package/dist/tooltip.d.ts +1 -0
  401. package/dist/tooltip.js +2 -0
  402. package/dist/ui/accordion.d.ts +1 -0
  403. package/dist/ui/accordion.js +466 -0
  404. package/dist/ui/alert.d.ts +1 -0
  405. package/dist/ui/alert.js +221 -0
  406. package/dist/ui/breadcrumb.d.ts +1 -0
  407. package/dist/ui/breadcrumb.js +902 -0
  408. package/dist/ui/button-dropdown.d.ts +1 -0
  409. package/dist/ui/button-dropdown.js +679 -0
  410. package/dist/ui/button.d.ts +1 -0
  411. package/dist/ui/button.js +63 -0
  412. package/dist/ui/card.d.ts +1 -0
  413. package/dist/ui/card.js +511 -0
  414. package/dist/ui/chart.d.ts +1 -0
  415. package/dist/ui/chart.js +808 -0
  416. package/dist/ui/checkbox.d.ts +1 -0
  417. package/dist/ui/checkbox.js +413 -0
  418. package/dist/ui/chip.d.ts +1 -0
  419. package/dist/ui/chip.js +558 -0
  420. package/dist/ui/date.d.ts +1 -0
  421. package/dist/ui/date.js +686 -0
  422. package/dist/ui/drawer.d.ts +1 -0
  423. package/dist/ui/drawer.js +901 -0
  424. package/dist/ui/dropdown-table.d.ts +1 -0
  425. package/dist/ui/dropdown-table.js +1291 -0
  426. package/dist/ui/dropdown.d.ts +1 -0
  427. package/dist/ui/dropdown.js +586 -0
  428. package/dist/ui/file-upload.d.ts +1 -0
  429. package/dist/ui/file-upload.js +688 -0
  430. package/dist/ui/filter.d.ts +1 -0
  431. package/dist/ui/filter.js +400 -0
  432. package/dist/ui/font/files/geist-47c091c9.woff2 +0 -0
  433. package/dist/ui/font/files/geist-8dd77544.woff2 +0 -0
  434. package/dist/ui/font/files/geist-b9248b1e.woff2 +0 -0
  435. package/dist/ui/font/files/geist-d40d74b4.woff2 +0 -0
  436. package/dist/ui/font/files/geist-f493429a.woff2 +0 -0
  437. package/dist/ui/font/files/geistmono-03737868.woff2 +0 -0
  438. package/dist/ui/font/files/geistmono-421a7e38.woff2 +0 -0
  439. package/dist/ui/font/files/geistmono-48ef518d.woff2 +0 -0
  440. package/dist/ui/font/files/geistmono-5df35d39.woff2 +0 -0
  441. package/dist/ui/font/files/geistmono-7de289a4.woff2 +0 -0
  442. package/dist/ui/font/files/geistmono-e976128f.woff2 +0 -0
  443. package/dist/ui/font/files/inter-05cf802c.woff2 +0 -0
  444. package/dist/ui/font/files/inter-2b2f25a4.woff2 +0 -0
  445. package/dist/ui/font/files/inter-467acc7a.woff2 +0 -0
  446. package/dist/ui/font/files/inter-6e85163c.woff2 +0 -0
  447. package/dist/ui/font/files/inter-7048add3.woff2 +0 -0
  448. package/dist/ui/font/files/inter-9be0371e.woff2 +0 -0
  449. package/dist/ui/font/files/inter-a28b7e31.woff2 +0 -0
  450. package/dist/ui/font/files/poppins-054df55a.woff2 +0 -0
  451. package/dist/ui/font/files/poppins-0ee5dc9a.woff2 +0 -0
  452. package/dist/ui/font/files/poppins-0f44cb18.woff2 +0 -0
  453. package/dist/ui/font/files/poppins-0ff0d30c.woff2 +0 -0
  454. package/dist/ui/font/files/poppins-13045147.woff2 +0 -0
  455. package/dist/ui/font/files/poppins-1db57cd9.woff2 +0 -0
  456. package/dist/ui/font/files/poppins-2cf2a902.woff2 +0 -0
  457. package/dist/ui/font/files/poppins-39e7f079.woff2 +0 -0
  458. package/dist/ui/font/files/poppins-9607042d.woff2 +0 -0
  459. package/dist/ui/font/files/poppins-9a88fc1f.woff2 +0 -0
  460. package/dist/ui/font/files/poppins-b8f4f752.woff2 +0 -0
  461. package/dist/ui/font/files/poppins-f5e57db4.woff2 +0 -0
  462. package/dist/ui/font/geist-mono.css +104 -0
  463. package/dist/ui/font/geist.css +168 -0
  464. package/dist/ui/font/inter.css +232 -0
  465. package/dist/ui/font/poppins.css +104 -0
  466. package/dist/ui/form.d.ts +1 -0
  467. package/dist/ui/form.js +3 -0
  468. package/dist/ui/index.css +21826 -0
  469. package/dist/ui/input.d.ts +1 -0
  470. package/dist/ui/input.js +1176 -0
  471. package/dist/ui/menu.d.ts +1 -0
  472. package/dist/ui/menu.js +1289 -0
  473. package/dist/ui/modal.d.ts +1 -0
  474. package/dist/ui/modal.js +995 -0
  475. package/dist/ui/nav.d.ts +1 -0
  476. package/dist/ui/nav.js +295 -0
  477. package/dist/ui/radio.d.ts +1 -0
  478. package/dist/ui/radio.js +379 -0
  479. package/dist/ui/rich-text-editor.d.ts +1 -0
  480. package/dist/ui/rich-text-editor.js +1338 -0
  481. package/dist/ui/select.d.ts +1 -0
  482. package/dist/ui/select.js +2066 -0
  483. package/dist/ui/shadow/accordion.js +442 -0
  484. package/dist/ui/shadow/alert.js +218 -0
  485. package/dist/ui/shadow/breadcrumb.js +919 -0
  486. package/dist/ui/shadow/button-dropdown.js +696 -0
  487. package/dist/ui/shadow/button.js +63 -0
  488. package/dist/ui/shadow/card.js +524 -0
  489. package/dist/ui/shadow/chart.js +1569 -0
  490. package/dist/ui/shadow/checkbox.js +457 -0
  491. package/dist/ui/shadow/chip.js +559 -0
  492. package/dist/ui/shadow/date.js +712 -0
  493. package/dist/ui/shadow/drawer.js +869 -0
  494. package/dist/ui/shadow/dropdown-table.js +1620 -0
  495. package/dist/ui/shadow/dropdown.js +547 -0
  496. package/dist/ui/shadow/file-upload.js +731 -0
  497. package/dist/ui/shadow/filter.js +402 -0
  498. package/dist/ui/shadow/input.js +1150 -0
  499. package/dist/ui/shadow/menu.js +899 -0
  500. package/dist/ui/shadow/modal.js +1193 -0
  501. package/dist/ui/shadow/nav.js +240 -0
  502. package/dist/ui/shadow/radio.js +408 -0
  503. package/dist/ui/shadow/rich-text-editor.js +1344 -0
  504. package/dist/ui/shadow/select.js +2033 -0
  505. package/dist/ui/shadow/sidebar.js +606 -0
  506. package/dist/ui/shadow/switch.js +428 -0
  507. package/dist/ui/shadow/table.js +4755 -0
  508. package/dist/ui/shadow/tabs.js +372 -0
  509. package/dist/ui/shadow/tag-input.js +2846 -0
  510. package/dist/ui/shadow/textarea.js +816 -0
  511. package/dist/ui/sidebar.d.ts +1 -0
  512. package/dist/ui/sidebar.js +659 -0
  513. package/dist/ui/switch.d.ts +1 -0
  514. package/dist/ui/switch.js +398 -0
  515. package/dist/ui/table.d.ts +1 -0
  516. package/dist/ui/table.js +4654 -0
  517. package/dist/ui/tabs.d.ts +1 -0
  518. package/dist/ui/tabs.js +379 -0
  519. package/dist/ui/tag-input.d.ts +1 -0
  520. package/dist/ui/tag-input.js +2819 -0
  521. package/dist/ui/textarea.d.ts +1 -0
  522. package/dist/ui/textarea.js +819 -0
  523. package/dist/ui/theme/legacy.css +293 -0
  524. package/dist/ui/theme/luma.css +743 -0
  525. package/dist/ui/theme/lyra.css +754 -0
  526. package/dist/ui/theme/maia.css +673 -0
  527. package/dist/ui/theme/mira.css +802 -0
  528. package/dist/ui/theme/nova.css +662 -0
  529. package/dist/ui/theme/one.css +699 -0
  530. package/dist/ui/theme/rhea.css +742 -0
  531. package/dist/ui/theme/sera.css +845 -0
  532. package/dist/ui/theme/tokens.css +261 -0
  533. package/dist/ui/theme/vega.css +467 -0
  534. package/dist/vite-C5iUK7so.js +329 -0
  535. package/dist/vite.d.ts +1 -0
  536. package/dist/vite.js +2 -0
  537. package/dist/vue.d.ts +282 -0
  538. package/package.json +411 -3
@@ -0,0 +1,608 @@
1
+ import { a as flattenInline, i as toExcelStyle, n as combineStyles, r as mergeStyles } from "./styles-BIJ31TM4.js";
2
+ //#region src/export/sheet-name.ts
3
+ /**
4
+ * Worksheet names, which Excel is fussier about than anything else in a
5
+ * workbook — and every rule below is one it enforces by refusing to open the
6
+ * file, not by degrading.
7
+ *
8
+ * · at most 31 characters
9
+ * · none of `* ? : \ / [ ]`
10
+ * · cannot be empty
11
+ * · cannot start or end with an apostrophe
12
+ * · unique within the workbook, case-insensitively
13
+ *
14
+ * A name derived from user data — a document number like `TU/2026/001` — breaks
15
+ * three of those at once, so nothing may reach `addWorksheet` unsanitised.
16
+ */
17
+ /**
18
+ * The characters Excel refuses outright.
19
+ *
20
+ * Note what is NOT in here: the space and the hyphen are both perfectly legal,
21
+ * and stripping them would quietly rewrite a document number like `TP-001` into
22
+ * `TP 001`, so the sheet name would no longer match what the master sheet shows.
23
+ */
24
+ var FORBIDDEN = /[*?:\\/[\]]/g;
25
+ /**
26
+ * One name, made legal. Does NOT make it unique — that is
27
+ * {@link SheetNames.take}'s job, because uniqueness needs the whole workbook.
28
+ */
29
+ function sanitizeSheetName(raw, fallback = "Sheet") {
30
+ return String(raw ?? "").replace(FORBIDDEN, " ").replace(/\s+/g, " ").trim().replace(/^'+|'+$/g, "").trim().slice(0, 31).replace(/'+$/, "").trim() || fallback;
31
+ }
32
+ /**
33
+ * Escape a name for use inside a reference like `#'Sheet'!A1`.
34
+ *
35
+ * The name is single-quoted there, so a literal apostrophe has to be doubled.
36
+ * {@link sanitizeSheetName} only strips apostrophes at the ends — one in the
37
+ * middle (`Bob's Data`) is legal and has to survive.
38
+ */
39
+ function escapeSheetRef(name) {
40
+ return name.replace(/'/g, "''");
41
+ }
42
+ /** A reference to `A1` of `name`, ready to use as a hyperlink target. */
43
+ function sheetRef(name, cell = "A1") {
44
+ return `#'${escapeSheetRef(name)}'!${cell}`;
45
+ }
46
+ /**
47
+ * The workbook's name registry.
48
+ *
49
+ * Deliberately the ONLY place a name is claimed. The implementation this feature
50
+ * is modelled on reserves a name up front and then dedupes a second time inside
51
+ * its writer against the same set — so the second call always collides with the
52
+ * reservation it just made, and every sheet in that workbook ends up suffixed
53
+ * ` (2)`. One registry, one `take()`, no second opinion.
54
+ */
55
+ var SheetNames = class {
56
+ constructor(existing = []) {
57
+ this.used = /* @__PURE__ */ new Set();
58
+ for (const name of existing) this.used.add(name.toLowerCase());
59
+ }
60
+ /** Claim a legal, unique name derived from `raw`. */
61
+ take(raw, fallback = "Sheet") {
62
+ const base = sanitizeSheetName(raw, fallback);
63
+ if (!this.used.has(base.toLowerCase())) {
64
+ this.used.add(base.toLowerCase());
65
+ return base;
66
+ }
67
+ for (let n = 2; n < 1e4; n += 1) {
68
+ const suffix = ` (${n})`;
69
+ const candidate = `${base.slice(0, 31 - suffix.length).trim()}${suffix}`;
70
+ if (!this.used.has(candidate.toLowerCase())) {
71
+ this.used.add(candidate.toLowerCase());
72
+ return candidate;
73
+ }
74
+ }
75
+ const last = `${base.slice(0, 20)} ${Date.now().toString(36)}`.slice(0, 31);
76
+ this.used.add(last.toLowerCase());
77
+ return last;
78
+ }
79
+ };
80
+ //#endregion
81
+ //#region src/export/excel/nodes.ts
82
+ /** An ISO date string (`2026-07-21`, optionally with a time part). */
83
+ var ISO_DATE_RE = /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/;
84
+ /** A plain number, allowing a leading sign and a decimal part. */
85
+ var NUMERIC_RE = /^[+-]?\d+(?:\.\d+)?$/;
86
+ /**
87
+ * Walks an mdast tree and plans a worksheet. Planning (rather than writing
88
+ * ExcelJS objects directly) keeps this file free of any ExcelJS import, so the
89
+ * mapping stays testable and a future renderer can reuse the same walk.
90
+ */
91
+ var WorksheetWriter = class {
92
+ constructor(ctx) {
93
+ this.ctx = ctx;
94
+ this.plan = {
95
+ rows: [],
96
+ images: [],
97
+ spans: [],
98
+ merges: [],
99
+ width: 0,
100
+ widths: []
101
+ };
102
+ this.tableColumns = [];
103
+ this.tableFirstRow = 0;
104
+ this.tableLastRow = 0;
105
+ }
106
+ /** Resolve a named style, or an empty style when the name is unknown. */
107
+ named(name) {
108
+ return name && this.ctx.styles[name] || {};
109
+ }
110
+ write(root) {
111
+ this.writeBlocks(root.children);
112
+ this.plan.width = this.plan.rows.reduce((max, row) => Math.max(max, row.cells.length), 0);
113
+ return this.plan;
114
+ }
115
+ writeBlocks(nodes, indent = 0) {
116
+ for (const node of nodes) this.writeBlock(node, indent);
117
+ }
118
+ writeBlock(node, indent) {
119
+ switch (node.type) {
120
+ case "heading": {
121
+ const inline = flattenInline(node.children);
122
+ const style = combineStyles(this.named(`h${node.depth}`), this.styleFrom(inline.directives));
123
+ this.appendSpanningRow(inline, style);
124
+ break;
125
+ }
126
+ case "paragraph": {
127
+ const inline = flattenInline(node.children);
128
+ const style = combineStyles(this.styleFrom(inline.directives), { indent });
129
+ this.appendSpanningRow(inline, style);
130
+ break;
131
+ }
132
+ case "table":
133
+ this.writeTable(node.children);
134
+ break;
135
+ case "list":
136
+ for (const item of node.children) this.writeBlocks(item.children, indent + 1);
137
+ break;
138
+ case "blockquote":
139
+ this.writeBlockquote(node.children, indent);
140
+ break;
141
+ case "code":
142
+ for (const line of node.value.split("\n")) this.pushRow([{
143
+ value: line,
144
+ style: {},
145
+ width: line.length
146
+ }], void 0, true);
147
+ break;
148
+ case "thematicBreak":
149
+ this.pushRow([{
150
+ value: null,
151
+ style: {},
152
+ width: 0
153
+ }], void 0, true);
154
+ break;
155
+ default: if ("children" in node) this.writeBlocks(node.children, indent);
156
+ }
157
+ }
158
+ writeBlockquote(children, indent) {
159
+ const before = this.plan.rows.length;
160
+ this.writeBlocks(children, indent);
161
+ const note = toExcelStyle(this.named("note"));
162
+ for (let i = before; i < this.plan.rows.length; i += 1) for (const cell of this.plan.rows[i].cells) cell.style = mergeExcelStyle(note, cell.style);
163
+ }
164
+ /** A one-cell row that will later be merged across the sheet's full width. */
165
+ appendSpanningRow(inline, style) {
166
+ const cell = this.toCell(inline, style);
167
+ if (cell.value === null && !cell.formula && !inline.directives.length && !inline.images.length) return;
168
+ const rowIndex = this.pushRow([cell], style.height, true);
169
+ this.plan.spans.push({
170
+ row: rowIndex,
171
+ from: 1
172
+ });
173
+ this.placeImages(inline, rowIndex, 1);
174
+ this.applyMerge(inline.directives, rowIndex, 1);
175
+ }
176
+ writeTable(rows) {
177
+ if (!rows.length) return;
178
+ const [headerRow, ...bodyRows] = rows;
179
+ const headerInlines = headerRow.children.map((cell) => flattenInline(cell.children));
180
+ this.tableColumns = headerInlines.map((inline) => inline.text.trim());
181
+ const headerStyle = this.named("header");
182
+ const headerRowIndex = this.pushRow(headerInlines.map((inline) => this.toCell(inline, combineStyles(headerStyle, this.styleFrom(inline.directives)))), headerStyle.height);
183
+ headerInlines.forEach((inline, index) => {
184
+ this.placeImages(inline, headerRowIndex, index + 1);
185
+ this.applyMerge(inline.directives, headerRowIndex, index + 1);
186
+ });
187
+ this.tableFirstRow = this.plan.rows.length + 1;
188
+ this.tableLastRow = this.tableFirstRow + bodyRows.length - 1;
189
+ for (const bodyRow of bodyRows) {
190
+ const inlines = bodyRow.children.map((cell) => flattenInline(cell.children));
191
+ const rowDirectives = inlines.flatMap((inline) => inline.directives);
192
+ const rowStyle = this.rowStyleFrom(rowDirectives);
193
+ const cells = inlines.map((inline, index) => this.toCell(inline, combineStyles(rowStyle, this.columnStyle(index), this.styleFrom(inline.directives))));
194
+ const rowIndex = this.pushRow(cells, rowStyle.height);
195
+ inlines.forEach((inline, index) => {
196
+ this.placeImages(inline, rowIndex, index + 1);
197
+ this.applyMerge(inline.directives, rowIndex, index + 1);
198
+ });
199
+ }
200
+ this.tableColumns = [];
201
+ }
202
+ /** Per-column `numFmt` override from `options.columns`. */
203
+ columnStyle(index) {
204
+ const numFmt = this.ctx.columns?.[index]?.numFmt;
205
+ return numFmt ? { numFmt } : {};
206
+ }
207
+ /** Collect `{{style}}` directives into one style object. */
208
+ styleFrom(directives) {
209
+ return combineStyles(...directives.filter((d) => d.k === "style").map((d) => this.named(d.v)));
210
+ }
211
+ /** Collect `{{rowStyle}}` directives into one style object. */
212
+ rowStyleFrom(directives) {
213
+ return combineStyles(...directives.filter((d) => d.k === "rowStyle").map((d) => this.named(d.v)));
214
+ }
215
+ /** Build one planned cell from flattened inline content plus its style. */
216
+ toCell(inline, style) {
217
+ const value = inline.directives.find((d) => d.k === "val");
218
+ const formula = inline.directives.find((d) => d.k === "formula");
219
+ const excelStyle = toExcelStyle(combineStyles({
220
+ ...inline.bold ? { bold: true } : {},
221
+ ...inline.italic ? { italic: true } : {}
222
+ }, style));
223
+ const width = inline.text.trim().length;
224
+ const link = inline.link ? { hyperlink: inline.link } : void 0;
225
+ if (formula) return {
226
+ value: null,
227
+ formula: this.resolveFormula(formula.v),
228
+ style: excelStyle,
229
+ numFmt: value?.f ?? style.numFmt,
230
+ width: Math.max(width, 10),
231
+ ...link
232
+ };
233
+ const isLoneValue = !!value && (value.t == null || value.t.trim() === inline.text.trim());
234
+ if (value && isLoneValue) {
235
+ if (typeof value.n === "number") return {
236
+ value: value.n,
237
+ style: excelStyle,
238
+ numFmt: value.f,
239
+ width,
240
+ ...link
241
+ };
242
+ if (value.d) {
243
+ const date = new Date(value.d);
244
+ if (!Number.isNaN(date.getTime())) return {
245
+ value: date,
246
+ style: excelStyle,
247
+ numFmt: value.f,
248
+ width,
249
+ ...link
250
+ };
251
+ }
252
+ }
253
+ return {
254
+ value: coerceValue(inline.text),
255
+ style: excelStyle,
256
+ width,
257
+ ...link
258
+ };
259
+ }
260
+ /**
261
+ * Substitute the placeholders a template couldn't resolve on its own:
262
+ * `{row}` (the row about to be written), `{prevRow}` (the one above it),
263
+ * `{firstRow}` / `{lastRow}` (the current table's body range) and
264
+ * `{col:Caption}` (that header's column letter).
265
+ *
266
+ * `{lastRow}` includes *every* body row — so a total row that lives inside
267
+ * the same Markdown table must sum `{firstRow}:{prevRow}` to avoid a circular
268
+ * reference to itself.
269
+ */
270
+ resolveFormula(expr) {
271
+ const row = this.plan.rows.length + 1;
272
+ return expr.replace(/\{row\}/g, String(row)).replace(/\{prevRow\}/g, String(Math.max(1, row - 1))).replace(/\{firstRow\}/g, String(this.tableFirstRow || row)).replace(/\{lastRow\}/g, String(this.tableLastRow || row)).replace(/\{col:([^}]+)\}/g, (_match, caption) => {
273
+ const index = this.tableColumns.findIndex((c) => c.toLowerCase() === caption.trim().toLowerCase());
274
+ return index >= 0 ? columnLetter(index + 1) : caption;
275
+ });
276
+ }
277
+ placeImages(inline, row, col) {
278
+ const directives = inline.directives.filter((d) => d.k === "image");
279
+ for (const d of directives) this.plan.images.push({
280
+ src: d.v,
281
+ row,
282
+ col,
283
+ width: d.width ?? 120,
284
+ height: d.height ?? 40
285
+ });
286
+ for (const img of inline.images) this.plan.images.push({
287
+ src: img.url,
288
+ row,
289
+ col,
290
+ width: 120,
291
+ height: 40
292
+ });
293
+ }
294
+ applyMerge(directives, row, col) {
295
+ const merge = directives.find((d) => d.k === "merge");
296
+ if (!merge) return;
297
+ const colEnd = col + Math.max(1, merge.cols ?? 1) - 1;
298
+ const rowEnd = row + Math.max(1, merge.rows ?? 1) - 1;
299
+ if (colEnd === col && rowEnd === row) return;
300
+ this.plan.merges.push([
301
+ row,
302
+ col,
303
+ rowEnd,
304
+ colEnd
305
+ ]);
306
+ }
307
+ /**
308
+ * Append a row and return its 1-based index. `spanning` rows (headings,
309
+ * paragraphs) are excluded from auto-fit: they get merged across the whole
310
+ * sheet, so letting a long title set column A's width would leave a 60-wide
311
+ * first column next to four narrow ones.
312
+ */
313
+ pushRow(cells, height, spanning = false) {
314
+ this.plan.rows.push({
315
+ cells,
316
+ ...height ? { height } : {}
317
+ });
318
+ if (!spanning) cells.forEach((cell, index) => {
319
+ this.plan.widths[index] = Math.max(this.plan.widths[index] ?? 0, cell.width);
320
+ });
321
+ return this.plan.rows.length;
322
+ }
323
+ };
324
+ /** Later style wins, but per sub-object so a font isn't wiped by a fill. */
325
+ function mergeExcelStyle(base, over) {
326
+ return {
327
+ ...base,
328
+ ...over,
329
+ font: {
330
+ ...base.font,
331
+ ...over.font
332
+ },
333
+ alignment: {
334
+ ...base.alignment,
335
+ ...over.alignment
336
+ },
337
+ border: {
338
+ ...base.border,
339
+ ...over.border
340
+ }
341
+ };
342
+ }
343
+ /**
344
+ * Give a plain cell string its most useful type. Text that merely *looks*
345
+ * numeric (`"00123"`, `"1,234"`) is left alone — coercing it would silently
346
+ * mangle invoice numbers and phone numbers.
347
+ */
348
+ function coerceValue(text) {
349
+ const trimmed = text.trim();
350
+ if (!trimmed) return null;
351
+ if (NUMERIC_RE.test(trimmed) && !/^0\d/.test(trimmed)) {
352
+ const n = Number(trimmed);
353
+ if (Number.isFinite(n)) return n;
354
+ }
355
+ if (ISO_DATE_RE.test(trimmed)) {
356
+ const date = new Date(trimmed);
357
+ if (!Number.isNaN(date.getTime())) return date;
358
+ }
359
+ return text;
360
+ }
361
+ /** 1-based column index → spreadsheet letter (1 → A, 27 → AA). */
362
+ function columnLetter(index) {
363
+ let n = index;
364
+ let out = "";
365
+ while (n > 0) {
366
+ const rem = (n - 1) % 26;
367
+ out = String.fromCharCode(65 + rem) + out;
368
+ n = Math.floor((n - 1) / 26);
369
+ }
370
+ return out;
371
+ }
372
+ /** Auto-fit bounds, in characters — narrow enough to read, wide enough to fit. */
373
+ var MIN_WIDTH = 8;
374
+ var MAX_WIDTH = 60;
375
+ /** Extra characters of padding added to the widest cell in a column. */
376
+ var WIDTH_PADDING = 2;
377
+ /** Load the optional `exceljs` peer, with an actionable error when it's absent. */
378
+ async function loadExcelJs() {
379
+ try {
380
+ const mod = await import("exceljs");
381
+ return mod?.default ?? mod;
382
+ } catch (err) {
383
+ throw new Error("[mono-export] xlsx output needs the optional peer dependency \"exceljs\". Install it in your app: pnpm add exceljs" + (err instanceof Error ? `\n (resolution failed: ${err.message})` : ""));
384
+ }
385
+ }
386
+ /**
387
+ * `{{image}}` accepts a data URL, a bare base64 string, or an `http(s)` URL.
388
+ * ExcelJS wants raw base64 plus an extension, so normalise here — and fetch a
389
+ * remote URL, which is the only genuinely async part of image handling.
390
+ */
391
+ async function toImagePayload(src) {
392
+ const dataUrl = /^data:image\/(png|jpe?g|gif);base64,(.+)$/i.exec(src);
393
+ if (dataUrl) {
394
+ const ext = dataUrl[1].toLowerCase();
395
+ return {
396
+ base64: dataUrl[2],
397
+ extension: ext === "gif" ? "gif" : ext === "png" ? "png" : "jpeg"
398
+ };
399
+ }
400
+ if (/^https?:\/\//i.test(src)) try {
401
+ const res = await fetch(src);
402
+ if (!res.ok) return null;
403
+ const buffer = await res.arrayBuffer();
404
+ const type = res.headers.get("content-type") ?? "";
405
+ const extension = type.includes("gif") ? "gif" : type.includes("png") ? "png" : "jpeg";
406
+ return {
407
+ base64: arrayBufferToBase64(buffer),
408
+ extension
409
+ };
410
+ } catch {
411
+ return null;
412
+ }
413
+ return /^[A-Za-z0-9+/=\s]+$/.test(src) ? {
414
+ base64: src.trim(),
415
+ extension: "png"
416
+ } : null;
417
+ }
418
+ function arrayBufferToBase64(buffer) {
419
+ const bytes = new Uint8Array(buffer);
420
+ let binary = "";
421
+ for (let i = 0; i < bytes.length; i += 1) binary += String.fromCharCode(bytes[i]);
422
+ return typeof btoa === "function" ? btoa(binary) : globalThis.Buffer.from(bytes).toString("base64");
423
+ }
424
+ /** Build the ExcelJS workbook for a parsed report. */
425
+ async function renderExcel(ast, options = {}) {
426
+ const styles = mergeStyles(options.styles);
427
+ const plan = new WorksheetWriter({
428
+ styles,
429
+ columns: options.columns
430
+ }).write(ast);
431
+ const workbook = new (await (loadExcelJs())).Workbook();
432
+ workbook.created = /* @__PURE__ */ new Date();
433
+ const names = new SheetNames();
434
+ const masterName = names.take(options.sheetName ?? "Sheet1", "Sheet1");
435
+ const sheet = workbook.addWorksheet(masterName);
436
+ const pending = [];
437
+ writeRows(sheet, plan, pending);
438
+ applyMerges(sheet, plan);
439
+ applyWidths(sheet, plan, options.columns);
440
+ if (options.freezeRows) sheet.views = [{
441
+ state: "frozen",
442
+ ySplit: options.freezeRows
443
+ }];
444
+ await placeImages(workbook, sheet, plan);
445
+ const targets = /* @__PURE__ */ new Map();
446
+ for (const spec of options.sheets ?? []) {
447
+ const name = names.take(spec.name || spec.key, "Detail");
448
+ targets.set(spec.key, name);
449
+ const detailPlan = new WorksheetWriter({
450
+ styles,
451
+ columns: options.columns
452
+ }).write(spec.ast);
453
+ const detailSheet = workbook.addWorksheet(name);
454
+ if (options.back !== false) {
455
+ const back = detailSheet.addRow([]).getCell(1);
456
+ back.value = {
457
+ text: "← Back",
458
+ hyperlink: sheetRef(masterName)
459
+ };
460
+ back.font = {
461
+ ...toExcelStyle(styles.link ?? {}).font ?? {},
462
+ bold: true
463
+ };
464
+ }
465
+ writeRows(detailSheet, detailPlan, pending);
466
+ applyMerges(detailSheet, detailPlan);
467
+ applyWidths(detailSheet, detailPlan, options.columns);
468
+ await placeImages(workbook, detailSheet, detailPlan);
469
+ }
470
+ applySheetLinks(pending, targets, styles);
471
+ return workbook;
472
+ }
473
+ /**
474
+ * Rewrite every `sheet:<key>` target into a real in-workbook reference.
475
+ *
476
+ * Done last, and only here, because a template cannot know the name it is
477
+ * linking to: names are sanitised for Excel and de-duplicated against the
478
+ * workbook, both of which need every sheet to exist first.
479
+ *
480
+ * A key with no sheet — a document whose details failed to load, or had none —
481
+ * has its link REMOVED rather than left dangling. The prior art leaves those
482
+ * cells underlined and unclickable, which reads as a broken link.
483
+ */
484
+ function applySheetLinks(pending, targets, styles) {
485
+ const linkFont = styles.link ? toExcelStyle(styles.link).font : void 0;
486
+ for (const link of pending) {
487
+ const name = targets.get(link.key);
488
+ if (!name) continue;
489
+ applyHyperlink(link.cell, sheetRef(name), link.value);
490
+ if (linkFont) link.cell.font = {
491
+ ...link.cell.font ?? {},
492
+ ...linkFont
493
+ };
494
+ }
495
+ }
496
+ /**
497
+ * Attach a link to a cell without wrecking what is already in it.
498
+ *
499
+ * `cell.hyperlink` looks assignable — ExcelJS' own typings declare it on
500
+ * `Cell` — but at runtime it is a GETTER ONLY (`lib/doc/cell.js:201`), so
501
+ * assigning it throws. The only public route is the value form, and that form
502
+ * replaces the cell outright: a number linked this way stops being a number and
503
+ * no longer sums in Excel. `numFmt` does survive, since it lives on the style
504
+ * rather than the value, but the type does not.
505
+ *
506
+ * So each kind of cell takes the route that costs it nothing:
507
+ *
508
+ * · number — Excel's own HYPERLINK(), with the number as the displayed
509
+ * argument and cached as `result`. Stays numeric, still sums,
510
+ * still formats.
511
+ * · text — the plain value form, which for a string loses nothing at all.
512
+ * A Date takes this route too and becomes text; dates as link
513
+ * anchors are not a case this feature has, and the alternative
514
+ * is emitting a serial number nobody can read.
515
+ *
516
+ * Formula cells never reach here: a formula owns `cell.value`, so there is no
517
+ * way to add a link without destroying it, and silently swapping one for the
518
+ * other would be worse than not linking. Callers skip them.
519
+ */
520
+ function applyHyperlink(cell, target, value) {
521
+ if (typeof value === "number") {
522
+ cell.value = {
523
+ formula: `HYPERLINK(${quoteFormulaArg(target)},${value})`,
524
+ result: value
525
+ };
526
+ return;
527
+ }
528
+ cell.value = {
529
+ text: String(value ?? ""),
530
+ hyperlink: target
531
+ };
532
+ }
533
+ /** A string literal inside an Excel formula: wrapped, with `"` doubled. */
534
+ function quoteFormulaArg(value) {
535
+ return `"${value.replace(/"/g, "\"\"")}"`;
536
+ }
537
+ function writeRows(sheet, plan, pending) {
538
+ for (const plannedRow of plan.rows) {
539
+ const row = sheet.addRow([]);
540
+ plannedRow.cells.forEach((planned, index) => {
541
+ const cell = row.getCell(index + 1);
542
+ if (planned.formula) cell.value = { formula: planned.formula };
543
+ else if (planned.value !== null) cell.value = planned.value;
544
+ if (planned.style.font) cell.font = planned.style.font;
545
+ if (planned.style.fill) cell.fill = planned.style.fill;
546
+ if (planned.style.alignment) cell.alignment = planned.style.alignment;
547
+ if (planned.style.border) cell.border = planned.style.border;
548
+ const numFmt = planned.numFmt ?? planned.style.numFmt;
549
+ if (numFmt) cell.numFmt = numFmt;
550
+ if (planned.hyperlink && !planned.formula) if (pending && planned.hyperlink.startsWith("sheet:")) pending.push({
551
+ cell,
552
+ key: planned.hyperlink.slice(6),
553
+ value: planned.value
554
+ });
555
+ else applyHyperlink(cell, planned.hyperlink, planned.value);
556
+ });
557
+ if (plannedRow.height) row.height = plannedRow.height;
558
+ row.commit?.();
559
+ }
560
+ }
561
+ function applyMerges(sheet, plan) {
562
+ for (const span of plan.spans) if (plan.width > span.from) safeMerge(sheet, span.row, span.from, span.row, plan.width);
563
+ for (const [row, col, rowEnd, colEnd] of plan.merges) safeMerge(sheet, row, col, rowEnd, colEnd);
564
+ }
565
+ /**
566
+ * ExcelJS throws when two merges overlap. A template that merges a cell inside
567
+ * a heading row is a mistake, not a reason to lose the whole report — so log
568
+ * and keep going.
569
+ */
570
+ function safeMerge(sheet, top, left, bottom, right) {
571
+ try {
572
+ sheet.mergeCells(top, left, bottom, right);
573
+ } catch {
574
+ console.warn(`[mono-export] skipped overlapping merge ${columnLetter(left)}${top}:${columnLetter(right)}${bottom}`);
575
+ }
576
+ }
577
+ function applyWidths(sheet, plan, columns) {
578
+ for (let i = 0; i < plan.width; i += 1) {
579
+ const explicit = columns?.[i]?.width;
580
+ const measured = (plan.widths[i] ?? 0) + WIDTH_PADDING;
581
+ sheet.getColumn(i + 1).width = explicit ?? Math.min(MAX_WIDTH, Math.max(MIN_WIDTH, measured));
582
+ }
583
+ }
584
+ async function placeImages(workbook, sheet, plan) {
585
+ for (const pending of plan.images) {
586
+ const payload = await toImagePayload(pending.src);
587
+ if (!payload) {
588
+ console.warn(`[mono-export] could not load image: ${pending.src.slice(0, 60)}`);
589
+ continue;
590
+ }
591
+ const id = workbook.addImage({
592
+ base64: payload.base64,
593
+ extension: payload.extension
594
+ });
595
+ sheet.addImage(id, {
596
+ tl: {
597
+ col: pending.col - 1,
598
+ row: pending.row - 1
599
+ },
600
+ ext: {
601
+ width: pending.width,
602
+ height: pending.height
603
+ }
604
+ });
605
+ }
606
+ }
607
+ //#endregion
608
+ export { renderExcel };