@jimka/typescript-ui 0.4.1 → 0.5.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.
- package/dist/lib/{AbstractBooleanInput-DE5NNJT0.js → AbstractBooleanInput-CbW7ZrDT.js} +2 -2
- package/dist/lib/{AbstractBooleanInput-DE5NNJT0.js.map → AbstractBooleanInput-CbW7ZrDT.js.map} +1 -1
- package/dist/lib/{AbstractInput-BxfrmD2W.js → AbstractInput-B10DfLOf.js} +2 -2
- package/dist/lib/{AbstractInput-BxfrmD2W.js.map → AbstractInput-B10DfLOf.js.map} +1 -1
- package/dist/lib/Anchor-BsblS5it.js +2 -0
- package/dist/lib/Anchor-BsblS5it.js.map +1 -0
- package/dist/lib/AnchorConstraints-Bfkt8019.js +2 -0
- package/dist/lib/AnchorConstraints-Bfkt8019.js.map +1 -0
- package/dist/lib/{AnimatedDropdown-QLNasu_Y.js → AnimatedDropdown-kL47HPGP.js} +2 -2
- package/dist/lib/{AnimatedDropdown-QLNasu_Y.js.map → AnimatedDropdown-kL47HPGP.js.map} +1 -1
- package/dist/lib/Border-CNS6aEXB.js +2 -0
- package/dist/lib/{Border-CKKUk5G9.js.map → Border-CNS6aEXB.js.map} +1 -1
- package/dist/lib/Button-T16zSZip.js +2 -0
- package/dist/lib/Button-T16zSZip.js.map +1 -0
- package/dist/lib/{Card-a4dzYrbX.js → Card-CD3jxshU.js} +2 -2
- package/dist/lib/{Card-a4dzYrbX.js.map → Card-CD3jxshU.js.map} +1 -1
- package/dist/lib/CodeEditor-BGlB232h.js +2 -0
- package/dist/lib/CodeEditor-BGlB232h.js.map +1 -0
- package/dist/lib/ComboBox-C9FYMuLv.js +2 -0
- package/dist/lib/ComboBox-C9FYMuLv.js.map +1 -0
- package/dist/lib/Component-w65rPK75.js +2 -0
- package/dist/lib/Component-w65rPK75.js.map +1 -0
- package/dist/lib/Container-C7RPLQEc.js +2 -0
- package/dist/lib/{Container-0bsG2Q8Z.js.map → Container-C7RPLQEc.js.map} +1 -1
- package/dist/lib/DOM-Ba8YRVel.js +2 -0
- package/dist/lib/{DOM-67StIm5G.js.map → DOM-Ba8YRVel.js.map} +1 -1
- package/dist/lib/DragManager-UvPHSoRm.js +2 -0
- package/dist/lib/{DragManager-DRor_-1x.js.map → DragManager-UvPHSoRm.js.map} +1 -1
- package/dist/lib/{FieldDecorator-Bpx8J8n9.js → FieldDecorator-HG65hEtk.js} +2 -2
- package/dist/lib/{FieldDecorator-Bpx8J8n9.js.map → FieldDecorator-HG65hEtk.js.map} +1 -1
- package/dist/lib/{Fit-CL1m1nIZ.js → Fit-Cg3dPyZg.js} +2 -2
- package/dist/lib/{Fit-CL1m1nIZ.js.map → Fit-Cg3dPyZg.js.map} +1 -1
- package/dist/lib/FloatingPanel-D5buuVrQ.js +2 -0
- package/dist/lib/FloatingPanel-D5buuVrQ.js.map +1 -0
- package/dist/lib/{Glyph-wN7bk7mg.js → Glyph-DeJF_zsR.js} +2 -2
- package/dist/lib/{Glyph-wN7bk7mg.js.map → Glyph-DeJF_zsR.js.map} +1 -1
- package/dist/lib/{Grid-DHHmaB-Y.js → Grid-BYBohJIA.js} +2 -2
- package/dist/lib/{Grid-DHHmaB-Y.js.map → Grid-BYBohJIA.js.map} +1 -1
- package/dist/lib/{GridConstraints-DVc1BmlP.js → GridConstraints-Bts284FI.js} +2 -2
- package/dist/lib/{GridConstraints-DVc1BmlP.js.map → GridConstraints-Bts284FI.js.map} +1 -1
- package/dist/lib/{Header-2hKwQo_u.js → Header-BIFJK9nR.js} +2 -2
- package/dist/lib/{Header-2hKwQo_u.js.map → Header-BIFJK9nR.js.map} +1 -1
- package/dist/lib/{IconText-DC7Xe34b.js → IconText-Dsb1xS-E.js} +2 -2
- package/dist/lib/{IconText-DC7Xe34b.js.map → IconText-Dsb1xS-E.js.map} +1 -1
- package/dist/lib/LanguageRegistry-CcVnbKuh.js +2 -0
- package/dist/lib/LanguageRegistry-CcVnbKuh.js.map +1 -0
- package/dist/lib/LayoutSerialization-ySzY1h2l.js +2 -0
- package/dist/lib/{LayoutSerialization-D5bBas4W.js.map → LayoutSerialization-ySzY1h2l.js.map} +1 -1
- package/dist/lib/LayoutSizes-DKDK1Cle.js +2 -0
- package/dist/lib/LayoutSizes-DKDK1Cle.js.map +1 -0
- package/dist/lib/List-BPd-IXZR.js +2 -0
- package/dist/lib/{List-CG4NvwuV.js.map → List-BPd-IXZR.js.map} +1 -1
- package/dist/lib/MemoryStore-BgP7-Uzn.js +2 -0
- package/dist/lib/{MemoryStore-DT6iWWco.js.map → MemoryStore-BgP7-Uzn.js.map} +1 -1
- package/dist/lib/Menu-C0roOCY7.js +2 -0
- package/dist/lib/Menu-C0roOCY7.js.map +1 -0
- package/dist/lib/{MenuButton-wy_0RskC.js → MenuButton-BR4KOFld.js} +2 -2
- package/dist/lib/{MenuButton-wy_0RskC.js.map → MenuButton-BR4KOFld.js.map} +1 -1
- package/dist/lib/Panel-CpNQTLNF.js +2 -0
- package/dist/lib/{Panel-Rd9zkNXx.js.map → Panel-CpNQTLNF.js.map} +1 -1
- package/dist/lib/{Position-Ck_KD4cR.js → Position-PBVBW1JS.js} +2 -2
- package/dist/lib/{Position-Ck_KD4cR.js.map → Position-PBVBW1JS.js.map} +1 -1
- package/dist/lib/{ProgressSpinner-yt-VXyCb.js → ProgressSpinner-lAsK26C-.js} +2 -2
- package/dist/lib/{ProgressSpinner-yt-VXyCb.js.map → ProgressSpinner-lAsK26C-.js.map} +1 -1
- package/dist/lib/RadioButton-CCcIaL54.js +2 -0
- package/dist/lib/RadioButton-CCcIaL54.js.map +1 -0
- package/dist/lib/{RovingTabIndex-DFJyoveq.js → RovingTabIndex-C2Vzq0IX.js} +2 -2
- package/dist/lib/{RovingTabIndex-DFJyoveq.js.map → RovingTabIndex-C2Vzq0IX.js.map} +1 -1
- package/dist/lib/Scrollbar-C3ZZyZ1e.js +2 -0
- package/dist/lib/Scrollbar-C3ZZyZ1e.js.map +1 -0
- package/dist/lib/Slider-DZ9drUxn.js +2 -0
- package/dist/lib/Slider-DZ9drUxn.js.map +1 -0
- package/dist/lib/{Spacer-qalSEJ5i.js → Spacer-SDhOMp2g.js} +2 -2
- package/dist/lib/{Spacer-qalSEJ5i.js.map → Spacer-SDhOMp2g.js.map} +1 -1
- package/dist/lib/TabButton-DNo4ZgV8.js +2 -0
- package/dist/lib/TabButton-DNo4ZgV8.js.map +1 -0
- package/dist/lib/Text-CdHf3B-1.js +2 -0
- package/dist/lib/Text-CdHf3B-1.js.map +1 -0
- package/dist/lib/{Tooltip-Dro4DOZs.js → Tooltip-B_UF5bXD.js} +2 -2
- package/dist/lib/{Tooltip-Dro4DOZs.js.map → Tooltip-B_UF5bXD.js.map} +1 -1
- package/dist/lib/Tree-C7qLbIYH.js +2 -0
- package/dist/lib/Tree-C7qLbIYH.js.map +1 -0
- package/dist/lib/VBox-32fxpkDl.js +2 -0
- package/dist/lib/VBox-32fxpkDl.js.map +1 -0
- package/dist/lib/{Validator-Du8PqS5i.js → Validator-Cjs1EU5Q.js} +2 -2
- package/dist/lib/{Validator-Du8PqS5i.js.map → Validator-Cjs1EU5Q.js.map} +1 -1
- package/dist/lib/{VirtualScroller-Bv4KXGKW.js → VirtualScroller-cvFNMS7U.js} +2 -2
- package/dist/lib/{VirtualScroller-Bv4KXGKW.js.map → VirtualScroller-cvFNMS7U.js.map} +1 -1
- package/dist/lib/component/button.es.js +1 -1
- package/dist/lib/component/chart.es.js +1 -1
- package/dist/lib/component/chart.es.js.map +1 -1
- package/dist/lib/component/container.es.js +1 -1
- package/dist/lib/component/container.es.js.map +1 -1
- package/dist/lib/component/diagram.es.js +1 -1
- package/dist/lib/component/diagram.es.js.map +1 -1
- package/dist/lib/component/display.es.js +1 -1
- package/dist/lib/component/display.es.js.map +1 -1
- package/dist/lib/component/editor.es.js +3 -3
- package/dist/lib/component/editor.es.js.map +1 -1
- package/dist/lib/component/input.es.js +1 -1
- package/dist/lib/component/input.es.js.map +1 -1
- package/dist/lib/component/list.es.js +1 -1
- package/dist/lib/component/list.es.js.map +1 -1
- package/dist/lib/component/menubar.es.js +1 -1
- package/dist/lib/component/menubar.es.js.map +1 -1
- package/dist/lib/component/table.es.js +2 -2
- package/dist/lib/component/table.es.js.map +1 -1
- package/dist/lib/component/tree.es.js +1 -1
- package/dist/lib/component/tree.es.js.map +1 -1
- package/dist/lib/core.es.js +1 -1
- package/dist/lib/core.es.js.map +1 -1
- package/dist/lib/data.es.js +1 -1
- package/dist/lib/glyphs/solid/index.es.js +1 -1
- package/dist/lib/languages-Dl8qdL8a.js +2 -0
- package/dist/lib/languages-Dl8qdL8a.js.map +1 -0
- package/dist/lib/layout.es.js +1 -1
- package/dist/lib/layout.es.js.map +1 -1
- package/dist/lib/overlay.es.js +1 -1
- package/dist/lib/overlay.es.js.map +1 -1
- package/dist/lib/primitive.es.js +1 -1
- package/dist/lib/router.es.js +1 -1
- package/dist/lib/router.es.js.map +1 -1
- package/dist/lib/selectionsEqual-BrTxPMmK.js +2 -0
- package/dist/lib/{selectionsEqual-Ci3_uflt.js.map → selectionsEqual-BrTxPMmK.js.map} +1 -1
- package/dist/lib/types/component/button/TabButton.d.ts +1 -1
- package/dist/lib/types/component/button/ToggleButton.d.ts +1 -1
- package/dist/lib/types/component/chart/ChartLegend.d.ts +1 -1
- package/dist/lib/types/component/container/FloatingPanel.d.ts +23 -0
- package/dist/lib/types/component/container/ScrollStrip.d.ts +1 -1
- package/dist/lib/types/component/container/Scrollbar.d.ts +1 -3
- package/dist/lib/types/component/container/TabBar.d.ts +1 -1
- package/dist/lib/types/component/container/index.d.ts +2 -0
- package/dist/lib/types/component/diagram/DiagramGroupNode.d.ts +1 -1
- package/dist/lib/types/component/display/Markdown.d.ts +42 -1
- package/dist/lib/types/component/display/MarkdownMinimap.d.ts +38 -0
- package/dist/lib/types/component/display/MarkdownViewer.d.ts +60 -0
- package/dist/lib/types/component/display/index.d.ts +6 -0
- package/dist/lib/types/component/editor/CodeEditor.d.ts +13 -0
- package/dist/lib/types/component/editor/index.d.ts +1 -1
- package/dist/lib/types/component/input/Checkbox.d.ts +1 -1
- package/dist/lib/types/component/input/RadioButton.d.ts +1 -1
- package/dist/lib/types/component/input/Slider.d.ts +1 -1
- package/dist/lib/types/component/input/Text.d.ts +0 -2
- package/dist/lib/types/component/input/Toggle.d.ts +1 -1
- package/dist/lib/types/component/menubar/MenuBar.d.ts +1 -1
- package/dist/lib/types/component/menubar/ToolBar.d.ts +1 -0
- package/dist/lib/types/component/table/Body.d.ts +1 -0
- package/dist/lib/types/component/table/cell/SortPriorityBadge.d.ts +1 -1
- package/dist/lib/types/component/table/cell/editor/CellEditorPool.d.ts +1 -0
- package/dist/lib/types/component/table/cell/editor/Date.d.ts +1 -0
- package/dist/lib/types/component/table/cell/editor/DateTime.d.ts +1 -0
- package/dist/lib/types/component/table/cell/editor/Time.d.ts +1 -0
- package/dist/lib/types/component/tree/Tree.d.ts +9 -1
- package/dist/lib/types/component/tree/index.d.ts +1 -1
- package/dist/lib/types/component/tree/renderer/Label.d.ts +1 -1
- package/dist/lib/types/core/Component.d.ts +5 -0
- package/dist/lib/types/core/Theme.d.ts +4 -2
- package/dist/lib/types/layout/LayoutManager.d.ts +8 -0
- package/dist/lib/validation.es.js +1 -1
- package/llms.txt +3 -0
- package/package.json +15 -15
- package/dist/lib/AnchorConstraints-DdDYSDkf.js +0 -2
- package/dist/lib/AnchorConstraints-DdDYSDkf.js.map +0 -1
- package/dist/lib/Border-CKKUk5G9.js +0 -2
- package/dist/lib/Button-MZDYJOMC.js +0 -2
- package/dist/lib/Button-MZDYJOMC.js.map +0 -1
- package/dist/lib/ComboBox-C04SfXAR.js +0 -2
- package/dist/lib/ComboBox-C04SfXAR.js.map +0 -1
- package/dist/lib/Component-fRQvgaEY.js +0 -2
- package/dist/lib/Component-fRQvgaEY.js.map +0 -1
- package/dist/lib/Container-0bsG2Q8Z.js +0 -2
- package/dist/lib/DOM-67StIm5G.js +0 -2
- package/dist/lib/DragManager-DRor_-1x.js +0 -2
- package/dist/lib/LayoutSerialization-D5bBas4W.js +0 -2
- package/dist/lib/LayoutSizes-qNaURyiw.js +0 -2
- package/dist/lib/LayoutSizes-qNaURyiw.js.map +0 -1
- package/dist/lib/List-CG4NvwuV.js +0 -2
- package/dist/lib/MemoryStore-DT6iWWco.js +0 -2
- package/dist/lib/Menu-CrZy2u0g.js +0 -2
- package/dist/lib/Menu-CrZy2u0g.js.map +0 -1
- package/dist/lib/Panel-Rd9zkNXx.js +0 -2
- package/dist/lib/RadioButton-D23rId-V.js +0 -2
- package/dist/lib/RadioButton-D23rId-V.js.map +0 -1
- package/dist/lib/Scrollbar-SOj9psiP.js +0 -2
- package/dist/lib/Scrollbar-SOj9psiP.js.map +0 -1
- package/dist/lib/Slider-DBnAZ-F7.js +0 -2
- package/dist/lib/Slider-DBnAZ-F7.js.map +0 -1
- package/dist/lib/TabButton-DKECTTk1.js +0 -2
- package/dist/lib/TabButton-DKECTTk1.js.map +0 -1
- package/dist/lib/Text-KB5LksJl.js +0 -2
- package/dist/lib/Text-KB5LksJl.js.map +0 -1
- package/dist/lib/VBox-P3WFGkPc.js +0 -2
- package/dist/lib/VBox-P3WFGkPc.js.map +0 -1
- package/dist/lib/selectionsEqual-Ci3_uflt.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./ListenerBag-WPdKuuds.js";import{t}from"./Validator-Cjs1EU5Q.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`){this._activeSorters=typeof e==`string`?[{field:e,dir:t}]: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)&&(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))}};export{d as a,HasManyAssociation as c,AbstractStore as d,Field as f,Model as i,u as l,MemoryProxy as n,Association as o,Proxy as r,BelongsToAssociation as s,MemoryStore as t,Store as u};
|
|
2
|
+
//# sourceMappingURL=MemoryStore-BgP7-Uzn.js.map
|