@vmscloud/moz-ui-grid-vue 0.2.17 → 0.2.18
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/MozGrid.vue.d.ts +0 -1
- package/dist/compat/MozGridVue.vue.d.ts +0 -1
- package/dist/compat/MozPivotVue.vue.d.ts +1 -1
- package/dist/composables/useGridPreset.d.ts +6 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.js +23 -8
- package/dist/stories/DataLoader.stories.d.ts +53 -0
- package/dist/stories/ObjectValue.stories.d.ts +34 -0
- package/dist/stories/_helpers/localData.worker.d.ts +1 -0
- package/dist/stories/_helpers/localDataLoader.d.ts +3 -3
- package/dist/stories/_helpers/serverRowsLoader.d.ts +55 -0
- package/dist/stories/_helpers/serverTreeLoader.d.ts +18 -0
- package/dist/style.css +1 -1
- package/dist/types/pivot-props.d.ts +4 -1
- package/dist/types/props.d.ts +6 -7
- package/dist/types/toolbar.d.ts +31 -11
- package/docs/manual/examples.md +131 -2
- package/docs/manual/reference.md +1008 -139
- package/docs/manual/reference_vue.md +257 -48
- package/docs/manual/runtime-contracts.md +23 -17
- package/package.json +3 -2
package/dist/MozGrid.vue.d.ts
CHANGED
|
@@ -117,7 +117,6 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
|
|
|
117
117
|
useToolBox: boolean;
|
|
118
118
|
useToolBoxSetting: boolean;
|
|
119
119
|
useExtendFooter: boolean;
|
|
120
|
-
useSummaryFooter: boolean;
|
|
121
120
|
useSort: boolean;
|
|
122
121
|
useCustomCell: boolean;
|
|
123
122
|
useContextMenu: boolean;
|
|
@@ -88,7 +88,6 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
|
|
|
88
88
|
useToolBox: boolean;
|
|
89
89
|
useToolBoxSetting: boolean;
|
|
90
90
|
useExtendFooter: boolean;
|
|
91
|
-
useSummaryFooter: boolean;
|
|
92
91
|
useSort: boolean;
|
|
93
92
|
useCustomCell: boolean;
|
|
94
93
|
useContextMenu: boolean;
|
|
@@ -48,11 +48,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
|
|
|
48
48
|
useToolBox: boolean;
|
|
49
49
|
useToolBoxSetting: boolean;
|
|
50
50
|
useExtendFooter: boolean;
|
|
51
|
-
useSummaryFooter: boolean;
|
|
52
51
|
useSort: boolean;
|
|
53
52
|
useCustomCell: boolean;
|
|
54
53
|
useContextMenu: boolean;
|
|
55
54
|
useChart: boolean;
|
|
55
|
+
useSummaryFooter: boolean;
|
|
56
56
|
useFilter: boolean;
|
|
57
57
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
58
58
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
@@ -10,6 +10,12 @@ export interface UseGridPresetOptions {
|
|
|
10
10
|
type: 'mozFlatGrid' | 'mozPivotGrid';
|
|
11
11
|
/** Core PureSheet 인스턴스 */
|
|
12
12
|
gridInstance: Ref<PureSheet | null>;
|
|
13
|
+
/**
|
|
14
|
+
* 어댑터가 `ready` 를 알린(소비자 `onReady` 처리까지 끝난) grid. 지정하면 기본 보기(baseline) 캡처를
|
|
15
|
+
* 첫 `data:loaded` 와 이 ready 가 모두 지난 뒤로 미룬다 — `onReady` 에서 한 초기 설정(예: 툴바 접기)이
|
|
16
|
+
* 데이터를 inline 으로 줬는지 나중에 load 했는지와 관계없이 기본 보기에 들어간다. 미지정이면 기존대로 첫 data:loaded.
|
|
17
|
+
*/
|
|
18
|
+
readyGrid?: Ref<PureSheet | null>;
|
|
13
19
|
/** Complete live pivot source catalog, including fields not placed on an axis. */
|
|
14
20
|
getSourceFields?: () => readonly FieldDef[];
|
|
15
21
|
/** 커스텀 셀 상태 조회 */
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var e=Object.defineProperty,t=(t,o,n)=>((t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n)(t,"symbol"!=typeof o?o+"":o,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),n=require("@vmscloud/moz-ui-grid-wrapper"),l=require("./chunks/notification.contract-oFkBaE2U.cjs"),i=require("lit-html"),r=require("lit-html/directives/class-map.js"),s=require("./chunks/index-BLDAzbGv.cjs"),a=require("dayjs"),u=require("@vmscloud/moz-ui-grid-core");class d{constructor({id:e,type:n,exportDef:l,importDef:i,strict:r,dependencies:s,manualLifeCycle:a}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pending"),t(this,"_disposed",!1),t(this,"_sequence",0),t(this,"_active"),t(this,"_queued"),t(this,"_lastApplyResult"),t(this,"_disposeCallback",()=>{}),t(this,"captureApplied"),t(this,"disposeInstance",()=>{this._disposed||(this._disposed=!0,this._active&&this.finish(this._active,"disposed"),this._queued&&this.finish(this._queued,"disposed"),this._queued=void 0,this._disposeCallback())}),t(this,"setApplied",()=>{}),t(this,"strict"),t(this,"dependencies"),this.uniqueId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),this._id=e,this._type=n,this._importDef=i,this._exportDef=l,this._default=l(),this._pending=!1,this.strict=r??!1,this.dependencies=s??null,a||o.onBeforeUnmount(()=>{this.dispose()})}get disposed(){return this._disposed}get applying(){return!!this._active||!!this._queued}get lastApplyResult(){return this._lastApplyResult}get requestId(){return this._sequence}get dispose(){return this.disposeInstance}set dispose(e){this._disposeCallback=e}get pending(){return this._pending}set pending(e){this._pending=e,this.drain()}get id(){return this._id}get type(){return this._type}get default(){return this._default}set default(e){this._default=e}get current(){return this._exportDef()}set current(e){this.apply(e)}apply(e){const t=++this._sequence;return this._active&&this.finish(this._active,"superseded"),this._queued&&this.finish(this._queued,"superseded"),this._queued=void 0,new Promise(o=>{var n;const l={requestId:t,value:e,resolve:o,settled:!1,applied:this.setApplied};if(this._disposed)this.finish(l,"disposed");else{try{l.applied=(null==(n=this.captureApplied)?void 0:n.call(this))??this.setApplied}catch(i){return void this.finish(l,"failed",i)}this._lastApplyResult=void 0,this._queued=l,this.drain()}})}finish(e,t,o){if(e.settled)return;e.settled=!0;const n={status:t,requestId:e.requestId};void 0!==o&&(n.error=o),e.requestId===this._sequence&&(this._lastApplyResult=n),e.resolve(n)}drain(){if(this._disposed||this._pending||this._active||!this._queued)return;const e=this._queued;this._queued=void 0,this._active=e;const t=(t,o,n=!1)=>{try{e.settled||(n?this.finish(e,"failed",o):t&&"object"==typeof t&&"status"in t&&"applied"!==t.status?this.finish(e,t.status,t.error):(e.applied(!0),this.finish(e,"applied")))}catch(l){this.finish(e,"failed",l)}finally{this._active=void 0,this.drain()}};try{const o=this._importDef(e.value);o&&"function"==typeof o.then?Promise.resolve(o).then(e=>t(e),e=>t(void 0,e,!0)):t(o)}catch(o){t(void 0,o,!0)}}setDefaultToCurrent(){this._default=this._exportDef()}}const c=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)});function p(e){if(!1===e.usePreset)return;const{register:t}=c(),l=(e,t)=>{if(void 0!==t)return null==e?void 0:e(t)},i=new d({id:e.name.value,type:e.type,importDef:async t=>{const o=i.requestId,r=e.gridInstance.value;if(await Promise.resolve(),i.disposed)return{status:"disposed",requestId:o};if(o!==i.requestId||e.gridInstance.value!==r)return{status:"superseded",requestId:o};if(!r)return{status:"failed",requestId:o,error:new Error("Grid preset: grid-not-ready")};try{return await(async(t,o,r)=>{const s=()=>i.disposed?{status:"disposed",requestId:r}:e.gridInstance.value!==o?{status:"superseded",requestId:r}:void 0,a=i.default??null,u=n.migrateGridPreset(t??a,{grid:o,getSourceFields:e.getSourceFields,baseline:a});u.diagnostics.length&&e.onImportDiagnostics&&e.onImportDiagnostics(u.diagnostics);const d=s();if(d)return d;u.config&&await n.applyPresetCoreConfig(o,u.config,u.missing);const c=[[e.setColumnFormatState,u.columnFormatConfig],[e.setCustomCellState,u.customCellConfig],[e.setViewOptionsState,u.viewOptionsConfig]];for(const[e,n]of c){const t=s();if(t)return t;await l(e,n)}return s()||(await o.waitForSettled(),s()??{status:"applied",requestId:r})})(t,r,o)}catch(s){return{status:"failed",requestId:o,error:s}}},exportDef:()=>{var t,o;const l=e.gridInstance.value;if(!l)return null;const i={...n.stampPresetVersion(l.getConfig()),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null};return e.getViewOptionsState&&(i.viewOptionsConfig=e.getViewOptionsState()??null),i}});let r=!1;o.watch(e.gridInstance,(n,l,s)=>{if(!n||r||i.disposed)return;if(!e.name.value)return;let a=!0,u=!1;const d=()=>a&&!i.disposed&&e.gridInstance.value===n
|
|
1
|
+
"use strict";var e=Object.defineProperty,t=(t,o,n)=>((t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n)(t,"symbol"!=typeof o?o+"":o,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),n=require("@vmscloud/moz-ui-grid-wrapper"),l=require("./chunks/notification.contract-oFkBaE2U.cjs"),i=require("lit-html"),r=require("lit-html/directives/class-map.js"),s=require("./chunks/index-BLDAzbGv.cjs"),a=require("dayjs"),u=require("@vmscloud/moz-ui-grid-core");class d{constructor({id:e,type:n,exportDef:l,importDef:i,strict:r,dependencies:s,manualLifeCycle:a}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pending"),t(this,"_disposed",!1),t(this,"_sequence",0),t(this,"_active"),t(this,"_queued"),t(this,"_lastApplyResult"),t(this,"_disposeCallback",()=>{}),t(this,"captureApplied"),t(this,"disposeInstance",()=>{this._disposed||(this._disposed=!0,this._active&&this.finish(this._active,"disposed"),this._queued&&this.finish(this._queued,"disposed"),this._queued=void 0,this._disposeCallback())}),t(this,"setApplied",()=>{}),t(this,"strict"),t(this,"dependencies"),this.uniqueId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),this._id=e,this._type=n,this._importDef=i,this._exportDef=l,this._default=l(),this._pending=!1,this.strict=r??!1,this.dependencies=s??null,a||o.onBeforeUnmount(()=>{this.dispose()})}get disposed(){return this._disposed}get applying(){return!!this._active||!!this._queued}get lastApplyResult(){return this._lastApplyResult}get requestId(){return this._sequence}get dispose(){return this.disposeInstance}set dispose(e){this._disposeCallback=e}get pending(){return this._pending}set pending(e){this._pending=e,this.drain()}get id(){return this._id}get type(){return this._type}get default(){return this._default}set default(e){this._default=e}get current(){return this._exportDef()}set current(e){this.apply(e)}apply(e){const t=++this._sequence;return this._active&&this.finish(this._active,"superseded"),this._queued&&this.finish(this._queued,"superseded"),this._queued=void 0,new Promise(o=>{var n;const l={requestId:t,value:e,resolve:o,settled:!1,applied:this.setApplied};if(this._disposed)this.finish(l,"disposed");else{try{l.applied=(null==(n=this.captureApplied)?void 0:n.call(this))??this.setApplied}catch(i){return void this.finish(l,"failed",i)}this._lastApplyResult=void 0,this._queued=l,this.drain()}})}finish(e,t,o){if(e.settled)return;e.settled=!0;const n={status:t,requestId:e.requestId};void 0!==o&&(n.error=o),e.requestId===this._sequence&&(this._lastApplyResult=n),e.resolve(n)}drain(){if(this._disposed||this._pending||this._active||!this._queued)return;const e=this._queued;this._queued=void 0,this._active=e;const t=(t,o,n=!1)=>{try{e.settled||(n?this.finish(e,"failed",o):t&&"object"==typeof t&&"status"in t&&"applied"!==t.status?this.finish(e,t.status,t.error):(e.applied(!0),this.finish(e,"applied")))}catch(l){this.finish(e,"failed",l)}finally{this._active=void 0,this.drain()}};try{const o=this._importDef(e.value);o&&"function"==typeof o.then?Promise.resolve(o).then(e=>t(e),e=>t(void 0,e,!0)):t(o)}catch(o){t(void 0,o,!0)}}setDefaultToCurrent(){this._default=this._exportDef()}}const c=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)});function p(e){if(!1===e.usePreset)return;const{register:t}=c(),l=(e,t)=>{if(void 0!==t)return null==e?void 0:e(t)},i=new d({id:e.name.value,type:e.type,importDef:async t=>{const o=i.requestId,r=e.gridInstance.value;if(await Promise.resolve(),i.disposed)return{status:"disposed",requestId:o};if(o!==i.requestId||e.gridInstance.value!==r)return{status:"superseded",requestId:o};if(!r)return{status:"failed",requestId:o,error:new Error("Grid preset: grid-not-ready")};try{return await(async(t,o,r)=>{const s=()=>i.disposed?{status:"disposed",requestId:r}:e.gridInstance.value!==o?{status:"superseded",requestId:r}:void 0,a=i.default??null,u=n.migrateGridPreset(t??a,{grid:o,getSourceFields:e.getSourceFields,baseline:a});u.diagnostics.length&&e.onImportDiagnostics&&e.onImportDiagnostics(u.diagnostics);const d=s();if(d)return d;u.config&&await n.applyPresetCoreConfig(o,u.config,u.missing);const c=[[e.setColumnFormatState,u.columnFormatConfig],[e.setCustomCellState,u.customCellConfig],[e.setViewOptionsState,u.viewOptionsConfig]];for(const[e,n]of c){const t=s();if(t)return t;await l(e,n)}return s()||(await o.waitForSettled(),s()??{status:"applied",requestId:r})})(t,r,o)}catch(s){return{status:"failed",requestId:o,error:s}}},exportDef:()=>{var t,o;const l=e.gridInstance.value;if(!l)return null;const i={...n.stampPresetVersion(l.getConfig()),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null};return e.getViewOptionsState&&(i.viewOptionsConfig=e.getViewOptionsState()??null),i}});let r=!1;o.watch(e.gridInstance,(n,l,s)=>{if(!n||r||i.disposed)return;if(!e.name.value)return;let a=!0,u=!1;const d=()=>a&&!i.disposed&&e.gridInstance.value===n;let c=!1;const p=()=>{c&&!r&&!u&&d()&&(e.readyGrid&&e.readyGrid.value!==n||(u=!0,i.setDefaultToCurrent(),o.nextTick(async()=>{if(d()&&!r){r=!0,m(),null==f||f();try{await t(i)}catch(e){}}})))},m=n.on("data:loaded",()=>{c=!0,p()}),f=e.readyGrid?o.watch(e.readyGrid,p,{flush:"sync"}):void 0;s(()=>{a=!1,m(),null==f||f()})})}let m=null;function f(){if(m)return m;const e=o.ref(!1),t=o.shallowRef(null),n=o.ref({}),l={showPopup:e,activeGrid:t,defaultImportOptions:n,show:(o,l={})=>{t.value=o,n.value=l,e.value=!0},hide:()=>{e.value=!1}};return m=l,l}function g(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function v(e){const t=null==e?"":String(e);return t.includes(",")||t.includes('"')||t.includes("\n")?`"${t.replace(/"/g,'""')}"`:t}const h={mode:"replace",conflictStrategy:"update",autoCommit:!1};function y(){const e=new Date,t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}class x{constructor(e){t(this,"popup",null),t(this,"grid",null),t(this,"options",{...h}),t(this,"file",null),t(this,"invalid",!1),t(this,"dropActive",!1),t(this,"replacing",!1),this.deps=e}get isOpen(){var e;return(null==(e=this.popup)?void 0:e.isOpen)??!1}get state(){return{file:this.file,invalid:this.invalid,options:{...this.options}}}open(e,t={}){if(this.popup){this.replacing=!0;try{this.popup.close()}finally{this.replacing=!1}}this.grid=e,this.resetState(),this.options={...h},t.mode&&(this.options.mode=t.mode),t.conflictStrategy&&(this.options.conflictStrategy=t.conflictStrategy),"boolean"==typeof t.autoCommit&&(this.options.autoCommit=t.autoCommit);const o=s.getGridVueLocale(),l=new n.Popup({title:o.clientExcelImport,width:540,height:440,closeOnOutsideClick:!0,contentsPadding:"16px",className:"mzc-client-excel-popup",draggable:!0,resizeable:!1,onClose:()=>this.handleClosed(l)});this.popup=l,l.open(()=>this.body(),()=>this.footer())}close(){var e;null==(e=this.popup)||e.close()}destroy(){this.close()}handleClosed(e){this.popup===e&&(this.popup=null),this.resetState(),this.replacing||this.deps.onHidden()}resetState(){this.file=null,this.invalid=!1,this.dropActive=!1}update(){var e;null==(e=this.popup)||e.update()}setFile(e){e&&e.name.toLowerCase().endsWith(".xlsx")?(this.invalid=!1,this.file=e):(this.invalid=!0,this.file=null),this.update()}body(){const e=s.getGridVueLocale(),{mode:t,conflictStrategy:o}=this.options,l=this.file,a=[{value:"replace",label:e.importModeReplace},{value:"append",label:e.importModeAppend},{value:"upsert",label:e.importModeUpsert}],u=[{value:"error",label:e.conflictError},{value:"skip",label:e.conflictSkip},{value:"update",label:e.conflictUpdate}],d=e=>{var t,o;null==(o=null==(t=e.currentTarget.parentElement)?void 0:t.querySelector('input[type="file"]'))||o.click()},c=l?i.html`
|
|
2
2
|
${"replace"===t?i.html`<span class="mzc-client-excel-dropzone__line">${e.overwriteSelected}</span>`:i.nothing}
|
|
3
3
|
<span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${l.name}</span></span>
|
|
4
4
|
`:i.html`
|
|
@@ -74,4 +74,4 @@
|
|
|
74
74
|
`}footer(){const e=s.getGridVueLocale();return i.html`
|
|
75
75
|
${n.button({label:e.check,variant:"primary",disabled:!this.file,onClick:()=>this.confirm()})}
|
|
76
76
|
${n.button({label:e.cancel,onClick:()=>this.close()})}
|
|
77
|
-
`}confirm(){const e=this.grid,t=this.file;if(!e||!t)return;const o={...this.options};this.close(),this.runBackgroundImport(e,t,o)}async runBackgroundImport(e,t,o){const n=s.getGridVueLocale(),l=this.deps.notificationStore(),i=g(),r=t.name,a=()=>null==l?void 0:l.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});l&&l.eventMessages.unshift({noti_type:"progress",header_key:n.clientExcelImportProgress,noti_datetime:y(),noti_sender_id:"",prop_value:{session_id:i,file_name:r,status:"in_progress",progress_per:0,operation_type:"upload",remain_time:-1}});try{const n=e.changes;(null==n?void 0:n.hasChanges)&&await n.discardAll(),await e.io.fromExcel(t,{mode:o.mode,conflictStrategy:o.conflictStrategy,autoCommit:o.autoCommit,onProgress:e=>{const t=a();if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))}});const r=a();(null==r?void 0:r.prop_value)&&(r.prop_value.status="completed",r.prop_value.progress_per=100),l&&setTimeout(()=>{const e=l.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&l.eventMessages.splice(e,1)},2e3)}catch(u){const e=a();(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=u instanceof Error?u.message:String(u),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}}const _={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const n=f(),i=l.useGridNotificationStore(),r=new x({notificationStore:()=>i,onHidden:()=>n.hide()});return o.watch(n.showPopup,e=>{if(e){const e=n.activeGrid.value;e&&r.open(e,n.defaultImportOptions.value)}else r.close()},{immediate:!0}),o.onBeforeUnmount(()=>r.destroy()),t({controller:r}),(e,t)=>(o.openBlock(),o.createElementBlock("span",_))}}),w=Symbol("MozGridConfig");function S(){const e=o.inject(w,o.computed(()=>({}))),t=o.inject(R,null);return o.computed(()=>({...e.value,locale:(null==t?void 0:t.value)??e.value.locale}))}function b(e){const t=S(),n=o.computed(()=>{const o=e(),n={locale:o.locale??t.value.locale,timeZone:o.timeZone??t.value.timeZone};return void 0!==n.timeZone&&new Intl.DateTimeFormat("en",{timeZone:n.timeZone}),n});o.provide(w,n),o.provide(R,o.computed(()=>n.value.locale))}const M=o.defineComponent({name:"MozGridConfigProvider",props:{config:{type:Object,default:()=>({})}},setup:(e,{slots:t})=>(b(()=>e.config),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})}),R=Symbol("MozGridLocale");const E=o.defineComponent({name:"MozGridLocaleProvider",props:{locale:{type:String,default:void 0}},setup:(e,{slots:t})=>(b(()=>({locale:e.locale})),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})});class B{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,n,l={}){const i=this.instances.get(e);if(i)return void Object.assign(i.props,l);const r=o.reactive({...l}),s=o.createApp({render:()=>o.h(n,r)});this.appContext&&(s._context.provides={...this.appContext.provides},s._context.components={...this.appContext.components},s._context.directives={...this.appContext.directives},s._context.config.globalProperties={...this.appContext.config.globalProperties}),this.instances.set(e,{app:s,props:r}),s.mount(t)}mountInstance(e,t,n){const l=o.reactive({...n}),i=o.createApp({render:()=>t(l)});this.appContext&&(i._context.provides={...this.appContext.provides},i._context.components={...this.appContext.components},i._context.directives={...this.appContext.directives},i._context.config.globalProperties={...this.appContext.config.globalProperties}),i.mount(e);let r,s=!1,a=o.nextTick();return{update:e=>{s||(Object.assign(l,e),a=o.nextTick())},whenReady:()=>a,destroy:()=>r||(s=!0,i.unmount(),r=o.nextTick(),a=r,r)}}updateProps(e,t){const o=this.instances.get(e);o&&Object.assign(o.props,t)}unmount(e){const t=this.instances.get(e);t&&(t.app.unmount(),this.instances.delete(e))}unmountByPrefix(e){for(const t of this.instances.keys())t.startsWith(e)&&this.unmount(t)}unmountAll(){for(const[,e]of this.instances)e.app.unmount();this.instances.clear()}get size(){return this.instances.size}has(e){return this.instances.has(e)}}function k(e,t,o){return e.map(e=>{const n={...e},l=t.get("cell",e.id);if(null==l?void 0:l.slot){const t=l.slot;n.cellRenderer=function(e,t,o){const n=e=>({value:e.value,rowData:e.rowData,columnId:e.columnId,rowId:e.rowId}),l=(e,l)=>{const i=o.mountInstance(e,e=>t(e),n(l));return{update:e=>(i.update(n(e)),!0),whenReady:()=>i.whenReady(),destroy:()=>i.destroy()}};return l.__cellRendererKind="lifecycle",l}(e.id,t,o)}const i=t.get("header",e.id);if(null==i?void 0:i.slot){const t=i.slot;n.headerRenderer=function(e,t,o){return n=>{const l=document.createElement("div");l.style.display="contents";const i=`header:${e}`,r={columnId:n.columnId,header:n.header};return o.mount(i,l,{render:()=>t(r)},r),l}}(e.id,t,o)}const r=t.get("editor",e.id);if(null==r?void 0:r.slot){const t=r.slot;n.editor=function(e,t,o){return{type:"custom",renderer:n=>{const l=document.createElement("div");l.style.display="contents";const i=`editor:${e}`,r={value:n.value,rowData:n.rowData,columnId:e,onCommit:n.onCommit,onCancel:n.onCancel};return o.mount(i,l,{render:()=>t(r)},r),l},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return n})}const I=Symbol("moz-grid-instance"),P=Symbol("moz-grid-container"),F=Symbol("moz-grid-renderer"),z=Symbol("moz-grid-template-registry"),T=Symbol("moz-grid-filter-module"),G=Symbol("moz-grid-sort-module"),$=Symbol("moz-grid-custom-cell-module"),D=Symbol("moz-grid-bulk-editor-module"),H=((e,t)=>{const o=e.__vccOpts||e;for(const[n,l]of t)o[n]=l;return o})(o.defineComponent({__name:"MozGrid",props:o.mergeModels({sourceRevision:{},height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},chartConfig:{},useRowGroupSettings:{type:Boolean,default:!0},useFieldSettings:{type:Boolean,default:!0},useFormatSettings:{type:Boolean,default:!0},useLayoutSettings:{type:Boolean,default:!0},useAggregateSettings:{type:Boolean,default:!0},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useContextMenu:{type:Boolean,default:!0},usePivot:{type:Boolean},usePivotBar:{type:Boolean,default:!0},useChart:{type:Boolean},loading:{type:Boolean},useBuiltinTooltip:{type:Boolean,default:!0},toolbarConfig:{},name:{},usePreset:{type:Boolean,default:!0}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["ready","data:loaded","data:changed","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"],["update:coreConfig"]),setup(e,{expose:t,emit:i}){const r=o.useModel(e,"coreConfig"),a=e,u=i,d=o.ref(),c=o.useSlots(),m=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),g=new B,v=function(){const e=o.reactive([]);function t(e,t){return t?`${e}:${t}`:e}return{register(o){const n=e.findIndex(e=>t(e.type,e.fieldId)===t(o.type,o.fieldId));n>=0?e[n]=o:e.push(o)},unregister(o,n){const l=t(o,n),i=e.findIndex(e=>t(e.type,e.fieldId)===l);i>=0&&e.splice(i,1)},get(o,n){const l=t(o,n);return e.find(e=>t(e.type,e.fieldId)===l)},getAll:t=>e.filter(e=>e.type===t)}}(),h=o.shallowRef(null),y=f(),x=S(),_=o.computed(()=>a.locale??r.value.locale??x.value.locale),w=o.computed(()=>r.value.timeZone??x.value.timeZone);s.setGridVueLocale(_.value),o.watch(_,e=>s.setGridVueLocale(e));const b=o.ref();let M=null;const R=o.ref({disabled:!0,hasItem:!1}),E=l.useGridNotificationStore(),T=e=>String(e).padStart(2,"0"),G=()=>{const e=new Date;return`${e.getFullYear()}-${T(e.getMonth()+1)}-${T(e.getDate())} ${T(e.getHours())}:${T(e.getMinutes())}:${T(e.getSeconds())}`},$=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,D=e=>null==E?void 0:E.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),H=e=>{if(!E)return;const t=E.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&E.eventMessages.splice(t,1)};let L=null;const V={onExportStart:e=>{E&&(L=$(),E.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:G(),noti_sender_id:"",prop_value:{session_id:L,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!L)return;const t=D(L);if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))},onExportComplete:e=>{if(!L)return;const t=L,o=D(t);(null==o?void 0:o.prop_value)&&((null==e?void 0:e.fileName)&&(o.prop_value.file_name=e.fileName),o.prop_value.status="completed",o.prop_value.progress_per=100),setTimeout(()=>H(t),2e3),L=null},onExportError:e=>{if(!L)return;const t=D(L);(null==t?void 0:t.prop_value)&&(t.prop_value.status="error",t.prop_value.error_message=e.message,t.prop_value.progress_per=0,t.prop_value.remain_time=-1),L=null},onExportCancel:()=>{L&&(H(L),L=null)},onImportComplete:()=>{if(!E)return;const e=$();E.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:G(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>H(e),2e3)},onImportError:e=>{E&&E.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:G(),noti_sender_id:"",prop_value:{session_id:$(),file_name:"",status:"error",error_message:e.message,progress_per:0,operation_type:"upload",remain_time:-1}})},onClientImportOpen:()=>{var e;if(!h.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};y.show(h.value,t)}};o.provide(z,v),o.provide(F,g),o.provide(I,h),o.provide(P,b);const O=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function A(e){return(t,o)=>{const n={render:()=>{var t,n,l;return("tool-items"===e?null==(t=c[e])?void 0:t.call(c,R.value):"option-menu-items"===e?null==(n=c[e])?void 0:n.call(c,o.props):null==(l=c[e])?void 0:l.call(c))??null}},l=`slot:${e}`;return g.mount(l,t,n,{}),()=>g.unmount(l)}}let q,j;function U(){const e={...r.value},t=function(){const e=r.value.fields;return e===q||(q=e,j=e?k(e,v,g):void 0),j}();return t&&(e.fields=t),void 0!==_.value&&(e.locale=_.value),e.timeZone=w.value,e}function Z(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state","option-menu-items"],t={};for(const o of e)c[o]&&(t[o]=A(o));return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useChart:a.useChart,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,toolbarConfig:a.toolbarConfig,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,chartConfig:a.chartConfig,loading:a.loading,locale:_.value,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{R.value=e},excelHooks:V}}const N=["data:changed","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"];let Y=[];function K(){for(const e of Y)try{e()}catch{}Y=[]}const W=new WeakSet;function X(e){if(e&&"object"==typeof e){if(W.has(e))return;W.add(e)}}function J(e){if(!d.value)return null;g.setAppContext(m);const t=o.markRaw(new n.GridChrome(d.value,U(),{...Z(),sourceRevision:a.sourceRevision},e));o.markRaw(t.grid),M=t,h.value=t.grid,b.value=d.value;const l=u;t.on("data:loaded",()=>u("data:loaded"));for(const o of N)t.on(o,e=>l(o,e));return Y.push(t.onConfigChange(()=>{r.value=t.getCoreConfig(r.value),t.syncAppliedConfig(U())})),t.ready().catch(X),t}let Q=null;const ee=new n.LatestSettingsCoordinator({waitUntilSettled:async(e,t)=>{(null==M?void 0:M.waitForReinitSettled)?await M.waitForReinitSettled(t,M.isSourceReplacement(e.config,e.sourceRevision)):await(null==M?void 0:M.ready())},apply:async(e,t)=>{if(!M)return;let o=M;const{reinitRequired:n,completion:l}=o.reconcileCoreConfig(e.config,e.sourceRevision);if(l&&await l,n){const n=o,l=n.captureReinitStateAsync?await n.captureReinitStateAsync(e.config,e.sourceRevision):o.captureReinitState(e.config,e.sourceRevision);if(!t.isCurrent()||M!==o)return;K(),o.destroy(),M=null,g.unmountAll();const i=J(l);if(!i)return;if(o=i,await o.ready(),M!==o)return;await o.restoreReinitState(l)}else await o.ready();t.isCurrent()&&M===o&&Q!==o&&(Q=o,R.value=o.getToolItemsProps(),u("ready",o.grid,o))},onError:X});function te(){ee.request({config:U(),sourceRevision:a.sourceRevision})}o.onMounted(()=>{J(),te(),o.watch(()=>{const e=r.value;e.data,e.fields;const t={_locale:_.value,_timeZone:w.value,_sourceRevision:a.sourceRevision};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>te(),{deep:!0}),o.watch(()=>{var e,t,o,n;return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,toolbarConfig:{filter:{disabled:null==(t=null==(e=a.toolbarConfig)?void 0:e.filter)?void 0:t.disabled,hidden:null==(n=null==(o=a.toolbarConfig)?void 0:o.filter)?void 0:n.hidden}}}},e=>null==M?void 0:M.setUIOptions(e)),o.watch(()=>a.loading,e=>null==M?void 0:M.setUIOptions({loading:e}),{immediate:!0}),o.watch(()=>a.sourceFields,e=>null==M?void 0:M.setSourceFields(e),{immediate:!0}),o.watch(()=>a.contextMenuConfig,e=>null==M?void 0:M.setContextMenuConfig(e),{deep:!0}),o.watch(()=>a.chartConfig,e=>{var t;return null==(t=null==M?void 0:M.setChartConfig)?void 0:t.call(M,e)},{deep:!0})}),o.onBeforeUnmount(()=>{ee.destroy(),K(),null==M||M.destroy(),M=null,h.value=null,g.unmountAll()}),p({usePreset:a.usePreset,name:o.toRef(a,"name"),type:"pivot"===r.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:h,getSourceFields:()=>{const e=r.value.fields??[],t=new Map(e.map(e=>[e.field??e.id,e.id]));return((null==M?void 0:M.pivot.sourceFields)??[]).map(e=>({id:t.get(e.field)??e.field,field:e.field,header:e.header,dataType:e.dataType}))},getCustomCellState:()=>(null==M?void 0:M.customCell.getCustomCell())??null,setCustomCellState:e=>{null==M||M.customCell.setCustomCell(e??null)},getColumnFormatState:()=>(null==M?void 0:M.columnFormat.getConfig())??null,setColumnFormatState:e=>{null==M||M.columnFormat.setConfig(e??null)},getViewOptionsState:()=>{var e;return(null==(e=null==M?void 0:M.getPresetViewState)?void 0:e.call(M))??null},setViewOptionsState:e=>{var t;null==(t=null==M?void 0:M.setPresetViewState)||t.call(M,e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return M;const o=M;if(!o)return;const n=o[t];return"function"==typeof n?n.bind(o):n},has:(e,t)=>"chrome"===t||!!M&&t in M})),(e,t)=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[o.createElementVNode("div",{ref_key:"hostRef",ref:d,class:"moz-grid-chrome",style:o.normalizeStyle(O.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),h.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-3e1ac7f7"]]),L=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"cell",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("cell",e.field)}),()=>null):()=>null}}),V=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"header",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("header",e.field)}),()=>null):()=>null}}),O=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"editor",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("editor",e.field)}),()=>null):()=>null}}),A=o.defineComponent({name:"DetailTemplate",props:{minHeight:{type:Number,default:100},maxHeight:{type:Number},singleExpand:{type:Boolean,default:!1},keepDetailRows:{type:Boolean,default:!0}},setup(e){const t=o.inject(I),n=o.inject(F),l=o.useSlots();return t&&n?(o.onMounted(()=>{const o=t.value;if(!o||!l.default)return;const i=l.default;o.masterDetail.setConfig({minHeight:e.minHeight,maxHeight:e.maxHeight,singleExpand:e.singleExpand,keepMasterDetailRows:e.keepDetailRows,renderer:(e,t,o)=>{const l=`detail:${o}`,r={parentData:t,dataIndex:o};return n.mount(l,e,{render:()=>i(r)},r),()=>{n.unmount(l)}}})}),o.onBeforeUnmount(()=>{null==n||n.unmountByPrefix("detail:")}),()=>null):()=>null}}),q="ps-group-template-dispose",j="ps-group-template-host",U=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(I),t=o.inject(F),n=o.useSlots();if(!e||!t)return()=>null;const l=new Map,i=e=>{const t=l.get(e);if(t)return l.delete(e),t.destroy()},r=e=>{null==e||e.formatRow.removeHandler("_groupTemplate");for(const t of[...l.keys()])i(t)};let s=null;return o.watch(e,e=>{e!==s&&(r(s),s=e??null,e&&(e=>{if(!n.default)return;const o=n.default;e.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const n=e.ctx,r=n.element;if(!r)return;const s={groupKey:n.column,groupValue:n.value,level:n.level,count:n.itemCount,isExpanded:!n.collapsed},a=l.get(r);if(a&&r.classList.contains(j))return void a.update(s);const u=a?i(r):void 0,d=r.classList.contains(j)?r:document.createElement("span");d!==r&&r.replaceChildren(d);const c=t.mountInstance(d,e=>o(e),s),p=e=>{var t,o,n;null==(n=e.detail)||n.waitUntil(null==(o=null==(t=l.get(r))?void 0:t.whenReady)?void 0:o.call(t))},m=e=>{const t=i(r),o=e.detail;o?o.waitUntil(t):null==t||t.catch(e=>{})};l.set(r,{update:c.update,whenReady:()=>Promise.all([u,c.whenReady()]).then(()=>{}),destroy:()=>(r.removeEventListener("ps-group-template-ready",p),r.removeEventListener(q,m),c.destroy())}),r.addEventListener("ps-group-template-ready",p),r.addEventListener(q,m,{once:!0})})})(e))},{immediate:!0}),o.onBeforeUnmount(()=>{r(s),s=null}),()=>null}});let Z=!1;function N(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(Z||(Z=!0),e.formatHeader)}),e):null}const Y=o.defineComponent({__name:"MozGridVue",props:{name:{},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},contextMenuConfig:{default:()=>({})},useContextMenu:{type:Boolean,default:!0},loading:{type:Boolean},emptyState:{},fields:{},data:{},mode:{},pivotRowFields:{},pivotColumnFields:{},pivotValueFields:{},height:{default:"100%"},keyFields:{},theme:{},rowHeight:{},headerHeight:{},showHeader:{type:Boolean,default:!0},resizableColumns:{type:Boolean,default:!0},reorderableColumns:{type:Boolean,default:!0},showRowHeader:{type:[Boolean,Object]},rowHeader:{type:[Boolean,Object]},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},editable:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},alternatingRows:{type:Boolean,default:!0},autoFitColumns:{type:Boolean},dynamicRowHeights:{type:Boolean,default:!1},reorderableRows:{type:Boolean,default:!1},locale:{},engine:{},useWorker:{type:Boolean},loader:{},preventKeyEdit:{type:Boolean,default:!0},showStatusBar:{type:Boolean},showDragHandleColumn:{type:Boolean},undoStack:{},formatRow:{},translations:{},rowStyle:{},headerStyle:{},rowHeightChangeThreshold:{},group:{},columnGroups:{},rowTemplate:{}},emits:["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"],setup(e,{expose:t,emit:l}){const i=e,r=l,s=o.computed(()=>{const e={...i};for(const t of n.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,e}),a=o.computed(()=>{const e=i,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t}),u=Object.fromEntries(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"].map(e=>[e,(...t)=>r(e,...t)]));u.ready=e=>r("ready",N(e));const d=o.ref(null);function c(e){d.value=e}function p(){return d.value??null}const m={};return Object.defineProperties(m,{grid:{enumerable:!0,get:()=>{var e;return N(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>m},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.bulkEditor}}}),m.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},m.loadData=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.loadData(e)},m.sort=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.sort(e)},m.filter=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.filter(e)},t(m),(e,t)=>(o.openBlock(),o.createBlock(H,o.mergeProps({ref:c,coreConfig:s.value},a.value,{name:i.name},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.notification?{name:"notification",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"notification")]),key:"2"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"3"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"4"}:void 0]),1040,["coreConfig","name"]))}}),K=o.defineComponent({__name:"MozPivotVue",props:{name:{},data:{},rowFields:{},columnFields:{},valueFields:{},height:{default:"100%"},showRowSubTotals:{type:Boolean,default:!1},showRowGrandTotals:{type:Boolean,default:!0},showColumnSubTotals:{type:Boolean,default:!1},showColumnGrandTotals:{type:Boolean,default:!0},trackSourceRows:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},alternatingRows:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useFilter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useContextMenu:{type:Boolean,default:!0},contextMenuConfig:{},useChart:{type:Boolean,default:!1},fields:{},availableFields:{},useMultipleChart:{type:Boolean,default:!0},chartIncludeGrandTotal:{type:Boolean,default:!1},chartMap:{},loading:{type:Boolean},emptyState:{}},emits:["ready","data:loaded","filter:changed","pivot:configured","pivot:toggled","update:rowFields","update:columnFields","update:valueFields"],setup(e,{expose:t,emit:l}){const i=e,r=l,s=o.computed(()=>{const e={...i};for(const t of n.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,delete e.availableFields,delete e.useFilter,e.mode="pivot",e}),a=o.computed(()=>{const e=i,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t.sourceFields=e.sourceFields??e.availableFields??e.fields,t}),u=Object.fromEntries(["ready","data:loaded","filter:changed","pivot:toggled"].map(e=>[e,(...t)=>r(e,...t)]));function d(e){var t,o,n;const l=e;r("update:rowFields",l.rowFields??[]),r("update:columnFields",l.columnFields??[]),r("update:valueFields",l.valueFields??[]);const i=null==(n=null==(o=null==(t=m())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:n.call(o);i&&r("pivot:configured",i)}u.ready=e=>r("ready",N(e));const c=o.ref(null);function p(e){c.value=e}function m(){return c.value??null}function f(){var e,t;return null==(t=null==(e=m())?void 0:e.grid)?void 0:t.pivot}const g=o.computed({get:()=>{var e,t;return(null==(t=null==(e=m())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=m())?void 0:t.chart)?void 0:o.setVisible(e)}}),v={};return Object.defineProperties(v,{grid:{enumerable:!0,get:()=>{var e;return N(null==(e=m())?void 0:e.grid)}},core:{enumerable:!0,get:()=>v},pivotApi:{enumerable:!0,get:()=>f()??null},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.customCell}},showChart:{enumerable:!0,get:()=>g.value,set:e=>{g.value=e}}}),v.refresh=async()=>{var e,t;return null==(t=null==(e=m())?void 0:e.grid)?void 0:t.refresh()},v.setConfig=async e=>{var t;return null==(t=f())?void 0:t.setConfig(e)},v.getResult=()=>{var e;return(null==(e=f())?void 0:e.getResult())??null},v.expandAll=async()=>{var e;return null==(e=f())?void 0:e.expandAllRows()},v.collapseAll=async()=>{var e;return null==(e=f())?void 0:e.collapseAllRows()},v.expandToLevel=async e=>{var t;return null==(t=f())?void 0:t.expandRowToLevel(e)},v.toggleChart=()=>{g.value=!g.value},t(v),(e,t)=>(o.openBlock(),o.createBlock(H,o.mergeProps({ref:p,coreConfig:s.value},a.value,{name:i.name,"onUpdate:coreConfig":d},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"2"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"3"}:void 0]),1040,["coreConfig","name"]))}});exports.GridNotificationKey=l.GridNotificationKey,exports.provideGridNotification=l.provideGridNotification,exports.useGridNotificationStore=l.useGridNotificationStore,exports.ExcelDataType=s.DataType,exports.FileParameter=s.FileParameter,exports.enUS=s.enUS,exports.getGridVueLocale=s.getGridVueLocale,exports.getGridVueLocaleCode=s.getGridVueLocaleCode,exports.jaJP=s.jaJP,exports.koKR=s.koKR,exports.normalizeGridVueLocale=s.normalizeGridVueLocale,exports.openToast=s.openToast,exports.setGridVueLocale=s.setGridVueLocale,exports.showMessage=s.showMessage,exports.useExcelDownloadStore=s.useExcelDownloadStore,exports.useExcelStore=s.useExcelStore,exports.useExcelUploadStore=s.useExcelUploadStore,exports.zhCN=s.zhCN,Object.defineProperty(exports,"ROW_HEADER_COLUMN_ID",{enumerable:!0,get:()=>u.ROW_HEADER_COLUMN_ID}),Object.defineProperty(exports,"UndoStack",{enumerable:!0,get:()=>u.UndoStack}),Object.defineProperty(exports,"getCornerCell",{enumerable:!0,get:()=>u.getCornerCell}),Object.defineProperty(exports,"getRowHeaderCell",{enumerable:!0,get:()=>u.getRowHeaderCell}),exports.CellEditor=O,exports.CellTemplate=L,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=A,exports.GRID_BULK_EDITOR_MODULE_KEY=D,exports.GRID_CUSTOM_CELL_MODULE_KEY=$,exports.GRID_FILTER_MODULE_KEY=T,exports.GRID_INSTANCE_KEY=I,exports.GRID_RENDERER_KEY=F,exports.GRID_SORT_MODULE_KEY=G,exports.GRID_TEMPLATE_REGISTRY_KEY=z,exports.GroupTemplate=U,exports.HeaderTemplate=V,exports.MOZ_GRID_CONFIG_KEY=w,exports.MOZ_GRID_LOCALE_KEY=R,exports.MozGrid=H,exports.MozGridConfigProvider=M,exports.MozGridLocaleProvider=E,exports.MozGridVue=Y,exports.MozPivotVue=K,exports.StreamingParameter=class{constructor(e){t(this,"params"),t(this,"loading",!0),t(this,"size",0),t(this,"offset",0),t(this,"onReceived"),t(this,"onClosed"),t(this,"onHandleError"),t(this,"onCancelClick"),t(this,"_complete",!1),this.params=e}get ipcObject(){return this.params}get percent(){return 0===this.offset||0===this.size?0:Math.round(this.offset/this.size*100)}get complete(){return this._complete}received(e){this.offset++,this.onReceived&&this.onReceived(e)}closed(e=!0){this._complete=e,this.onClosed&&this.onClosed()}handleError(e,t=!0){this._complete=t,this.onHandleError&&this.onHandleError(e)}},exports.UserLayoutInstance=d,exports.VueRenderer=B,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const n=await e.pivot.getDataMatrix();if(!n)return;t=n.headers,o=n.rows}else{const n=await e.getExportData({scope:"all"});if(!n)return;const{headers:l,rows:i}=n,r=l.map(e=>e.id);t=l.map(e=>e.header),o=i.map(e=>r.map(t=>e[t]))}const n=[];n.push(t.map(v).join(","));for(const a of o)n.push(a.map(v).join(","));const l="\ufeff"+n.join("\r\n"),i=new Blob([l],{type:"text/csv;charset=utf-8;"}),r=URL.createObjectURL(i),s=document.createElement("a");s.href=r,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(r)},exports.generateSessionId=g,exports.pickFile=function(e=".xlsx"){return new Promise(t=>{const o=document.createElement("input");o.type="file",o.accept=e,o.style.display="none";let n=!1;const l=()=>{o.parentNode&&o.parentNode.removeChild(o)};o.onchange=()=>{if(n)return;n=!0;const e=o.files&&o.files.length>0?o.files[0]:null;l(),t(e)};const i=()=>{window.removeEventListener("focus",i),setTimeout(()=>{n||(n=!0,l(),t(null))},300)};window.addEventListener("focus",i),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var n;const l=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,i=g();o&&o.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:a().format("YYYY-MM-DD HH:mm:ss"),noti_sender_id:"",prop_value:{session_id:i,file_name:l,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}});try{if(await e.io.saveExcelToFile({scope:"all",includeHeaders:!0,suggestedName:l,fallbackToDownload:!0,sheetSplit:"auto",includePinnedRows:!0,onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});if(!(null==t?void 0:t.prop_value))return;let n="number"==typeof e.percent?e.percent:void 0;void 0===n&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(n=e.rowsProcessed/e.totalRows*100),"number"==typeof n&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(n))))},...t.clientExportOptions??{}}),o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});(null==e?void 0:e.prop_value)&&(e.prop_value.status="completed",e.prop_value.progress_per=100),setTimeout(()=>{const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(n=t.onClientExportComplete)||n.call(t,new Blob)}catch(r){if(r instanceof DOMException&&"AbortError"===r.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&o.eventMessages.splice(e,1)}return}if(o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=r instanceof Error?r.message:String(r),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=f,exports.useMozGridConfig=S,exports.useMozGridLocale=function(){const e=o.inject(R,null);return e||o.computed(()=>{})},exports.useUserLayoutModule=c;
|
|
77
|
+
`}confirm(){const e=this.grid,t=this.file;if(!e||!t)return;const o={...this.options};this.close(),this.runBackgroundImport(e,t,o)}async runBackgroundImport(e,t,o){const n=s.getGridVueLocale(),l=this.deps.notificationStore(),i=g(),r=t.name,a=()=>null==l?void 0:l.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});l&&l.eventMessages.unshift({noti_type:"progress",header_key:n.clientExcelImportProgress,noti_datetime:y(),noti_sender_id:"",prop_value:{session_id:i,file_name:r,status:"in_progress",progress_per:0,operation_type:"upload",remain_time:-1}});try{const n=e.changes;(null==n?void 0:n.hasChanges)&&await n.discardAll(),await e.io.fromExcel(t,{mode:o.mode,conflictStrategy:o.conflictStrategy,autoCommit:o.autoCommit,onProgress:e=>{const t=a();if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))}});const r=a();(null==r?void 0:r.prop_value)&&(r.prop_value.status="completed",r.prop_value.progress_per=100),l&&setTimeout(()=>{const e=l.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&l.eventMessages.splice(e,1)},2e3)}catch(u){const e=a();(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=u instanceof Error?u.message:String(u),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}}const _={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const n=f(),i=l.useGridNotificationStore(),r=new x({notificationStore:()=>i,onHidden:()=>n.hide()});return o.watch(n.showPopup,e=>{if(e){const e=n.activeGrid.value;e&&r.open(e,n.defaultImportOptions.value)}else r.close()},{immediate:!0}),o.onBeforeUnmount(()=>r.destroy()),t({controller:r}),(e,t)=>(o.openBlock(),o.createElementBlock("span",_))}}),w=Symbol("MozGridConfig");function S(){const e=o.inject(w,o.computed(()=>({}))),t=o.inject(R,null);return o.computed(()=>({...e.value,locale:(null==t?void 0:t.value)??e.value.locale}))}function b(e){const t=S(),n=o.computed(()=>{const o=e(),n={locale:o.locale??t.value.locale,timeZone:o.timeZone??t.value.timeZone};return void 0!==n.timeZone&&new Intl.DateTimeFormat("en",{timeZone:n.timeZone}),n});o.provide(w,n),o.provide(R,o.computed(()=>n.value.locale))}const M=o.defineComponent({name:"MozGridConfigProvider",props:{config:{type:Object,default:()=>({})}},setup:(e,{slots:t})=>(b(()=>e.config),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})}),R=Symbol("MozGridLocale");const E=o.defineComponent({name:"MozGridLocaleProvider",props:{locale:{type:String,default:void 0}},setup:(e,{slots:t})=>(b(()=>({locale:e.locale})),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})});class B{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,n,l={}){const i=this.instances.get(e);if(i)return void Object.assign(i.props,l);const r=o.reactive({...l}),s=o.createApp({render:()=>o.h(n,r)});this.appContext&&(s._context.provides={...this.appContext.provides},s._context.components={...this.appContext.components},s._context.directives={...this.appContext.directives},s._context.config.globalProperties={...this.appContext.config.globalProperties}),this.instances.set(e,{app:s,props:r}),s.mount(t)}mountInstance(e,t,n){const l=o.reactive({...n}),i=o.createApp({render:()=>t(l)});this.appContext&&(i._context.provides={...this.appContext.provides},i._context.components={...this.appContext.components},i._context.directives={...this.appContext.directives},i._context.config.globalProperties={...this.appContext.config.globalProperties}),i.mount(e);let r,s=!1,a=o.nextTick();return{update:e=>{s||(Object.assign(l,e),a=o.nextTick())},whenReady:()=>a,destroy:()=>r||(s=!0,i.unmount(),r=o.nextTick(),a=r,r)}}updateProps(e,t){const o=this.instances.get(e);o&&Object.assign(o.props,t)}unmount(e){const t=this.instances.get(e);t&&(t.app.unmount(),this.instances.delete(e))}unmountByPrefix(e){for(const t of this.instances.keys())t.startsWith(e)&&this.unmount(t)}unmountAll(){for(const[,e]of this.instances)e.app.unmount();this.instances.clear()}get size(){return this.instances.size}has(e){return this.instances.has(e)}}function k(e,t,o){return e.map(e=>{const n={...e},l=t.get("cell",e.id);if(null==l?void 0:l.slot){const t=l.slot;n.cellRenderer=function(e,t,o){const n=e=>({value:e.value,rowData:e.rowData,columnId:e.columnId,rowId:e.rowId}),l=(e,l)=>{const i=o.mountInstance(e,e=>t(e),n(l));return{update:e=>(i.update(n(e)),!0),whenReady:()=>i.whenReady(),destroy:()=>i.destroy()}};return l.__cellRendererKind="lifecycle",l}(e.id,t,o)}const i=t.get("header",e.id);if(null==i?void 0:i.slot){const t=i.slot;n.headerRenderer=function(e,t,o){return n=>{const l=document.createElement("div");l.style.display="contents";const i=`header:${e}`,r={columnId:n.columnId,header:n.header};return o.mount(i,l,{render:()=>t(r)},r),l}}(e.id,t,o)}const r=t.get("editor",e.id);if(null==r?void 0:r.slot){const t=r.slot;n.editor=function(e,t,o){return{type:"custom",renderer:n=>{const l=document.createElement("div");l.style.display="contents";const i=`editor:${e}`,r={value:n.value,rowData:n.rowData,columnId:e,onCommit:n.onCommit,onCancel:n.onCancel};return o.mount(i,l,{render:()=>t(r)},r),l},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return n})}const I=Symbol("moz-grid-instance"),P=Symbol("moz-grid-container"),F=Symbol("moz-grid-renderer"),z=Symbol("moz-grid-template-registry"),T=Symbol("moz-grid-filter-module"),G=Symbol("moz-grid-sort-module"),$=Symbol("moz-grid-custom-cell-module"),D=Symbol("moz-grid-bulk-editor-module"),H=((e,t)=>{const o=e.__vccOpts||e;for(const[n,l]of t)o[n]=l;return o})(o.defineComponent({__name:"MozGrid",props:o.mergeModels({sourceRevision:{},height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},chartConfig:{},useRowGroupSettings:{type:Boolean,default:!0},useFieldSettings:{type:Boolean,default:!0},useFormatSettings:{type:Boolean,default:!0},useLayoutSettings:{type:Boolean,default:!0},useAggregateSettings:{type:Boolean,default:!0},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useContextMenu:{type:Boolean,default:!0},usePivot:{type:Boolean},usePivotBar:{type:Boolean,default:!0},useChart:{type:Boolean},loading:{type:Boolean},useBuiltinTooltip:{type:Boolean,default:!0},toolbarConfig:{},name:{},usePreset:{type:Boolean,default:!0}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["ready","data:loaded","data:changed","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"],["update:coreConfig"]),setup(e,{expose:t,emit:i}){const r=o.useModel(e,"coreConfig"),a=e,u=i,d=o.ref(),c=o.useSlots(),m=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),g=new B,v=function(){const e=o.reactive([]);function t(e,t){return t?`${e}:${t}`:e}return{register(o){const n=e.findIndex(e=>t(e.type,e.fieldId)===t(o.type,o.fieldId));n>=0?e[n]=o:e.push(o)},unregister(o,n){const l=t(o,n),i=e.findIndex(e=>t(e.type,e.fieldId)===l);i>=0&&e.splice(i,1)},get(o,n){const l=t(o,n);return e.find(e=>t(e.type,e.fieldId)===l)},getAll:t=>e.filter(e=>e.type===t)}}(),h=o.shallowRef(null),y=o.shallowRef(null),x=f(),_=S(),w=o.computed(()=>a.locale??r.value.locale??_.value.locale),b=o.computed(()=>r.value.timeZone??_.value.timeZone);s.setGridVueLocale(w.value),o.watch(w,e=>s.setGridVueLocale(e));const M=o.ref();let R=null;const E=o.ref({disabled:!0,hasItem:!1}),T=l.useGridNotificationStore(),G=e=>String(e).padStart(2,"0"),$=()=>{const e=new Date;return`${e.getFullYear()}-${G(e.getMonth()+1)}-${G(e.getDate())} ${G(e.getHours())}:${G(e.getMinutes())}:${G(e.getSeconds())}`},D=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,H=e=>null==T?void 0:T.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),L=e=>{if(!T)return;const t=T.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&T.eventMessages.splice(t,1)};let V=null;const O={onExportStart:e=>{T&&(V=D(),T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:$(),noti_sender_id:"",prop_value:{session_id:V,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!V)return;const t=H(V);if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))},onExportComplete:e=>{if(!V)return;const t=V,o=H(t);(null==o?void 0:o.prop_value)&&((null==e?void 0:e.fileName)&&(o.prop_value.file_name=e.fileName),o.prop_value.status="completed",o.prop_value.progress_per=100),setTimeout(()=>L(t),2e3),V=null},onExportError:e=>{if(!V)return;const t=H(V);(null==t?void 0:t.prop_value)&&(t.prop_value.status="error",t.prop_value.error_message=e.message,t.prop_value.progress_per=0,t.prop_value.remain_time=-1),V=null},onExportCancel:()=>{V&&(L(V),V=null)},onImportComplete:()=>{if(!T)return;const e=D();T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:$(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>L(e),2e3)},onImportError:e=>{T&&T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:$(),noti_sender_id:"",prop_value:{session_id:D(),file_name:"",status:"error",error_message:e.message,progress_per:0,operation_type:"upload",remain_time:-1}})},onClientImportOpen:()=>{var e;if(!h.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};x.show(h.value,t)}};o.provide(z,v),o.provide(F,g),o.provide(I,h),o.provide(P,M);const A=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function j(e){return(t,o)=>{const n={render:()=>{var t,n,l;return("tool-items"===e?null==(t=c[e])?void 0:t.call(c,E.value):"option-menu-items"===e?null==(n=c[e])?void 0:n.call(c,o.props):null==(l=c[e])?void 0:l.call(c))??null}},l=`slot:${e}`;return g.mount(l,t,n,{}),()=>g.unmount(l)}}let q,U;function Z(){const e={...r.value},t=function(){const e=r.value.fields;return e===q||(q=e,U=e?k(e,v,g):void 0),U}();return t&&(e.fields=t),void 0!==w.value&&(e.locale=w.value),e.timeZone=b.value,e}function N(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state","option-menu-items"],t={};for(const o of e)c[o]&&(t[o]=j(o));return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useChart:a.useChart,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,toolbarConfig:a.toolbarConfig,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,chartConfig:a.chartConfig,loading:a.loading,locale:w.value,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{E.value=e},excelHooks:O}}const Y=["data:changed","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"];let K=[];function W(){for(const e of K)try{e()}catch{}K=[]}const X=new WeakSet;function J(e){if(e&&"object"==typeof e){if(X.has(e))return;X.add(e)}}function Q(e){if(!d.value)return null;g.setAppContext(m);const t=o.markRaw(new n.GridChrome(d.value,Z(),{...N(),sourceRevision:a.sourceRevision},e));o.markRaw(t.grid),R=t,h.value=t.grid,M.value=d.value;const l=u;t.on("data:loaded",()=>u("data:loaded"));for(const o of Y)t.on(o,e=>l(o,e));return K.push(t.onConfigChange(()=>{r.value=t.getCoreConfig(r.value),t.syncAppliedConfig(Z())})),t.ready().catch(J),t}let ee=null;const te=new n.LatestSettingsCoordinator({waitUntilSettled:async(e,t)=>{(null==R?void 0:R.waitForReinitSettled)?await R.waitForReinitSettled(t,R.isSourceReplacement(e.config,e.sourceRevision)):await(null==R?void 0:R.ready())},apply:async(e,t)=>{if(!R)return;let o=R;const{reinitRequired:n,completion:l}=o.reconcileCoreConfig(e.config,e.sourceRevision);if(l&&await l,n){const n=o,l=n.captureReinitStateAsync?await n.captureReinitStateAsync(e.config,e.sourceRevision):o.captureReinitState(e.config,e.sourceRevision);if(!t.isCurrent()||R!==o)return;W(),o.destroy(),R=null,g.unmountAll();const i=Q(l);if(!i)return;if(o=i,await o.ready(),R!==o)return;await o.restoreReinitState(l)}else await o.ready();t.isCurrent()&&R===o&&ee!==o&&(ee=o,E.value=o.getToolItemsProps(),u("ready",o.grid,o),y.value=o.grid)},onError:J});function oe(){te.request({config:Z(),sourceRevision:a.sourceRevision})}o.onMounted(()=>{Q(),oe(),o.watch(()=>{const e=r.value;e.data,e.fields;const t={_locale:w.value,_timeZone:b.value,_sourceRevision:a.sourceRevision};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>oe(),{deep:!0}),o.watch(()=>{var e,t,o,n;return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,toolbarConfig:{filter:{disabled:null==(t=null==(e=a.toolbarConfig)?void 0:e.filter)?void 0:t.disabled,hidden:null==(n=null==(o=a.toolbarConfig)?void 0:o.filter)?void 0:n.hidden}}}},e=>null==R?void 0:R.setUIOptions(e)),o.watch(()=>a.loading,e=>null==R?void 0:R.setUIOptions({loading:e}),{immediate:!0}),o.watch(()=>a.sourceFields,e=>null==R?void 0:R.setSourceFields(e),{immediate:!0}),o.watch(()=>a.contextMenuConfig,e=>null==R?void 0:R.setContextMenuConfig(e),{deep:!0}),o.watch(()=>a.chartConfig,e=>{var t;return null==(t=null==R?void 0:R.setChartConfig)?void 0:t.call(R,e)},{deep:!0})}),o.onBeforeUnmount(()=>{te.destroy(),W(),null==R||R.destroy(),R=null,h.value=null,g.unmountAll()}),p({usePreset:a.usePreset,name:o.toRef(a,"name"),type:"pivot"===r.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:h,readyGrid:y,getSourceFields:()=>{const e=r.value.fields??[],t=new Map(e.map(e=>[e.field??e.id,e.id]));return((null==R?void 0:R.pivot.sourceFields)??[]).map(e=>({id:t.get(e.field)??e.field,field:e.field,header:e.header,dataType:e.dataType}))},getCustomCellState:()=>(null==R?void 0:R.customCell.getCustomCell())??null,setCustomCellState:e=>{null==R||R.customCell.setCustomCell(e??null)},getColumnFormatState:()=>(null==R?void 0:R.columnFormat.getConfig())??null,setColumnFormatState:e=>{null==R||R.columnFormat.setConfig(e??null)},getViewOptionsState:()=>{var e;return(null==(e=null==R?void 0:R.getPresetViewState)?void 0:e.call(R))??null},setViewOptionsState:e=>{var t;null==(t=null==R?void 0:R.setPresetViewState)||t.call(R,e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return R;const o=R;if(!o)return;const n=o[t];return"function"==typeof n?n.bind(o):n},has:(e,t)=>"chrome"===t||!!R&&t in R})),(e,t)=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[o.createElementVNode("div",{ref_key:"hostRef",ref:d,class:"moz-grid-chrome",style:o.normalizeStyle(A.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),h.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-05d34927"]]),L=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"cell",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("cell",e.field)}),()=>null):()=>null}}),V=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"header",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("header",e.field)}),()=>null):()=>null}}),O=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(z),n=o.useSlots();return t?(o.onMounted(()=>{n.default&&t.register({type:"editor",fieldId:e.field,slot:n.default})}),o.onBeforeUnmount(()=>{t.unregister("editor",e.field)}),()=>null):()=>null}}),A=o.defineComponent({name:"DetailTemplate",props:{minHeight:{type:Number,default:100},maxHeight:{type:Number},singleExpand:{type:Boolean,default:!1},keepDetailRows:{type:Boolean,default:!0}},setup(e){const t=o.inject(I),n=o.inject(F),l=o.useSlots();return t&&n?(o.onMounted(()=>{const o=t.value;if(!o||!l.default)return;const i=l.default;o.masterDetail.setConfig({minHeight:e.minHeight,maxHeight:e.maxHeight,singleExpand:e.singleExpand,keepMasterDetailRows:e.keepDetailRows,renderer:(e,t,o)=>{const l=`detail:${o}`,r={parentData:t,dataIndex:o};return n.mount(l,e,{render:()=>i(r)},r),()=>{n.unmount(l)}}})}),o.onBeforeUnmount(()=>{null==n||n.unmountByPrefix("detail:")}),()=>null):()=>null}}),j="ps-group-template-dispose",q="ps-group-template-host",U=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(I),t=o.inject(F),n=o.useSlots();if(!e||!t)return()=>null;const l=new Map,i=e=>{const t=l.get(e);if(t)return l.delete(e),t.destroy()},r=e=>{null==e||e.formatRow.removeHandler("_groupTemplate");for(const t of[...l.keys()])i(t)};let s=null;return o.watch(e,e=>{e!==s&&(r(s),s=e??null,e&&(e=>{if(!n.default)return;const o=n.default;e.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const n=e.ctx,r=n.element;if(!r)return;const s={groupKey:n.column,groupValue:n.value,level:n.level,count:n.itemCount,isExpanded:!n.collapsed},a=l.get(r);if(a&&r.classList.contains(q))return void a.update(s);const u=a?i(r):void 0,d=r.classList.contains(q)?r:document.createElement("span");d!==r&&r.replaceChildren(d);const c=t.mountInstance(d,e=>o(e),s),p=e=>{var t,o,n;null==(n=e.detail)||n.waitUntil(null==(o=null==(t=l.get(r))?void 0:t.whenReady)?void 0:o.call(t))},m=e=>{const t=i(r),o=e.detail;o?o.waitUntil(t):null==t||t.catch(e=>{})};l.set(r,{update:c.update,whenReady:()=>Promise.all([u,c.whenReady()]).then(()=>{}),destroy:()=>(r.removeEventListener("ps-group-template-ready",p),r.removeEventListener(j,m),c.destroy())}),r.addEventListener("ps-group-template-ready",p),r.addEventListener(j,m,{once:!0})})})(e))},{immediate:!0}),o.onBeforeUnmount(()=>{r(s),s=null}),()=>null}});let Z=!1;function N(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(Z||(Z=!0),e.formatHeader)}),e):null}const Y=o.defineComponent({__name:"MozGridVue",props:{name:{},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},contextMenuConfig:{default:()=>({})},useContextMenu:{type:Boolean,default:!0},loading:{type:Boolean},emptyState:{},fields:{},data:{},mode:{},pivotRowFields:{},pivotColumnFields:{},pivotValueFields:{},height:{default:"100%"},keyFields:{},theme:{},rowHeight:{},headerHeight:{},showHeader:{type:Boolean,default:!0},resizableColumns:{type:Boolean,default:!0},reorderableColumns:{type:Boolean,default:!0},showRowHeader:{type:[Boolean,Object]},rowHeader:{type:[Boolean,Object]},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},editable:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},alternatingRows:{type:Boolean,default:!0},autoFitColumns:{type:Boolean},dynamicRowHeights:{type:Boolean,default:!1},reorderableRows:{type:Boolean,default:!1},locale:{},engine:{},loader:{},preventKeyEdit:{type:Boolean,default:!0},showStatusBar:{type:Boolean},showDragHandleColumn:{type:Boolean},undoStack:{},formatRow:{},translations:{},rowStyle:{},headerStyle:{},rowHeightChangeThreshold:{},group:{},columnGroups:{},rowTemplate:{}},emits:["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"],setup(e,{expose:t,emit:l}){const i=e,r=l,s=o.computed(()=>{const e={...i};for(const o of n.WRAPPER_EXTRA_KEYS)delete e[o];delete e.name,delete e.locale;const t=!0===e.useSummaryFooter;return delete e.useSummaryFooter,t&&void 0===e.summaryRow&&(e.summaryRow="pinnedBottom"),e}),a=o.computed(()=>{const e=i,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t}),u=Object.fromEntries(["ready","data:loaded","row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","filter:changed","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","scroll","contextmenu"].map(e=>[e,(...t)=>r(e,...t)]));u.ready=e=>r("ready",N(e));const d=o.ref(null);function c(e){d.value=e}function p(){return d.value??null}const m={};return Object.defineProperties(m,{grid:{enumerable:!0,get:()=>{var e;return N(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>m},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=p())?void 0:e.bulkEditor}}}),m.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},m.loadData=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.loadData(e)},m.sort=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.sort(e)},m.filter=async e=>{var t,o;return null==(o=null==(t=p())?void 0:t.grid)?void 0:o.filter(e)},t(m),(e,t)=>(o.openBlock(),o.createBlock(H,o.mergeProps({ref:c,coreConfig:s.value},a.value,{name:i.name},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.notification?{name:"notification",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"notification")]),key:"2"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"3"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"4"}:void 0]),1040,["coreConfig","name"]))}}),K=o.defineComponent({__name:"MozPivotVue",props:{name:{},data:{},rowFields:{},columnFields:{},valueFields:{},height:{default:"100%"},showRowSubTotals:{type:Boolean,default:!1},showRowGrandTotals:{type:Boolean,default:!0},showColumnSubTotals:{type:Boolean,default:!1},showColumnGrandTotals:{type:Boolean,default:!0},trackSourceRows:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},alternatingRows:{type:Boolean,default:!1},tooltipMode:{default:"overflow"},rowSelection:{},cellSelection:{default:()=>({mode:"range"})},cellSelectionImpliesRows:{type:Boolean},useToolBox:{type:Boolean,default:!0},useToolBoxSetting:{type:Boolean,default:!0},useFilter:{type:Boolean,default:!0},useSort:{type:Boolean,default:!0},useCustomCell:{type:Boolean,default:!0},useExtendFooter:{type:Boolean,default:!0},useSummaryFooter:{type:Boolean,default:!1},useContextMenu:{type:Boolean,default:!0},contextMenuConfig:{},useChart:{type:Boolean,default:!1},fields:{},availableFields:{},useMultipleChart:{type:Boolean,default:!0},chartIncludeGrandTotal:{type:Boolean,default:!1},chartMap:{},loading:{type:Boolean},emptyState:{}},emits:["ready","data:loaded","filter:changed","pivot:configured","pivot:toggled","update:rowFields","update:columnFields","update:valueFields"],setup(e,{expose:t,emit:l}){const i=e,r=l,s=o.computed(()=>{const e={...i};for(const o of n.WRAPPER_EXTRA_KEYS)delete e[o];delete e.name,delete e.locale;const t=!0===e.useSummaryFooter;return delete e.useSummaryFooter,t&&void 0===e.summaryRow&&(e.summaryRow="pinnedBottom"),delete e.availableFields,delete e.useFilter,e.mode="pivot",e}),a=o.computed(()=>{const e=i,t={};for(const o of n.WRAPPER_EXTRA_KEYS)void 0!==e[o]&&(t[o]=e[o]);return void 0!==e.locale&&(t.locale=e.locale),t.sourceFields=e.sourceFields??e.availableFields??e.fields,t}),u=Object.fromEntries(["ready","data:loaded","filter:changed","pivot:toggled"].map(e=>[e,(...t)=>r(e,...t)]));function d(e){var t,o,n;const l=e;r("update:rowFields",l.rowFields??[]),r("update:columnFields",l.columnFields??[]),r("update:valueFields",l.valueFields??[]);const i=null==(n=null==(o=null==(t=m())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:n.call(o);i&&r("pivot:configured",i)}u.ready=e=>r("ready",N(e));const c=o.ref(null);function p(e){c.value=e}function m(){return c.value??null}function f(){var e,t;return null==(t=null==(e=m())?void 0:e.grid)?void 0:t.pivot}const g=o.computed({get:()=>{var e,t;return(null==(t=null==(e=m())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=m())?void 0:t.chart)?void 0:o.setVisible(e)}}),v={};return Object.defineProperties(v,{grid:{enumerable:!0,get:()=>{var e;return N(null==(e=m())?void 0:e.grid)}},core:{enumerable:!0,get:()=>v},pivotApi:{enumerable:!0,get:()=>f()??null},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=m())?void 0:e.customCell}},showChart:{enumerable:!0,get:()=>g.value,set:e=>{g.value=e}}}),v.refresh=async()=>{var e,t;return null==(t=null==(e=m())?void 0:e.grid)?void 0:t.refresh()},v.setConfig=async e=>{var t;return null==(t=f())?void 0:t.setConfig(e)},v.getResult=()=>{var e;return(null==(e=f())?void 0:e.getResult())??null},v.expandAll=async()=>{var e;return null==(e=f())?void 0:e.expandAllRows()},v.collapseAll=async()=>{var e;return null==(e=f())?void 0:e.collapseAllRows()},v.expandToLevel=async e=>{var t;return null==(t=f())?void 0:t.expandRowToLevel(e)},v.toggleChart=()=>{g.value=!g.value},t(v),(e,t)=>(o.openBlock(),o.createBlock(H,o.mergeProps({ref:p,coreConfig:s.value},a.value,{name:i.name,"onUpdate:coreConfig":d},o.toHandlers(o.unref(u))),o.createSlots({default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:2},[e.$slots["tool-left"]?{name:"tool-left",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"tool-left")]),key:"0"}:void 0,e.$slots["tool-items"]?{name:"tool-items",fn:o.withCtx(t=>[o.renderSlot(e.$slots,"tool-items",o.normalizeProps(o.guardReactiveProps(t)))]),key:"1"}:void 0,e.$slots.footer?{name:"footer",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"footer")]),key:"2"}:void 0,e.$slots.customState?{name:"empty-state",fn:o.withCtx(()=>[o.renderSlot(e.$slots,"customState")]),key:"3"}:void 0]),1040,["coreConfig","name"]))}});Object.defineProperty(exports,"jsonEditor",{enumerable:!0,get:()=>n.jsonEditor}),exports.GridNotificationKey=l.GridNotificationKey,exports.provideGridNotification=l.provideGridNotification,exports.useGridNotificationStore=l.useGridNotificationStore,exports.ExcelDataType=s.DataType,exports.FileParameter=s.FileParameter,exports.enUS=s.enUS,exports.getGridVueLocale=s.getGridVueLocale,exports.getGridVueLocaleCode=s.getGridVueLocaleCode,exports.jaJP=s.jaJP,exports.koKR=s.koKR,exports.normalizeGridVueLocale=s.normalizeGridVueLocale,exports.openToast=s.openToast,exports.setGridVueLocale=s.setGridVueLocale,exports.showMessage=s.showMessage,exports.useExcelDownloadStore=s.useExcelDownloadStore,exports.useExcelStore=s.useExcelStore,exports.useExcelUploadStore=s.useExcelUploadStore,exports.zhCN=s.zhCN,Object.defineProperty(exports,"ROW_HEADER_COLUMN_ID",{enumerable:!0,get:()=>u.ROW_HEADER_COLUMN_ID}),Object.defineProperty(exports,"UndoStack",{enumerable:!0,get:()=>u.UndoStack}),Object.defineProperty(exports,"getCornerCell",{enumerable:!0,get:()=>u.getCornerCell}),Object.defineProperty(exports,"getRowHeaderCell",{enumerable:!0,get:()=>u.getRowHeaderCell}),exports.CellEditor=O,exports.CellTemplate=L,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=A,exports.GRID_BULK_EDITOR_MODULE_KEY=D,exports.GRID_CUSTOM_CELL_MODULE_KEY=$,exports.GRID_FILTER_MODULE_KEY=T,exports.GRID_INSTANCE_KEY=I,exports.GRID_RENDERER_KEY=F,exports.GRID_SORT_MODULE_KEY=G,exports.GRID_TEMPLATE_REGISTRY_KEY=z,exports.GroupTemplate=U,exports.HeaderTemplate=V,exports.MOZ_GRID_CONFIG_KEY=w,exports.MOZ_GRID_LOCALE_KEY=R,exports.MozGrid=H,exports.MozGridConfigProvider=M,exports.MozGridLocaleProvider=E,exports.MozGridVue=Y,exports.MozPivotVue=K,exports.StreamingParameter=class{constructor(e){t(this,"params"),t(this,"loading",!0),t(this,"size",0),t(this,"offset",0),t(this,"onReceived"),t(this,"onClosed"),t(this,"onHandleError"),t(this,"onCancelClick"),t(this,"_complete",!1),this.params=e}get ipcObject(){return this.params}get percent(){return 0===this.offset||0===this.size?0:Math.round(this.offset/this.size*100)}get complete(){return this._complete}received(e){this.offset++,this.onReceived&&this.onReceived(e)}closed(e=!0){this._complete=e,this.onClosed&&this.onClosed()}handleError(e,t=!0){this._complete=t,this.onHandleError&&this.onHandleError(e)}},exports.UserLayoutInstance=d,exports.VueRenderer=B,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const n=await e.pivot.getDataMatrix();if(!n)return;t=n.headers,o=n.rows}else{const n=await e.getExportData({scope:"all"});if(!n)return;const{headers:l,rows:i}=n,r=l.map(e=>e.id);t=l.map(e=>e.header),o=i.map(e=>r.map(t=>e[t]))}const n=[];n.push(t.map(v).join(","));for(const a of o)n.push(a.map(v).join(","));const l="\ufeff"+n.join("\r\n"),i=new Blob([l],{type:"text/csv;charset=utf-8;"}),r=URL.createObjectURL(i),s=document.createElement("a");s.href=r,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(r)},exports.generateSessionId=g,exports.pickFile=function(e=".xlsx"){return new Promise(t=>{const o=document.createElement("input");o.type="file",o.accept=e,o.style.display="none";let n=!1;const l=()=>{o.parentNode&&o.parentNode.removeChild(o)};o.onchange=()=>{if(n)return;n=!0;const e=o.files&&o.files.length>0?o.files[0]:null;l(),t(e)};const i=()=>{window.removeEventListener("focus",i),setTimeout(()=>{n||(n=!0,l(),t(null))},300)};window.addEventListener("focus",i),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var n;const l=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,i=g();o&&o.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:a().format("YYYY-MM-DD HH:mm:ss"),noti_sender_id:"",prop_value:{session_id:i,file_name:l,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}});try{if(await e.io.saveExcelToFile({scope:"all",includeHeaders:!0,suggestedName:l,fallbackToDownload:!0,sheetSplit:"auto",includePinnedRows:!0,onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});if(!(null==t?void 0:t.prop_value))return;let n="number"==typeof e.percent?e.percent:void 0;void 0===n&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(n=e.rowsProcessed/e.totalRows*100),"number"==typeof n&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(n))))},...t.clientExportOptions??{}}),o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});(null==e?void 0:e.prop_value)&&(e.prop_value.status="completed",e.prop_value.progress_per=100),setTimeout(()=>{const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(n=t.onClientExportComplete)||n.call(t,new Blob)}catch(r){if(r instanceof DOMException&&"AbortError"===r.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});-1!==e&&o.eventMessages.splice(e,1)}return}if(o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===i});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=r instanceof Error?r.message:String(r),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=f,exports.useMozGridConfig=S,exports.useMozGridLocale=function(){const e=o.inject(R,null);return e||o.computed(()=>{})},exports.useUserLayoutModule=c;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { default as MozGrid } from './MozGrid.vue';
|
|
2
2
|
export type { MozGridCoreProps } from '@vmscloud/moz-ui-grid-wrapper';
|
|
3
3
|
export type { GridChrome } from '@vmscloud/moz-ui-grid-wrapper';
|
|
4
|
+
export { jsonEditor } from '@vmscloud/moz-ui-grid-wrapper';
|
|
5
|
+
export type { JsonEditorOptions } from '@vmscloud/moz-ui-grid-wrapper';
|
|
4
6
|
export type { PureSheet } from '@vmscloud/moz-ui-grid-core';
|
|
5
7
|
export type { AggregateFn, AggregateContext } from '@vmscloud/moz-ui-grid-core';
|
|
6
8
|
export { CellTemplate } from './templates/CellTemplate';
|
|
@@ -35,7 +37,7 @@ export type { MozGridVueCoreProps, MozGridVueProps, MozGridVueEmits } from './ty
|
|
|
35
37
|
export type { CellSlotProps, HeaderSlotProps, EditorSlotProps, DetailSlotProps, GroupSlotProps, TemplateRegistry, TemplateEntry, } from './types/slots';
|
|
36
38
|
export { GRID_INSTANCE_KEY, GRID_RENDERER_KEY, GRID_TEMPLATE_REGISTRY_KEY, GRID_FILTER_MODULE_KEY, GRID_SORT_MODULE_KEY, GRID_CUSTOM_CELL_MODULE_KEY, GRID_BULK_EDITOR_MODULE_KEY, } from './types/injection-keys';
|
|
37
39
|
export type { UseGridFilterReturn, UseGridSortReturn, UseGridCustomCellReturn, GridModuleContract } from './types/modules';
|
|
38
|
-
export type { ComparisonOperator, LogicalOperator, IFilterDef, ISortDef, ICustomCellDef, ICustomCellRuleSet, ICustomCellConfig, IContextMenuItem, IContextMenuConfig, IContextMenuExcelEventArgs, AggregateType, IAggregateValues, IColumnCellFormat, IColumnHeaderFormat, IColumnFormatConfig, } from './types/toolbar';
|
|
40
|
+
export type { ComparisonOperator, LogicalOperator, IFilterDef, ISortDef, ICustomCellDef, ICustomCellRuleSet, ICustomCellConfig, IContextMenuItem, IContextMenuConfig, ContextMenuContext, IContextMenuExcelEventArgs, AggregateType, IAggregateValues, IColumnCellFormat, IColumnHeaderFormat, IColumnFormatConfig, } from './types/toolbar';
|
|
39
41
|
export type { PivotGridProps, PivotFieldItem, AvailableField, PivotFieldPanelConfig, PivotGridSettings } from './types/pivot-props';
|
|
40
42
|
export type { IExcelInfo, IExcelAPI, AdditionalColumn } from './types/excel.types';
|
|
41
43
|
export { DataType as ExcelDataType } from './types/excel.types';
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { onBeforeUnmount, inject, ref, watch, nextTick, shallowRef, defineComponent, createElementBlock, openBlock, computed, provide, reactive, createApp, h, getCurrentInstance, mergeModels, useModel, useSlots, onMounted, toRef, Fragment, createElementVNode, renderSlot, createBlock, createCommentVNode, normalizeStyle, markRaw, mergeProps, toHandlers, unref, createSlots, withCtx, normalizeProps, guardReactiveProps } from "vue";
|
|
5
5
|
import { stampPresetVersion, migrateGridPreset, applyPresetCoreConfig, Popup, radio, select, button, LatestSettingsCoordinator, GridChrome, WRAPPER_EXTRA_KEYS } from "@vmscloud/moz-ui-grid-wrapper";
|
|
6
|
+
import { jsonEditor } from "@vmscloud/moz-ui-grid-wrapper";
|
|
6
7
|
import { u as useGridNotificationStore } from "./chunks/notification.contract-BTOch6ed.js";
|
|
7
8
|
import { G, p } from "./chunks/notification.contract-BTOch6ed.js";
|
|
8
9
|
import { html, nothing } from "lit-html";
|
|
@@ -271,24 +272,33 @@ function useGridPreset(options) {
|
|
|
271
272
|
let active = true;
|
|
272
273
|
let scheduled = false;
|
|
273
274
|
const isCurrent = () => active && !layoutInstance.disposed && options.gridInstance.value === grid;
|
|
274
|
-
|
|
275
|
-
|
|
275
|
+
let loaded = false;
|
|
276
|
+
const capture = () => {
|
|
277
|
+
if (!loaded || registered || scheduled || !isCurrent()) return;
|
|
278
|
+
if (options.readyGrid && options.readyGrid.value !== grid) return;
|
|
276
279
|
scheduled = true;
|
|
277
280
|
layoutInstance.setDefaultToCurrent();
|
|
278
281
|
void nextTick(async () => {
|
|
279
282
|
if (!isCurrent() || registered) return;
|
|
280
283
|
registered = true;
|
|
281
284
|
unsub();
|
|
285
|
+
stopReady == null ? void 0 : stopReady();
|
|
282
286
|
try {
|
|
283
287
|
await register(layoutInstance);
|
|
284
288
|
} catch (error) {
|
|
285
289
|
console.error("[Grid preset] registration failed", error);
|
|
286
290
|
}
|
|
287
291
|
});
|
|
292
|
+
};
|
|
293
|
+
const unsub = grid.on("data:loaded", () => {
|
|
294
|
+
loaded = true;
|
|
295
|
+
capture();
|
|
288
296
|
});
|
|
297
|
+
const stopReady = options.readyGrid ? watch(options.readyGrid, capture, { flush: "sync" }) : void 0;
|
|
289
298
|
onCleanup(() => {
|
|
290
299
|
active = false;
|
|
291
300
|
unsub();
|
|
301
|
+
stopReady == null ? void 0 : stopReady();
|
|
292
302
|
});
|
|
293
303
|
});
|
|
294
304
|
}
|
|
@@ -1151,7 +1161,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1151
1161
|
useToolBox: { type: Boolean, default: true },
|
|
1152
1162
|
useToolBoxSetting: { type: Boolean, default: true },
|
|
1153
1163
|
useExtendFooter: { type: Boolean, default: true },
|
|
1154
|
-
useSummaryFooter: { type: Boolean, default: false },
|
|
1155
1164
|
useSort: { type: Boolean, default: true },
|
|
1156
1165
|
useCustomCell: { type: Boolean, default: true },
|
|
1157
1166
|
useContextMenu: { type: Boolean, default: true },
|
|
@@ -1178,6 +1187,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1178
1187
|
const vueRenderer = new VueRenderer();
|
|
1179
1188
|
const registry = createTemplateRegistry();
|
|
1180
1189
|
const gridInstance = shallowRef(null);
|
|
1190
|
+
const readyGrid = shallowRef(null);
|
|
1181
1191
|
const clientExcelStore = useClientExcelStore();
|
|
1182
1192
|
const contextConfig = useMozGridConfig();
|
|
1183
1193
|
const resolvedLocale = computed(() => props.locale ?? coreConfig.value.locale ?? contextConfig.value.locale);
|
|
@@ -1338,7 +1348,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1338
1348
|
useToolBox: props.useToolBox,
|
|
1339
1349
|
useToolBoxSetting: props.useToolBoxSetting,
|
|
1340
1350
|
useExtendFooter: props.useExtendFooter,
|
|
1341
|
-
useSummaryFooter: props.useSummaryFooter,
|
|
1342
1351
|
useSort: props.useSort,
|
|
1343
1352
|
useCustomCell: props.useCustomCell,
|
|
1344
1353
|
useContextMenu: props.useContextMenu,
|
|
@@ -1472,6 +1481,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1472
1481
|
readyChrome = c2;
|
|
1473
1482
|
toolItemsProps.value = c2.getToolItemsProps();
|
|
1474
1483
|
emit("ready", c2.grid, c2);
|
|
1484
|
+
readyGrid.value = c2.grid;
|
|
1475
1485
|
},
|
|
1476
1486
|
onError: reportInitializationError
|
|
1477
1487
|
});
|
|
@@ -1503,7 +1513,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1503
1513
|
useToolBox: props.useToolBox,
|
|
1504
1514
|
useToolBoxSetting: props.useToolBoxSetting,
|
|
1505
1515
|
useExtendFooter: props.useExtendFooter,
|
|
1506
|
-
useSummaryFooter: props.useSummaryFooter,
|
|
1507
1516
|
useSort: props.useSort,
|
|
1508
1517
|
useCustomCell: props.useCustomCell,
|
|
1509
1518
|
useContextMenu: props.useContextMenu,
|
|
@@ -1563,6 +1572,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1563
1572
|
name: toRef(props, "name"),
|
|
1564
1573
|
type: coreConfig.value.mode === "pivot" ? "mozPivotGrid" : "mozFlatGrid",
|
|
1565
1574
|
gridInstance,
|
|
1575
|
+
readyGrid,
|
|
1566
1576
|
// 피벗 카탈로그(AvailableField)에는 컬럼 id 가 없다 — 선언 fields 의 field→id 로 실제 id 를 되찾는다.
|
|
1567
1577
|
// (id 를 f.field 로 채우면 id≠field 그리드에서 Wijmo flat 변환·customCell 대상이 없는 id 로 해석된다.)
|
|
1568
1578
|
getSourceFields: () => {
|
|
@@ -1624,7 +1634,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
1624
1634
|
}
|
|
1625
1635
|
return target;
|
|
1626
1636
|
};
|
|
1627
|
-
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
1637
|
+
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-05d34927"]]);
|
|
1628
1638
|
const CellTemplate = defineComponent({
|
|
1629
1639
|
name: "CellTemplate",
|
|
1630
1640
|
props: {
|
|
@@ -1882,7 +1892,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1882
1892
|
useToolBox: { type: Boolean, default: true },
|
|
1883
1893
|
useToolBoxSetting: { type: Boolean, default: true },
|
|
1884
1894
|
useExtendFooter: { type: Boolean, default: true },
|
|
1885
|
-
useSummaryFooter: { type: Boolean, default: false },
|
|
1886
1895
|
useSort: { type: Boolean, default: true },
|
|
1887
1896
|
useCustomCell: { type: Boolean, default: true },
|
|
1888
1897
|
contextMenuConfig: { default: () => ({}) },
|
|
@@ -1916,7 +1925,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1916
1925
|
reorderableRows: { type: Boolean, default: false },
|
|
1917
1926
|
locale: {},
|
|
1918
1927
|
engine: {},
|
|
1919
|
-
useWorker: { type: Boolean },
|
|
1920
1928
|
loader: {},
|
|
1921
1929
|
preventKeyEdit: { type: Boolean, default: true },
|
|
1922
1930
|
showStatusBar: { type: Boolean },
|
|
@@ -1999,6 +2007,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1999
2007
|
for (const k2 of WRAPPER_EXTRA_KEYS) delete all[k2];
|
|
2000
2008
|
delete all.name;
|
|
2001
2009
|
delete all.locale;
|
|
2010
|
+
const legacySummaryFooter = all.useSummaryFooter === true;
|
|
2011
|
+
delete all.useSummaryFooter;
|
|
2012
|
+
if (legacySummaryFooter && all.summaryRow === void 0) all.summaryRow = "pinnedBottom";
|
|
2002
2013
|
return all;
|
|
2003
2014
|
});
|
|
2004
2015
|
const wrapperConfig = computed(() => {
|
|
@@ -2173,6 +2184,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2173
2184
|
for (const k2 of WRAPPER_EXTRA_KEYS) delete all[k2];
|
|
2174
2185
|
delete all.name;
|
|
2175
2186
|
delete all.locale;
|
|
2187
|
+
const legacySummaryFooter = all.useSummaryFooter === true;
|
|
2188
|
+
delete all.useSummaryFooter;
|
|
2189
|
+
if (legacySummaryFooter && all.summaryRow === void 0) all.summaryRow = "pinnedBottom";
|
|
2176
2190
|
delete all.availableFields;
|
|
2177
2191
|
delete all.useFilter;
|
|
2178
2192
|
all.mode = "pivot";
|
|
@@ -2440,6 +2454,7 @@ export {
|
|
|
2440
2454
|
d as getGridVueLocaleCode,
|
|
2441
2455
|
getRowHeaderCell,
|
|
2442
2456
|
j as jaJP,
|
|
2457
|
+
jsonEditor,
|
|
2443
2458
|
k as koKR,
|
|
2444
2459
|
n as normalizeGridVueLocale,
|
|
2445
2460
|
o as openToast,
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as MozGrid } from '../MozGrid.vue';
|
|
3
|
+
/**
|
|
4
|
+
* DataLoader — 메인 스레드 모드 / Worker 모드
|
|
5
|
+
*
|
|
6
|
+
* 같은 `LocalDataLoader`(DataLoader 하위 클래스)를 두 모드로 붙인다.
|
|
7
|
+
*
|
|
8
|
+
* | 모드 | coreConfig.loader | 데이터 생성·정렬·필터 위치 |
|
|
9
|
+
* |---|---|---|
|
|
10
|
+
* | 메인 스레드 | `{ use: LocalDataLoader, params }` | 메인 스레드 |
|
|
11
|
+
* | Worker | `{ worker: () => new Worker(new URL('./_helpers/localData.worker.ts', import.meta.url), { type: 'module' }), params }` | Worker |
|
|
12
|
+
*
|
|
13
|
+
* Worker 파일(`_helpers/localData.worker.ts`)은 `setupGridWorker({ loader: LocalDataLoader })` 한 줄이다.
|
|
14
|
+
* 건수 버튼은 `grid.updateLoaderParams()` → `grid.refreshLoaderData()` 로 같은 loader 를 다시 부른다.
|
|
15
|
+
*
|
|
16
|
+
* 서버 행 모델(`rowModel: 'server'`) 스토리는 `fetchRange()` 로 화면에 필요한 구간만 받는다 — 아래 '서버 행 모델' 스토리들.
|
|
17
|
+
*/
|
|
18
|
+
declare const meta: Meta<typeof MozGrid>;
|
|
19
|
+
export default meta;
|
|
20
|
+
type Story = StoryObj<typeof MozGrid>;
|
|
21
|
+
/** `loader: { use }` — 메인 스레드에서 DataLoader 를 실행한다. 큰 건수에서는 불러오는 동안 화면이 잠시 멈출 수 있다. */
|
|
22
|
+
export declare const MainThread: Story;
|
|
23
|
+
/** `loader: { worker }` — Worker 안에서 DataLoader 를 실행하고 정렬·필터·집계도 Worker 에서 처리한다. */
|
|
24
|
+
export declare const WorkerMode: Story;
|
|
25
|
+
/** 전체 행 수를 서버가 알려 주는 경우 — 스크롤바가 처음부터 100만 행 길이 */
|
|
26
|
+
export declare const KnownRowCount: Story;
|
|
27
|
+
/** 행 수를 모르는 서버 — 끝에 닿을 때까지 스크롤 범위가 한 블록씩 늘어남 */
|
|
28
|
+
export declare const UnknownRowCount: Story;
|
|
29
|
+
/**
|
|
30
|
+
* 1억 5천만 행 — 브라우저에는 본 블록만 남는다(최대 maxBlocksInCache × blockSize 행).
|
|
31
|
+
* 스크롤 높이는 브라우저 한계(약 1,600만 px)를 넘으므로 그리드가 비율로 위치를 맞춘다.
|
|
32
|
+
*/
|
|
33
|
+
export declare const HundredFiftyMillionRows: Story;
|
|
34
|
+
/**
|
|
35
|
+
* 서버 행 그룹 — 부서 > 이름으로 묶는다. 그룹 행은 `fetchGroups`, 그룹 안 행은 `fetchRange({ groupKeys })`.
|
|
36
|
+
* 화면에 보이는 그룹의 하위 그룹·행만 요청한다. 그룹 행 체크박스는 그 그룹 행 전부를 선택한다(받지 않은 행 포함).
|
|
37
|
+
*/
|
|
38
|
+
export declare const ServerRowGroups: Story;
|
|
39
|
+
/**
|
|
40
|
+
* 서버 트리 — 조직도(본부 20 > 팀 30 > 사원 500, 사원 30만 명). 자식은 `fetchRange({ parentIds })` 로
|
|
41
|
+
* **펼쳐져 있고 화면에 보이는 노드의 것만** 받는다. 팀 중 7번째마다는 자식 수를 모르는(`childCount: true`) 노드라
|
|
42
|
+
* 한 행으로 시작해 받을수록 늘어난다.
|
|
43
|
+
*
|
|
44
|
+
* - `확정` 열은 `checkboxIncludesDescendants` — 부모 칸은 자손 상태(전부/일부/없음), 부모를 누르면 받지 않은 자손까지
|
|
45
|
+
* 범위 수정(`rangeUpdates`, `tree: true`). 실행 취소·저장 가능.
|
|
46
|
+
* - 행 선택은 `selectChildren` — 부모를 고르면 자손 전부(`getRowSelectionState()` 의 `groups[노드 ID]`).
|
|
47
|
+
* - 툴바 검색: `fetchSearch({ tree: true })` — 접힌 노드 아래까지 찾고 조상을 펼친다.
|
|
48
|
+
* - 노드 급여 합계: `treeConfig.aggregates: { salary: 'sum' }` → `grid.tree.getNodeMeta(id).aggregates.sum_salary`
|
|
49
|
+
* (자기 + 자손). `sendChangesToAggregates` 라 급여를 고치면 그 조상의 합계를 `fetchNodeAggregates` 로 다시 묻는다.
|
|
50
|
+
* - `refreshLoaderData({ rowIds })`: 그 행이 든 블록만 다시 받는다.
|
|
51
|
+
* - 이름 열 정렬: 형제 안에서. 필터는 데모 서버가 적용하지 않는다.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ServerTree: Story;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/vue3';
|
|
2
|
+
import { default as MozGrid } from '../MozGrid.vue';
|
|
3
|
+
/**
|
|
4
|
+
* # 객체 값 열 (`dataType: 'object'`)
|
|
5
|
+
*
|
|
6
|
+
* 셀 값이 객체일 때 열에 두 가지를 지정한다.
|
|
7
|
+
*
|
|
8
|
+
* | 옵션 | 뜻 | 쓰이는 곳 |
|
|
9
|
+
* |---|---|---|
|
|
10
|
+
* | `objectKey` | 같은 값 판정 | 묶기 · 값 목록 필터(in) · 객체 값 `=` 필터 · 병합 |
|
|
11
|
+
* | `displayKey` | 보이는 값 | 셀 표시 · 정렬 · 글자 필터 · 크기 비교 · 복사/내보내기 · 글자 편집 |
|
|
12
|
+
*
|
|
13
|
+
* `displayKey` 가 없으면 셀에 객체 JSON 이 그대로 보이고, 편집하면 JSON 편집기(`jsonEditor`)가 열린다.
|
|
14
|
+
*/
|
|
15
|
+
declare const meta: Meta<typeof MozGrid>;
|
|
16
|
+
export default meta;
|
|
17
|
+
type Story = StoryObj<typeof MozGrid>;
|
|
18
|
+
/**
|
|
19
|
+
* ## 한 그리드에서 세 가지 방식
|
|
20
|
+
*
|
|
21
|
+
* - **담당자** — `objectKey: 'id'`, `displayKey: 'name'`
|
|
22
|
+
* - **팀** — 점 표기 경로 `field: 'owner.team.name'` (값은 문자열)
|
|
23
|
+
* - **속성** — 설정 없음 → JSON 표시, JSON 편집기
|
|
24
|
+
*
|
|
25
|
+
* ### 확인할 것
|
|
26
|
+
* - 담당자 헤더 정렬이 **이름 가나다순**인가? (id 순서 u1·u2… 가 아니다)
|
|
27
|
+
* - 툴박스에서 담당자로 묶으면 **김철수가 두 묶음**(u2·u4)으로 나뉘는가?
|
|
28
|
+
* - 담당자 값 목록 필터에 김철수가 두 줄로 나오고, 하나만 체크하면 그 사람 행만 남는가?
|
|
29
|
+
* - 담당자 셀을 더블클릭해 이름을 바꾸면 **같은 사람의 다른 행은 그대로**인가? (그 행 객체만 복사 후 교체)
|
|
30
|
+
* - 속성 셀을 더블클릭(또는 Enter·F2, 글자 입력)하면 JSON 편집기가 열리는가?
|
|
31
|
+
* Ctrl+F 찾기 · Tab 들여쓰기 · 쉼표를 지웠을 때 오류 표시 · Ctrl+Enter 적용 · Esc 취소
|
|
32
|
+
* - 속성 편집기에서 JSON 을 깨뜨린 채 창 밖을 클릭하면 **원래 값이 유지**되는가?
|
|
33
|
+
*/
|
|
34
|
+
export declare const ObjectColumns: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DataLoader } from '@vmscloud/moz-ui-grid-core';
|
|
2
|
-
/** DataLoader.
|
|
1
|
+
import { DataLoader } from '@vmscloud/moz-ui-grid-core/worker';
|
|
2
|
+
/** DataLoader.fetchAll()가 반환하는 데이터 행 타입 */
|
|
3
3
|
type DataRow = Record<string, any>;
|
|
4
4
|
export default class LocalDataLoader extends DataLoader {
|
|
5
|
-
|
|
5
|
+
fetchAll(): Promise<DataRow[]>;
|
|
6
6
|
}
|
|
7
7
|
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DataLoader, ServerGroupFilterModel, FetchAggregatesRequest, FetchAggregatesResult, FetchGroupsRequest, FetchGroupsResult, FetchFilterValuesRequest, FetchFilterValuesResult, FetchRangeRequest, FetchRangeResult, FetchSearchRequest, FetchSearchResult } from '@vmscloud/moz-ui-grid-core/worker';
|
|
2
|
+
import { RangeUpdate } from '@vmscloud/moz-ui-grid-core';
|
|
3
|
+
/**
|
|
4
|
+
* 스토리의 저장 버튼 — `grid.changes.getAll()` 의 수정분을 서버에 반영한다(새 행·삭제는 데모에서 저장하지 않음).
|
|
5
|
+
* 범위 수정(그룹 체크박스·bulkUpdate)은 `UPDATE … WHERE 필터 AND 그룹 결과 필터 AND scope` 처럼 대상 행을 골라 바꾼다
|
|
6
|
+
* (행 ID 목록 범위 `rowIds` 는 `WHERE id IN (…)`)
|
|
7
|
+
* (200만 행 이하만 — 그 이상은 데모 서버가 전부 훑을 수 없음). 범위와 셀 수정은 겹치지 않으므로 순서와 무관하다.
|
|
8
|
+
*/
|
|
9
|
+
export declare function saveServerEdits(changes: {
|
|
10
|
+
modified: Array<{
|
|
11
|
+
rowId: string | number;
|
|
12
|
+
currentData: Record<string, unknown>;
|
|
13
|
+
}>;
|
|
14
|
+
rangeUpdates?: RangeUpdate[];
|
|
15
|
+
}, total: number): void;
|
|
16
|
+
/** 요청 기록 — 스토리 화면에 "몇 번, 어느 구간을 요청했는지" 보여 주기 위함 */
|
|
17
|
+
export declare const serverRequestLog: Array<{
|
|
18
|
+
startRow: number;
|
|
19
|
+
endRow: number;
|
|
20
|
+
sort: string;
|
|
21
|
+
filters: number;
|
|
22
|
+
anchorRow?: number;
|
|
23
|
+
}>;
|
|
24
|
+
export default class ServerRowsLoader extends DataLoader {
|
|
25
|
+
/** 조건(정렬·필터) → 결과 id 목록. 실제 서버의 "조건별 행 번호표" 역할 */
|
|
26
|
+
private resultCache;
|
|
27
|
+
private get total();
|
|
28
|
+
private resultIds;
|
|
29
|
+
fetchRange(req: FetchRangeRequest): Promise<FetchRangeResult>;
|
|
30
|
+
/**
|
|
31
|
+
* 집계 — 하단 합계(selection 없음)와 상태 표시줄 선택 합계(selection 있음).
|
|
32
|
+
* 숫자 열(id, salary)의 sum·count·min·max·avg 를 낸다. 저장 전 편집(changes)이 오면 반영한다.
|
|
33
|
+
* 200만 행을 넘는 결과는 전부 훑지 않고 계산식으로 답한다(예외·편집분만 더하고 뺌, min/max 는 근사).
|
|
34
|
+
*/
|
|
35
|
+
fetchAggregates(req: FetchAggregatesRequest): Promise<FetchAggregatesResult>;
|
|
36
|
+
/**
|
|
37
|
+
* 그룹 목록 — groupKeys 아래 다음 그룹 열로 묶은 그룹(값·행 수·집계·하위 그룹 수).
|
|
38
|
+
* 200만 행 이하에서만(그 이상은 전부 훑을 수 없음).
|
|
39
|
+
*/
|
|
40
|
+
fetchGroups(req: FetchGroupsRequest): Promise<FetchGroupsResult>;
|
|
41
|
+
private survivingCache;
|
|
42
|
+
/** 저장(saveServerEdits)용 — 행 수를 지정해 그룹 결과 필터 통과 행을 구한다 */
|
|
43
|
+
survivingIdsFor(total: number, filterModel: FetchRangeRequest['filterModel'], groupColumns: string[], model: ServerGroupFilterModel): Set<number>;
|
|
44
|
+
/**
|
|
45
|
+
* 그룹 결과 필터를 통과하는 행 — 행 필터 후 그룹별 행 수·집계로 맨 아래 그룹 경로마다 판정한다(그리드와 같은 규칙,
|
|
46
|
+
* 판정 함수는 core 의 createGroupFilterPredicate). 실제 서버라면 GROUP BY … HAVING 으로 한다.
|
|
47
|
+
*/
|
|
48
|
+
private survivingIds;
|
|
49
|
+
/** 현재 필터 결과 전체를 집계에 더한다 */
|
|
50
|
+
private addAllRows;
|
|
51
|
+
/** 툴바 검색 — 현재 조건의 결과에서 일치하는 셀(최대 1,000개) */
|
|
52
|
+
fetchSearch(req: FetchSearchRequest): Promise<FetchSearchResult>;
|
|
53
|
+
/** 필터 값 목록(체크박스) — 열마다 가능한 값 */
|
|
54
|
+
fetchFilterValues(req: FetchFilterValuesRequest): Promise<FetchFilterValuesResult>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DataLoader, FetchNodeAggregatesRequest, FetchNodeAggregatesResult, FetchPathRequest, FetchRangeRequest, FetchRangeResult, FetchSearchRequest, FetchSearchResult, TreeNodeLocation } from '@vmscloud/moz-ui-grid-core/worker';
|
|
2
|
+
import { RangeUpdate } from '@vmscloud/moz-ui-grid-core';
|
|
3
|
+
export declare const treeRequestLog: string[];
|
|
4
|
+
/** 저장 버튼 — 셀 수정과 트리 범위 수정을 "DB"에 반영한다 */
|
|
5
|
+
export declare function saveTreeEdits(changes: {
|
|
6
|
+
modified: Array<{
|
|
7
|
+
rowId: string | number;
|
|
8
|
+
currentData: Record<string, unknown>;
|
|
9
|
+
}>;
|
|
10
|
+
rangeUpdates?: RangeUpdate[];
|
|
11
|
+
}): void;
|
|
12
|
+
export default class ServerTreeLoader extends DataLoader {
|
|
13
|
+
fetchRange(req: FetchRangeRequest): Promise<FetchRangeResult>;
|
|
14
|
+
/** 저장 전 편집을 반영한 노드 급여 합계 — 저장된 서브트리 합에 편집 차이를 더한다 */
|
|
15
|
+
fetchNodeAggregates(req: FetchNodeAggregatesRequest): Promise<FetchNodeAggregatesResult>;
|
|
16
|
+
fetchSearch(req: FetchSearchRequest): Promise<FetchSearchResult>;
|
|
17
|
+
fetchPath(req: FetchPathRequest): Promise<TreeNodeLocation | null>;
|
|
18
|
+
}
|