@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,789 @@
1
+ import { a as parseFieldPath, c as toODataClause, n as isPath, t as getFieldValue } from "./field-path-C92eGLg3.js";
2
+ //#region src/search/filter-eval.ts
3
+ /**
4
+ * Compile a devextreme filter expression (the array form `monoFilterBuilder`
5
+ * emits via `changed({ type: 'array' })`) into a client-side row predicate, so a
6
+ * built filter can narrow an array-backed grid the same way a remote store would
7
+ * narrow from a `$filter`. Remote devextreme stores read the array directly; this
8
+ * is the client-side mirror for sources that only accept a `(row) => boolean`.
9
+ *
10
+ * The grammar handled is exactly the subset `treeToArray` produces: `[field, op,
11
+ * value]` triples, `'and'` / `'or'` joined groups, `['!', expr]` negation, with
12
+ * `between` / `in` / blank checks already expanded to those primitives.
13
+ */
14
+ function compileFilterPredicate(expr) {
15
+ if (!Array.isArray(expr) || expr.length === 0) return null;
16
+ const fn = build(expr);
17
+ return (row) => !!fn(row);
18
+ }
19
+ /** AND-combine two optional devextreme filter expressions (either may be null). */
20
+ function andFilters(a, b) {
21
+ if (a == null && b == null) return null;
22
+ if (a == null) return b;
23
+ if (b == null) return a;
24
+ return [
25
+ a,
26
+ "and",
27
+ b
28
+ ];
29
+ }
30
+ /**
31
+ * AND-combine optional row predicates — the array-source twin of `andFilters`.
32
+ *
33
+ * Returns the lone member UNWRAPPED when only one is present, so a caller that
34
+ * compares the result by reference (the grid's compose memo) sees the same
35
+ * function back and does not treat "nothing changed" as a change.
36
+ */
37
+ function andPredicates(...fns) {
38
+ const kept = fns.filter((f) => typeof f === "function");
39
+ if (!kept.length) return null;
40
+ if (kept.length === 1) return kept[0];
41
+ return (row, index) => kept.every((f) => f(row, index));
42
+ }
43
+ /**
44
+ * Join expressions with `and` / `or`, dropping nulls and returning a lone member
45
+ * unwrapped — devextreme's filter arrays interleave the join token between
46
+ * members (`[a, 'or', b, 'or', c]`) rather than nesting pairs.
47
+ */
48
+ function joinFilters(parts, join) {
49
+ const kept = parts.filter((p) => p != null);
50
+ if (!kept.length) return null;
51
+ if (kept.length === 1) return kept[0];
52
+ const out = [];
53
+ kept.forEach((p, i) => {
54
+ if (i) out.push(join);
55
+ out.push(p);
56
+ });
57
+ return out;
58
+ }
59
+ var CMP = new Set([
60
+ "=",
61
+ "<>",
62
+ ">",
63
+ ">=",
64
+ "<",
65
+ "<=",
66
+ "==",
67
+ "!=",
68
+ "eq",
69
+ "ne",
70
+ "gt",
71
+ "ge",
72
+ "lt",
73
+ "le"
74
+ ]);
75
+ var STR = new Set([
76
+ "contains",
77
+ "notcontains",
78
+ "startswith",
79
+ "endswith"
80
+ ]);
81
+ /** A triple is `[field, op, value]`; a group starts with an array member. */
82
+ function isTriple(node) {
83
+ return Array.isArray(node) && node.length === 3 && typeof node[0] === "string" && typeof node[1] === "string" && (CMP.has(node[1]) || STR.has(String(node[1]).toLowerCase()));
84
+ }
85
+ function build(expr) {
86
+ if (!Array.isArray(expr) || expr.length === 0) return () => true;
87
+ if (expr.length === 2 && (expr[0] === "!" || expr[0] === "not")) {
88
+ const inner = build(expr[1]);
89
+ return (row) => !inner(row);
90
+ }
91
+ if (isTriple(expr)) {
92
+ const [field, op, value] = expr;
93
+ return (row) => match(getFieldValue(row, field), op, value);
94
+ }
95
+ const members = [];
96
+ const joins = [];
97
+ for (const part of expr) {
98
+ const t = typeof part === "string" ? part.toLowerCase() : "";
99
+ if (t === "and" || t === "&" || t === "or" || t === "|") {
100
+ joins.push(t === "or" || t === "|" ? "or" : "and");
101
+ continue;
102
+ }
103
+ members.push(part);
104
+ }
105
+ const fns = members.map((m) => build(m));
106
+ if (!fns.length) return () => true;
107
+ return (row) => {
108
+ let acc = fns[0](row);
109
+ for (let i = 0; i < joins.length; i += 1) {
110
+ const next = fns[i + 1](row);
111
+ acc = joins[i] === "or" ? acc || next : acc && next;
112
+ }
113
+ return acc;
114
+ };
115
+ }
116
+ /** Coerce two values for ordered comparison: numbers when both parse, else strings. */
117
+ function pair(a, b) {
118
+ const na = Number(a);
119
+ const nb = Number(b);
120
+ if (a !== "" && b !== "" && !Number.isNaN(na) && !Number.isNaN(nb)) return [na, nb];
121
+ return [String(a ?? ""), String(b ?? "")];
122
+ }
123
+ /** OData keyword → the symbol token the switch below is written against. */
124
+ var OP_ALIAS = {
125
+ eq: "=",
126
+ ne: "<>",
127
+ gt: ">",
128
+ ge: ">=",
129
+ lt: "<",
130
+ le: "<="
131
+ };
132
+ function match(raw, op, value) {
133
+ const lower = op.toLowerCase();
134
+ const token = OP_ALIAS[lower] ?? lower;
135
+ if (value === null || value === void 0) {
136
+ const blank = raw === null || raw === void 0 || raw === "";
137
+ return token === "=" || token === "==" ? blank : !blank;
138
+ }
139
+ const raws = String(raw ?? "");
140
+ const vals = String(value ?? "");
141
+ switch (token) {
142
+ case "=":
143
+ case "==": {
144
+ const [a, b] = pair(raw, value);
145
+ return a === b;
146
+ }
147
+ case "<>":
148
+ case "!=": {
149
+ const [a, b] = pair(raw, value);
150
+ return a !== b;
151
+ }
152
+ case ">":
153
+ case ">=":
154
+ case "<":
155
+ case "<=": {
156
+ const [a, b] = pair(raw, value);
157
+ if (typeof a === "string" && typeof b === "string") {}
158
+ switch (token) {
159
+ case ">": return a > b;
160
+ case ">=": return a >= b;
161
+ case "<": return a < b;
162
+ default: return a <= b;
163
+ }
164
+ }
165
+ case "contains": return raws.toLowerCase().includes(vals.toLowerCase());
166
+ case "notcontains": return !raws.toLowerCase().includes(vals.toLowerCase());
167
+ case "startswith": return raws.toLowerCase().startsWith(vals.toLowerCase());
168
+ case "endswith": return raws.toLowerCase().endsWith(vals.toLowerCase());
169
+ default: return false;
170
+ }
171
+ }
172
+ //#endregion
173
+ //#region src/search/search-expr.ts
174
+ /**
175
+ * Search-expression entries: the fields a typed term is matched against.
176
+ *
177
+ * One grammar, shared by every component that searches data — `monoDataGrid`'s
178
+ * `searchExpr`, and the `search-value` prop on `mono-select`, `mono-tag-input`
179
+ * and `mono-dropdown-table`. An entry may be:
180
+ *
181
+ * - a plain column name (`'Nama'`)
182
+ * - a **path** (`'Company.Name'`, `'Transaction.[1].Name'`, `'Transaction.[*].Price'`)
183
+ * - a **`*` pattern** (`'*'`, `'Company.*'`, `'*.*'`, `'*.[*].*'`)
184
+ * - a **`{ field, custom }` clause builder**
185
+ *
186
+ * An entry is normally just a column name, and every column is searched the same
187
+ * way — `contains(<col>,'<term>')`. That is wrong for any column whose data isn't
188
+ * free text: a **boolean** can't take `contains` at all, and a **coded** column
189
+ * stores something the user never types (a `Month` of `0..11` can never match the
190
+ * string `"Jan"`).
191
+ *
192
+ * So an entry may instead be `{ field, custom }`, where `custom` receives the live
193
+ * term and returns the clause to use for that column:
194
+ *
195
+ * ```ts
196
+ * const MONTHS = ['Jan', 'Feb', 'Mar', …]
197
+ *
198
+ * searchExpr: [
199
+ * 'Code',
200
+ * 'Nama',
201
+ * { field: 'Active', custom: ({ field, value }) => `${field} eq ${value}` },
202
+ * { field: 'Month', custom: ({ field, value }) => [field, '=', MONTHS.indexOf(value)] },
203
+ * ]
204
+ * ```
205
+ *
206
+ * A custom column takes part in the plain search box like any other, so it runs on
207
+ * every term. **Return `null`/`undefined` to opt out** of one — which is what makes
208
+ * the `Month` example workable: `"Jan"` → `0`, `"zzz"` → `-1` → return `null` and
209
+ * the column simply drops out of that query instead of matching nothing.
210
+ *
211
+ * | `custom` returns | remote (devextreme store) | array / in-memory |
212
+ * | --- | --- | --- |
213
+ * | `[field, op, value]`, or a nested `and`/`or` array | used as-is | compiled to a predicate |
214
+ * | `(row) => boolean` | warn + skip | used as the predicate |
215
+ * | `"Active eq true"` (raw OData) | wrapped as `[raw]` | warn + skip |
216
+ * | `null` / `undefined` / `false` | skipped | skipped |
217
+ *
218
+ * Only the explicit `{ field, custom }` shape is accepted — a `{ Month: fn }` map
219
+ * is not, so there is exactly one form to read and to type.
220
+ *
221
+ * An entry may also be a **`*` pattern**, resolved against the loaded rows so a
222
+ * grid can search everything without listing columns:
223
+ *
224
+ * ```ts
225
+ * searchExpr: ['*'] // every top-level field
226
+ * searchExpr: ['*', '*.[*].*'] // …plus every field of every array expand
227
+ * searchExpr: ['*', '*.*'] // …plus every field of every object expand
228
+ * searchExpr: ['*', { field: 'Month', custom }] // the explicit entry wins for Month
229
+ * ```
230
+ *
231
+ * Patterns read literally, segment by segment — `'*.[*].*'` covers the expand ONLY.
232
+ * See {@link expandWildcard} for the type rule that keeps a remote `$filter` valid.
233
+ *
234
+ * This module is pure: types + stateless helpers, no controller state, mirroring
235
+ * `field-path.ts`.
236
+ */
237
+ /** Entries already warned about, so a per-keystroke path can't flood the console. */
238
+ var warned = /* @__PURE__ */ new WeakSet();
239
+ function warnOnce(key, message) {
240
+ if (warned.has(key)) return;
241
+ warned.add(key);
242
+ console.warn(`[@mono-lit/helper] ${message}`);
243
+ }
244
+ /** Malformed entries are warned about once each, keyed by the object itself. */
245
+ function isCustomEntry(entry) {
246
+ if (typeof entry !== "object" || entry === null) return false;
247
+ const e = entry;
248
+ if (typeof e.field === "string" && e.field && typeof e.custom === "function") return true;
249
+ warnOnce(entry, `searchExpr: ignoring an entry that is neither a column name nor { field, custom } — ${JSON.stringify(Object.keys(entry))}. The { Field: fn } shorthand is not supported.`);
250
+ return false;
251
+ }
252
+ /** Every usable entry, in the order written. Strings and customs, malformed dropped. */
253
+ function normalizeSearchExpr(expr) {
254
+ if (expr == null) return [];
255
+ const list = Array.isArray(expr) ? expr : [expr];
256
+ const out = [];
257
+ for (const entry of list) if (typeof entry === "string") {
258
+ if (entry) out.push(entry);
259
+ } else if (isCustomEntry(entry)) out.push(entry);
260
+ return out;
261
+ }
262
+ /**
263
+ * The plain column names only — no `{ field, custom }` entries, no `*` patterns.
264
+ *
265
+ * This is what a SOURCE may be handed: `monoArraySource`, `storeGroupSource` and
266
+ * devextreme all type `searchExpr` as `string | string[]` and feed it straight to
267
+ * `toODataClause` — an object entry would serialize to garbage and a `'*'` would
268
+ * be searched as a column literally named `*`. Both are resolved by the controller
269
+ * instead.
270
+ */
271
+ function plainSearchColumns(expr) {
272
+ return normalizeSearchExpr(expr).filter((e) => typeof e === "string" && !isWildcardPattern(e));
273
+ }
274
+ /** The field name an entry covers. */
275
+ function searchEntryField(entry) {
276
+ return typeof entry === "string" ? entry : entry.field;
277
+ }
278
+ /** The entry declaring `field`, if any — used to resolve a column-bound term. */
279
+ function searchEntryFor(expr, field) {
280
+ return normalizeSearchExpr(expr).find((e) => searchEntryField(e) === field);
281
+ }
282
+ /** Whether any entry brings its own builder (so folding must be bypassed). */
283
+ function hasCustomSearch(expr) {
284
+ return normalizeSearchExpr(expr).some((e) => typeof e !== "string");
285
+ }
286
+ /** Whether `field` is a `*` pattern rather than a concrete column/path. */
287
+ function isWildcardPattern(field) {
288
+ if (typeof field !== "string" || !field.includes("*")) return false;
289
+ return parseFieldPath(field).segments.some((s) => s.kind === "key" && s.name === "*");
290
+ }
291
+ /** A value that can be searched as-is (anything that isn't a container). */
292
+ function isLeaf(value) {
293
+ return value !== null && typeof value !== "object";
294
+ }
295
+ var isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
296
+ /** How many rows to sample when resolving a pattern (row 0 alone may be sparse). */
297
+ var SAMPLE_ROWS = 20;
298
+ /**
299
+ * Resolve a `*` pattern against real rows, returning the concrete field paths it
300
+ * covers — `'*.[*].*'` over `{ Detail: [{ Bulan, Ket }] }` gives
301
+ * `['Detail.[*].Bulan', 'Detail.[*].Ket']`, which the existing path machinery
302
+ * already knows how to match client-side and translate to an OData lambda.
303
+ *
304
+ * `textOnly` drops every leaf that isn't a string. A REMOTE source needs that:
305
+ * `contains(Price,'x')` is not valid OData and would reject the whole request, so
306
+ * a wildcard never emits a clause for a numeric/boolean/date column. Give such a
307
+ * column an explicit `{ field, custom }` entry instead. In-memory sources compare
308
+ * stringified values, so they keep every leaf.
309
+ *
310
+ * A field that is `null`/`undefined` in every sampled row is skipped — there is
311
+ * nothing to type it by.
312
+ */
313
+ function expandWildcard(pattern, rows, textOnly) {
314
+ const { segments } = parseFieldPath(pattern);
315
+ const found = /* @__PURE__ */ new Set();
316
+ for (const row of rows.slice(0, SAMPLE_ROWS)) {
317
+ let candidates = [{
318
+ path: [],
319
+ value: row
320
+ }];
321
+ for (const seg of segments) {
322
+ const next = [];
323
+ for (const { path, value } of candidates) {
324
+ if (value == null) continue;
325
+ if (seg.kind === "wildcard") {
326
+ if (Array.isArray(value)) for (const el of value) next.push({
327
+ path: [...path, "[*]"],
328
+ value: el
329
+ });
330
+ } else if (seg.kind === "index") {
331
+ if (Array.isArray(value)) next.push({
332
+ path: [...path, `[${seg.index}]`],
333
+ value: value[seg.index]
334
+ });
335
+ } else if (seg.name === "*") {
336
+ if (isPlainObject(value)) for (const key of Object.keys(value)) next.push({
337
+ path: [...path, key],
338
+ value: value[key]
339
+ });
340
+ } else if (isPlainObject(value)) next.push({
341
+ path: [...path, seg.name],
342
+ value: value[seg.name]
343
+ });
344
+ }
345
+ candidates = next;
346
+ if (!candidates.length) break;
347
+ }
348
+ for (const { path, value } of candidates) {
349
+ if (!path.length || !isLeaf(value)) continue;
350
+ if (textOnly && typeof value !== "string") continue;
351
+ found.add(path.join("."));
352
+ }
353
+ }
354
+ return [...found];
355
+ }
356
+ /**
357
+ * The entries a search actually runs over: every `*` pattern replaced by the
358
+ * concrete fields it resolves to, in place.
359
+ *
360
+ * **An explicitly named field always wins.** A field named anywhere in the list —
361
+ * as a plain string or as `{ field, custom }` — is dropped from every pattern
362
+ * expansion regardless of order, so `['*', { field: 'Name', custom }]` and
363
+ * `[{ field: 'Name', custom }, '*']` both search `Name` with the custom, exactly
364
+ * once, at the position it was written.
365
+ */
366
+ function resolveSearchEntries(expr, options = {}) {
367
+ const entries = normalizeSearchExpr(expr);
368
+ if (!entries.some((e) => typeof e === "string" && isWildcardPattern(e))) return entries;
369
+ const { rows = [], textOnly = false } = options;
370
+ const explicit = new Set(entries.filter((e) => typeof e !== "string" || !isWildcardPattern(e)).map((e) => searchEntryField(e)));
371
+ const out = [];
372
+ const seen = /* @__PURE__ */ new Set();
373
+ for (const entry of entries) {
374
+ if (typeof entry === "string" && isWildcardPattern(entry)) {
375
+ for (const field of expandWildcard(entry, rows, textOnly)) {
376
+ if (explicit.has(field) || seen.has(field)) continue;
377
+ seen.add(field);
378
+ out.push(field);
379
+ }
380
+ continue;
381
+ }
382
+ const field = searchEntryField(entry);
383
+ if (seen.has(field)) continue;
384
+ seen.add(field);
385
+ out.push(entry);
386
+ }
387
+ return out;
388
+ }
389
+ /** Whether any entry is a `*` pattern (so folding must be bypassed). */
390
+ function hasWildcardSearch(expr) {
391
+ return normalizeSearchExpr(expr).some((e) => typeof e === "string" && isWildcardPattern(e));
392
+ }
393
+ /** Run the builder, guarding against a throw in consumer code. */
394
+ function runCustom(entry, value, operation) {
395
+ try {
396
+ return entry.custom({
397
+ field: entry.field,
398
+ value,
399
+ operation
400
+ });
401
+ } catch (error) {
402
+ warnOnce(entry, `searchExpr custom for "${entry.field}" threw — column skipped. ${error}`);
403
+ return null;
404
+ }
405
+ }
406
+ /**
407
+ * The devextreme filter clause for one custom entry + term, or `null` to skip it.
408
+ *
409
+ * A raw string is wrapped as `[raw]` — the single-member raw-passthrough clause
410
+ * devextreme honours inside a filter array, the same shape `toODataClause` emits
411
+ * for a wildcard lambda, so it slots into the OR/AND groups unchanged.
412
+ */
413
+ function customRemoteClause(entry, value, operation) {
414
+ const result = runCustom(entry, value, operation);
415
+ if (result == null || result === false) return null;
416
+ if (typeof result === "string") return result ? [result] : null;
417
+ if (Array.isArray(result)) return result.length ? result : null;
418
+ if (typeof result === "function") warnOnce(entry, `searchExpr custom for "${entry.field}" returned a predicate function, which a remote source can't send — column skipped. Return a filter array or an OData string for remote sources.`);
419
+ return null;
420
+ }
421
+ /**
422
+ * The client-side row predicate for one custom entry + term, or `null` to skip it.
423
+ *
424
+ * Filter arrays go through `compileFilterPredicate`, which already understands
425
+ * nested `and`/`or` groups, `['!', …]` negation and path fields — so the SAME
426
+ * `[field, op, value]` a remote source receives also narrows an array source.
427
+ */
428
+ function customPredicate(entry, value, operation) {
429
+ const result = runCustom(entry, value, operation);
430
+ if (result == null || result === false) return null;
431
+ if (typeof result === "function") return result;
432
+ if (Array.isArray(result)) return result.length ? compileFilterPredicate(result) : null;
433
+ if (typeof result === "string") warnOnce(entry, `searchExpr custom for "${entry.field}" returned the raw OData string ${JSON.stringify(result)}, which only a remote source can use — column skipped for this in-memory source. Return a filter array to support both.`);
434
+ return null;
435
+ }
436
+ //#endregion
437
+ //#region src/search/data-search.ts
438
+ /**
439
+ * The shared search engine — one implementation of "match a typed term against
440
+ * a set of fields", used by every component that searches data.
441
+ *
442
+ * `monoDataGrid` grew this pipeline first (paths, `*` patterns, `{ field, custom }`
443
+ * clause builders); this module lifts the reusable half out of the grid so
444
+ * `mono-select`, `mono-tag-input` and `mono-dropdown-table` share it verbatim
445
+ * rather than each re-deriving a weaker version.
446
+ *
447
+ * ## The `search-value` grammar
448
+ *
449
+ * A component's `search-value` prop accepts either form, interchangeably:
450
+ *
451
+ * ```ts
452
+ * // array — the full grammar, including custom clause builders
453
+ * :search-value.prop="['Company.Name', 'Transaction.[*].Price', '*.[*].*']"
454
+ *
455
+ * // comma-separated string — the same thing from plain HTML
456
+ * search-value="Company.Name,Transaction.[*].Price,*.[*].*"
457
+ * ```
458
+ *
459
+ * Whitespace around a comma is trimmed, so `'a, b, c'` and `'a,b,c'` are equal.
460
+ * A comma is never part of a path or a pattern, so splitting on it is lossless —
461
+ * only `{ field, custom }` entries need the array form.
462
+ *
463
+ * ## The two output shapes
464
+ *
465
+ * A search has to be expressed twice, because the two source kinds evaluate it in
466
+ * different places:
467
+ *
468
+ * - **remote** (a devextreme store): a `$filter` expression → {@link searchRemoteFilter}
469
+ * - **array / in-memory**: a `(row) => boolean` → {@link searchRowPredicate}
470
+ *
471
+ * Both are built from the SAME resolved entry list, so the two paths can't drift.
472
+ *
473
+ * ## Why a source can't always do it itself
474
+ *
475
+ * devextreme folds `searchValue` + `searchExpr` into the request on its own, which
476
+ * is cheaper and is kept for the common case. But folding emits exactly
477
+ * `contains(<col>,'<term>')` per column, so it cannot express a nav path
478
+ * (`Job/Name`), a collection lambda (`Nav/any(...)`) or a custom clause.
479
+ * {@link isFoldableSearch} decides; {@link MonoSourceSearch} routes.
480
+ */
481
+ /** The default devextreme search operation. */
482
+ var DEFAULT_SEARCH_OPERATION = "contains";
483
+ /**
484
+ * Split the string form of `search-value` on commas.
485
+ *
486
+ * Kept separate from {@link resolveSearchFields} so a component can show a user
487
+ * what its raw prop parsed to without also resolving `*` patterns against data.
488
+ */
489
+ function parseSearchValue(value) {
490
+ if (value == null) return [];
491
+ if (Array.isArray(value)) return normalizeSearchExpr(value);
492
+ if (typeof value !== "string") return [];
493
+ return normalizeSearchExpr(value.split(",").map((s) => s.trim()).filter(Boolean));
494
+ }
495
+ /** The spellings, in the order a merge reads them. */
496
+ var SEARCH_FIELDS_KEYS = [
497
+ "searchExpr",
498
+ "search-expr",
499
+ "searchValue",
500
+ "search-value"
501
+ ];
502
+ /**
503
+ * Merge every spelling present into one entry list, de-duplicated by field name.
504
+ *
505
+ * They all mean the same thing, so passing two of them means the union rather
506
+ * than one silently shadowing the other. Order only decides *position* among
507
+ * equal field names — first occurrence wins, so a `{ field, custom }` entry
508
+ * written under one spelling isn't displaced by a plain column under another.
509
+ *
510
+ * Returns **`undefined` when none of the keys is present**, which callers rely on
511
+ * to mean "not configured at all" — distinctly different from `[]` ("configured,
512
+ * but empty"). The grid uses that difference to decide whether to leave a data
513
+ * source's own `searchExpr` alone.
514
+ */
515
+ function mergeSearchFields(src) {
516
+ if (!src) return void 0;
517
+ let present = false;
518
+ const out = [];
519
+ const seen = /* @__PURE__ */ new Set();
520
+ for (const key of SEARCH_FIELDS_KEYS) {
521
+ const raw = src[key];
522
+ if (raw === void 0) continue;
523
+ present = true;
524
+ for (const entry of parseSearchValue(raw)) {
525
+ const field = searchEntryField(entry);
526
+ if (seen.has(field)) continue;
527
+ seen.add(field);
528
+ out.push(entry);
529
+ }
530
+ }
531
+ return present ? out : void 0;
532
+ }
533
+ /** The default when nothing is configured: every top-level field. */
534
+ var DEFAULT_SEARCH_FIELDS = ["*"];
535
+ /**
536
+ * The entries a search actually runs over: the prop parsed, the fallbacks applied
537
+ * when it's empty, and every `*` pattern expanded against `rows`.
538
+ *
539
+ * Call this **once per query**, never per row — a pattern samples up to 20 rows,
540
+ * so resolving inside a row loop is O(rows × fields) on every keystroke.
541
+ */
542
+ function resolveSearchFields(options = {}) {
543
+ const { searchValue, fallbackFields = [], rows = [], remote = false, defaultToWildcard = false } = options;
544
+ let entries = parseSearchValue(searchValue);
545
+ if (!entries.length) {
546
+ const fallbacks = fallbackFields.filter((f) => typeof f === "string" && !!f);
547
+ entries = defaultToWildcard ? [...DEFAULT_SEARCH_FIELDS, ...fallbacks] : fallbacks;
548
+ }
549
+ if (!entries.length) return [];
550
+ return resolveSearchEntries(entries, {
551
+ rows,
552
+ textOnly: remote
553
+ });
554
+ }
555
+ /**
556
+ * Whether a source's own `searchValue`/`searchExpr` folding can express these
557
+ * entries — true only for plain top-level column names.
558
+ *
559
+ * A path needs a nav selector or an `any()` lambda and a custom brings its own
560
+ * clause; folding would silently search either with a flat `contains` instead.
561
+ */
562
+ function isFoldableSearch(entries) {
563
+ return entries.every((e) => typeof e === "string" && !isPath(e) && !isWildcardPattern(e));
564
+ }
565
+ /** The plain column names among `entries` — what a source may safely be handed. */
566
+ function plainSearchFields(entries) {
567
+ return entries.filter((e) => typeof e === "string" && !isWildcardPattern(e));
568
+ }
569
+ /** Compare one resolved value against the needle using a devextreme operation. */
570
+ function matchesValue(value, needle, operation) {
571
+ const s = String(value ?? "").toLowerCase();
572
+ const n = needle.toLowerCase();
573
+ if (operation === "startswith") return s.startsWith(n);
574
+ if (operation === "endswith") return s.endsWith(n);
575
+ if (operation === "=" || operation === "equals") return s === n;
576
+ if (operation === "notcontains") return !s.includes(n);
577
+ return s.includes(n);
578
+ }
579
+ /**
580
+ * Read a field off a row, path-aware. A wildcard path resolves to an array of
581
+ * every match, so the caller matches if ANY element hits.
582
+ */
583
+ function readSearchField(row, field) {
584
+ const raw = isPath(field) ? getFieldValue(row, field) : row?.[field];
585
+ return Array.isArray(raw) ? raw : [raw];
586
+ }
587
+ /**
588
+ * The client-side row test for one query, or `null` when there is nothing to
589
+ * match on.
590
+ *
591
+ * `null` means "no opinion" — the caller should keep every row rather than filter
592
+ * them all away, which is what a component with no configured fields wants.
593
+ */
594
+ function searchRowPredicate(entries, query, operation = DEFAULT_SEARCH_OPERATION) {
595
+ const needle = String(query ?? "").trim();
596
+ if (!needle || !entries.length) return null;
597
+ return (row) => entries.some((entry) => {
598
+ if (typeof entry === "string") return readSearchField(row, entry).some((v) => matchesValue(v, needle, operation));
599
+ const pred = customPredicate(entry, needle, operation);
600
+ return pred ? pred(row) : false;
601
+ });
602
+ }
603
+ /**
604
+ * The devextreme `$filter` expression for one query — an OR across every entry —
605
+ * or `null` when there is nothing to send.
606
+ */
607
+ function searchRemoteFilter(entries, query, operation = DEFAULT_SEARCH_OPERATION) {
608
+ const needle = String(query ?? "").trim();
609
+ if (!needle || !entries.length) return null;
610
+ return joinFilters(entries.map((entry) => typeof entry === "string" ? toODataClause(entry, operation, needle) : customRemoteClause(entry, needle, operation)).filter((c) => c != null), "or");
611
+ }
612
+ /**
613
+ * Applies a search to a bound DataSource, choosing between the source's own
614
+ * folding and a controller-built `$filter`.
615
+ *
616
+ * The reason this needs to be an object rather than a function is the **base
617
+ * filter**: when the search can't be folded it has to live in `source.filter()`,
618
+ * which is also where the consumer's own filter lives. So the consumer's filter is
619
+ * captured and every search re-composes from that snapshot — otherwise each
620
+ * keystroke would AND another search clause onto the previous one and the filter
621
+ * would grow without bound.
622
+ *
623
+ * The snapshot is not taken once and kept. Before every apply (and every clear)
624
+ * the live `filter()` is compared against what this instance last WROTE: if it
625
+ * differs, the consumer changed the filter in the meantime — a watcher scoping
626
+ * the source — and that becomes the new base. Snapshotting only at `bind()` made
627
+ * the next keystroke overwrite such a filter with the stale one, and "restored"
628
+ * the stale one on clear.
629
+ *
630
+ * ```ts
631
+ * private _search = new MonoSourceSearch()
632
+ * // on `dataSource` change:
633
+ * this._search.bind(this.dataSource)
634
+ * // on a (debounced) query:
635
+ * await this._search.apply(this.dataSource, {
636
+ * query, searchValue: this.searchValue, fallbackFields: [...], rows, remote: true,
637
+ * })
638
+ * ```
639
+ */
640
+ var MonoSourceSearch = class {
641
+ constructor() {
642
+ this._source = null;
643
+ this._baseFilter = null;
644
+ this._wroteFilter = false;
645
+ this._lastWritten = null;
646
+ }
647
+ /**
648
+ * Snapshot a source's own filter. Safe to call repeatedly — the snapshot is
649
+ * only (re)taken when the source identity actually changes, so it can be driven
650
+ * straight from a `willUpdate` branch. A change on the SAME source is picked up
651
+ * by `_syncBase` at the next apply/clear instead.
652
+ */
653
+ bind(source) {
654
+ if (source === this._source) return;
655
+ this._source = source ?? null;
656
+ this._baseFilter = source?.filter?.() ?? null;
657
+ this._lastWritten = this._baseFilter;
658
+ this._wroteFilter = false;
659
+ }
660
+ /**
661
+ * Adopt a filter the consumer set on the source since the last write —
662
+ * anything the source holds that is not what this instance last put there.
663
+ * `_writeFilter` records what the source HOLDS after a write (read back), so a
664
+ * source that ignores writes reads back as its own last write and is never
665
+ * re-adopted, and one that normalises compares against its normalised value.
666
+ */
667
+ _syncBase(s) {
668
+ if (typeof s.filter !== "function") return;
669
+ const live = s.filter() ?? null;
670
+ if (live === this._lastWritten) return;
671
+ this._baseFilter = live;
672
+ this._wroteFilter = false;
673
+ }
674
+ /** Write `filter()` and remember what the source holds afterwards. */
675
+ _writeFilter(s, value) {
676
+ s.filter?.(value);
677
+ this._lastWritten = s.filter?.() ?? null;
678
+ }
679
+ /**
680
+ * Undo whatever this instance wrote onto the source, then forget it.
681
+ *
682
+ * `reset()` alone is not enough at teardown. With `defaultToWildcard`, a `'*'`
683
+ * entry is never foldable, so the search is AND-ed into `source.filter()` — the
684
+ * same slot the CONSUMER's own filter lives in. Only `apply()` ever restores the
685
+ * captured base (and only when the next apply happens to be foldable), so an
686
+ * element torn down mid-query used to leave its clause behind on a DataSource
687
+ * the app still owns and shares.
688
+ *
689
+ * Deliberately does NOT `load()`: teardown must not issue a request. The next
690
+ * consumer of the source reloads on its own terms.
691
+ */
692
+ clear(source) {
693
+ const s = source ?? this._source;
694
+ if (s) {
695
+ this._syncBase(s);
696
+ s.searchValue?.(null);
697
+ if (this._wroteFilter) this._writeFilter(s, this._baseFilter ?? null);
698
+ }
699
+ this.reset();
700
+ }
701
+ /** Forget the captured state without touching the source. */
702
+ reset() {
703
+ this._source = null;
704
+ this._baseFilter = null;
705
+ this._lastWritten = null;
706
+ this._wroteFilter = false;
707
+ }
708
+ /**
709
+ * Push `query` onto `source` and reload it. Returns the resolved entries so a
710
+ * caller can reuse them for its own client-side rendering without re-resolving.
711
+ */
712
+ async apply(source, options) {
713
+ const s = source;
714
+ if (!s) return [];
715
+ this.bind(source);
716
+ this._syncBase(s);
717
+ const operation = options.operation || "contains";
718
+ const entries = resolveSearchFields({
719
+ ...options,
720
+ remote: options.remote ?? true
721
+ });
722
+ const query = String(options.query ?? "").trim();
723
+ if (isFoldableSearch(entries)) {
724
+ s.searchOperation?.(operation);
725
+ s.searchExpr?.(plainSearchFields(entries));
726
+ s.searchValue?.(query || null);
727
+ if (this._wroteFilter) {
728
+ this._writeFilter(s, this._baseFilter ?? null);
729
+ this._wroteFilter = false;
730
+ }
731
+ } else {
732
+ s.searchValue?.(null);
733
+ const expr = searchRemoteFilter(entries, query, operation);
734
+ this._writeFilter(s, andFilters(this._baseFilter ?? null, expr));
735
+ this._wroteFilter = expr != null;
736
+ }
737
+ s.pageIndex?.(0);
738
+ await Promise.resolve(s.load?.());
739
+ return entries;
740
+ }
741
+ };
742
+ //#endregion
743
+ //#region src/composables/reactive.ts
744
+ /**
745
+ * Unwrap a `ref()` / `computed()` wrapper and a `reactive()` proxy to the raw
746
+ * target underneath. Returns the value unchanged when it isn't reactive.
747
+ */
748
+ function unwrapReactive(value) {
749
+ let out = value;
750
+ if (out && typeof out === "object" && out.__v_isRef) out = out.value;
751
+ if (out && typeof out === "object" && out.__v_raw) out = out.__v_raw;
752
+ return out;
753
+ }
754
+ /**
755
+ * Read a {@link MaybeReactive} option: call a getter, unwrap a ref/computed or a
756
+ * reactive proxy, unbox a plain `{ value }`. Never caches — the caller decides
757
+ * when "now" is.
758
+ */
759
+ function resolveMaybeReactive(option) {
760
+ if (option === void 0 || option === null) return void 0;
761
+ if (typeof option === "function") return option();
762
+ const raw = unwrapReactive(option);
763
+ if (raw && typeof raw === "object") {
764
+ const keys = Object.keys(raw);
765
+ if (keys.length === 1 && keys[0] === "value") return unwrapReactive(raw.value);
766
+ }
767
+ return raw;
768
+ }
769
+ /**
770
+ * {@link unwrapReactive}, then — for an **array** — unwrap each element too.
771
+ *
772
+ * Reading an index off a deep-reactive array yields a proxy of that element, so
773
+ * unwrapping only the container still leaves proxies inside. One level of
774
+ * elements is all the value models here need; this deliberately does not recurse
775
+ * into nested objects, which would rewrite data the consumer owns.
776
+ */
777
+ function unwrapReactiveDeep(value) {
778
+ const out = unwrapReactive(value);
779
+ if (!Array.isArray(out)) return out;
780
+ let changed = false;
781
+ const items = out.map((item) => {
782
+ const raw = unwrapReactive(item);
783
+ if (raw !== item) changed = true;
784
+ return raw;
785
+ });
786
+ return changed ? items : out;
787
+ }
788
+ //#endregion
789
+ export { joinFilters as S, resolveSearchEntries as _, MonoSourceSearch as a, andPredicates as b, searchRowPredicate as c, expandWildcard as d, hasCustomSearch as f, plainSearchColumns as g, normalizeSearchExpr as h, DEFAULT_SEARCH_FIELDS as i, customPredicate as l, isWildcardPattern as m, unwrapReactive as n, mergeSearchFields as o, hasWildcardSearch as p, unwrapReactiveDeep as r, resolveSearchFields as s, resolveMaybeReactive as t, customRemoteClause as u, searchEntryFor as v, compileFilterPredicate as x, andFilters as y };