@vmscloud/moz-ui-grid-vue 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,6 +106,11 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
106
106
  "onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
107
107
  }>, {
108
108
  height: string | number;
109
+ useRowGroupSettings: boolean;
110
+ useFieldSettings: boolean;
111
+ useFormatSettings: boolean;
112
+ useLayoutSettings: boolean;
113
+ useAggregateSettings: boolean;
109
114
  useToolBox: boolean;
110
115
  useToolBoxSetting: boolean;
111
116
  useExtendFooter: boolean;
@@ -25,6 +25,11 @@ declare function __VLS_template(): {
25
25
  readonly useMultipleChart?: boolean | undefined;
26
26
  readonly chartIncludeGrandTotal?: boolean | undefined;
27
27
  readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
28
+ readonly useRowGroupSettings?: boolean | undefined;
29
+ readonly useFieldSettings?: boolean | undefined;
30
+ readonly useFormatSettings?: boolean | undefined;
31
+ readonly useLayoutSettings?: boolean | undefined;
32
+ readonly useAggregateSettings?: boolean | undefined;
28
33
  readonly useToolBox?: boolean | undefined;
29
34
  readonly useToolBoxSetting?: boolean | undefined;
30
35
  readonly useExtendFooter?: boolean | undefined;
@@ -180,6 +185,11 @@ declare function __VLS_template(): {
180
185
  "update:coreConfig": (value: MozGridCoreProps) => any;
181
186
  }, string, {
182
187
  height: string | number;
188
+ useRowGroupSettings: boolean;
189
+ useFieldSettings: boolean;
190
+ useFormatSettings: boolean;
191
+ useLayoutSettings: boolean;
192
+ useAggregateSettings: boolean;
183
193
  useToolBox: boolean;
184
194
  useToolBoxSetting: boolean;
185
195
  useExtendFooter: boolean;
@@ -211,6 +221,11 @@ declare function __VLS_template(): {
211
221
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
212
222
  } & Readonly<{
213
223
  height: string | number;
224
+ useRowGroupSettings: boolean;
225
+ useFieldSettings: boolean;
226
+ useFormatSettings: boolean;
227
+ useLayoutSettings: boolean;
228
+ useAggregateSettings: boolean;
214
229
  useToolBox: boolean;
215
230
  useToolBoxSetting: boolean;
216
231
  useExtendFooter: boolean;
@@ -259,7 +274,7 @@ declare function __VLS_template(): {
259
274
  "onColumn:visibility"?: ((payload: unknown) => any) | undefined;
260
275
  onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
261
276
  "onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
262
- }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
277
+ }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
263
278
  grid: PureSheet;
264
279
  slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
265
280
  ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
@@ -379,6 +394,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
379
394
  readonly useMultipleChart?: boolean | undefined;
380
395
  readonly chartIncludeGrandTotal?: boolean | undefined;
381
396
  readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
397
+ readonly useRowGroupSettings?: boolean | undefined;
398
+ readonly useFieldSettings?: boolean | undefined;
399
+ readonly useFormatSettings?: boolean | undefined;
400
+ readonly useLayoutSettings?: boolean | undefined;
401
+ readonly useAggregateSettings?: boolean | undefined;
382
402
  readonly useToolBox?: boolean | undefined;
383
403
  readonly useToolBoxSetting?: boolean | undefined;
384
404
  readonly useExtendFooter?: boolean | undefined;
@@ -534,6 +554,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
534
554
  "update:coreConfig": (value: MozGridCoreProps) => any;
535
555
  }, string, {
536
556
  height: string | number;
557
+ useRowGroupSettings: boolean;
558
+ useFieldSettings: boolean;
559
+ useFormatSettings: boolean;
560
+ useLayoutSettings: boolean;
561
+ useAggregateSettings: boolean;
537
562
  useToolBox: boolean;
538
563
  useToolBoxSetting: boolean;
539
564
  useExtendFooter: boolean;
@@ -565,6 +590,11 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
565
590
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
566
591
  } & Readonly<{
567
592
  height: string | number;
593
+ useRowGroupSettings: boolean;
594
+ useFieldSettings: boolean;
595
+ useFormatSettings: boolean;
596
+ useLayoutSettings: boolean;
597
+ useAggregateSettings: boolean;
568
598
  useToolBox: boolean;
569
599
  useToolBoxSetting: boolean;
570
600
  useExtendFooter: boolean;
@@ -613,7 +643,7 @@ declare const __VLS_component: import('vue').DefineComponent<MozGridVueProps, {
613
643
  "onColumn:visibility"?: ((payload: unknown) => any) | undefined;
614
644
  onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
615
645
  "onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
616
- }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
646
+ }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
617
647
  grid: PureSheet;
618
648
  slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
619
649
  ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
@@ -24,6 +24,11 @@ declare function __VLS_template(): {
24
24
  readonly useMultipleChart?: boolean | undefined;
25
25
  readonly chartIncludeGrandTotal?: boolean | undefined;
26
26
  readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
27
+ readonly useRowGroupSettings?: boolean | undefined;
28
+ readonly useFieldSettings?: boolean | undefined;
29
+ readonly useFormatSettings?: boolean | undefined;
30
+ readonly useLayoutSettings?: boolean | undefined;
31
+ readonly useAggregateSettings?: boolean | undefined;
27
32
  readonly useToolBox?: boolean | undefined;
28
33
  readonly useToolBoxSetting?: boolean | undefined;
29
34
  readonly useExtendFooter?: boolean | undefined;
@@ -179,6 +184,11 @@ declare function __VLS_template(): {
179
184
  "update:coreConfig": (value: MozGridCoreProps) => any;
180
185
  }, string, {
181
186
  height: string | number;
187
+ useRowGroupSettings: boolean;
188
+ useFieldSettings: boolean;
189
+ useFormatSettings: boolean;
190
+ useLayoutSettings: boolean;
191
+ useAggregateSettings: boolean;
182
192
  useToolBox: boolean;
183
193
  useToolBoxSetting: boolean;
184
194
  useExtendFooter: boolean;
@@ -210,6 +220,11 @@ declare function __VLS_template(): {
210
220
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
211
221
  } & Readonly<{
212
222
  height: string | number;
223
+ useRowGroupSettings: boolean;
224
+ useFieldSettings: boolean;
225
+ useFormatSettings: boolean;
226
+ useLayoutSettings: boolean;
227
+ useAggregateSettings: boolean;
213
228
  useToolBox: boolean;
214
229
  useToolBoxSetting: boolean;
215
230
  useExtendFooter: boolean;
@@ -258,7 +273,7 @@ declare function __VLS_template(): {
258
273
  "onColumn:visibility"?: ((payload: unknown) => any) | undefined;
259
274
  onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
260
275
  "onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
261
- }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
276
+ }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
262
277
  grid: PureSheet;
263
278
  slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
264
279
  ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
@@ -340,6 +355,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
340
355
  readonly useMultipleChart?: boolean | undefined;
341
356
  readonly chartIncludeGrandTotal?: boolean | undefined;
342
357
  readonly chartMap?: Record<string, import('../../../moz-ui-grid-wrapper/src/chart/chartUtils').ChartSeriesConfig> | undefined;
358
+ readonly useRowGroupSettings?: boolean | undefined;
359
+ readonly useFieldSettings?: boolean | undefined;
360
+ readonly useFormatSettings?: boolean | undefined;
361
+ readonly useLayoutSettings?: boolean | undefined;
362
+ readonly useAggregateSettings?: boolean | undefined;
343
363
  readonly useToolBox?: boolean | undefined;
344
364
  readonly useToolBoxSetting?: boolean | undefined;
345
365
  readonly useExtendFooter?: boolean | undefined;
@@ -495,6 +515,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
495
515
  "update:coreConfig": (value: MozGridCoreProps) => any;
496
516
  }, string, {
497
517
  height: string | number;
518
+ useRowGroupSettings: boolean;
519
+ useFieldSettings: boolean;
520
+ useFormatSettings: boolean;
521
+ useLayoutSettings: boolean;
522
+ useAggregateSettings: boolean;
498
523
  useToolBox: boolean;
499
524
  useToolBoxSetting: boolean;
500
525
  useExtendFooter: boolean;
@@ -526,6 +551,11 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
526
551
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
527
552
  } & Readonly<{
528
553
  height: string | number;
554
+ useRowGroupSettings: boolean;
555
+ useFieldSettings: boolean;
556
+ useFormatSettings: boolean;
557
+ useLayoutSettings: boolean;
558
+ useAggregateSettings: boolean;
529
559
  useToolBox: boolean;
530
560
  useToolBoxSetting: boolean;
531
561
  useExtendFooter: boolean;
@@ -574,7 +604,7 @@ declare const __VLS_component: import('vue').DefineComponent<PivotGridProps, {
574
604
  "onColumn:visibility"?: ((payload: unknown) => any) | undefined;
575
605
  onReady?: ((grid: PureSheet, chrome: GridChrome) => any) | undefined;
576
606
  "onUpdate:coreConfig"?: ((value: MozGridCoreProps) => any) | undefined;
577
- }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
607
+ }>, "group" | "sort" | "filter" | "pivot" | "search" | "excel" | "ui" | "grid" | "slots" | "customCell" | "columnFormat" | "chrome" | ("height" | "useRowGroupSettings" | "useFieldSettings" | "useFormatSettings" | "useLayoutSettings" | "useAggregateSettings" | "useToolBox" | "useToolBoxSetting" | "useExtendFooter" | "useSummaryFooter" | "useSort" | "useCustomCell" | "useContextMenu" | "usePivotBar" | "useBuiltinTooltip") | "bulkEditor" | "columnSettings" | "contextMenu" | "chart"> & {
578
608
  grid: PureSheet;
579
609
  slots: import('../../../moz-ui-grid-wrapper/src/index.ts').SlotHost;
580
610
  ui: Required<import('../../../moz-ui-grid-wrapper/src/index.ts').WrapperUIOptions>;
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var e=Object.defineProperty,t=(t,o,l)=>((t,o,l)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[o]=l)(t,"symbol"!=typeof o?o+"":o,l);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),l=require("@vmscloud/moz-ui-grid-wrapper"),n=require("./chunks/notification.contract-oFkBaE2U.cjs"),r=require("lit-html"),i=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:l,exportDef:n,importDef:r,strict:i,dependencies:s,manualLifeCycle:a}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pendingDef"),t(this,"_pending"),t(this,"dispose",()=>{}),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=l,this._importDef=r,this._exportDef=n,this._default=n(),this._pending=!1,this._pendingDef=null,this.strict=i??!1,this.dependencies=s??null,a||o.onBeforeUnmount(()=>{this.dispose()})}get pending(){return this._pending}set pending(e){if(this._pending=e,!e&&this._pendingDef)try{this._importDef(this._pendingDef),this.setApplied(!0)}catch(t){}finally{this._pendingDef=null}}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.pending?this._pendingDef=e:(this._importDef(e),this.setApplied(!0))}setDefaultToCurrent(){this._default=this._exportDef()}}const c=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)});let p=null;function m(){if(p)return p;const e=o.ref(!1),t=o.shallowRef(null),l=o.ref({}),n={showPopup:e,activeGrid:t,defaultImportOptions:l,show:(o,n={})=>{t.value=o,l.value=n,e.value=!0},hide:()=>{e.value=!1}};return p=n,n}function f(){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 g(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 v(){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(),n=new l.Popup({title:o.clientExcelImport,width:540,height:440,closeOnOutsideClick:!0,contentsPadding:"16px",className:"mzc-client-excel-popup",draggable:!0,resizeable:!1,onClose:()=>this.handleClosed(n)});this.popup=n,n.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,n=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=n?r.html`
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"),r=require("lit-html"),i=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:r,strict:i,dependencies:s,manualLifeCycle:a}){t(this,"uniqueId"),t(this,"_id"),t(this,"_type"),t(this,"_default"),t(this,"_importDef"),t(this,"_exportDef"),t(this,"_pendingDef"),t(this,"_pending"),t(this,"dispose",()=>{}),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=r,this._exportDef=l,this._default=l(),this._pending=!1,this._pendingDef=null,this.strict=i??!1,this.dependencies=s??null,a||o.onBeforeUnmount(()=>{this.dispose()})}get pending(){return this._pending}set pending(e){if(this._pending=e,!e&&this._pendingDef)try{this._importDef(this._pendingDef),this.setApplied(!0)}catch(t){}finally{this._pendingDef=null}}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.pending?this._pendingDef=e:(this._importDef(e),this.setApplied(!0))}setDefaultToCurrent(){this._default=this._exportDef()}}const c=()=>o.inject("user-layout-module",{register:()=>{},currentPreset:o.ref(null)});let p=null;function m(){if(p)return p;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 p=l,l}function f(){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 g(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 v(){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?r.html`
2
2
  ${"replace"===t?r.html`<span class="mzc-client-excel-dropzone__line">${e.overwriteSelected}</span>`:r.nothing}
3
- <span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${n.name}</span></span>
3
+ <span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${l.name}</span></span>
4
4
  `:r.html`
5
5
  <span class="mzc-client-excel-dropzone__line">
6
6
  ${e.dropHerePrefix}<span class="mzc-client-excel-dropzone__accent">${e.click}</span>${e.dropHereMiddle}<span class="mzc-client-excel-dropzone__accent">${e.drag}</span>${e.dropHereSuffix}
@@ -10,12 +10,12 @@
10
10
  <div class="mzc-client-excel-options">
11
11
  <div class="mzc-client-excel-option">
12
12
  <span class="mzc-client-excel-option__label">${e.importMode}</span>
13
- ${l.radio({variant:"borderless",value:t,options:a,ariaLabel:e.importMode,onChange:e=>{this.options.mode=e,this.update()}})}
13
+ ${n.radio({variant:"borderless",value:t,options:a,ariaLabel:e.importMode,onChange:e=>{this.options.mode=e,this.update()}})}
14
14
  </div>
15
15
  ${"replace"!==t?r.html`
16
16
  <div class="mzc-client-excel-option mzc-client-excel-option--grow">
17
17
  <span class="mzc-client-excel-option__label">${e.conflictStrategy}</span>
18
- ${l.select({value:o,options:u,width:"100%",ariaLabel:e.conflictStrategy,onChange:e=>{this.options.conflictStrategy=e,this.update()}})}
18
+ ${n.select({value:o,options:u,width:"100%",ariaLabel:e.conflictStrategy,onChange:e=>{this.options.conflictStrategy=e,this.update()}})}
19
19
  </div>
20
20
  `:r.nothing}
21
21
  </div>
@@ -28,11 +28,11 @@
28
28
  aria-label=${e.clientExcelImport}
29
29
  @dragover=${e=>{e.preventDefault(),this.dropActive||(this.dropActive=!0,this.update())}}
30
30
  @dragleave=${e=>{e.preventDefault(),this.dropActive&&(this.dropActive=!1,this.update())}}
31
- @drop=${e=>{var t,o;e.preventDefault(),this.dropActive=!1;const l=null==(o=null==(t=e.dataTransfer)?void 0:t.files)?void 0:o[0];l?this.setFile(l):this.update()}}
31
+ @drop=${e=>{var t,o;e.preventDefault(),this.dropActive=!1;const n=null==(o=null==(t=e.dataTransfer)?void 0:t.files)?void 0:o[0];n?this.setFile(n):this.update()}}
32
32
  @click=${d}
33
33
  @keydown=${e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),d(e))}}
34
34
  >
35
- ${n?r.html`
35
+ ${l?r.html`
36
36
  <svg xmlns="http://www.w3.org/2000/svg" width="89" height="89" viewBox="0 0 89 89" fill="none" aria-hidden="true">
37
37
  <circle cx="44.1176" cy="44.1176" r="44.1176" fill="#E1E9FF" />
38
38
  <g transform="translate(29.5, 29.5)">
@@ -72,6 +72,6 @@
72
72
  </div>
73
73
  </div>
74
74
  `}footer(){const e=s.getGridVueLocale();return r.html`
75
- ${l.button({label:e.check,variant:"primary",disabled:!this.file,onClick:()=>this.confirm()})}
76
- ${l.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 l=s.getGridVueLocale(),n=this.deps.notificationStore(),r=f(),i=t.name,a=()=>null==n?void 0:n.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});n&&n.eventMessages.unshift({noti_type:"progress",header_key:l.clientExcelImportProgress,noti_datetime:v(),noti_sender_id:"",prop_value:{session_id:r,file_name:i,status:"in_progress",progress_per:0,operation_type:"upload",remain_time:-1}});try{const l=e.changes;(null==l?void 0:l.hasChanges)&&await l.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 i=a();(null==i?void 0:i.prop_value)&&(i.prop_value.status="completed",i.prop_value.progress_per=100),n&&setTimeout(()=>{const e=n.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-1!==e&&n.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 y={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const l=m(),r=n.useGridNotificationStore(),i=new x({notificationStore:()=>r,onHidden:()=>l.hide()});return o.watch(l.showPopup,e=>{if(e){const e=l.activeGrid.value;e&&i.open(e,l.defaultImportOptions.value)}else i.close()},{immediate:!0}),o.onBeforeUnmount(()=>i.destroy()),t({controller:i}),(e,t)=>(o.openBlock(),o.createElementBlock("span",y))}});class _{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,l,n={}){const r=this.instances.get(e);if(r)return void Object.assign(r.props,n);const i=o.reactive({...n}),s=o.createApp({render:()=>o.h(l,i)});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:i}),s.mount(t)}mountInstance(e,t,l){const n=o.reactive({...l}),r=o.createApp({render:()=>t(n)});return this.appContext&&(r._context.provides={...this.appContext.provides},r._context.components={...this.appContext.components},r._context.directives={...this.appContext.directives},r._context.config.globalProperties={...this.appContext.config.globalProperties}),r.mount(e),{update:e=>{Object.assign(n,e)},destroy:()=>{r.unmount()}}}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 w(e,t,o){return e.map(e=>{const l={...e},n=t.get("cell",e.id);if(null==n?void 0:n.slot){const t=n.slot;l.cellRenderer=function(e,t,o){const l=e=>({value:e.value,rowData:e.rowData,columnId:e.columnId,rowId:e.rowId}),n=(e,n)=>{const r=o.mountInstance(e,e=>t(e),l(n));return{update:e=>(r.update(l(e)),!0),destroy(){r.destroy()}}};return n.__cellRendererKind="lifecycle",n}(e.id,t,o)}const r=t.get("header",e.id);if(null==r?void 0:r.slot){const t=r.slot;l.headerRenderer=function(e,t,o){return l=>{const n=document.createElement("div");n.style.display="contents";const r=`header:${e}`,i={columnId:l.columnId,header:l.header};return o.mount(r,n,{render:()=>t(i)},i),n}}(e.id,t,o)}const i=t.get("editor",e.id);if(null==i?void 0:i.slot){const t=i.slot;l.editor=function(e,t,o){return{type:"custom",renderer:l=>{const n=document.createElement("div");n.style.display="contents";const r=`editor:${e}`,i={value:l.value,rowData:l.rowData,columnId:e,onCommit:l.onCommit,onCancel:l.onCancel};return o.mount(r,n,{render:()=>t(i)},i),n},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return l})}const S=Symbol("moz-grid-instance"),b=Symbol("moz-grid-container"),M=Symbol("moz-grid-renderer"),E=Symbol("moz-grid-template-registry"),B=Symbol("moz-grid-filter-module"),R=Symbol("moz-grid-sort-module"),k=Symbol("moz-grid-custom-cell-module"),P=Symbol("moz-grid-bulk-editor-module"),T=((e,t)=>{const o=e.__vccOpts||e;for(const[l,n]of t)o[l]=n;return o})(o.defineComponent({__name:"MozGrid",props:o.mergeModels({height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},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},name:{}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["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","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:r}){const i=o.useModel(e,"coreConfig"),a=e,u=r,p=o.ref(),f=o.useSlots(),g=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),h=new _,v=function(){const e=o.reactive([]);function t(e,t){return t?`${e}:${t}`:e}return{register(o){const l=e.findIndex(e=>t(e.type,e.fieldId)===t(o.type,o.fieldId));l>=0?e[l]=o:e.push(o)},unregister(o,l){const n=t(o,l),r=e.findIndex(e=>t(e.type,e.fieldId)===n);r>=0&&e.splice(r,1)},get(o,l){const n=t(o,l);return e.find(e=>t(e.type,e.fieldId)===n)},getAll:t=>e.filter(e=>e.type===t)}}(),x=o.shallowRef(null),y=m();s.setGridVueLocale(a.locale),o.watch(()=>a.locale,e=>s.setGridVueLocale(e));const B=o.ref();let R=null;const k=o.ref({disabled:!0,hasItem:!1}),P=n.useGridNotificationStore(),T=e=>String(e).padStart(2,"0"),z=()=>{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==P?void 0:P.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),F=e=>{if(!P)return;const t=P.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&P.eventMessages.splice(t,1)};let I=null;const H={onExportStart:e=>{P&&(I=$(),P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:z(),noti_sender_id:"",prop_value:{session_id:I,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!I)return;const t=D(I);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(!I)return;const t=I,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(()=>F(t),2e3),I=null},onExportError:e=>{if(!I)return;const t=D(I);(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),I=null},onExportCancel:()=>{I&&(F(I),I=null)},onImportComplete:()=>{if(!P)return;const e=$();P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:z(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>F(e),2e3)},onImportError:e=>{P&&P.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:z(),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(!x.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};y.show(x.value,t)}};o.provide(E,v),o.provide(M,h),o.provide(S,x),o.provide(b,B);const V=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function G(e){return t=>{const o={render:()=>{var t,o;return("tool-items"===e?null==(t=f[e])?void 0:t.call(f,k.value):null==(o=f[e])?void 0:o.call(f))??null}},l=`slot:${e}`;return h.mount(l,t,o,{}),()=>h.unmount(l)}}let L,O;function A(){const e={...i.value},t=function(){const e=i.value.fields;return e===L||(L=e,O=e?w(e,v,h):void 0),O}();return t&&(e.fields=t),void 0!==a.locale&&(e.locale=a.locale),e}const U=["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 j=[];function N(){for(const e of j)try{e()}catch{}j=[]}function Y(){if(!p.value)return null;h.setAppContext(g);const e=new l.GridChrome(p.value,A(),function(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state"],t={};for(const o of e)f[o]&&(t[o]=G(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,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,loading:a.loading,locale:a.locale,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{k.value=e},excelHooks:H}}());R=e,x.value=e.grid,B.value=p.value;const t=u;e.on("data:loaded",()=>u("data:loaded"));for(const o of U)e.on(o,e=>t(o,e));return j.push(e.onConfigChange(()=>{i.value=e.getCoreConfig(i.value),e.syncAppliedConfig(A())})),e}function K(){if(!R)return;const{reinitRequired:e}=R.reconcileCoreConfig(A());e&&async function(){if(!R)return;const e=R.captureReinitState();N(),R.destroy(),R=null,h.unmountAll();const t=Y();if(!t)return;await t.ready(),await t.restoreReinitState(e),k.value=t.getToolItemsProps(),u("ready",t.grid,t)}()}o.onMounted(async()=>{await async function(){const e=Y();e&&(await e.ready(),k.value=e.getToolItemsProps(),u("ready",e.grid,e))}(),o.watch(()=>{const e=i.value;e.data,e.fields;const t={_locale:a.locale};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>K(),{deep:!0}),o.watch(()=>({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}),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.onBeforeUnmount(()=>{N(),null==R||R.destroy(),R=null,x.value=null,h.unmountAll()}),function(e){const{register:t}=c(),l=new d({id:e.name.value,type:e.type,importDef:async t=>{var o,n,r,i;const s=e.gridInstance.value;if(s){if(!t){const t=l.default;return void(t&&(await s.applyConfig(t),t.customCellConfig&&(null==(o=e.setCustomCellState)||o.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(n=e.setColumnFormatState)||n.call(e,t.columnFormatConfig))))}await s.applyConfig(t),t.customCellConfig&&(null==(r=e.setCustomCellState)||r.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(i=e.setColumnFormatState)||i.call(e,t.columnFormatConfig))}},exportDef:()=>{var t,o;const l=e.gridInstance.value;return l?{...l.getConfig(),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null}:null}});let n=!1;o.watch(e.gridInstance,r=>{if(!r||n)return;if(!e.name.value)return;const i=r.on("data:loaded",()=>{n||(l.setDefaultToCurrent(),o.nextTick(()=>{t(l),n=!0,i()}))})})}({name:o.toRef(a,"name"),type:"pivot"===i.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:x,getCustomCellState:()=>(null==R?void 0:R.customCell.getCustomCell())??null,setCustomCellState:e=>{e&&R&&R.customCell.setCustomCell(e)},getColumnFormatState:()=>(null==R?void 0:R.columnFormat.getConfig())??null,setColumnFormatState:e=>{e&&R&&R.columnFormat.setConfig(e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return R;const o=R;if(!o)return;const l=o[t];return"function"==typeof l?l.bind(o):l},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:p,class:"moz-grid-chrome",style:o.normalizeStyle(V.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),x.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-eac44841"]]),z=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"cell",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("cell",e.field)}),()=>null):()=>null}}),$=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"header",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("header",e.field)}),()=>null):()=>null}}),D=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(E),l=o.useSlots();return t?(o.onMounted(()=>{l.default&&t.register({type:"editor",fieldId:e.field,slot:l.default})}),o.onBeforeUnmount(()=>{t.unregister("editor",e.field)}),()=>null):()=>null}}),F=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(S),l=o.inject(M),n=o.useSlots();return t&&l?(o.onMounted(()=>{const o=t.value;if(!o||!n.default)return;const r=n.default;o.masterDetail.setConfig({minHeight:e.minHeight,maxHeight:e.maxHeight,singleExpand:e.singleExpand,keepMasterDetailRows:e.keepDetailRows,renderer:(e,t,o)=>{const n=`detail:${o}`,i={parentData:t,dataIndex:o};return l.mount(n,e,{render:()=>r(i)},i),()=>{l.unmount(n)}}})}),o.onBeforeUnmount(()=>{null==l||l.unmountByPrefix("detail:")}),()=>null):()=>null}}),I=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(S),t=o.inject(M),l=o.useSlots();return e&&t?(o.onMounted(()=>{const o=e.value;if(!o||!l.default)return;const n=l.default;o.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const o=e.ctx,l=o.element;if(!l)return;const r=`group:${o.viewIndex}`,i={groupKey:o.column,groupValue:o.value,level:o.level,count:o.itemCount,isExpanded:!o.collapsed};t.mount(r,l,{render:()=>n(i)},i)})}),o.onBeforeUnmount(()=>{var o;null==t||t.unmountByPrefix("group:"),null==(o=e.value)||o.formatRow.removeHandler("_groupTemplate")}),()=>null):()=>null}});let H=!1;function V(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(H||(H=!0),e.formatHeader)}),e):null}const G=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:n}){const r=e,i=n,s=o.computed(()=>{const e={...r};for(const t of l.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,e}),a=o.computed(()=>{const e=r,t={};for(const o of l.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)=>i(e,...t)]));u.ready=e=>i("ready",V(e));const d=o.ref(null);function c(){return d.value??null}const p={};return Object.defineProperties(p,{grid:{enumerable:!0,get:()=>{var e;return V(null==(e=c())?void 0:e.grid)}},core:{enumerable:!0,get:()=>p},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.bulkEditor}}}),p.refresh=async()=>{var e,t;return null==(t=null==(e=c())?void 0:e.grid)?void 0:t.refresh()},p.loadData=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.loadData(e)},p.sort=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.sort(e)},p.filter=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.filter(e)},t(p),(e,t)=>(o.openBlock(),o.createBlock(T,o.mergeProps({ref_key:"mozRef",ref:d,coreConfig:s.value},a.value,{name:r.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"]))}}),L=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:n}){const r=e,i=n,s=o.computed(()=>{const e={...r};for(const t of l.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=r,t={};for(const o of l.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)=>i(e,...t)]));function d(e){var t,o,l;const n=e;i("update:rowFields",n.rowFields??[]),i("update:columnFields",n.columnFields??[]),i("update:valueFields",n.valueFields??[]);const r=null==(l=null==(o=null==(t=p())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:l.call(o);r&&i("pivot:configured",r)}u.ready=e=>i("ready",V(e));const c=o.ref(null);function p(){return c.value??null}function m(){var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.pivot}const f=o.computed({get:()=>{var e,t;return(null==(t=null==(e=p())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=p())?void 0:t.chart)?void 0:o.setVisible(e)}}),g={};return Object.defineProperties(g,{grid:{enumerable:!0,get:()=>{var e;return V(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>g},pivotApi:{enumerable:!0,get:()=>m()??null},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}},showChart:{enumerable:!0,get:()=>f.value,set:e=>{f.value=e}}}),g.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},g.setConfig=async e=>{var t;return null==(t=m())?void 0:t.setConfig(e)},g.getResult=()=>{var e;return(null==(e=m())?void 0:e.getResult())??null},g.expandAll=async()=>{var e;return null==(e=m())?void 0:e.expandAllRows()},g.collapseAll=async()=>{var e;return null==(e=m())?void 0:e.collapseAllRows()},g.expandToLevel=async e=>{var t;return null==(t=m())?void 0:t.expandRowToLevel(e)},g.toggleChart=()=>{f.value=!f.value},t(g),(e,t)=>(o.openBlock(),o.createBlock(T,o.mergeProps({ref_key:"mozRef",ref:c,coreConfig:s.value},a.value,{name:r.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=n.GridNotificationKey,exports.provideGridNotification=n.provideGridNotification,exports.useGridNotificationStore=n.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=D,exports.CellTemplate=z,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=F,exports.GRID_BULK_EDITOR_MODULE_KEY=P,exports.GRID_CUSTOM_CELL_MODULE_KEY=k,exports.GRID_FILTER_MODULE_KEY=B,exports.GRID_INSTANCE_KEY=S,exports.GRID_RENDERER_KEY=M,exports.GRID_SORT_MODULE_KEY=R,exports.GRID_TEMPLATE_REGISTRY_KEY=E,exports.GroupTemplate=I,exports.HeaderTemplate=$,exports.MozGrid=T,exports.MozGridVue=G,exports.MozPivotVue=L,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=_,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),l=document.createElement("a");l.href=o,l.download=t,l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const l=await e.pivot.getDataMatrix();if(!l)return;t=l.headers,o=l.rows}else{const l=await e.getExportData({scope:"all"});if(!l)return;const{headers:n,rows:r}=l,i=n.map(e=>e.id);t=n.map(e=>e.header),o=r.map(e=>i.map(t=>e[t]))}const l=[];l.push(t.map(g).join(","));for(const a of o)l.push(a.map(g).join(","));const n="\ufeff"+l.join("\r\n"),r=new Blob([n],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(i)},exports.generateSessionId=f,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 l=!1;const n=()=>{o.parentNode&&o.parentNode.removeChild(o)};o.onchange=()=>{if(l)return;l=!0;const e=o.files&&o.files.length>0?o.files[0]:null;n(),t(e)};const r=()=>{window.removeEventListener("focus",r),setTimeout(()=>{l||(l=!0,n(),t(null))},300)};window.addEventListener("focus",r),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var l;const n=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,r=f();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:r,file_name:n,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}});try{if(await e.io.saveExcelToFile({scope:"all",includeHeaders:!0,suggestedName:n,fallbackToDownload:!0,sheetSplit:"auto",onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});if(!(null==t?void 0:t.prop_value))return;let l="number"==typeof e.percent?e.percent:void 0;void 0===l&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(l=e.rowsProcessed/e.totalRows*100),"number"==typeof l&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(l))))},...t.clientExportOptions??{}}),o){const e=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});(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)===r});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(l=t.onClientExportComplete)||l.call(t,new Blob)}catch(i){if(i instanceof DOMException&&"AbortError"===i.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-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)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=i instanceof Error?i.message:String(i),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=m,exports.useUserLayoutModule=c;
75
+ ${n.button({label:e.check,variant:"primary",disabled:!this.file,onClick:()=>this.confirm()})}
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(),r=f(),i=t.name,a=()=>null==l?void 0:l.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});l&&l.eventMessages.unshift({noti_type:"progress",header_key:n.clientExcelImportProgress,noti_datetime:v(),noti_sender_id:"",prop_value:{session_id:r,file_name:i,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 i=a();(null==i?void 0:i.prop_value)&&(i.prop_value.status="completed",i.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)===r});-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 y={class:"mzc-client-excel-host",hidden:""},C=o.defineComponent({__name:"ClientExcelUploadPopup",setup(e,{expose:t}){const n=m(),r=l.useGridNotificationStore(),i=new x({notificationStore:()=>r,onHidden:()=>n.hide()});return o.watch(n.showPopup,e=>{if(e){const e=n.activeGrid.value;e&&i.open(e,n.defaultImportOptions.value)}else i.close()},{immediate:!0}),o.onBeforeUnmount(()=>i.destroy()),t({controller:i}),(e,t)=>(o.openBlock(),o.createElementBlock("span",y))}});class _{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,n,l={}){const r=this.instances.get(e);if(r)return void Object.assign(r.props,l);const i=o.reactive({...l}),s=o.createApp({render:()=>o.h(n,i)});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:i}),s.mount(t)}mountInstance(e,t,n){const l=o.reactive({...n}),r=o.createApp({render:()=>t(l)});return this.appContext&&(r._context.provides={...this.appContext.provides},r._context.components={...this.appContext.components},r._context.directives={...this.appContext.directives},r._context.config.globalProperties={...this.appContext.config.globalProperties}),r.mount(e),{update:e=>{Object.assign(l,e)},destroy:()=>{r.unmount()}}}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 w(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 r=o.mountInstance(e,e=>t(e),n(l));return{update:e=>(r.update(n(e)),!0),destroy(){r.destroy()}}};return l.__cellRendererKind="lifecycle",l}(e.id,t,o)}const r=t.get("header",e.id);if(null==r?void 0:r.slot){const t=r.slot;n.headerRenderer=function(e,t,o){return n=>{const l=document.createElement("div");l.style.display="contents";const r=`header:${e}`,i={columnId:n.columnId,header:n.header};return o.mount(r,l,{render:()=>t(i)},i),l}}(e.id,t,o)}const i=t.get("editor",e.id);if(null==i?void 0:i.slot){const t=i.slot;n.editor=function(e,t,o){return{type:"custom",renderer:n=>{const l=document.createElement("div");l.style.display="contents";const r=`editor:${e}`,i={value:n.value,rowData:n.rowData,columnId:e,onCommit:n.onCommit,onCancel:n.onCancel};return o.mount(r,l,{render:()=>t(i)},i),l},destroy:()=>{o.unmount(`editor:${e}`)}}}(e.id,t,o)}return n})}const S=Symbol("moz-grid-instance"),b=Symbol("moz-grid-container"),M=Symbol("moz-grid-renderer"),B=Symbol("moz-grid-template-registry"),E=Symbol("moz-grid-filter-module"),R=Symbol("moz-grid-sort-module"),k=Symbol("moz-grid-custom-cell-module"),F=Symbol("moz-grid-bulk-editor-module"),P=((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({height:{default:"100%"},contextMenuConfig:{},emptyState:{},locale:{},sourceFields:{},useMultipleChart:{type:Boolean},chartIncludeGrandTotal:{type:Boolean},chartMap:{},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},name:{}},{coreConfig:{default:()=>({})},coreConfigModifiers:{}}),emits:o.mergeModels(["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","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:r}){const i=o.useModel(e,"coreConfig"),a=e,u=r,p=o.ref(),f=o.useSlots(),g=function(){const e=o.getCurrentInstance();if(!e)throw new Error("[MozGridVue] useAppContext는 setup() 내에서만 호출할 수 있습니다.");return e.appContext}(),h=new _,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),r=e.findIndex(e=>t(e.type,e.fieldId)===l);r>=0&&e.splice(r,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)}}(),x=o.shallowRef(null),y=m();s.setGridVueLocale(a.locale),o.watch(()=>a.locale,e=>s.setGridVueLocale(e));const E=o.ref();let R=null;const k=o.ref({disabled:!0,hasItem:!1}),F=l.useGridNotificationStore(),P=e=>String(e).padStart(2,"0"),T=()=>{const e=new Date;return`${e.getFullYear()}-${P(e.getMonth()+1)}-${P(e.getDate())} ${P(e.getHours())}:${P(e.getMinutes())}:${P(e.getSeconds())}`},z=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,$=e=>null==F?void 0:F.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),D=e=>{if(!F)return;const t=F.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&F.eventMessages.splice(t,1)};let I=null;const H={onExportStart:e=>{F&&(I=z(),F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:I,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!I)return;const t=$(I);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(!I)return;const t=I,o=$(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(()=>D(t),2e3),I=null},onExportError:e=>{if(!I)return;const t=$(I);(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),I=null},onExportCancel:()=>{I&&(D(I),I=null)},onImportComplete:()=>{if(!F)return;const e=z();F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>D(e),2e3)},onImportError:e=>{F&&F.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:T(),noti_sender_id:"",prop_value:{session_id:z(),file_name:"",status:"error",error_message:e.message,progress_per:0,operation_type:"upload",remain_time:-1}})},onClientImportOpen:()=>{var e;if(!x.value)return;const t=(null==(e=a.contextMenuConfig)?void 0:e.clientImportOptions)??{};y.show(x.value,t)}};o.provide(B,v),o.provide(M,h),o.provide(S,x),o.provide(b,E);const G=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function V(e){return t=>{const o={render:()=>{var t,o;return("tool-items"===e?null==(t=f[e])?void 0:t.call(f,k.value):null==(o=f[e])?void 0:o.call(f))??null}},n=`slot:${e}`;return h.mount(n,t,o,{}),()=>h.unmount(n)}}let L,O;function A(){const e={...i.value},t=function(){const e=i.value.fields;return e===L||(L=e,O=e?w(e,v,h):void 0),O}();return t&&(e.fields=t),void 0!==a.locale&&(e.locale=a.locale),e}const U=["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 j=[];function N(){for(const e of j)try{e()}catch{}j=[]}function Y(){if(!p.value)return null;h.setAppContext(g);const e=new n.GridChrome(p.value,A(),function(){const e=["tool-left","tool-items","option-popup","tool-bottom","notification","footer","empty-state"],t={};for(const o of e)f[o]&&(t[o]=V(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,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,loading:a.loading,locale:a.locale,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{k.value=e},excelHooks:H}}());R=e,x.value=e.grid,E.value=p.value;const t=u;e.on("data:loaded",()=>u("data:loaded"));for(const o of U)e.on(o,e=>t(o,e));return j.push(e.onConfigChange(()=>{i.value=e.getCoreConfig(i.value),e.syncAppliedConfig(A())})),e}function K(){if(!R)return;const{reinitRequired:e}=R.reconcileCoreConfig(A());e&&async function(){if(!R)return;const e=R.captureReinitState();N(),R.destroy(),R=null,h.unmountAll();const t=Y();if(!t)return;await t.ready(),await t.restoreReinitState(e),k.value=t.getToolItemsProps(),u("ready",t.grid,t)}()}o.onMounted(async()=>{await async function(){const e=Y();e&&(await e.ready(),k.value=e.getToolItemsProps(),u("ready",e.grid,e))}(),o.watch(()=>{const e=i.value;e.data,e.fields;const t={_locale:a.locale};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>K(),{deep:!0}),o.watch(()=>({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}),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.onBeforeUnmount(()=>{N(),null==R||R.destroy(),R=null,x.value=null,h.unmountAll()}),function(e){const{register:t}=c(),n=new d({id:e.name.value,type:e.type,importDef:async t=>{var o,l,r,i;const s=e.gridInstance.value;if(s){if(!t){const t=n.default;return void(t&&(await s.applyConfig(t),t.customCellConfig&&(null==(o=e.setCustomCellState)||o.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(l=e.setColumnFormatState)||l.call(e,t.columnFormatConfig))))}await s.applyConfig(t),t.customCellConfig&&(null==(r=e.setCustomCellState)||r.call(e,t.customCellConfig)),t.columnFormatConfig&&(null==(i=e.setColumnFormatState)||i.call(e,t.columnFormatConfig))}},exportDef:()=>{var t,o;const n=e.gridInstance.value;return n?{...n.getConfig(),customCellConfig:(null==(t=e.getCustomCellState)?void 0:t.call(e))??null,columnFormatConfig:(null==(o=e.getColumnFormatState)?void 0:o.call(e))??null}:null}});let l=!1;o.watch(e.gridInstance,r=>{if(!r||l)return;if(!e.name.value)return;const i=r.on("data:loaded",()=>{l||(n.setDefaultToCurrent(),o.nextTick(()=>{t(n),l=!0,i()}))})})}({name:o.toRef(a,"name"),type:"pivot"===i.value.mode?"mozPivotGrid":"mozFlatGrid",gridInstance:x,getCustomCellState:()=>(null==R?void 0:R.customCell.getCustomCell())??null,setCustomCellState:e=>{e&&R&&R.customCell.setCustomCell(e)},getColumnFormatState:()=>(null==R?void 0:R.columnFormat.getConfig())??null,setColumnFormatState:e=>{e&&R&&R.columnFormat.setConfig(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:p,class:"moz-grid-chrome",style:o.normalizeStyle(G.value)},null,4),o.renderSlot(e.$slots,"default",{},void 0,!0),x.value?(o.openBlock(),o.createBlock(C,{key:0})):o.createCommentVNode("",!0)],64))}}),[["__scopeId","data-v-326c95dd"]]),T=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),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}}),z=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),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.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(B),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}}),D=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(S),n=o.inject(M),l=o.useSlots();return t&&n?(o.onMounted(()=>{const o=t.value;if(!o||!l.default)return;const r=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}`,i={parentData:t,dataIndex:o};return n.mount(l,e,{render:()=>r(i)},i),()=>{n.unmount(l)}}})}),o.onBeforeUnmount(()=>{null==n||n.unmountByPrefix("detail:")}),()=>null):()=>null}}),I=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(S),t=o.inject(M),n=o.useSlots();return e&&t?(o.onMounted(()=>{const o=e.value;if(!o||!n.default)return;const l=n.default;o.formatRow.addHandler("_groupTemplate",e=>{if("group-row"!==e.type)return;const o=e.ctx,n=o.element;if(!n)return;const r=`group:${o.viewIndex}`,i={groupKey:o.column,groupValue:o.value,level:o.level,count:o.itemCount,isExpanded:!o.collapsed};t.mount(r,n,{render:()=>l(i)},i)})}),o.onBeforeUnmount(()=>{var o;null==t||t.unmountByPrefix("group:"),null==(o=e.value)||o.formatRow.removeHandler("_groupTemplate")}),()=>null):()=>null}});let H=!1;function G(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(H||(H=!0),e.formatHeader)}),e):null}const V=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 r=e,i=l,s=o.computed(()=>{const e={...r};for(const t of n.WRAPPER_EXTRA_KEYS)delete e[t];return delete e.name,delete e.locale,e}),a=o.computed(()=>{const e=r,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)=>i(e,...t)]));u.ready=e=>i("ready",G(e));const d=o.ref(null);function c(){return d.value??null}const p={};return Object.defineProperties(p,{grid:{enumerable:!0,get:()=>{var e;return G(null==(e=c())?void 0:e.grid)}},core:{enumerable:!0,get:()=>p},filterModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.filter}},sortModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.sort}},customCellModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.customCell}},bulkEditorModule:{enumerable:!0,get:()=>{var e;return null==(e=c())?void 0:e.bulkEditor}}}),p.refresh=async()=>{var e,t;return null==(t=null==(e=c())?void 0:e.grid)?void 0:t.refresh()},p.loadData=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.loadData(e)},p.sort=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.sort(e)},p.filter=async e=>{var t,o;return null==(o=null==(t=c())?void 0:t.grid)?void 0:o.filter(e)},t(p),(e,t)=>(o.openBlock(),o.createBlock(P,o.mergeProps({ref_key:"mozRef",ref:d,coreConfig:s.value},a.value,{name:r.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"]))}}),L=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 r=e,i=l,s=o.computed(()=>{const e={...r};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=r,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)=>i(e,...t)]));function d(e){var t,o,n;const l=e;i("update:rowFields",l.rowFields??[]),i("update:columnFields",l.columnFields??[]),i("update:valueFields",l.valueFields??[]);const r=null==(n=null==(o=null==(t=p())?void 0:t.pivot)?void 0:o.getRawConfig)?void 0:n.call(o);r&&i("pivot:configured",r)}u.ready=e=>i("ready",G(e));const c=o.ref(null);function p(){return c.value??null}function m(){var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.pivot}const f=o.computed({get:()=>{var e,t;return(null==(t=null==(e=p())?void 0:e.chart)?void 0:t.visible)??!1},set:e=>{var t,o;return null==(o=null==(t=p())?void 0:t.chart)?void 0:o.setVisible(e)}}),g={};return Object.defineProperties(g,{grid:{enumerable:!0,get:()=>{var e;return G(null==(e=p())?void 0:e.grid)}},core:{enumerable:!0,get:()=>g},pivotApi:{enumerable:!0,get:()=>m()??null},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}},showChart:{enumerable:!0,get:()=>f.value,set:e=>{f.value=e}}}),g.refresh=async()=>{var e,t;return null==(t=null==(e=p())?void 0:e.grid)?void 0:t.refresh()},g.setConfig=async e=>{var t;return null==(t=m())?void 0:t.setConfig(e)},g.getResult=()=>{var e;return(null==(e=m())?void 0:e.getResult())??null},g.expandAll=async()=>{var e;return null==(e=m())?void 0:e.expandAllRows()},g.collapseAll=async()=>{var e;return null==(e=m())?void 0:e.collapseAllRows()},g.expandToLevel=async e=>{var t;return null==(t=m())?void 0:t.expandRowToLevel(e)},g.toggleChart=()=>{f.value=!f.value},t(g),(e,t)=>(o.openBlock(),o.createBlock(P,o.mergeProps({ref_key:"mozRef",ref:c,coreConfig:s.value},a.value,{name:r.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=$,exports.CellTemplate=T,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=D,exports.GRID_BULK_EDITOR_MODULE_KEY=F,exports.GRID_CUSTOM_CELL_MODULE_KEY=k,exports.GRID_FILTER_MODULE_KEY=E,exports.GRID_INSTANCE_KEY=S,exports.GRID_RENDERER_KEY=M,exports.GRID_SORT_MODULE_KEY=R,exports.GRID_TEMPLATE_REGISTRY_KEY=B,exports.GroupTemplate=I,exports.HeaderTemplate=z,exports.MozGrid=P,exports.MozGridVue=V,exports.MozPivotVue=L,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=_,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:r}=n,i=l.map(e=>e.id);t=l.map(e=>e.header),o=r.map(e=>i.map(t=>e[t]))}const n=[];n.push(t.map(g).join(","));for(const a of o)n.push(a.map(g).join(","));const l="\ufeff"+n.join("\r\n"),r=new Blob([l],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=`export_${(new Date).toISOString().slice(0,10)}.csv`,s.click(),URL.revokeObjectURL(i)},exports.generateSessionId=f,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 r=()=>{window.removeEventListener("focus",r),setTimeout(()=>{n||(n=!0,l(),t(null))},300)};window.addEventListener("focus",r),document.body.appendChild(o),o.click()})},exports.runClientExport=async function(e,t,o){var n;const l=`${t.exportFileName??"export"}_${a().format("YYYYMMDD")}.xlsx`,r=f();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:r,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",onProgress:e=>{if(!o)return;const t=o.eventMessages.find(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});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)===r});(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)===r});-1!==e&&o.eventMessages.splice(e,1)},2e3)}null==(n=t.onClientExportComplete)||n.call(t,new Blob)}catch(i){if(i instanceof DOMException&&"AbortError"===i.name){if(o){const e=o.eventMessages.findIndex(e=>{var t;return(null==(t=e.prop_value)?void 0:t.session_id)===r});-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)===r});(null==e?void 0:e.prop_value)&&(e.prop_value.status="error",e.prop_value.error_message=i instanceof Error?i.message:String(i),e.prop_value.progress_per=0,e.prop_value.remain_time=-1)}}},exports.useClientExcelStore=m,exports.useUserLayoutModule=c;
package/dist/index.d.ts CHANGED
@@ -36,7 +36,7 @@ export type { IExcelInfo, IExcelAPI, AdditionalColumn } from './types/excel.type
36
36
  export { DataType as ExcelDataType } from './types/excel.types';
37
37
  export { FileParameter, StreamingParameter } from './types';
38
38
  export type { SystemType } from './types/core';
39
- export type { PureSheetConfig, FieldDef, PureSheetEventType, SortState, FilterState, FilterOperator, Row, ColumnDef, ColumnState, ColumnInfo, ColumnUpdatePartial, MaskConfig, CellAlign, CellAttributes, CellAttributesFn, FormatHeaderCallback, FormatHeaderContext, HeaderCellInfo, EditorConfig, GridState, GridActivity, ViewState, RowSelectionMode, CellSelectionMode, RowSelectionTrigger, RowSelectionConfig, CellSelectionConfig, DataType, AggregateFunc, RowState, ValidationRule, ValidationError, ValidationTrigger, GroupConfig, GroupingConfig, TreeConfig, MasterDetailConfig, ColumnGroupDef, FormatRowCallback, PartialTranslationMap, IPivotAPI, PivotState, PivotConfig, PivotRowField, PivotColumnField, PivotValueField, PivotResult, PivotHeaderNode, PivotRow, ShowValueAs, IRowsAPI, IColumnsAPI, IChangesAPI, IUndoManagerAPI, IGroupAPI, ITreeAPI, IMasterDetailAPI, IValidationAPI, IClipboardAPI, IHeadersAPI, } from '../../moz-ui-grid-core/src/index.ts';
39
+ export type { PureSheetConfig, FieldDef, PureSheetEventType, SortState, FilterState, FilterOperator, Row, ColumnDef, ColumnState, ColumnInfo, ColumnUpdatePartial, MaskConfig, CellAlign, CellAttributes, CellAttributesFn, FormatHeaderCallback, FormatHeaderContext, HeaderCellInfo, EditorConfig, GridState, GridActivity, ViewState, RowSelectionMode, CellSelectionMode, RowSelectionTrigger, RowSelectionConfig, CellSelectionConfig, DataType, AggregateFunc, RowState, ValidationRule, ValidationError, ValidationTrigger, RowGroupConfig, TreeConfig, MasterDetailConfig, ColumnGroupDef, FormatRowCallback, PartialTranslationMap, IPivotAPI, PivotState, PivotConfig, PivotRowField, PivotColumnField, PivotValueField, PivotResult, PivotHeaderNode, PivotRow, ShowValueAs, IRowsAPI, IColumnsAPI, IChangesAPI, IUndoManagerAPI, IGroupAPI, ITreeAPI, IMasterDetailAPI, IValidationAPI, IClipboardAPI, IHeadersAPI, } from '../../moz-ui-grid-core/src/index.ts';
40
40
  export { UndoStack } from '../../moz-ui-grid-core/src/index.ts';
41
41
  export type { FormatHeaderCallback as FormatHeaderRowCallback, FormatHeaderContext as FormatHeaderRowContext, } from '../../moz-ui-grid-core/src/index.ts';
42
42
  export { getRowHeaderCell, getCornerCell, ROW_HEADER_COLUMN_ID } from '../../moz-ui-grid-core/src/index.ts';
package/dist/index.js CHANGED
@@ -945,6 +945,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
945
945
  useMultipleChart: { type: Boolean },
946
946
  chartIncludeGrandTotal: { type: Boolean },
947
947
  chartMap: {},
948
+ useRowGroupSettings: { type: Boolean, default: true },
949
+ useFieldSettings: { type: Boolean, default: true },
950
+ useFormatSettings: { type: Boolean, default: true },
951
+ useLayoutSettings: { type: Boolean, default: true },
952
+ useAggregateSettings: { type: Boolean, default: true },
948
953
  useToolBox: { type: Boolean, default: true },
949
954
  useToolBoxSetting: { type: Boolean, default: true },
950
955
  useExtendFooter: { type: Boolean, default: true },
@@ -1136,6 +1141,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1136
1141
  usePivot: props.usePivot,
1137
1142
  usePivotBar: props.usePivotBar,
1138
1143
  useChart: props.useChart,
1144
+ useRowGroupSettings: props.useRowGroupSettings,
1145
+ useFieldSettings: props.useFieldSettings,
1146
+ useFormatSettings: props.useFormatSettings,
1147
+ useLayoutSettings: props.useLayoutSettings,
1148
+ useAggregateSettings: props.useAggregateSettings,
1139
1149
  useMultipleChart: props.useMultipleChart,
1140
1150
  chartIncludeGrandTotal: props.chartIncludeGrandTotal,
1141
1151
  chartMap: props.chartMap,
@@ -1266,7 +1276,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
1266
1276
  useContextMenu: props.useContextMenu,
1267
1277
  useBuiltinTooltip: props.useBuiltinTooltip,
1268
1278
  usePivot: props.usePivot,
1269
- usePivotBar: props.usePivotBar
1279
+ usePivotBar: props.usePivotBar,
1280
+ useRowGroupSettings: props.useRowGroupSettings,
1281
+ useFieldSettings: props.useFieldSettings,
1282
+ useFormatSettings: props.useFormatSettings,
1283
+ useLayoutSettings: props.useLayoutSettings,
1284
+ useAggregateSettings: props.useAggregateSettings
1270
1285
  }),
1271
1286
  (next) => chrome == null ? void 0 : chrome.setUIOptions(next)
1272
1287
  );
@@ -1341,7 +1356,7 @@ const _export_sfc = (sfc, props) => {
1341
1356
  }
1342
1357
  return target;
1343
1358
  };
1344
- const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-eac44841"]]);
1359
+ const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-326c95dd"]]);
1345
1360
  const CellTemplate = defineComponent({
1346
1361
  name: "CellTemplate",
1347
1362
  props: {
@@ -50,7 +50,7 @@ export declare const Flat: Story;
50
50
  /**
51
51
  * ## 행 그룹 — 그룹 컬럼과 소계가 `id` 로 지목된다
52
52
  *
53
- * `rowGroup.columns` 와 `subtotals` 는 **컬럼 식별자**로 지정한다.
53
+ * `rowGroup.columns` 와 `aggregates[].column` 은 **컬럼 식별자**로 지정한다.
54
54
  * 소계는 `amount_krw` 하나에만 걸어 두었다.
55
55
  *
56
56
  * ### 확인할 것
@@ -0,0 +1,17 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as MozGrid } from '../MozGrid.vue';
3
+ /**
4
+ * [진단용] ITSM-2026-002455 — Ctrl+Space 푸터 값 vs 드래그 선택 푸터 값 불일치.
5
+ *
6
+ * 필터가 걸린 상태에서 같은 컬럼을 Ctrl+Space 로 고를 때와 드래그로 고를 때
7
+ * wrapper 푸터(평균/개수/최소/최대/합계)의 값이 달라지는지 확인한다.
8
+ *
9
+ * 데이터: salary = 100..500 (5행). dept 가 Y 인 2행(200, 400)을 필터로 제외하면
10
+ * 화면에는 100 / 300 / 500 세 행만 남는다.
11
+ *
12
+ * 기대(화면 기준): 합계 900, 개수 3, 평균 300
13
+ */
14
+ declare const meta: Meta<typeof MozGrid>;
15
+ export default meta;
16
+ type Story = StoryObj<typeof MozGrid>;
17
+ export declare const CtrlSpaceVsDrag: Story;
@@ -0,0 +1,37 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as MozGrid } from '../MozGrid.vue';
3
+ /**
4
+ * 선택 방식과 무관하게 푸터 집계가 같아야 한다 — ITSM-2026-002455.
5
+ *
6
+ * ## 제보
7
+ *
8
+ * 피벗 그리드(스마트리포트)에서 값 컬럼을 **Ctrl+Space** 로 고른 뒤 푸터를 보면
9
+ * `개수: 1`, 최소·최대·합계가 전부 평균과 같은 값으로 나왔다. 같은 컬럼을
10
+ * **드래그**로 고르면 `개수: 25`, 합계 39,955.76 처럼 정상으로 보였다.
11
+ *
12
+ * ## 원인 (요약)
13
+ *
14
+ * `selectionAggregates()` 는 "선택 영역 집계" 하나의 계약인데, 선택 방식마다 서로 다른
15
+ * 의미의 값을 같은 타입에 담아 돌려주고 있었다.
16
+ *
17
+ * | 경로 | 읽던 소스 | 증상 |
18
+ * |---|---|---|
19
+ * | 피벗 Ctrl+Space | 컬럼 총합계 스칼라 1개 | `개수: 1`, min=max=sum=avg |
20
+ * | 플랫 Ctrl+Space | 소스 배열(필터 무시) | 필터로 숨긴 행이 합산 |
21
+ * | Ctrl+A | 위와 같은 분기 | 동일 |
22
+ * | 드래그 | 뷰포트에 fetch 된 행만 | 화면 밖 선택 행 누락 |
23
+ *
24
+ * 지금은 네 경로 모두 **선택된 셀들의 집계**로 통일돼 있다. 컬럼 전체 선택은 여전히
25
+ * 셀을 순회하지 않는다(엔진 집계 사용) — 최적화는 유지된다.
26
+ *
27
+ * ## 확인 방법
28
+ *
29
+ * 1. 값 컬럼(`이익`)을 **드래그**로 전부 선택 → 푸터의 개수·합계를 기억한다.
30
+ * 2. 같은 컬럼의 셀 하나를 클릭한 뒤 **Ctrl+Space** → 푸터가 **같은 값**이어야 한다.
31
+ * 3. `필터 적용` 을 누르고 1~2 를 반복 → 숨긴 행이 합산되지 않아야 한다.
32
+ * 4. `현재 집계 측정` 은 푸터가 읽는 값과 내부 상태를 함께 찍는다.
33
+ */
34
+ declare const meta: Meta<typeof MozGrid>;
35
+ export default meta;
36
+ type Story = StoryObj<typeof MozGrid>;
37
+ export declare const PivotCtrlSpaceVsDrag: Story;
@@ -0,0 +1,58 @@
1
+ import { Meta, StoryObj } from '@storybook/vue3';
2
+ import { default as MozGrid } from '../MozGrid.vue';
3
+ /**
4
+ * 플랫 그리드 병합 셀 복사 — ITSM-2026-002315.
5
+ *
6
+ * ## 무엇을 확인하는 스토리인가
7
+ *
8
+ * 병합된 셀을 복사하면 블록 하나가 **자기 크기(rowSpan × colSpan)만큼 반복 출력**되던
9
+ * 결함을 눈으로 재확인하기 위한 것이다. 세로 2행 병합을 고르면 같은 값이 두 줄,
10
+ * 두 열이 같은 범위로 병합돼 있으면 블록이 통째로 두 번 나왔다.
11
+ *
12
+ * ## 고친 뒤의 규칙 — Excel / Google Sheets / Handsontable 과 동일
13
+ *
14
+ * 병합 블록은 **앵커(좌상단)에서 한 번만** 값을 내고, 나머지 멤버 자리는 빈 칸으로 둔다.
15
+ * Handsontable 문서 표현으로는 "keeps only the upper-left value ... and clears other values".
16
+ * 선택 격자의 행 × 열 모양 자체는 그대로 유지되므로 Excel 에 붙여넣으면 화면에서 보던
17
+ * 레이아웃이 그대로 재현된다.
18
+ *
19
+ * ## 조작 방법
20
+ *
21
+ * 1. `부서` / `팀` 열의 병합된 셀을 포함해 범위를 드래그한다.
22
+ * (병합 셀을 건드리면 선택은 항상 블록 전체로 확장된다 — Excel 과 같은 동작.)
23
+ * 2. `복사 결과 보기` 를 누른다. 클립보드로 나가는 TSV 원문이 아래 상자에 뜬다.
24
+ * 탭은 `→`, 줄바꿈은 `↵` 로 치환해 경계를 눈으로 셀 수 있게 했다.
25
+ * 3. 병합 블록이 걸친 행 수만큼 값이 반복되지 않고 **첫 행에만** 있는 것을 확인한다.
26
+ *
27
+ * `Ctrl+C` 도 같은 경로를 쓴다. 버튼은 클립보드 권한 없이도 결과를 볼 수 있게 한 것뿐이다.
28
+ *
29
+ * ## 데이터 구성
30
+ *
31
+ * 병합 경계를 눈으로 세기 쉽도록 고정값이며, **열마다 병합 단위가 다르게** 짰다.
32
+ *
33
+ * | 행 | 부서 | 팀 | 이름 |
34
+ * |---|---|---|---|
35
+ * | 0 | Engineering (3행 병합) | Frontend (2행 병합) | 김철수 |
36
+ * | 1 | 〃 | 〃 | 이영희 |
37
+ * | 2 | 〃 | Backend | 박민수 |
38
+ * | 3 | Design (2행 병합) | UI (2행 병합) | 정수진 |
39
+ * | 4 | 〃 | 〃 | 최동현 |
40
+ *
41
+ * 전체(0~4행 × 4열)를 선택해 복사하면 기대 결과는 이렇다 —
42
+ * 병합된 자리가 빈 칸이고, 비병합 열(`이름`·`급여`)은 행마다 값이 그대로 나온다.
43
+ *
44
+ * ```
45
+ * Engineering → Frontend → 김철수 → 52000 ↵
46
+ * → → 이영희 → 61000 ↵
47
+ * → Backend → 박민수 → 58000 ↵
48
+ * Design → UI → 정수진 → 47000 ↵
49
+ * → → 최동현 → 49000
50
+ * ```
51
+ */
52
+ declare const meta: Meta<typeof MozGrid>;
53
+ export default meta;
54
+ type Story = StoryObj<typeof MozGrid>;
55
+ /**
56
+ * 세로 병합 · 열마다 다른 병합 단위 — 앵커에서만 값이 나오는지 확인한다.
57
+ */
58
+ export declare const FlatMergedCopy: Story;