@jimka/typescript-ui 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/README.md +4 -0
  2. package/THIRD-PARTY-NOTICES.md +7 -3
  3. package/dist/lib/{AbstractBooleanInput-BGesvIZy.js → AbstractBooleanInput-DSwKBAic.js} +2 -2
  4. package/dist/lib/{AbstractBooleanInput-BGesvIZy.js.map → AbstractBooleanInput-DSwKBAic.js.map} +1 -1
  5. package/dist/lib/{AbstractInput-BxOtFrER.js → AbstractInput-BmWGJTs1.js} +2 -2
  6. package/dist/lib/{AbstractInput-BxOtFrER.js.map → AbstractInput-BmWGJTs1.js.map} +1 -1
  7. package/dist/lib/AnchorConstraints-CVrMP9rz.js +2 -0
  8. package/dist/lib/AnchorConstraints-CVrMP9rz.js.map +1 -0
  9. package/dist/lib/{AnimatedDropdown-CZQEqQi-.js → AnimatedDropdown-DKas40B-.js} +2 -2
  10. package/dist/lib/{AnimatedDropdown-CZQEqQi-.js.map → AnimatedDropdown-DKas40B-.js.map} +1 -1
  11. package/dist/lib/Border-Bz29z-_7.js +2 -0
  12. package/dist/lib/Border-Bz29z-_7.js.map +1 -0
  13. package/dist/lib/Button-bjpWruNc.js +2 -0
  14. package/dist/lib/{Button-U1rsP4v8.js.map → Button-bjpWruNc.js.map} +1 -1
  15. package/dist/lib/{Card-BVwOS8AG.js → Card-BdfbvOD_.js} +2 -2
  16. package/dist/lib/{Card-BVwOS8AG.js.map → Card-BdfbvOD_.js.map} +1 -1
  17. package/dist/lib/ComboBox-CBw2VLLN.js +2 -0
  18. package/dist/lib/ComboBox-CBw2VLLN.js.map +1 -0
  19. package/dist/lib/Component-DHqrPwAw.js +2 -0
  20. package/dist/lib/Component-DHqrPwAw.js.map +1 -0
  21. package/dist/lib/Container-CAQpj4yb.js +2 -0
  22. package/dist/lib/{Container-D5H8VxJK.js.map → Container-CAQpj4yb.js.map} +1 -1
  23. package/dist/lib/DOM-67StIm5G.js +2 -0
  24. package/dist/lib/DOM-67StIm5G.js.map +1 -0
  25. package/dist/lib/DragChain-CYGuT7OA.js +2 -0
  26. package/dist/lib/DragChain-CYGuT7OA.js.map +1 -0
  27. package/dist/lib/DragManager-CHWCe3-8.js +2 -0
  28. package/dist/lib/DragManager-CHWCe3-8.js.map +1 -0
  29. package/dist/lib/{FieldDecorator-CJs9gwqH.js → FieldDecorator-CgAGcqCk.js} +2 -2
  30. package/dist/lib/{FieldDecorator-CJs9gwqH.js.map → FieldDecorator-CgAGcqCk.js.map} +1 -1
  31. package/dist/lib/{Fit-DjRsiwlg.js → Fit-DIYt2aQB.js} +2 -2
  32. package/dist/lib/{Fit-DjRsiwlg.js.map → Fit-DIYt2aQB.js.map} +1 -1
  33. package/dist/lib/Glyph-CeAIWyPB.js +2 -0
  34. package/dist/lib/Glyph-CeAIWyPB.js.map +1 -0
  35. package/dist/lib/{Grid-DdL9TVeJ.js → Grid-ViA0joow.js} +2 -2
  36. package/dist/lib/{Grid-DdL9TVeJ.js.map → Grid-ViA0joow.js.map} +1 -1
  37. package/dist/lib/GridConstraints-B1rxCw9B.js +2 -0
  38. package/dist/lib/GridConstraints-B1rxCw9B.js.map +1 -0
  39. package/dist/lib/Header-mKaqgfat.js +2 -0
  40. package/dist/lib/Header-mKaqgfat.js.map +1 -0
  41. package/dist/lib/IconText-BqwXA82-.js +2 -0
  42. package/dist/lib/IconText-BqwXA82-.js.map +1 -0
  43. package/dist/lib/{LayoutSerialization-BT66TY83.js → LayoutSerialization-D82UtnDD.js} +2 -2
  44. package/dist/lib/{LayoutSerialization-BT66TY83.js.map → LayoutSerialization-D82UtnDD.js.map} +1 -1
  45. package/dist/lib/LayoutSizes-DG9aW9k6.js +2 -0
  46. package/dist/lib/LayoutSizes-DG9aW9k6.js.map +1 -0
  47. package/dist/lib/List-CUntS8ux.js +2 -0
  48. package/dist/lib/List-CUntS8ux.js.map +1 -0
  49. package/dist/lib/MemoryStore-DT6iWWco.js +2 -0
  50. package/dist/lib/MemoryStore-DT6iWWco.js.map +1 -0
  51. package/dist/lib/Menu-B_-SQj72.js +2 -0
  52. package/dist/lib/Menu-B_-SQj72.js.map +1 -0
  53. package/dist/lib/{MenuButton-VJ5uC3c1.js → MenuButton-C79l8Ysf.js} +2 -2
  54. package/dist/lib/{MenuButton-VJ5uC3c1.js.map → MenuButton-C79l8Ysf.js.map} +1 -1
  55. package/dist/lib/{Panel-DzWdYwq1.js → Panel-D2X33qR6.js} +2 -2
  56. package/dist/lib/{Panel-DzWdYwq1.js.map → Panel-D2X33qR6.js.map} +1 -1
  57. package/dist/lib/Position-Ck_KD4cR.js +2 -0
  58. package/dist/lib/Position-Ck_KD4cR.js.map +1 -0
  59. package/dist/lib/{ProgressSpinner-zJKtGyNJ.js → ProgressSpinner-DCyq02pd.js} +2 -2
  60. package/dist/lib/{ProgressSpinner-zJKtGyNJ.js.map → ProgressSpinner-DCyq02pd.js.map} +1 -1
  61. package/dist/lib/{RadioButton-CYSSv4nV.js → RadioButton-BJIAQkII.js} +2 -2
  62. package/dist/lib/{RadioButton-CYSSv4nV.js.map → RadioButton-BJIAQkII.js.map} +1 -1
  63. package/dist/lib/{RovingTabIndex-BSZ31Vp5.js → RovingTabIndex-DFJyoveq.js} +2 -2
  64. package/dist/lib/{RovingTabIndex-BSZ31Vp5.js.map → RovingTabIndex-DFJyoveq.js.map} +1 -1
  65. package/dist/lib/Scrollbar-CSFK-Y57.js +2 -0
  66. package/dist/lib/Scrollbar-CSFK-Y57.js.map +1 -0
  67. package/dist/lib/Slider-C-kQQYCj.js +2 -0
  68. package/dist/lib/Slider-C-kQQYCj.js.map +1 -0
  69. package/dist/lib/{Spacer-D9NGW4QG.js → Spacer-D159iJy9.js} +2 -2
  70. package/dist/lib/{Spacer-D9NGW4QG.js.map → Spacer-D159iJy9.js.map} +1 -1
  71. package/dist/lib/TabButton-CHkXBgCj.js +2 -0
  72. package/dist/lib/TabButton-CHkXBgCj.js.map +1 -0
  73. package/dist/lib/Text-D5pg7taZ.js +2 -0
  74. package/dist/lib/Text-D5pg7taZ.js.map +1 -0
  75. package/dist/lib/Tooltip-DzK6LxUt.js +3 -0
  76. package/dist/lib/{Tooltip-tkXDk5Bo.js.map → Tooltip-DzK6LxUt.js.map} +1 -1
  77. package/dist/lib/VBox-BNegDPs_.js +2 -0
  78. package/dist/lib/VBox-BNegDPs_.js.map +1 -0
  79. package/dist/lib/VirtualScroller-zQr-vKrO.js +2 -0
  80. package/dist/lib/VirtualScroller-zQr-vKrO.js.map +1 -0
  81. package/dist/lib/component/button.es.js +1 -1
  82. package/dist/lib/component/chart.es.js +1 -1
  83. package/dist/lib/component/chart.es.js.map +1 -1
  84. package/dist/lib/component/container.es.js +1 -1
  85. package/dist/lib/component/container.es.js.map +1 -1
  86. package/dist/lib/component/diagram.es.js +1 -1
  87. package/dist/lib/component/diagram.es.js.map +1 -1
  88. package/dist/lib/component/display.es.js +1 -1
  89. package/dist/lib/component/display.es.js.map +1 -1
  90. package/dist/lib/component/editor.es.js +3 -3
  91. package/dist/lib/component/editor.es.js.map +1 -1
  92. package/dist/lib/component/input.es.js +1 -1
  93. package/dist/lib/component/input.es.js.map +1 -1
  94. package/dist/lib/component/list.es.js +1 -1
  95. package/dist/lib/component/list.es.js.map +1 -1
  96. package/dist/lib/component/menubar.es.js +1 -1
  97. package/dist/lib/component/menubar.es.js.map +1 -1
  98. package/dist/lib/component/table.es.js +2 -2
  99. package/dist/lib/component/table.es.js.map +1 -1
  100. package/dist/lib/component/tree.es.js +1 -1
  101. package/dist/lib/component/tree.es.js.map +1 -1
  102. package/dist/lib/core.es.js +1 -1
  103. package/dist/lib/core.es.js.map +1 -1
  104. package/dist/lib/data.es.js +1 -1
  105. package/dist/lib/data.es.js.map +1 -1
  106. package/dist/lib/glyphs/solid/index.es.js +1 -1
  107. package/dist/lib/layout.es.js +1 -1
  108. package/dist/lib/layout.es.js.map +1 -1
  109. package/dist/lib/overlay.es.js +1 -1
  110. package/dist/lib/overlay.es.js.map +1 -1
  111. package/dist/lib/primitive.es.js +1 -1
  112. package/dist/lib/router.es.js +1 -1
  113. package/dist/lib/router.es.js.map +1 -1
  114. package/dist/lib/selectionsEqual-4r5R7pTK.js +2 -0
  115. package/dist/lib/selectionsEqual-4r5R7pTK.js.map +1 -0
  116. package/dist/lib/types/component/button/TabCloseButton.d.ts +1 -1
  117. package/dist/lib/types/component/container/CollapseButton.d.ts +1 -1
  118. package/dist/lib/types/component/container/DialogBackdrop.d.ts +1 -1
  119. package/dist/lib/types/component/container/MenuItem.d.ts +4 -0
  120. package/dist/lib/types/component/container/MenuSeparator.d.ts +1 -1
  121. package/dist/lib/types/component/container/Scrollbar.d.ts +1 -0
  122. package/dist/lib/types/component/container/SplitGutter.d.ts +2 -2
  123. package/dist/lib/types/component/container/StatusBar.d.ts +1 -1
  124. package/dist/lib/types/component/container/VirtualScroller.d.ts +1 -0
  125. package/dist/lib/types/component/container/WindowBorder.d.ts +1 -1
  126. package/dist/lib/types/component/diagram/DiagramEdgeLayer.d.ts +14 -1
  127. package/dist/lib/types/component/diagram/DiagramModel.d.ts +1 -0
  128. package/dist/lib/types/component/diagram/DiagramNode.d.ts +5 -1
  129. package/dist/lib/types/component/diagram/DiagramView.d.ts +76 -5
  130. package/dist/lib/types/component/diagram/ElkLayoutEngine.d.ts +14 -1
  131. package/dist/lib/types/component/diagram/index.d.ts +2 -2
  132. package/dist/lib/types/component/display/Canvas.d.ts +8 -2
  133. package/dist/lib/types/component/display/Glyph.d.ts +2 -1
  134. package/dist/lib/types/component/display/Header.d.ts +1 -1
  135. package/dist/lib/types/component/display/IconLabel.d.ts +1 -1
  136. package/dist/lib/types/component/display/IconText.d.ts +1 -1
  137. package/dist/lib/types/component/display/Image.d.ts +1 -1
  138. package/dist/lib/types/component/display/Video.d.ts +1 -1
  139. package/dist/lib/types/component/display/WebGLCanvas.d.ts +8 -2
  140. package/dist/lib/types/component/editor/CodeEditor.d.ts +4 -3
  141. package/dist/lib/types/component/input/AbstractPickerField.d.ts +1 -1
  142. package/dist/lib/types/component/input/AutoCompleteDropdown.d.ts +1 -1
  143. package/dist/lib/types/component/input/Link.d.ts +1 -1
  144. package/dist/lib/types/component/input/NumberSpinner.d.ts +1 -1
  145. package/dist/lib/types/component/input/PasswordField.d.ts +1 -1
  146. package/dist/lib/types/component/input/SpinButton.d.ts +1 -1
  147. package/dist/lib/types/component/input/Text.d.ts +3 -1
  148. package/dist/lib/types/component/input/TextArea.d.ts +1 -1
  149. package/dist/lib/types/component/input/TextField.d.ts +3 -1
  150. package/dist/lib/types/component/input/UsernameField.d.ts +1 -1
  151. package/dist/lib/types/component/list/AbstractMarkerList.d.ts +9 -1
  152. package/dist/lib/types/component/list/BulletedList.d.ts +1 -0
  153. package/dist/lib/types/component/list/ListItem.d.ts +10 -4
  154. package/dist/lib/types/component/list/NumberedList.d.ts +1 -0
  155. package/dist/lib/types/component/menubar/MenuBarButton.d.ts +1 -1
  156. package/dist/lib/types/component/menubar/ToolBar.d.ts +1 -1
  157. package/dist/lib/types/component/menubar/ToolBarSeparator.d.ts +1 -1
  158. package/dist/lib/types/component/shared/VirtualRowView.d.ts +13 -1
  159. package/dist/lib/types/component/shared/selectionsEqual.d.ts +1 -0
  160. package/dist/lib/types/component/table/Body.d.ts +15 -2
  161. package/dist/lib/types/component/table/CellGeometry.d.ts +6 -0
  162. package/dist/lib/types/component/table/Column.d.ts +6 -0
  163. package/dist/lib/types/component/table/ColumnConfig.d.ts +4 -0
  164. package/dist/lib/types/component/table/Header.d.ts +25 -2
  165. package/dist/lib/types/component/table/Row.d.ts +13 -2
  166. package/dist/lib/types/component/table/Table.d.ts +45 -4
  167. package/dist/lib/types/component/table/TableExporter.d.ts +1 -1
  168. package/dist/lib/types/component/table/TablePanel.d.ts +2 -1
  169. package/dist/lib/types/component/table/cell/Cell.d.ts +1 -1
  170. package/dist/lib/types/component/table/cell/Header.d.ts +4 -0
  171. package/dist/lib/types/component/table/index.d.ts +2 -2
  172. package/dist/lib/types/component/tree/Tree.d.ts +2 -0
  173. package/dist/lib/types/core/Aria.d.ts +1 -3
  174. package/dist/lib/types/core/Body.d.ts +9 -2
  175. package/dist/lib/types/core/ClassStyleRules.d.ts +17 -0
  176. package/dist/lib/types/core/Component.d.ts +16 -2
  177. package/dist/lib/types/core/ComponentDefaults.d.ts +1 -0
  178. package/dist/lib/types/core/DOM.d.ts +15 -2
  179. package/dist/lib/types/core/DragChain.d.ts +3 -0
  180. package/dist/lib/types/core/ElementAttributes.d.ts +15 -0
  181. package/dist/lib/types/core/Favicon.d.ts +7 -0
  182. package/dist/lib/types/core/FirstLayoutGate.d.ts +5 -0
  183. package/dist/lib/types/core/PendingTransitions.d.ts +4 -0
  184. package/dist/lib/types/core/StyleTarget.d.ts +1 -0
  185. package/dist/lib/types/core/Theme.d.ts +1 -0
  186. package/dist/lib/types/core/Util.d.ts +3 -0
  187. package/dist/lib/types/core/index.d.ts +3 -0
  188. package/dist/lib/types/layout/Accordion.d.ts +0 -1
  189. package/dist/lib/types/layout/Border.d.ts +1 -0
  190. package/dist/lib/types/layout/FlowLayout.d.ts +4 -0
  191. package/dist/lib/types/layout/HFlow.d.ts +3 -0
  192. package/dist/lib/types/layout/Tab.d.ts +4 -1
  193. package/dist/lib/types/layout/Table.d.ts +1 -0
  194. package/dist/lib/types/layout/VFlow.d.ts +1 -0
  195. package/dist/lib/types/overlay/AbstractWindow.d.ts +2 -1
  196. package/dist/lib/types/overlay/Dock.d.ts +1 -0
  197. package/dist/lib/types/overlay/DropZoneOverlay.d.ts +1 -0
  198. package/dist/lib/types/overlay/Popover.d.ts +1 -1
  199. package/dist/lib/types/router/RoutePattern.d.ts +7 -0
  200. package/dist/lib/types/router/Router.d.ts +13 -2
  201. package/dist/lib/types/router/index.d.ts +1 -1
  202. package/dist/lib/validation.es.js +1 -1
  203. package/llms.txt +2 -1
  204. package/package.json +5 -9
  205. package/dist/lib/Border-BgaZkc1R.js +0 -2
  206. package/dist/lib/Border-BgaZkc1R.js.map +0 -1
  207. package/dist/lib/BoxLayout-DrKGfsup.js +0 -2
  208. package/dist/lib/BoxLayout-DrKGfsup.js.map +0 -1
  209. package/dist/lib/Button-U1rsP4v8.js +0 -2
  210. package/dist/lib/ComboBox-B9EDPu6T.js +0 -2
  211. package/dist/lib/ComboBox-B9EDPu6T.js.map +0 -1
  212. package/dist/lib/Component-DXf5a3g0.js +0 -2
  213. package/dist/lib/Component-DXf5a3g0.js.map +0 -1
  214. package/dist/lib/Container-D5H8VxJK.js +0 -2
  215. package/dist/lib/DOM-CGn7xyTw.js +0 -2
  216. package/dist/lib/DOM-CGn7xyTw.js.map +0 -1
  217. package/dist/lib/DragManager-CI4mZQFy.js +0 -2
  218. package/dist/lib/DragManager-CI4mZQFy.js.map +0 -1
  219. package/dist/lib/Glyph-KEf4nIv2.js +0 -2
  220. package/dist/lib/Glyph-KEf4nIv2.js.map +0 -1
  221. package/dist/lib/GridConstraints-DkLueyrf.js +0 -2
  222. package/dist/lib/GridConstraints-DkLueyrf.js.map +0 -1
  223. package/dist/lib/HBox-Ce0GTCJP.js +0 -2
  224. package/dist/lib/HBox-Ce0GTCJP.js.map +0 -1
  225. package/dist/lib/Header-BQIVpBte.js +0 -2
  226. package/dist/lib/Header-BQIVpBte.js.map +0 -1
  227. package/dist/lib/IconText-Bo4Qcnot.js +0 -2
  228. package/dist/lib/IconText-Bo4Qcnot.js.map +0 -1
  229. package/dist/lib/LayoutSizes-DU3qSq0w.js +0 -2
  230. package/dist/lib/LayoutSizes-DU3qSq0w.js.map +0 -1
  231. package/dist/lib/List-DtTVTyWW.js +0 -2
  232. package/dist/lib/List-DtTVTyWW.js.map +0 -1
  233. package/dist/lib/Menu-Dz4L7EKJ.js +0 -2
  234. package/dist/lib/Menu-Dz4L7EKJ.js.map +0 -1
  235. package/dist/lib/Position-A39T7-_1.js +0 -2
  236. package/dist/lib/Position-A39T7-_1.js.map +0 -1
  237. package/dist/lib/Scrollbar-BhtOjqkG.js +0 -2
  238. package/dist/lib/Scrollbar-BhtOjqkG.js.map +0 -1
  239. package/dist/lib/Slider-CdXm7E64.js +0 -2
  240. package/dist/lib/Slider-CdXm7E64.js.map +0 -1
  241. package/dist/lib/TabButton-CThevdY_.js +0 -2
  242. package/dist/lib/TabButton-CThevdY_.js.map +0 -1
  243. package/dist/lib/Text-gz6qjFfP.js +0 -2
  244. package/dist/lib/Text-gz6qjFfP.js.map +0 -1
  245. package/dist/lib/Tooltip-tkXDk5Bo.js +0 -3
  246. package/dist/lib/VBox-EIqw85Rh.js +0 -2
  247. package/dist/lib/VBox-EIqw85Rh.js.map +0 -1
  248. package/dist/lib/VirtualRowView-BxpHQ_u8.js +0 -2
  249. package/dist/lib/VirtualRowView-BxpHQ_u8.js.map +0 -1
  250. package/dist/lib/VirtualScroller-DwEEJE1_.js +0 -2
  251. package/dist/lib/VirtualScroller-DwEEJE1_.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./ListenerBag-WPdKuuds.js";import{t}from"./Validator-Du8PqS5i.js";var Field=class{_name;_type;_defaultValue;_mapping;_description;_order;_convert;_validators;constructor(e){this._name=e.name,this._type=e.type??`auto`,this._defaultValue=e.defaultValue,this._mapping=e.mapping??e.name,this._description=e.description,this._order=e.order,this._convert=e.convert,this._validators=e.validators??[]}getName(){return this._name}getType(){return this._type}getDefaultValue(){return this._defaultValue}getMapping(){return this._mapping}getDescription(){return this._description??this._name}getOrder(){return this._order??-1}convertValue(e,t){return this._convert?this._convert(e,t):e==null?e:this.convertByType(e)}convertByType(e){switch(this._type){case`number`:return e===``?void 0:Number(e);case`boolean`:return this.convertBoolean(e);case`date`:case`datetime`:case`time`:{if(e instanceof Date)return e;let t=new Date(e);return isNaN(t.getTime())?void 0:t}case`string`:return String(e);default:return e}}convertBoolean(e){return[!0,1,`true`,`1`,`yes`].includes(e)?!0:![!1,0,`false`,`0`,`no`,``].includes(e)&&!!e}getValidators(){return this._validators}};function readField(e,t){return e&&typeof e.get==`function`?e.get(t):e?e[t]:void 0}function matchesFilter(e,t){switch(t.type){case`eq`:return readField(e,t.field)===t.value;case`neq`:return readField(e,t.field)!==t.value;case`contains`:{let n=readField(e,t.field);if(n==null)return!1;let r=t.caseSensitive?String(n):String(n).toLowerCase(),i=t.caseSensitive?t.value:t.value.toLowerCase();return r.indexOf(i)!==-1}case`startsWith`:{let n=readField(e,t.field);if(n==null)return!1;let r=t.caseSensitive?String(n):String(n).toLowerCase(),i=t.caseSensitive?t.value:t.value.toLowerCase();return r.indexOf(i)===0}case`gt`:return readField(e,t.field)>t.value;case`gte`:return readField(e,t.field)>=t.value;case`lt`:return readField(e,t.field)<t.value;case`lte`:return readField(e,t.field)<=t.value;case`in`:return t.values.indexOf(readField(e,t.field))!==-1;case`and`:for(let n of t.filters)if(!matchesFilter(e,n))return!1;return!0;case`or`:for(let n of t.filters)if(matchesFilter(e,n))return!0;return!1;case`not`:return!matchesFilter(e,t.filter)}}function WorkerWrapper(e){return new Worker(`/assets/StoreWorker-CgOBYoai.js`,{name:e?.name})}var n=null,r=1,i=new Map;function ensureWorker(){if(n)return n;if(typeof Worker>`u`)return null;try{n=new WorkerWrapper}catch{return n=null,null}return n.onmessage=e=>{let{requestId:t,indices:n,error:r}=e.data,a=i.get(t);a&&(i.delete(t),r?a.reject(Error(r)):a.resolve(n))},n}function send(e){let t=ensureWorker();if(!t)return Promise.reject(Error(`Worker unavailable`));let n=r++;return e.requestId=n,new Promise((r,a)=>{i.set(n,{resolve:r,reject:a}),t.postMessage(e)})}var a={isAvailable(){return ensureWorker()!==null},snapshot(e,t){return send({type:`snapshot`,storeId:e,records:t}).then(()=>void 0)},sortFilter(e,t,n){return send({type:`sortFilter`,storeId:e,sort:t,filter:n}).then(e=>e??[])}};function nativeCompare(e,t){return e<t?-1:+(e>t)}function compareValues(e,t,n){return e==null&&t==null?0:e==null?1:t==null?-1:n===`string`||n===void 0&&typeof e==`string`&&typeof t==`string`?e.localeCompare(t):(n===`date`||n===`datetime`||n===`time`)&&e instanceof Date&&t instanceof Date?nativeCompare(e.getTime(),t.getTime()):nativeCompare(e,t)}var o=1e3,s=1,AbstractStore=class{_allRecords=[];_records=[];_viewAsync=!1;_pendingRemoved=[];_activeFilters=[];_activeSorters=[];_listeners=new e;_idIndex=new Map;_groupField=null;_storeId=`store-`+s++;_snapshotDirty=!0;_loading=!1;_batching=!1;_page=1;_pageSize=void 0;_totalCount=void 0;_remoteSort=!1;_remoteFilter=!1;_syncErrorPolicy=`stop`;_cascadeSync=!0;_loadSeq=0;_loadAbort=void 0;applyOptions(e){if(e.listeners!==void 0)for(let t of Object.keys(e.listeners)){let n=e.listeners[t];n!==void 0&&this.on(t,n)}e.pageSize!==void 0&&this.setPageSize(e.pageSize),e.page!==void 0&&(this._page=e.page),e.sorters!==void 0&&e.sorters.length>0&&(this._activeSorters=e.sorters.slice()),e.filters!==void 0&&e.filters.length>0&&(this._activeFilters=e.filters.slice()),e.remoteSort!==void 0&&(this._remoteSort=e.remoteSort),e.remoteFilter!==void 0&&(this._remoteFilter=e.remoteFilter),e.syncErrorPolicy!==void 0&&(this._syncErrorPolicy=e.syncErrorPolicy),e.cascadeSync!==void 0&&(this._cascadeSync=e.cascadeSync),e.groupField!==void 0&&this.setGroupField(e.groupField),e.autoLoad===!0&&this.load()}async load(){if(!this.proxy)throw Error(`Store.load() called but no proxy is configured`);this.emit(`beforeload`,{});let e=++this._loadSeq;this._loadAbort?.abort();let t=new AbortController;this._loadAbort=t,this.setLoading(!0);try{let n=this.buildReadParams(t.signal),r=await this.proxy.read(n);if(e!==this._loadSeq)return;await this.ingestRaw(r),this._totalCount=this.proxy.getLastTotalCount(),this.emit(`load`,{records:this._records})}catch(t){if(t.name===`AbortError`||e!==this._loadSeq)return;throw this.emit(`exception`,{operation:`read`,records:[],error:t}),t}finally{e===this._loadSeq&&this.setLoading(!1)}}buildReadParams(e){let t={};if(this._pageSize!=null&&(t.page=this._page,t.pageSize=this._pageSize),this._remoteSort&&this._activeSorters.length>0&&(t.sorters=this.getActiveSorters()),this._remoteFilter&&this._activeFilters.length>0&&(t.filters=this.getActiveFilters()),!(t.page==null&&t.sorters==null&&t.filters==null))return t.signal=e,t}isLoading(){return this._loading}setLoading(e){this._loading!==e&&(this._loading=e,this.emit(`loadingchange`,{loading:e}))}loadData(e){let t=this.ingestRaw(e);this._viewAsync?t.then(()=>this.emit(`load`,{records:this._records})):this.emit(`load`,{records:this._records})}setPageSize(e){return this._pageSize=e,this._page=1,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize}),this}getPageSize(){return this._pageSize}getPage(){return this._page}getTotalCount(){return this._totalCount}getTotalPages(){if(!(this._pageSize==null||this._totalCount==null))return Math.max(1,Math.ceil(this._totalCount/this._pageSize))}nextPage(){if(this._pageSize==null)return;let e=this.getTotalPages();if(!(e!=null&&this._page>=e)){if(this.hasPendingChanges()){this.emit(`pagechangeblocked`,{from:this._page,to:this._page+1});return}this._page++,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize}),this.load()}}prevPage(){if(!(this._pageSize==null||this._page<=1)){if(this.hasPendingChanges()){this.emit(`pagechangeblocked`,{from:this._page,to:this._page-1});return}this._page--,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize}),this.load()}}goToPage(e){if(this._pageSize==null)return this;let t=this.getTotalPages()??e,n=Math.max(1,Math.min(e,t));return n===this._page?this:this.hasPendingChanges()?(this.emit(`pagechangeblocked`,{from:this._page,to:n}),this):(this._page=n,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize}),this.load(),this)}ingestRaw(e){return this.setOwnership(this._allRecords,!1),this._allRecords=e.map(e=>this.model.createRecord(e)),this.setOwnership(this._allRecords,!0),this._pendingRemoved=[],this._snapshotDirty=!0,this.applyView()}getRecords(){return this._records.slice()}getAll(){return this._allRecords.slice()}getCount(){return this._records.length}getAt(e){return this._records[e]}getById(e){return this._idIndex.get(e)}indexOf(e){return this._records.indexOf(e)}getRange(e,t){let n=Math.max(0,e),r=Math.min(t,this._records.length-1);return r<n?[]:this._records.slice(n,r+1)}first(){return this._records[0]}last(){return this._records[this._records.length-1]}each(e){this._records.forEach((t,n)=>e(t,n))}contains(e){return this._records.includes(e)}find(e,t){return this._records.find(n=>n.get(e)===t)}findAll(e,t){return this._records.filter(n=>n.get(e)===t)}add(e){return this.insertAt(null,e)}insert(e,t){return this.insertAt(e,t)}insertAt(e,t){let n=(Array.isArray(t)?t:[t]).map(e=>{let t=this.model.createRecord(e);return t.markAsNew(),t});if(e===null)this._allRecords.push(...n);else{let t=Math.max(0,Math.min(e,this._allRecords.length));this._allRecords.splice(t,0,...n)}return this.setOwnership(n,!0),this._snapshotDirty=!0,this.applyView(),this.emit(`add`,{records:n}),this.emit(`datachange`,{}),n}remove(e){let t=this._allRecords.indexOf(e);return t===-1?this:(this._allRecords.splice(t,1),this.setOwnership([e],!1),this._snapshotDirty=!0,e.isNew()||this._pendingRemoved.push(e),this.applyView(),this.emit(`remove`,{record:e}),this.emit(`datachange`,{}),this)}removeAll(){let e=this._allRecords.slice();return this._pendingRemoved.push(...this._allRecords.filter(e=>!e.isNew())),this.setOwnership(e,!1),this._allRecords=[],this._snapshotDirty=!0,this.applyView(),this.emit(`clear`,{removed:e}),this.emit(`datachange`,{}),this}appendRecords(e){this._allRecords.push(...e),this.setOwnership(e,!0),this._snapshotDirty=!0,this.applyView()}notifyRecordChanged(e,t){this.emit(`update`,{record:e,changes:t}),this.emit(`datachange`,{})}beginEdit(){return this._batching=!0,this}commitEdit(){return this._batching=!1,this.emit(`datachange`,{}),this}isBatching(){return this._batching}setOwnership(e,t){for(let n of e)t?n.adoptedBy(this):n.released()}hasPendingChanges(){if(this._pendingRemoved.length>0)return!0;for(let e of this._allRecords)if(e.isNew()||e.isDirty())return!0;return!1}reject(){let e=this._allRecords,t=[];for(let e of this._allRecords)e.isNew()||(e.isDirty()&&e.reject(),t.push(e));this._pendingRemoved.length>0&&(t.push(...this._pendingRemoved),this._pendingRemoved=[]),this._allRecords=t,this.setOwnership(e,!1),this.setOwnership(t,!0),this._snapshotDirty=!0,this.applyView(),this.emit(`datachange`,{})}async sync(){let e=this.proxy;if(!e)return;this.emit(`beforesync`,{});let t=[];await this.syncCreates(e,t)||await this.syncUpdates(e,t)||(await this.syncCascade(),await this.syncDeletes(e,t)),this.emit(`sync`,{failures:t}),this.emit(`datachange`,{})}async syncCascade(){if(this._cascadeSync)for(let e of this._allRecords)for(let t of e.getModel().getAssociations()){if(t.kind!==`hasMany`||!e.hasChildStore(t.getAccessor()))continue;let n=e.getAssociated(t.getAccessor());this.stampForeignKeys(n,t.getForeignKey(),e),await n.sync()}}stampForeignKeys(e,t,n){let r=n.getId();if(r!==void 0)for(let n of e.getAll())n.setSilent(t,r)}async syncCreates(e,t){let n=this._allRecords.filter(e=>e.isNew());return n.length===0?!1:e.createBatch?this.runBatch(`create`,n,t,t=>e.createBatch(t)):this.runPerRecord(`create`,n,t,t=>e.create(t))}async syncUpdates(e,t){let n=this._allRecords.filter(e=>e.isDirty()&&!e.isNew());return n.length===0?!1:e.updateBatch?this.runBatch(`update`,n,t,t=>e.updateBatch(t)):this.runPerRecord(`update`,n,t,t=>e.update(t))}async syncDeletes(e,t){let n=this._pendingRemoved.slice();if(n.length===0)return!1;if(e.destroyBatch)try{return await e.destroyBatch(n),this._pendingRemoved=[],!1}catch(e){return this.recordFailure(`destroy`,n,e,t)}let r=[],i=!1;for(let a of n){if(i){r.push(a);continue}try{await e.destroy(a)}catch(e){r.push(a),i=this.recordFailure(`destroy`,[a],e,t)}}return this._pendingRemoved=r,i}async runBatch(e,t,n,r){try{let e=await r(t);return t.forEach((t,n)=>{this.commitFromServerData(t,e[n]??{})}),!1}catch(r){return this.recordFailure(e,t,r,n)}}async runPerRecord(e,t,n,r){for(let i of t)try{let e=await r(i);this.commitFromServerData(i,e)}catch(t){if(this.recordFailure(e,[i],t,n))return!0}return!1}commitFromServerData(e,t){for(let[n,r]of Object.entries(t))e.setSilent(n,r);e.commit()}recordFailure(e,t,n,r){let i={operation:e,records:t,error:n};return r.push(i),this.emit(`exception`,i),this._syncErrorPolicy===`stop`}sort(e,t=`asc`){typeof e==`string`?this._activeSorters=[{field:e,dir:t}]:this._activeSorters=e.slice();let n=this._remoteSort||this._pageSize!=null;return n&&(this._page=1,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize})),this.applyView().then(()=>{this.emit(`sortchange`,{sorters:this.getActiveSorters()}),this.emit(`datachange`,{}),n&&this.load()})}getActiveSorters(){return this._activeSorters.map(e=>({...e}))}getActiveFilters(){return this._activeFilters.map(e=>({...e}))}getActiveSorter(){let e=this._activeSorters[0];return e?{property:e.field,direction:e.dir}:null}clearSort(){return this._activeSorters=[],this.applyView().then(()=>{this.emit(`sortchange`,{sorters:[]}),this.emit(`datachange`,{})})}filter(e,t){return this._activeFilters.push({type:`eq`,field:e,value:t}),this.applyFilterChange()}filterBy(e){return this._activeFilters.push(e),this.applyFilterChange()}applyFilterChange(){let e=this._remoteFilter||this._pageSize!=null;return e&&(this._page=1,this.emit(`pagechange`,{page:this._page,pageSize:this._pageSize})),this.applyView().then(()=>{this.emit(`filterchange`,{filters:this.getActiveFilters()}),this.emit(`datachange`,{}),e&&this.load()})}clearFilter(){return this._activeFilters=[],this.applyFilterChange()}numericValues(e){let t=[];for(let n of this._records){let r=n.get(e);if(r==null)continue;let i=Number(r);Number.isNaN(i)||t.push(i)}return t}sum(e){return this.numericValues(e).reduce((e,t)=>e+t,0)}average(e){let t=this.numericValues(e);return t.length===0?0:t.reduce((e,t)=>e+t,0)/t.length}min(e){let t=this.numericValues(e);if(t.length!==0)return t.reduce((e,t)=>t<e?t:e)}max(e){let t=this.numericValues(e);if(t.length!==0)return t.reduce((e,t)=>t>e?t:e)}collect(e){let t=new Set,n=[];for(let r of this._records){let i=r.get(e);t.has(i)||(t.add(i),n.push(i))}return n}setGroupField(e){return this._groupField===e?this:(this._groupField=e,this.emit(`groupchange`,{groupField:e}),this)}getGroupField(){return this._groupField}getGroupString(e){if(this._groupField==null)return``;let t=e.get(this._groupField);return t==null?``:String(t)}getGroups(){let e=new Map;for(let t of this._records){let n=this.getGroupString(t),r=e.get(n);r?r.push(t):e.set(n,[t])}return e}on(e,t){return this._listeners.add(e,t),this}off(e,t){return this._listeners.remove(e,t),this}emit(e,t){this._listeners.fire(e,t)}applyView(){if(this.rebuildIdIndex(),this._allRecords.length>=o&&a.isAvailable()&&!this.hasCustomSorter())return this._viewAsync=!0,this.applyViewOnWorker();this._viewAsync=!1;let e=this._allRecords.slice();for(let t of this._activeFilters)e=e.filter(e=>matchesFilter(e,t));return this._activeSorters.length>0&&e.sort((e,t)=>{for(let n of this._activeSorters){let r=this.compareBySorter(e,t,n);if(r!==0)return r}return 0}),this._records=e,Promise.resolve()}compareBySorter(e,t,n){if(n.sorterFn){let r=n.sorterFn(e,t);return n.dir===`asc`?r:-r}let r=e.get(n.field),i=t.get(n.field),a=compareValues(r,i,this.model.getField(n.field)?.getType());return r==null||i==null||n.dir===`asc`?a:-a}hasCustomSorter(){return this._activeSorters.some(e=>e.sorterFn!==void 0)}rebuildIdIndex(){if(this._idIndex.clear(),this.model.getPrimaryKeyField())for(let e of this._allRecords)this._idIndex.set(e.getId(),e)}applyViewOnWorker(){let e=this._snapshotDirty?a.snapshot(this._storeId,this._allRecords.map(e=>e.getData())):Promise.resolve();this._snapshotDirty&&=!1;let t=this._allRecords,n=this._activeSorters[0];return e.then(()=>a.sortFilter(this._storeId,n?{field:n.field,direction:n.dir,fieldType:this.model.getField(n.field)?.getType()}:void 0,this._activeFilters.length>0?this._activeFilters.length===1?this._activeFilters[0]:{type:`and`,filters:this._activeFilters}:void 0)).then(e=>{if(t!==this._allRecords)return this.applyView();this._records=e.map(e=>this._allRecords[e])})}},Store=class extends AbstractStore{model;proxy;constructor(e,t){super(),e instanceof d?(this.model=e,this.proxy=t):(this.model=e.model,this.proxy=e.proxy,this.applyOptions(e))}},c=1,l=100,u=class ModelRecord{_model;_data;_original;_dirty=!1;_isNew=!1;_internalId;_associatedSeed;_childStores;_store=null;_editDepth=0;_editSnapshot=null;constructor(e,t,n={}){this._model=e,this._data={...t},this._original={...t},this._internalId=c++,this._associatedSeed=n}adoptedBy(e){this._store=e}released(){this._store=null}get(e){return this._data[e]}set(e,t){let n=this._data[e];return this.applySet(e,t)&&this.notifyStore({[e]:{old:n,new:this._data[e]}}),this}setSilent(e,t){return this.applySet(e,t),this}setMany(e){this.beginEdit();for(let[t,n]of Object.entries(e))this.set(t,n);return this.commitEdit(),this}beginEdit(){return this._editDepth===0&&(this._editSnapshot={...this._data}),this._editDepth++,this}commitEdit(){if(this._editDepth===0||(this._editDepth--,this._editDepth>0))return this;let e=this._editSnapshot??{},t={};for(let n of Object.keys(this._data))ModelRecord.isEqual(this._data[n],e[n])||(t[n]={old:e[n],new:this._data[n]});return this._editSnapshot=null,Object.keys(t).length>0&&this.notifyStore(t),this}cancelEdit(){return this._editDepth===0?this:(this._editDepth=0,this._editSnapshot!==null&&(this._data={...this._editSnapshot},this._editSnapshot=null,this.recomputeDirty()),this)}applySet(e,t){let n=this._model.getField(e),r=n?n.convertValue(t,this._data):t;return ModelRecord.isEqual(this._data[e],r)?!1:(this._data[e]=r,this.recomputeDirty(),!0)}recomputeDirty(){this._dirty=this._isNew||Object.keys(this._data).some(e=>!ModelRecord.isEqual(this._data[e],this._original[e]))}notifyStore(e){this._store===null||this._editDepth>0||this._store.isBatching()||this._store.notifyRecordChanged(this,e)}static isEqual(e,t){return ModelRecord.isEqualAtDepth(e,t,0)}static isEqualAtDepth(e,t,n){return e===t||e!==e&&t!==t?!0:e==null||t==null?!1:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():n>=l?e===t:Array.isArray(e)||Array.isArray(t)?Array.isArray(e)&&Array.isArray(t)&&ModelRecord.arraysEqual(e,t,n):ModelRecord.isPlainObject(e)&&ModelRecord.isPlainObject(t)?ModelRecord.plainObjectsEqual(e,t,n):!1}static arraysEqual(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!ModelRecord.isEqualAtDepth(e[r],t[r],n+1))return!1;return!0}static plainObjectsEqual(e,t,n){let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let i of r)if(!Object.prototype.hasOwnProperty.call(t,i)||!ModelRecord.isEqualAtDepth(e[i],t[i],n+1))return!1;return!0}static isPlainObject(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}getData(){return{...this._data}}getChangedData(){let e={};for(let[t,n]of Object.entries(this.getChanges()))e[t]=n.new;let t=this._model.getPrimaryKeyField();return t&&(e[t.getName()]=this._data[t.getName()]),e}isDirty(){return this._dirty}isNew(){return this._isNew}markAsNew(){this._isNew=!0}commit(){return this._original={...this._data},this._dirty=!1,this._isNew=!1,this}reject(){this._data={...this._original},this._dirty=!1}getId(){let e=this._model.getPrimaryKeyField();return e?this._data[e.getName()]:void 0}getModel(){return this._model}getInternalId(){return this._internalId}getAssociated(e){let t=this._childStores?.get(e);if(t)return t;let n=this._model.getAssociation(e);if(!n)throw Error(`ModelRecord.getAssociated: no association '${e}'`);let r=this.buildChildStore(n);return(this._childStores??=new Map).set(e,r),r}buildChildStore(e){let t=e.resolveTarget(),n=e.resolveProxy();if(e.kind===`belongsTo`)return new Store({model:t,proxy:n,remoteFilter:!0,filters:[{type:`eq`,field:t.getPrimaryKeyField()?.getName()??e.getForeignKey(),value:this.get(e.getForeignKey())}]});let r=this._associatedSeed[e.getAccessor()];if(r){let e=new Store({model:t,proxy:n});return e.loadData(r),e}return new Store({model:t,proxy:n,remoteFilter:!0,filters:[{type:`eq`,field:e.getForeignKey(),value:this.getId()}]})}hasChildStore(e){return this._childStores?.has(e)??!1}getForeignKeyValue(e){let t=this._model.getAssociation(e);if(!t)throw Error(`ModelRecord.getForeignKeyValue: no association '${e}'`);return this.get(t.getForeignKey())}getDataWithNested(){let e=this.getData();for(let t of this._model.getAssociations()){if(t.kind!==`hasMany`||t.getPersist()!==`nested`||!this.hasChildStore(t.getAccessor()))continue;let n=this.getAssociated(t.getAccessor());e[t.getNestedKey()]=n.getAll().map(e=>e.getData())}return e}getChanges(){let e={};for(let t of Object.keys(this._data))ModelRecord.isEqual(this._data[t],this._original[t])||(e[t]={old:this._original[t],new:this._data[t]});return e}getModified(){return this.getChanges()}clone(){let e=new ModelRecord(this._model,{...this._data});return e.markAsNew(),e._dirty=!0,e}isValid(){return Object.keys(this.getErrors()).length===0}getErrors(){let e={};for(let t of this._model.getFields()){let n=this.validateField(t.getName());n&&(e[t.getName()]=n)}return e}validateField(e){let n=this._model.getField(e);if(!n)return``;let r=this._data[e],i=this.checkType(n,r);if(i)return i;for(let e of n.getValidators()){let n=t(e,r);if(!n.valid)return n.message}return``}checkType(e,t){let n=e.getType();if(n===`auto`||n===`glyph`||t==null)return``;let r=e.convertValue(t);return r===void 0||typeof r==`number`&&isNaN(r)?`Value is not a valid ${n}.`:``}},Association=class{_accessor;_target;_foreignKey;_nestedKey;_persist;_proxy;_resolvedTarget;constructor(e){this._accessor=e.accessor,this._target=e.target,this._foreignKey=e.foreignKey,this._nestedKey=e.nestedKey,this._persist=e.persist??`proxy`,this._proxy=e.proxy}getAccessor(){return this._accessor}getForeignKey(){return this._foreignKey}getNestedKey(){return this._nestedKey??this._accessor}getPersist(){return this._persist}resolveTarget(){return this._resolvedTarget===void 0&&(this._resolvedTarget=this._target()),this._resolvedTarget}resolveProxy(){return this._proxy}},HasManyAssociation=class extends Association{kind=`hasMany`},BelongsToAssociation=class extends Association{kind=`belongsTo`},d=class AbstractModel{associations;_primaryKey;_resolvedFields;_fieldsByName;_resolvedAssociations;_associationsByAccessor;ensureIndex(){if(!this._resolvedFields){this._resolvedFields=this.fields.map(e=>e instanceof Field?e:new Field(e)),this._fieldsByName=new Map;for(let e of this._resolvedFields)this._fieldsByName.set(e.getName(),e);this._resolvedAssociations=(this.associations??[]).map(e=>AbstractModel.promoteAssociation(e)),this._associationsByAccessor=new Map;for(let e of this._resolvedAssociations)this._associationsByAccessor.set(e.getAccessor(),e),this.assertNestedKeyFree(e)}}static promoteAssociation(e){return e instanceof Association?e:e.kind===`belongsTo`?new BelongsToAssociation(e):new HasManyAssociation(e)}assertNestedKeyFree(e){let t=e.getNestedKey();for(let n of this._resolvedFields)if(n.getMapping()===t)throw Error(`AbstractModel: association '${e.getAccessor()}' nested key '${t}' collides with field '${n.getName()}' mapping`)}getPrimaryKeyField(){if(this._primaryKey)return this.getField(this._primaryKey)}getFields(){return this.ensureIndex(),this._resolvedFields}getField(e){return this.ensureIndex(),this._fieldsByName.get(e)}hasField(e){return this.ensureIndex(),this._fieldsByName.has(e)}getAssociations(){return this.ensureIndex(),this._resolvedAssociations}getAssociation(e){return this.ensureIndex(),this._associationsByAccessor.get(e)}createRecord(e={}){this.ensureIndex();let t;if(Array.isArray(e)){let n=this._resolvedFields.slice().sort((e,t)=>e.getOrder()-t.getOrder());t={},n.forEach((n,r)=>{t[n.getMapping()]=e[r]})}else t=e;let n={};for(let e of this._resolvedFields){let r=t[e.getMapping()],i=r===void 0?e.getDefaultValue():r;n[e.getName()]=e.convertValue(i,t)}let r={};for(let e of this._resolvedAssociations){let n=t[e.getNestedKey()];e.kind===`hasMany`&&Array.isArray(n)&&(r[e.getAccessor()]=n)}return new u(this,n,r)}},Model=class extends d{fields;constructor(e,t){super(),Array.isArray(e)?(this.fields=e,this._primaryKey=t):(this.fields=e.fields,this._primaryKey=e.primaryKey,this.associations=e.associations)}},Proxy=class{getLastTotalCount(){}},MemoryProxy=class extends Proxy{_data;constructor(e={data:[]}){super(),this._data=e.data.slice()}setData(e){this._data=e.slice()}read(e){return Promise.resolve(this._data.slice())}create(e){let t={...e.getData()};return this._data.push(t),Promise.resolve(t)}update(e){let t={...e.getData()},n=e.getModel().getPrimaryKeyField()?.getName();if(n!==void 0){let r=e.getId(),i=this._data.findIndex(e=>e[n]===r);i!==-1&&(this._data[i]=t)}return Promise.resolve(t)}destroy(e){let t=e.getModel().getPrimaryKeyField()?.getName();if(t!==void 0){let n=e.getId(),r=this._data.findIndex(e=>e[t]===n);r!==-1&&this._data.splice(r,1)}return Promise.resolve()}},MemoryStore=class extends AbstractStore{model;proxy=new MemoryProxy;constructor(e,t=[]){super(),e instanceof Model?(this.model=e,this.proxy.setData(t)):(this.model=e.model,this.proxy.setData(e.data??[]),this.applyOptions(e))}},AjaxError=class extends Error{status;statusText;body;operation;url;constructor(e,t,n,r){super(`AjaxProxy: ${e} failed with status ${n.status}`),this.name=`AjaxError`,this.status=n.status,this.statusText=n.statusText,this.body=r,this.operation=e,this.url=t}},f=`data`,p=`total`,JsonReader=class{_root;_rootProperty;_totalProperty;_mode;constructor(e){this._root=e?.root,this._rootProperty=e?.rootProperty??f,this._totalProperty=e?.totalProperty??p,this._mode=e?.mode??`auto`}read(e,t){if(this._mode===`detect`){let t=this._root?e?.[this._root]:e;return Array.isArray(t)?this.readArray(e):this.readEnvelope(e)}return this._mode===`envelope`||this._mode===`auto`&&t?this.readEnvelope(e):this.readArray(e)}readEnvelope(e){let t=this._root?e[this._root]:e;if(typeof t!=`object`||!t)throw Error(`AjaxProxy: paginated response is not an envelope object — if the server returns a top-level array, set mode:'array'`);let n=t[this._rootProperty],r=t[this._totalProperty];if(!Array.isArray(n))throw Error(`AjaxProxy: paginated response 'data' is not an array`);return{records:n,total:typeof r==`number`?r:void 0,success:typeof t.success==`boolean`?t.success:void 0,message:typeof t.message==`string`?t.message:void 0}}readArray(e){if(this._root){let t=e[this._root];if(!Array.isArray(t))throw Error(`AjaxProxy: root '${this._root}' did not resolve to an array`);return{records:t}}if(!Array.isArray(e))throw Error(`AjaxProxy: response is not an array and no root was specified — if the server returns a { data, total } envelope, set mode:'detect' (or mode:'envelope' / a rootProperty), or enable pagination with setPageSize()`);return{records:e}}},JsonWriter=class{_mode;constructor(e){this._mode=e?.mode??`full`}writeRecord(e,t){return JSON.stringify(this.dataFor(e,t))}writeRecords(e,t){return JSON.stringify(e.map(e=>this.dataFor(e,t)))}dataFor(e,t){return this._mode===`dirty`&&t===`update`?e.getChangedData():e.getData()}},AjaxProxy=class extends Proxy{_url;_root;_method;_createMethod;_updateMethod;_headers;_reader;_writer;_lastTotalCount=void 0;constructor(e){super(),this._url=e.url,this._root=e.root,this._method=e.method??`GET`,this._createMethod=e.createMethod??`POST`,this._updateMethod=e.updateMethod??`PUT`,this._headers=e.headers??{},this._reader=e.reader??new JsonReader({root:e.root,mode:e.readMode}),this._writer=e.writer??new JsonWriter({mode:e.writeMode}),e.batch===!1&&this.disableBatch()}disableBatch(){let e=this;e.createBatch=void 0,e.updateBatch=void 0,e.destroyBatch=void 0}async read(e){let t=e!=null&&(e.page!=null||e.pageSize!=null),n=this.buildReadUrl(e),r=await fetch(n,{method:this._method,headers:this._headers,signal:e?.signal});r.ok||await this.throwHttpError(r,`read`,n);let i=await r.json(),a=this._reader.read(i,t);return this._lastTotalCount=a.total,a.records}buildReadUrl(e){if(e==null)return this._url;let t=new URLSearchParams;e.page!=null&&t.set(`page`,String(e.page)),e.pageSize!=null&&t.set(`pageSize`,String(e.pageSize)),e.sorters!=null&&e.sorters.length>0&&t.set(`sort`,JSON.stringify(e.sorters)),e.filters!=null&&e.filters.length>0&&t.set(`filter`,JSON.stringify(e.filters));let n=t.toString();if(n===``)return this._url;let r=this._url.includes(`?`)?`&`:`?`;return this._url+r+n}getLastTotalCount(){return this._lastTotalCount}async create(e){let t=await fetch(this._url,{method:this._createMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecord(e,`create`)});t.ok||await this.throwHttpError(t,`create`,this._url);let n=await t.json();return this._root?n[this._root]:n}async update(e){let t=await fetch(`${this._url}/${e.getId()}`,{method:this._updateMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecord(e,`update`)});t.ok||await this.throwHttpError(t,`update`,`${this._url}/${e.getId()}`);let n=await t.json();return this._root?n[this._root]:n}async destroy(e){let t=await fetch(`${this._url}/${e.getId()}`,{method:`DELETE`,headers:this._headers});t.ok||await this.throwHttpError(t,`destroy`,`${this._url}/${e.getId()}`)}async createBatch(e){let t=await fetch(this._url,{method:this._createMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e,`create`)});return t.ok||await this.throwHttpError(t,`create`,this._url),this.readBatchResponse(t)}async updateBatch(e){let t=await fetch(this._url,{method:this._updateMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e,`update`)});return t.ok||await this.throwHttpError(t,`update`,this._url),this.readBatchResponse(t)}async destroyBatch(e){let t=await fetch(this._url,{method:`DELETE`,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e)});t.ok||await this.throwHttpError(t,`destroy`,this._url)}async readBatchResponse(e){let t=await e.json();return this._root?t[this._root]:t}async throwHttpError(e,t,n){let r;try{r=await e.json()}catch{try{r=await e.text()}catch{r=void 0}}throw new AjaxError(t,n,e,r)}},AjaxStore=class extends AbstractStore{model;proxy;constructor(e,t){if(super(),e instanceof Model){if(!t)throw Error(`AjaxStore requires an AjaxProxyOptions argument when constructed with a Model.`);this.model=e,this.proxy=new AjaxProxy(t)}else this.model=e.model,this.proxy=new AjaxProxy(e.proxy),this.applyOptions(e)}},TreeNode=class{_store;_record;_parent;_children=[];_depth;_leaf=!1;_loaded=!0;constructor(e,t,n,r){this._store=e,this._record=t,this._parent=n,this._depth=r}getRecord(){return this._record}getId(){return this._record?this._record.get(this._store.getIdField()):void 0}getParent(){return this._parent}getChildren(){return this._children}getDepth(){return this._depth}isExpanded(){return this._store.isExpanded(this)}isLeaf(){return this._leaf}isLoaded(){return this._loaded}setChildren(e){this._children=e}setLeaf(e){this._leaf=e}setLoaded(e){this._loaded=e}},TreeStore=class extends AbstractStore{model;proxy;_idField;_parentField;_leafField;_hasChildrenField;_childrenKey;_root;_nodesById=new Map;_childRecords=new Map;_expandedIds=new Set;_loadingIds=new Set;_loadedIds=new Set;_visibleNodes=[];constructor(e){super(),this.model=e.model,this.proxy=e.proxy,this._parentField=e.parentField,this._idField=e.idField??this.model.getPrimaryKeyField()?.getName()??`id`,this._leafField=e.leafField,this._hasChildrenField=e.hasChildrenField,this._childrenKey=e.childrenKey,this._root=new TreeNode(this,null,null,-1),this.applyOptions(e)}getIdField(){return this._idField}getParentField(){return this._parentField}loadData(e){super.loadData(this._childrenKey?this.flattenNested(e):e)}applyView(){let e=super.applyView();return this.rebuildNodeIndex(),this.flatten(),e.then(()=>{this.rebuildNodeIndex(),this.flatten()})}flattenNested(e){let t=this.model.getField(this._idField)?.getMapping()??this._idField,n=this.model.getField(this._parentField)?.getMapping()??this._parentField,r=[],walk=(e,i)=>{for(let a of e){let e=a[this._childrenKey],o={...a};delete o[this._childrenKey],i!=null&&o[n]==null&&(o[n]=i),r.push(o),Array.isArray(e)&&e.length>0&&walk(e,o[t])}};return walk(e,null),r}rebuildNodeIndex(){let e=this.getRecords();this.bucketChildRecords(e),this._nodesById.clear(),this._root.setChildren(this.buildChildNodes(null,this._root,0))}bucketChildRecords(e){this._childRecords.clear();let t=new Set;for(let n of e)t.add(n.get(this._idField));for(let n of e){let e=n.get(this._parentField),r=e!=null&&t.has(e)?e:null,i=this._childRecords.get(r);i?i.push(n):this._childRecords.set(r,[n])}}buildChildNodes(e,t,n){return(this._childRecords.get(e)??[]).map(e=>{let r=e.get(this._idField),i=new TreeNode(this,e,t,n);return i.setLeaf(this.resolveLeaf(e,r)),i.setLoaded(this.resolveLoaded(r)),this._nodesById.set(r,i),i.setChildren(this.buildChildNodes(r,i,n+1)),i})}resolveLoaded(e){if(!this._hasChildrenField||this._loadedIds.has(e))return!0;let t=this._childRecords.get(e);return!!t&&t.length>0}resolveLeaf(e,t){if(this._leafField)return e.get(this._leafField)===!0;if(this._hasChildrenField)return e.get(this._hasChildrenField)!==!0;let n=this._childRecords.get(t);return!n||n.length===0}flatten(){let e=[],recurse=t=>{for(let n of t)e.push(n),this._expandedIds.has(n.getId())&&recurse(n.getChildren())};recurse(this._root.getChildren()),this._visibleNodes=e}getRootNode(){return this._root}getNodeById(e){return this._nodesById.get(e)}getNodeForRecord(e){return this._nodesById.get(e.get(this._idField))}getChildren(e){return e.getChildren()}getParent(e){return e.getParent()}getDepth(e){return e.getDepth()}eachNode(e){let recurse=t=>{for(let n of t)e(n),recurse(n.getChildren())};recurse(this._root.getChildren())}getVisibleNodes(){return this._visibleNodes.slice()}getVisibleCount(){return this._visibleNodes.length}async expand(e){let t=e.getId();this._expandedIds.has(t)||e.isLeaf()||!e.isLoaded()&&this.proxy&&!await this.loadChildren(t)||(this._expandedIds.add(t),this.flatten(),this.emit(`expand`,{node:e}))}async loadChildren(e){if(e==null||this._loadingIds.has(e))return!1;this._loadingIds.add(e);try{let t={filters:[{type:`eq`,field:this._parentField,value:e}]},n=await this.proxy.read(t);this._loadedIds.add(e),this.appendRecords(n.map(e=>this.model.createRecord(e)));let r=this.getNodeById(e);return r&&this.emit(`append`,{parent:r,nodes:r.getChildren()}),!0}finally{this._loadingIds.delete(e)}}collapse(e){let t=e.getId();this._expandedIds.has(t)&&(this._expandedIds.delete(t),this.flatten(),this.emit(`collapse`,{node:e}))}toggle(e){return this._expandedIds.has(e.getId())?(this.collapse(e),Promise.resolve()):this.expand(e)}isExpanded(e){return this._expandedIds.has(e.getId())}expandToDepth(e){this.eachNode(t=>{!t.isLeaf()&&t.getDepth()<=e&&this._expandedIds.add(t.getId())}),this.flatten()}collapseAll(){this._expandedIds.clear(),this.flatten()}on(e,t){return super.on(e,t)}off(e,t){return super.off(e,t)}emit(e,t){super.emit(e,t)}onTree(e,t){return this.on(e,t)}},WebStorageProxy=class extends Proxy{_key;_storage;constructor(e){super(),this._key=e.key,this._storage=e.storage===`session`?sessionStorage:localStorage,e.data!==void 0&&this._storage.getItem(this._key)===null&&this.writeAll(e.data)}read(e){return Promise.resolve(this.readAll())}create(e){let t=this.readAll(),n={...e.getData()},r=e.getModel().getPrimaryKeyField()?.getName();return r!==void 0&&e.getId()===void 0&&(n[r]=this.nextId(t,r)),t.push(n),this.writeAll(t),Promise.resolve(n)}update(e){let t=this.readAll(),n={...e.getData()},r=e.getModel().getPrimaryKeyField()?.getName();if(r!==void 0){let i=e.getId(),a=t.findIndex(e=>e[r]===i);a!==-1&&(t[a]=n,this.writeAll(t))}return Promise.resolve(n)}destroy(e){let t=this.readAll(),n=e.getModel().getPrimaryKeyField()?.getName();if(n!==void 0){let r=e.getId(),i=t.findIndex(e=>e[n]===r);i!==-1&&(t.splice(i,1),this.writeAll(t))}return Promise.resolve()}readAll(){let e=this._storage.getItem(this._key);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}writeAll(e){this._storage.setItem(this._key,JSON.stringify(e))}nextId(e,t){let n=0;for(let r of e){let e=r[t];typeof e==`number`&&e>n&&(n=e)}return n+1}};export{d as AbstractModel,AbstractStore,AjaxError,AjaxProxy,AjaxStore,Association,BelongsToAssociation,Field,HasManyAssociation,JsonReader,JsonWriter,MemoryProxy,MemoryStore,Model,u as ModelRecord,Proxy,Store,TreeNode,TreeStore,WebStorageProxy};
1
+ import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"./MemoryStore-DT6iWWco.js";var AjaxError=class extends Error{status;statusText;body;operation;url;constructor(e,t,n,r){super(`AjaxProxy: ${e} failed with status ${n.status}`),this.name=`AjaxError`,this.status=n.status,this.statusText=n.statusText,this.body=r,this.operation=e,this.url=t}},f=`data`,p=`total`,JsonReader=class{_root;_rootProperty;_totalProperty;_mode;constructor(e){this._root=e?.root,this._rootProperty=e?.rootProperty??f,this._totalProperty=e?.totalProperty??p,this._mode=e?.mode??`auto`}read(e,t){if(this._mode===`detect`){let t=this._root?e?.[this._root]:e;return Array.isArray(t)?this.readArray(e):this.readEnvelope(e)}return this._mode===`envelope`||this._mode===`auto`&&t?this.readEnvelope(e):this.readArray(e)}readEnvelope(e){let t=this._root?e[this._root]:e;if(typeof t!=`object`||!t)throw Error(`AjaxProxy: paginated response is not an envelope object — if the server returns a top-level array, set mode:'array'`);let n=t[this._rootProperty],r=t[this._totalProperty];if(!Array.isArray(n))throw Error(`AjaxProxy: paginated response 'data' is not an array`);return{records:n,total:typeof r==`number`?r:void 0,success:typeof t.success==`boolean`?t.success:void 0,message:typeof t.message==`string`?t.message:void 0}}readArray(e){if(this._root){let t=e[this._root];if(!Array.isArray(t))throw Error(`AjaxProxy: root '${this._root}' did not resolve to an array`);return{records:t}}if(!Array.isArray(e))throw Error(`AjaxProxy: response is not an array and no root was specified — if the server returns a { data, total } envelope, set mode:'detect' (or mode:'envelope' / a rootProperty), or enable pagination with setPageSize()`);return{records:e}}},JsonWriter=class{_mode;constructor(e){this._mode=e?.mode??`full`}writeRecord(e,t){return JSON.stringify(this.dataFor(e,t))}writeRecords(e,t){return JSON.stringify(e.map(e=>this.dataFor(e,t)))}dataFor(e,t){return this._mode===`dirty`&&t===`update`?e.getChangedData():e.getData()}},AjaxProxy=class extends c{_url;_root;_method;_createMethod;_updateMethod;_headers;_reader;_writer;_lastTotalCount=void 0;constructor(e){super(),this._url=e.url,this._root=e.root,this._method=e.method??`GET`,this._createMethod=e.createMethod??`POST`,this._updateMethod=e.updateMethod??`PUT`,this._headers=e.headers??{},this._reader=e.reader??new JsonReader({root:e.root,mode:e.readMode}),this._writer=e.writer??new JsonWriter({mode:e.writeMode}),e.batch===!1&&this.disableBatch()}disableBatch(){let e=this;e.createBatch=void 0,e.updateBatch=void 0,e.destroyBatch=void 0}async read(e){let t=e!=null&&(e.page!=null||e.pageSize!=null),n=this.buildReadUrl(e),r=await fetch(n,{method:this._method,headers:this._headers,signal:e?.signal});r.ok||await this.throwHttpError(r,`read`,n);let i=await r.json(),a=this._reader.read(i,t);return this._lastTotalCount=a.total,a.records}buildReadUrl(e){if(e==null)return this._url;let t=new URLSearchParams;e.page!=null&&t.set(`page`,String(e.page)),e.pageSize!=null&&t.set(`pageSize`,String(e.pageSize)),e.sorters!=null&&e.sorters.length>0&&t.set(`sort`,JSON.stringify(e.sorters)),e.filters!=null&&e.filters.length>0&&t.set(`filter`,JSON.stringify(e.filters));let n=t.toString();if(n===``)return this._url;let r=this._url.includes(`?`)?`&`:`?`;return this._url+r+n}getLastTotalCount(){return this._lastTotalCount}async create(e){let t=await fetch(this._url,{method:this._createMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecord(e,`create`)});t.ok||await this.throwHttpError(t,`create`,this._url);let n=await t.json();return this._root?n[this._root]:n}async update(e){let t=await fetch(`${this._url}/${e.getId()}`,{method:this._updateMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecord(e,`update`)});t.ok||await this.throwHttpError(t,`update`,`${this._url}/${e.getId()}`);let n=await t.json();return this._root?n[this._root]:n}async destroy(e){let t=await fetch(`${this._url}/${e.getId()}`,{method:`DELETE`,headers:this._headers});t.ok||await this.throwHttpError(t,`destroy`,`${this._url}/${e.getId()}`)}async createBatch(e){let t=await fetch(this._url,{method:this._createMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e,`create`)});return t.ok||await this.throwHttpError(t,`create`,this._url),this.readBatchResponse(t)}async updateBatch(e){let t=await fetch(this._url,{method:this._updateMethod,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e,`update`)});return t.ok||await this.throwHttpError(t,`update`,this._url),this.readBatchResponse(t)}async destroyBatch(e){let t=await fetch(this._url,{method:`DELETE`,headers:{"Content-Type":`application/json`,...this._headers},body:this._writer.writeRecords(e)});t.ok||await this.throwHttpError(t,`destroy`,this._url)}async readBatchResponse(e){let t=await e.json();return this._root?t[this._root]:t}async throwHttpError(e,t,n){let r;try{r=await e.json()}catch{try{r=await e.text()}catch{r=void 0}}throw new AjaxError(t,n,e,r)}},AjaxStore=class extends n{model;proxy;constructor(e,t){if(super(),e instanceof i){if(!t)throw Error(`AjaxStore requires an AjaxProxyOptions argument when constructed with a Model.`);this.model=e,this.proxy=new AjaxProxy(t)}else this.model=e.model,this.proxy=new AjaxProxy(e.proxy),this.applyOptions(e)}},TreeNode=class{_store;_record;_parent;_children=[];_depth;_leaf=!1;_loaded=!0;constructor(e,t,n,r){this._store=e,this._record=t,this._parent=n,this._depth=r}getRecord(){return this._record}getId(){return this._record?this._record.get(this._store.getIdField()):void 0}getParent(){return this._parent}getChildren(){return this._children}getDepth(){return this._depth}isExpanded(){return this._store.isExpanded(this)}isLeaf(){return this._leaf}isLoaded(){return this._loaded}setChildren(e){this._children=e}setLeaf(e){this._leaf=e}setLoaded(e){this._loaded=e}},TreeStore=class extends n{model;proxy;_idField;_parentField;_leafField;_hasChildrenField;_childrenKey;_root;_nodesById=new Map;_childRecords=new Map;_expandedIds=new Set;_loadingIds=new Set;_loadedIds=new Set;_visibleNodes=[];constructor(e){super(),this.model=e.model,this.proxy=e.proxy,this._parentField=e.parentField,this._idField=e.idField??this.model.getPrimaryKeyField()?.getName()??`id`,this._leafField=e.leafField,this._hasChildrenField=e.hasChildrenField,this._childrenKey=e.childrenKey,this._root=new TreeNode(this,null,null,-1),this.applyOptions(e)}getIdField(){return this._idField}getParentField(){return this._parentField}loadData(e){super.loadData(this._childrenKey?this.flattenNested(e):e)}applyView(){let e=super.applyView();return this.rebuildNodeIndex(),this.flatten(),e.then(()=>{this.rebuildNodeIndex(),this.flatten()})}flattenNested(e){let t=this.model.getField(this._idField)?.getMapping()??this._idField,n=this.model.getField(this._parentField)?.getMapping()??this._parentField,r=[],walk=(e,i)=>{for(let a of e){let e=a[this._childrenKey],o={...a};delete o[this._childrenKey],i!=null&&o[n]==null&&(o[n]=i),r.push(o),Array.isArray(e)&&e.length>0&&walk(e,o[t])}};return walk(e,null),r}rebuildNodeIndex(){let e=this.getRecords();this.bucketChildRecords(e),this._nodesById.clear(),this._root.setChildren(this.buildChildNodes(null,this._root,0))}bucketChildRecords(e){this._childRecords.clear();let t=new Set;for(let n of e)t.add(n.get(this._idField));for(let n of e){let e=n.get(this._parentField),r=e!=null&&t.has(e)?e:null,i=this._childRecords.get(r);i?i.push(n):this._childRecords.set(r,[n])}}buildChildNodes(e,t,n){return(this._childRecords.get(e)??[]).map(e=>{let r=e.get(this._idField),i=new TreeNode(this,e,t,n);return i.setLeaf(this.resolveLeaf(e,r)),i.setLoaded(this.resolveLoaded(r)),this._nodesById.set(r,i),i.setChildren(this.buildChildNodes(r,i,n+1)),i})}resolveLoaded(e){if(!this._hasChildrenField||this._loadedIds.has(e))return!0;let t=this._childRecords.get(e);return!!t&&t.length>0}resolveLeaf(e,t){if(this._leafField)return e.get(this._leafField)===!0;if(this._hasChildrenField)return e.get(this._hasChildrenField)!==!0;let n=this._childRecords.get(t);return!n||n.length===0}flatten(){let e=[],recurse=t=>{for(let n of t)e.push(n),this._expandedIds.has(n.getId())&&recurse(n.getChildren())};recurse(this._root.getChildren()),this._visibleNodes=e}getRootNode(){return this._root}getNodeById(e){return this._nodesById.get(e)}getNodeForRecord(e){return this._nodesById.get(e.get(this._idField))}getChildren(e){return e.getChildren()}getParent(e){return e.getParent()}getDepth(e){return e.getDepth()}eachNode(e){let recurse=t=>{for(let n of t)e(n),recurse(n.getChildren())};recurse(this._root.getChildren())}getVisibleNodes(){return this._visibleNodes.slice()}getVisibleCount(){return this._visibleNodes.length}async expand(e){let t=e.getId();this._expandedIds.has(t)||e.isLeaf()||!e.isLoaded()&&this.proxy&&!await this.loadChildren(t)||(this._expandedIds.add(t),this.flatten(),this.emit(`expand`,{node:e}))}async loadChildren(e){if(e==null||this._loadingIds.has(e))return!1;this._loadingIds.add(e);try{let t={filters:[{type:`eq`,field:this._parentField,value:e}]},n=await this.proxy.read(t);this._loadedIds.add(e),this.appendRecords(n.map(e=>this.model.createRecord(e)));let r=this.getNodeById(e);return r&&this.emit(`append`,{parent:r,nodes:r.getChildren()}),!0}finally{this._loadingIds.delete(e)}}collapse(e){let t=e.getId();this._expandedIds.has(t)&&(this._expandedIds.delete(t),this.flatten(),this.emit(`collapse`,{node:e}))}toggle(e){return this._expandedIds.has(e.getId())?(this.collapse(e),Promise.resolve()):this.expand(e)}isExpanded(e){return this._expandedIds.has(e.getId())}expandToDepth(e){this.eachNode(t=>{!t.isLeaf()&&t.getDepth()<=e&&this._expandedIds.add(t.getId())}),this.flatten()}collapseAll(){this._expandedIds.clear(),this.flatten()}on(e,t){return super.on(e,t)}off(e,t){return super.off(e,t)}emit(e,t){super.emit(e,t)}onTree(e,t){return this.on(e,t)}},WebStorageProxy=class extends c{_key;_storage;constructor(e){super(),this._key=e.key,this._storage=e.storage===`session`?sessionStorage:localStorage,e.data!==void 0&&this._storage.getItem(this._key)===null&&this.writeAll(e.data)}read(e){return Promise.resolve(this.readAll())}create(e){let t=this.readAll(),n={...e.getData()},r=e.getModel().getPrimaryKeyField()?.getName();return r!==void 0&&e.getId()===void 0&&(n[r]=this.nextId(t,r)),t.push(n),this.writeAll(t),Promise.resolve(n)}update(e){let t=this.readAll(),n={...e.getData()},r=e.getModel().getPrimaryKeyField()?.getName();if(r!==void 0){let i=e.getId(),a=t.findIndex(e=>e[r]===i);a!==-1&&(t[a]=n,this.writeAll(t))}return Promise.resolve(n)}destroy(e){let t=this.readAll(),n=e.getModel().getPrimaryKeyField()?.getName();if(n!==void 0){let r=e.getId(),i=t.findIndex(e=>e[n]===r);i!==-1&&(t.splice(i,1),this.writeAll(t))}return Promise.resolve()}readAll(){let e=this._storage.getItem(this._key);if(e===null)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}writeAll(e){this._storage.setItem(this._key,JSON.stringify(e))}nextId(e,t){let n=0;for(let r of e){let e=r[t];typeof e==`number`&&e>n&&(n=e)}return n+1}};export{e as AbstractModel,n as AbstractStore,AjaxError,AjaxProxy,AjaxStore,s as Association,l as BelongsToAssociation,r as Field,t as HasManyAssociation,JsonReader,JsonWriter,o as MemoryProxy,u as MemoryStore,i as Model,a as ModelRecord,c as Proxy,d as Store,TreeNode,TreeStore,WebStorageProxy};
2
2
  //# sourceMappingURL=data.es.js.map