@vmscloud/moz-ui-grid-vue 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/chunks/{index-2qnzL9Zm.js → index-DY0dbAHJ.js} +5 -5
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +41 -14
- package/dist/locale/MozGridLocaleProvider.d.ts +32 -0
- package/dist/store/excelStore.d.ts +1 -1
- package/dist/store/index.d.ts +3 -3
- package/dist/store.js +4 -4
- package/dist/stories/MozGrid.stories.d.ts +7 -0
- package/dist/style.css +1 -1
- package/dist/utils/excel/ExcelImportUtil.js +1 -1
- package/dist/utils/excel/ExcelQueueManager.js +1 -1
- package/dist/utils/excel/ExcelTaskRunner.js +1 -1
- package/dist/utils/excel/ExcelTimeoutManager.js +1 -1
- package/package.json +22 -17
package/README.md
CHANGED
|
@@ -3537,10 +3537,10 @@ const useExcelUploadStore = defineStore("excelUpload", excelProgressStoreSetup);
|
|
|
3537
3537
|
export {
|
|
3538
3538
|
DataType as D,
|
|
3539
3539
|
FileParameter as F,
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3540
|
+
useExcelDownloadStore as a,
|
|
3541
|
+
useExcelUploadStore as b,
|
|
3542
|
+
showMessage as c,
|
|
3543
|
+
getGridVueLocaleCode as d,
|
|
3544
3544
|
enUS as e,
|
|
3545
3545
|
generateGUID as f,
|
|
3546
3546
|
getGridVueLocale as g,
|
|
@@ -3550,6 +3550,6 @@ export {
|
|
|
3550
3550
|
normalizeGridVueLocale as n,
|
|
3551
3551
|
openToast as o,
|
|
3552
3552
|
setGridVueLocale as s,
|
|
3553
|
-
|
|
3553
|
+
useExcelStore as u,
|
|
3554
3554
|
zhCN as z
|
|
3555
3555
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var e=Object.defineProperty,t=(t,o,n)=>((t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n)(t,"symbol"!=typeof o?o+"":o,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),n=require("@vmscloud/moz-ui-grid-wrapper"),l=require("./chunks/notification.contract-oFkBaE2U.cjs"),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
|
|
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 v={mode:"replace",conflictStrategy:"update",autoCommit:!1};function h(){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",{...v}),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={...v},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
3
|
<span class="mzc-client-excel-dropzone__line"><span class="mzc-client-excel-dropzone__accent">${l.name}</span></span>
|
|
4
4
|
`:r.html`
|
|
@@ -74,4 +74,4 @@
|
|
|
74
74
|
`}footer(){const e=s.getGridVueLocale();return r.html`
|
|
75
75
|
${n.button({label:e.check,variant:"primary",disabled:!this.file,onClick:()=>this.confirm()})}
|
|
76
76
|
${n.button({label:e.cancel,onClick:()=>this.close()})}
|
|
77
|
-
`}confirm(){const e=this.grid,t=this.file;if(!e||!t)return;const o={...this.options};this.close(),this.runBackgroundImport(e,t,o)}async runBackgroundImport(e,t,o){const n=s.getGridVueLocale(),l=this.deps.notificationStore(),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;
|
|
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:h(),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))}}),_=Symbol("MozGridLocale");function w(){const e=o.inject(_,null);return e||o.computed(()=>{})}const S=o.defineComponent({name:"MozGridLocaleProvider",props:{locale:{type:String,default:void 0}},setup:(e,{slots:t})=>(o.provide(_,o.computed(()=>e.locale)),()=>{var e;return null==(e=t.default)?void 0:e.call(t)})});class b{constructor(){t(this,"instances",new Map),t(this,"appContext",null)}setAppContext(e){this.appContext=e}mount(e,t,n,l={}){const 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 M(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 B=Symbol("moz-grid-instance"),E=Symbol("moz-grid-container"),R=Symbol("moz-grid-renderer"),k=Symbol("moz-grid-template-registry"),F=Symbol("moz-grid-filter-module"),P=Symbol("moz-grid-sort-module"),z=Symbol("moz-grid-custom-cell-module"),T=Symbol("moz-grid-bulk-editor-module"),$=((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}(),v=new b,h=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(),_=w(),S=o.computed(()=>a.locale??_.value);s.setGridVueLocale(S.value),o.watch(S,e=>s.setGridVueLocale(e));const F=o.ref();let P=null;const z=o.ref({disabled:!0,hasItem:!1}),T=l.useGridNotificationStore(),$=e=>String(e).padStart(2,"0"),D=()=>{const e=new Date;return`${e.getFullYear()}-${$(e.getMonth()+1)}-${$(e.getDate())} ${$(e.getHours())}:${$(e.getMinutes())}:${$(e.getSeconds())}`},I=()=>`mzc-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,H=e=>null==T?void 0:T.eventMessages.find(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e}),G=e=>{if(!T)return;const t=T.eventMessages.findIndex(t=>{var o;return(null==(o=t.prop_value)?void 0:o.session_id)===e});-1!==t&&T.eventMessages.splice(t,1)};let L=null;const V={onExportStart:e=>{T&&(L=I(),T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_download",noti_datetime:D(),noti_sender_id:"",prop_value:{session_id:L,file_name:e,status:"in_progress",progress_per:0,operation_type:"download",remain_time:-1}}))},onExportProgress:e=>{if(!L)return;const t=H(L);if(!(null==t?void 0:t.prop_value))return;let o="number"==typeof e.percent?e.percent:void 0;void 0===o&&"number"==typeof e.rowsProcessed&&"number"==typeof e.totalRows&&e.totalRows>0&&(o=e.rowsProcessed/e.totalRows*100),"number"==typeof o&&(t.prop_value.progress_per=Math.min(99,Math.max(0,Math.floor(o))))},onExportComplete:e=>{if(!L)return;const t=L,o=H(t);(null==o?void 0:o.prop_value)&&((null==e?void 0:e.fileName)&&(o.prop_value.file_name=e.fileName),o.prop_value.status="completed",o.prop_value.progress_per=100),setTimeout(()=>G(t),2e3),L=null},onExportError:e=>{if(!L)return;const t=H(L);(null==t?void 0:t.prop_value)&&(t.prop_value.status="error",t.prop_value.error_message=e.message,t.prop_value.progress_per=0,t.prop_value.remain_time=-1),L=null},onExportCancel:()=>{L&&(G(L),L=null)},onImportComplete:()=>{if(!T)return;const e=I();T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:D(),noti_sender_id:"",prop_value:{session_id:e,file_name:"",status:"completed",progress_per:100,operation_type:"upload",remain_time:-1}}),setTimeout(()=>G(e),2e3)},onImportError:e=>{T&&T.eventMessages.unshift({noti_type:"progress",header_key:"text-file_upload",noti_datetime:D(),noti_sender_id:"",prop_value:{session_id:I(),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(k,h),o.provide(R,v),o.provide(B,x),o.provide(E,F);const O=o.computed(()=>{const e=a.height??"100%";return{height:"number"==typeof e?`${e}px`:e,width:"100%"}});function A(e){return t=>{const o={render:()=>{var t,o;return("tool-items"===e?null==(t=f[e])?void 0:t.call(f,z.value):null==(o=f[e])?void 0:o.call(f))??null}},n=`slot:${e}`;return v.mount(n,t,o,{}),()=>v.unmount(n)}}let j,U;function N(){const e={...i.value},t=function(){const e=i.value.fields;return e===j||(j=e,U=e?M(e,h,v):void 0),U}();return t&&(e.fields=t),void 0!==S.value&&(e.locale=S.value),e}const Y=["row:click","row:dblclick","row:pinned","row:unpinned","row:reordered","cell:click","cell:dblclick","cell:change","cell:beforeEdit","cell:editCommitting","cell:editCommitted","cell:tooltip","selection:changed","column:resize","column:reorder","column:pin","column:visibility","sort:changed","header:click","header:sortClick","header:filterClick","filter:changed","scroll","undo:stateChange","clipboard:copy","clipboard:paste","validation:changed","columnGroup:toggle","rowGroup:toggle","rowGroup:batchToggle","contextmenu"];let K=[];function Z(){for(const e of K)try{e()}catch{}K=[]}function q(){if(!p.value)return null;v.setAppContext(g);const e=new n.GridChrome(p.value,N(),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]=A(o));return{useToolBox:a.useToolBox,useToolBoxSetting:a.useToolBoxSetting,useExtendFooter:a.useExtendFooter,useSummaryFooter:a.useSummaryFooter,useSort:a.useSort,useCustomCell:a.useCustomCell,useContextMenu:a.useContextMenu,useBuiltinTooltip:a.useBuiltinTooltip,usePivot:a.usePivot,usePivotBar:a.usePivotBar,useChart:a.useChart,useRowGroupSettings:a.useRowGroupSettings,useFieldSettings:a.useFieldSettings,useFormatSettings:a.useFormatSettings,useLayoutSettings:a.useLayoutSettings,useAggregateSettings:a.useAggregateSettings,useMultipleChart:a.useMultipleChart,chartIncludeGrandTotal:a.chartIncludeGrandTotal,chartMap:a.chartMap,loading:a.loading,locale:S.value,sourceFields:a.sourceFields,contextMenuConfig:a.contextMenuConfig,emptyState:a.emptyState,slots:t,onToolItemsPropsChange:e=>{z.value=e},excelHooks:V}}());P=e,x.value=e.grid,F.value=p.value;const t=u;e.on("data:loaded",()=>u("data:loaded"));for(const o of Y)e.on(o,e=>t(o,e));return K.push(e.onConfigChange(()=>{i.value=e.getCoreConfig(i.value),e.syncAppliedConfig(N())})),e}function W(){if(!P)return;const{reinitRequired:e}=P.reconcileCoreConfig(N());e&&async function(){if(!P)return;const e=P.captureReinitState();Z(),P.destroy(),P=null,v.unmountAll();const t=q();if(!t)return;await t.ready(),await t.restoreReinitState(e),z.value=t.getToolItemsProps(),u("ready",t.grid,t)}()}o.onMounted(async()=>{await async function(){const e=q();e&&(await e.ready(),z.value=e.getToolItemsProps(),u("ready",e.grid,e))}(),o.watch(()=>{const e=i.value;e.data,e.fields;const t={_locale:S.value};for(const o in e)"data"!==o&&"fields"!==o&&(t[o]=e[o]);return t},()=>W(),{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==P?void 0:P.setUIOptions(e)),o.watch(()=>a.loading,e=>null==P?void 0:P.setUIOptions({loading:e}),{immediate:!0}),o.watch(()=>a.sourceFields,e=>null==P?void 0:P.setSourceFields(e),{immediate:!0}),o.watch(()=>a.contextMenuConfig,e=>null==P?void 0:P.setContextMenuConfig(e),{deep:!0})}),o.onBeforeUnmount(()=>{Z(),null==P||P.destroy(),P=null,x.value=null,v.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==P?void 0:P.customCell.getCustomCell())??null,setCustomCellState:e=>{e&&P&&P.customCell.setCustomCell(e)},getColumnFormatState:()=>(null==P?void 0:P.columnFormat.getConfig())??null,setColumnFormatState:e=>{e&&P&&P.columnFormat.setConfig(e)}});return t(new Proxy({},{get(e,t){if("chrome"===t)return P;const o=P;if(!o)return;const n=o[t];return"function"==typeof n?n.bind(o):n},has:(e,t)=>"chrome"===t||!!P&&t in P})),(e,t)=>(o.openBlock(),o.createElementBlock(o.Fragment,null,[o.createElementVNode("div",{ref_key:"hostRef",ref:p,class:"moz-grid-chrome",style:o.normalizeStyle(O.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-330c3d14"]]),D=o.defineComponent({name:"CellTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(k),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}}),I=o.defineComponent({name:"HeaderTemplate",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(k),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}}),H=o.defineComponent({name:"CellEditor",props:{field:{type:String,required:!0}},setup(e){const t=o.inject(k),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}}),G=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(B),n=o.inject(R),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}}),L=o.defineComponent({name:"GroupTemplate",setup(){const e=o.inject(B),t=o.inject(R),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 V=!1;function O(e){return e?(Object.prototype.hasOwnProperty.call(e,"formatHeaderRow")||Object.defineProperty(e,"formatHeaderRow",{configurable:!0,get:()=>(V||(V=!0),e.formatHeader)}),e):null}const A=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",O(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 O(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($,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"]))}}),j=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",O(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 O(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($,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=H,exports.CellTemplate=D,exports.ClientExcelUploadController=x,exports.ClientExcelUploadPopup=C,exports.DetailTemplate=G,exports.GRID_BULK_EDITOR_MODULE_KEY=T,exports.GRID_CUSTOM_CELL_MODULE_KEY=z,exports.GRID_FILTER_MODULE_KEY=F,exports.GRID_INSTANCE_KEY=B,exports.GRID_RENDERER_KEY=R,exports.GRID_SORT_MODULE_KEY=P,exports.GRID_TEMPLATE_REGISTRY_KEY=k,exports.GroupTemplate=L,exports.HeaderTemplate=I,exports.MOZ_GRID_LOCALE_KEY=_,exports.MozGrid=$,exports.MozGridLocaleProvider=S,exports.MozGridVue=A,exports.MozPivotVue=j,exports.StreamingParameter=class{constructor(e){t(this,"params"),t(this,"loading",!0),t(this,"size",0),t(this,"offset",0),t(this,"onReceived"),t(this,"onClosed"),t(this,"onHandleError"),t(this,"onCancelClick"),t(this,"_complete",!1),this.params=e}get ipcObject(){return this.params}get percent(){return 0===this.offset||0===this.size?0:Math.round(this.offset/this.size*100)}get complete(){return this._complete}received(e){this.offset++,this.onReceived&&this.onReceived(e)}closed(e=!0){this._complete=e,this.onClosed&&this.onClosed()}handleError(e,t=!0){this._complete=t,this.onHandleError&&this.onHandleError(e)}},exports.UserLayoutInstance=d,exports.VueRenderer=b,exports.downloadBlob=function(e,t){const o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(o),0)},exports.exportCsv=async function(e){let t,o;if("pivot"===e.pivot.getMode()){const n=await e.pivot.getDataMatrix();if(!n)return;t=n.headers,o=n.rows}else{const n=await e.getExportData({scope:"all"});if(!n)return;const{headers:l,rows: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.useMozGridLocale=w,exports.useUserLayoutModule=c;
|
package/dist/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export { showMessage, openToast } from './utils/toast';
|
|
|
25
25
|
export type { ToastType, ToastOptions } from './utils/toast';
|
|
26
26
|
export { setGridVueLocale, getGridVueLocale, getGridVueLocaleCode, normalizeGridVueLocale, koKR, enUS, jaJP, zhCN } from './locale';
|
|
27
27
|
export type { GridVueLocaleCode, GridVueLocaleMessages } from './locale';
|
|
28
|
+
export { MozGridLocaleProvider, useMozGridLocale, MOZ_GRID_LOCALE_KEY } from './locale/MozGridLocaleProvider';
|
|
28
29
|
export { VueRenderer } from './bridge/VueRenderer';
|
|
29
30
|
export type { MozGridVueCoreProps, MozGridVueProps, MozGridVueEmits } from './types/props';
|
|
30
31
|
export type { CellSlotProps, HeaderSlotProps, EditorSlotProps, DetailSlotProps, GroupSlotProps, TemplateRegistry, TemplateEntry, } from './types/slots';
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { onBeforeUnmount, inject, ref, watch, nextTick, shallowRef, defineComponent, openBlock,
|
|
4
|
+
import { onBeforeUnmount, inject, ref, watch, nextTick, shallowRef, defineComponent, createElementBlock, openBlock, computed, provide, reactive, createApp, h, getCurrentInstance, mergeModels, useModel, useSlots, onMounted, toRef, Fragment, createElementVNode, renderSlot, createBlock, createCommentVNode, normalizeStyle, mergeProps, toHandlers, unref, createSlots, withCtx, normalizeProps, guardReactiveProps } from "vue";
|
|
5
5
|
import { Popup, radio, select, button, GridChrome, WRAPPER_EXTRA_KEYS } from "@vmscloud/moz-ui-grid-wrapper";
|
|
6
6
|
import { u as useGridNotificationStore } from "./chunks/notification.contract-BTOch6ed.js";
|
|
7
7
|
import { G, p } from "./chunks/notification.contract-BTOch6ed.js";
|
|
8
8
|
import { html, nothing } from "lit-html";
|
|
9
9
|
import { classMap } from "lit-html/directives/class-map.js";
|
|
10
|
-
import { g as getGridVueLocale, s as setGridVueLocale } from "./chunks/index-
|
|
11
|
-
import { D, F, e,
|
|
10
|
+
import { g as getGridVueLocale, s as setGridVueLocale } from "./chunks/index-DY0dbAHJ.js";
|
|
11
|
+
import { D, F, e, d, j, k, n, o, c, a, u, b, z } from "./chunks/index-DY0dbAHJ.js";
|
|
12
12
|
import dayjs from "dayjs";
|
|
13
13
|
import { ROW_HEADER_COLUMN_ID, UndoStack, getCornerCell, getRowHeaderCell } from "@vmscloud/moz-ui-grid-core";
|
|
14
14
|
const generateUUID = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c2) => {
|
|
@@ -688,6 +688,28 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
688
688
|
};
|
|
689
689
|
}
|
|
690
690
|
});
|
|
691
|
+
const MOZ_GRID_LOCALE_KEY = Symbol("MozGridLocale");
|
|
692
|
+
function useMozGridLocale() {
|
|
693
|
+
const injected = inject(MOZ_GRID_LOCALE_KEY, null);
|
|
694
|
+
if (injected) return injected;
|
|
695
|
+
return computed(() => void 0);
|
|
696
|
+
}
|
|
697
|
+
const MozGridLocaleProvider = defineComponent({
|
|
698
|
+
name: "MozGridLocaleProvider",
|
|
699
|
+
props: {
|
|
700
|
+
locale: { type: String, default: void 0 }
|
|
701
|
+
},
|
|
702
|
+
setup(props, { slots }) {
|
|
703
|
+
provide(
|
|
704
|
+
MOZ_GRID_LOCALE_KEY,
|
|
705
|
+
computed(() => props.locale)
|
|
706
|
+
);
|
|
707
|
+
return () => {
|
|
708
|
+
var _a;
|
|
709
|
+
return (_a = slots.default) == null ? void 0 : _a.call(slots);
|
|
710
|
+
};
|
|
711
|
+
}
|
|
712
|
+
});
|
|
691
713
|
class VueRenderer {
|
|
692
714
|
constructor() {
|
|
693
715
|
__publicField(this, "instances", /* @__PURE__ */ new Map());
|
|
@@ -979,8 +1001,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
979
1001
|
const registry = createTemplateRegistry();
|
|
980
1002
|
const gridInstance = shallowRef(null);
|
|
981
1003
|
const clientExcelStore = useClientExcelStore();
|
|
982
|
-
|
|
983
|
-
|
|
1004
|
+
const contextLocale = useMozGridLocale();
|
|
1005
|
+
const resolvedLocale = computed(() => props.locale ?? contextLocale.value);
|
|
1006
|
+
setGridVueLocale(resolvedLocale.value);
|
|
1007
|
+
watch(resolvedLocale, (v) => setGridVueLocale(v));
|
|
984
1008
|
const containerRef = ref();
|
|
985
1009
|
let chrome = null;
|
|
986
1010
|
const toolItemsProps = ref({ disabled: true, hasItem: false });
|
|
@@ -1120,7 +1144,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1120
1144
|
const core = { ...coreConfig.value };
|
|
1121
1145
|
const built = getBuiltFields();
|
|
1122
1146
|
if (built) core.fields = built;
|
|
1123
|
-
if (
|
|
1147
|
+
if (resolvedLocale.value !== void 0) core.locale = resolvedLocale.value;
|
|
1124
1148
|
return core;
|
|
1125
1149
|
}
|
|
1126
1150
|
function buildChromeOptions() {
|
|
@@ -1150,7 +1174,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1150
1174
|
chartIncludeGrandTotal: props.chartIncludeGrandTotal,
|
|
1151
1175
|
chartMap: props.chartMap,
|
|
1152
1176
|
loading: props.loading,
|
|
1153
|
-
locale:
|
|
1177
|
+
locale: resolvedLocale.value,
|
|
1154
1178
|
sourceFields: props.sourceFields,
|
|
1155
1179
|
contextMenuConfig: props.contextMenuConfig,
|
|
1156
1180
|
emptyState: props.emptyState,
|
|
@@ -1255,7 +1279,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1255
1279
|
const all = coreConfig.value;
|
|
1256
1280
|
void all.data;
|
|
1257
1281
|
void all.fields;
|
|
1258
|
-
const rest = { _locale:
|
|
1282
|
+
const rest = { _locale: resolvedLocale.value };
|
|
1259
1283
|
for (const k2 in all) {
|
|
1260
1284
|
if (k2 === "data" || k2 === "fields") continue;
|
|
1261
1285
|
rest[k2] = all[k2];
|
|
@@ -1356,7 +1380,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
1356
1380
|
}
|
|
1357
1381
|
return target;
|
|
1358
1382
|
};
|
|
1359
|
-
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
1383
|
+
const MozGrid = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-330c3d14"]]);
|
|
1360
1384
|
const CellTemplate = defineComponent({
|
|
1361
1385
|
name: "CellTemplate",
|
|
1362
1386
|
props: {
|
|
@@ -2101,7 +2125,9 @@ export {
|
|
|
2101
2125
|
G as GridNotificationKey,
|
|
2102
2126
|
GroupTemplate,
|
|
2103
2127
|
HeaderTemplate,
|
|
2128
|
+
MOZ_GRID_LOCALE_KEY,
|
|
2104
2129
|
MozGrid,
|
|
2130
|
+
MozGridLocaleProvider,
|
|
2105
2131
|
_sfc_main$1 as MozGridVue,
|
|
2106
2132
|
_sfc_main as MozPivotVue,
|
|
2107
2133
|
ROW_HEADER_COLUMN_ID,
|
|
@@ -2115,7 +2141,7 @@ export {
|
|
|
2115
2141
|
generateSessionId,
|
|
2116
2142
|
getCornerCell,
|
|
2117
2143
|
getGridVueLocale,
|
|
2118
|
-
|
|
2144
|
+
d as getGridVueLocaleCode,
|
|
2119
2145
|
getRowHeaderCell,
|
|
2120
2146
|
j as jaJP,
|
|
2121
2147
|
k as koKR,
|
|
@@ -2125,12 +2151,13 @@ export {
|
|
|
2125
2151
|
p as provideGridNotification,
|
|
2126
2152
|
runClientExport,
|
|
2127
2153
|
setGridVueLocale,
|
|
2128
|
-
|
|
2154
|
+
c as showMessage,
|
|
2129
2155
|
useClientExcelStore,
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2156
|
+
a as useExcelDownloadStore,
|
|
2157
|
+
u as useExcelStore,
|
|
2158
|
+
b as useExcelUploadStore,
|
|
2133
2159
|
useGridNotificationStore,
|
|
2160
|
+
useMozGridLocale,
|
|
2134
2161
|
useUserLayoutModule,
|
|
2135
2162
|
z as zhCN
|
|
2136
2163
|
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InjectionKey, PropType, Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* MozGridLocaleProvider / useMozGridLocale — moz-ui-chart 의 MozChartLocaleProvider/
|
|
4
|
+
* useMozChartLocale 과 동일한 명명 컨벤션(Moz + 패키지명 + Locale + Provider/Context,
|
|
5
|
+
* use + Moz + 패키지명 + Locale)의 grid 전용 버전. moz-ui-components 의
|
|
6
|
+
* MozComponentLocaleProvider/useMozComponentLocale 과도 같은 provide/inject 패턴이지만,
|
|
7
|
+
* 값 형태는 grid 기존 `locale` prop 과 같은 로케일 코드 문자열이다(완성된 메시지 객체가 아님)
|
|
8
|
+
* — MozGrid 의 prop 계약과 어긋나지 않도록.
|
|
9
|
+
*
|
|
10
|
+
* `<MozGridLocaleProvider locale="en"><MozGrid .../></MozGridLocaleProvider>`
|
|
11
|
+
* moz-ui-components 의 `<MozComponentLocaleProvider>` 안에 중첩해서 써도 서로 다른 키라
|
|
12
|
+
* 충돌하지 않는다.
|
|
13
|
+
*
|
|
14
|
+
* MozGrid 는 `props.locale`(개별 prop)이 있으면 그것을 우선하고, 없을 때만 이 컨텍스트 값을 쓴다.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MOZ_GRID_LOCALE_KEY: InjectionKey<Ref<string | undefined>>;
|
|
17
|
+
export declare function useMozGridLocale(): Ref<string | undefined>;
|
|
18
|
+
export declare const MozGridLocaleProvider: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
19
|
+
locale: {
|
|
20
|
+
type: PropType<string | undefined>;
|
|
21
|
+
default: undefined;
|
|
22
|
+
};
|
|
23
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}>[] | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
26
|
+
locale: {
|
|
27
|
+
type: PropType<string | undefined>;
|
|
28
|
+
default: undefined;
|
|
29
|
+
};
|
|
30
|
+
}>> & Readonly<{}>, {
|
|
31
|
+
locale: string | undefined;
|
|
32
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -78,7 +78,7 @@ export declare const excelStoreSetup: () => {
|
|
|
78
78
|
createFieldMapForExport: (pivotGrid?: any) => any;
|
|
79
79
|
updateDownloadStatus: (newData: ExcelDownload) => void;
|
|
80
80
|
downloadFromS3: (presignedUrl?: string) => void;
|
|
81
|
-
requestGenerateExcel: (param?: any, requestOptions?: AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
81
|
+
requestGenerateExcel: (param?: any, requestOptions?: AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}, any>>;
|
|
82
82
|
targetTable: Ref<string | undefined, string | undefined>;
|
|
83
83
|
registerUploadOwner: (sessionId: string, apiKey: string) => void;
|
|
84
84
|
clearUploadOwner: (sessionId: string) => void;
|
package/dist/store/index.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ export declare const useExcelStore: import('pinia').StoreDefinition<"excelPopup"
|
|
|
61
61
|
createFieldMapForExport: (pivotGrid?: any) => any;
|
|
62
62
|
updateDownloadStatus: (newData: import('./excelStore').ExcelDownload) => void;
|
|
63
63
|
downloadFromS3: (presignedUrl?: string) => void;
|
|
64
|
-
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
64
|
+
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}, any>>;
|
|
65
65
|
targetTable: import('vue').Ref<string | undefined, string | undefined>;
|
|
66
66
|
registerUploadOwner: (sessionId: string, apiKey: string) => void;
|
|
67
67
|
clearUploadOwner: (sessionId: string) => void;
|
|
@@ -125,7 +125,7 @@ export declare const useExcelStore: import('pinia').StoreDefinition<"excelPopup"
|
|
|
125
125
|
createFieldMapForExport: (pivotGrid?: any) => any;
|
|
126
126
|
updateDownloadStatus: (newData: import('./excelStore').ExcelDownload) => void;
|
|
127
127
|
downloadFromS3: (presignedUrl?: string) => void;
|
|
128
|
-
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
128
|
+
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}, any>>;
|
|
129
129
|
targetTable: import('vue').Ref<string | undefined, string | undefined>;
|
|
130
130
|
registerUploadOwner: (sessionId: string, apiKey: string) => void;
|
|
131
131
|
clearUploadOwner: (sessionId: string) => void;
|
|
@@ -189,7 +189,7 @@ export declare const useExcelStore: import('pinia').StoreDefinition<"excelPopup"
|
|
|
189
189
|
createFieldMapForExport: (pivotGrid?: any) => any;
|
|
190
190
|
updateDownloadStatus: (newData: import('./excelStore').ExcelDownload) => void;
|
|
191
191
|
downloadFromS3: (presignedUrl?: string) => void;
|
|
192
|
-
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
192
|
+
requestGenerateExcel: (param?: any, requestOptions?: import('axios').AxiosRequestConfig) => Promise<import('axios').AxiosResponse<any, any, {}, any>>;
|
|
193
193
|
targetTable: import('vue').Ref<string | undefined, string | undefined>;
|
|
194
194
|
registerUploadOwner: (sessionId: string, apiKey: string) => void;
|
|
195
195
|
clearUploadOwner: (sessionId: string) => void;
|
package/dist/store.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "pinia";
|
|
2
|
-
import { h,
|
|
2
|
+
import { h, a, u, b } from "./chunks/index-DY0dbAHJ.js";
|
|
3
3
|
export {
|
|
4
4
|
h as dataTypeToString,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
a as useExcelDownloadStore,
|
|
6
|
+
u as useExcelStore,
|
|
7
|
+
b as useExcelUploadStore
|
|
8
8
|
};
|
|
@@ -12,6 +12,13 @@ export default meta;
|
|
|
12
12
|
type Story = StoryObj<typeof MozGrid>;
|
|
13
13
|
/** 플랫 그리드: 직원 데이터 + fields 정의. 필터/정렬/조건부서식/컬럼 옵션 등 기본 크롬 사용. */
|
|
14
14
|
export declare const Flat: Story;
|
|
15
|
+
/**
|
|
16
|
+
* 플랫 그리드 — 영어 로케일. `<MozGridLocaleProvider locale="en">` 로 감싸 MozGrid 의
|
|
17
|
+
* `locale` prop 을 개별 지정하지 않고도 Context 로 로케일을 주입하는 사용법을 보여준다.
|
|
18
|
+
* 그리드 개별 prop(`locale=`)이 없으면 Provider 값을 우선 사용(core 내장 `en` 사전).
|
|
19
|
+
* 필터/정렬/컬럼 옵션·컨텍스트 메뉴 등 크롬 문구가 영어로 표시되는지 확인.
|
|
20
|
+
*/
|
|
21
|
+
export declare const FlatEnglishLocale: Story;
|
|
15
22
|
/** 기본 피벗: 지역 × 분기 매출 합계. 피벗 설정(톱니바퀴)에서 필드/형식 바꾸면 coreConfig 가 실시간 갱신됨. */
|
|
16
23
|
export declare const Basic: Story;
|
|
17
24
|
/**
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.mzc-toast-container{position:fixed;top:16px;right:16px;z-index:var(--mzc-z-toast, 2500);display:flex;flex-direction:column;gap:8px;pointer-events:none}.mzc-toast{pointer-events:auto;min-width:200px;max-width:420px;padding:10px 14px;border-radius:6px;border:1px solid var(--mzc-border, #bbc6d9);border-left-width:4px;background:var(--mzc-bg, #fff);color:var(--mzc-fg, #1f2937);font-size:13px;line-height:1.4;box-shadow:0 4px 12px #0000001f;cursor:pointer;animation:mzc-toast-in .16s ease-out}.mzc-toast--success{border-left-color:var(--mzc-toast-success, #22a06b)}.mzc-toast--error{border-left-color:var(--mzc-toast-error, #dc5a5a)}.mzc-toast--warning{border-left-color:var(--mzc-toast-warning, #e39b1b)}.mzc-toast--info{border-left-color:var(--mzc-accent, #3b82f6)}@keyframes mzc-toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.ps-theme-light{--ps-primary-color: #4568e0;--ps-bg-color: #ffffff;--ps-border-color: rgb(187, 198, 217);--ps-pinned-border-color: rgb(108, 128, 170);--ps-header-bg: rgb(222, 224, 239);--ps-header-text: rgb(67, 76, 96);--ps-cell-text: rgb(67, 76, 96);--ps-cell-readonly: rgb(244, 244, 249);--ps-row-hover-bg: #f0f7ff;--ps-row-selected-bg: rgba(69, 104, 224, .2);--ps-row-alt-bg: rgb(248, 248, 253);--ps-shadow-color: rgba(0, 0, 0, .1);--ps-cell-selected-bg: rgba(69, 104, 224, .16);--ps-cell-selected-border-color: rgba(69, 104, 224, .6);--ps-selection-overlay-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #666;--ps-text-muted: #999;--ps-scrollbar-thumb: #bbc6d9;--ps-scrollbar-thumb-hover: #bbc6d9;--ps-overlay-bg: #fff;--ps-overlay-border: #d0d5dd;--ps-overlay-shadow: 0 4px 16px rgba(0, 0, 0, .12);--ps-overlay-separator: #e5e7eb;--ps-overlay-hover-bg: #f0f4ff;--ps-overlay-accent: #4a7cff;--ps-overlay-text: #374151;--ps-overlay-text-strong: #111827;--ps-overlay-text-muted: #9ca3af;--ps-overlay-btn-hover-bg: #f3f4f6;--ps-overlay-danger: #ef4444;--ps-overlay-danger-bg: #fef2f2;--ps-loading-bg: rgba(255, 255, 255, .8);--ps-group-row-hover-bg: #e3f2fd;--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #4caf50;--ps-dirty-added-bg: rgba(76, 175, 80, .08);--ps-dirty-modified-color: #ffc107;--ps-dirty-modified-bg: rgba(255, 193, 7, .08);--ps-dirty-modified-cell-bg: rgba(255, 193, 7, .2);--ps-dirty-deleted-color: #f44336;--ps-dirty-deleted-bg: rgba(244, 67, 54, .08);--ps-dirty-reordered-color: #7b1fa2;--ps-dirty-reordered-bg: rgba(123, 31, 162, .07);--ps-validation-error-color: #e53935;--ps-validation-error-bg: rgba(229, 57, 53, .06);--ps-subtotal-bg: #d6def8;--ps-subtotal-hover-bg: #d6def8;--ps-grandtotal-bg: #d6def8;--ps-grandtotal-hover-bg: #d6def8;--ps-column-subtotal-bg: #d6def8;--ps-statusbar-bg: #f8f9fa;--ps-statusbar-border: #e0e0e0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: #98a2b3;--ps-checkbox-checked: #3b82f6;--ps-sunday-color: #ef4444;--ps-saturday-color: #3b82f6;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 8px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 10px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(22, 160, 133, .4);--ps-cell-flash-down-bg: rgba(231, 76, 60, .4);--ps-cell-flash-neutral-bg: rgba(241, 196, 15, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-dark{--ps-primary-color: #4568e0;--ps-bg-color: #1e1e1e;--ps-border-color: #3c3c3c;--ps-pinned-border-color: #6e6e6e;--ps-header-bg: #2d2d2d;--ps-header-text: #e0e0e0;--ps-cell-text: #d4d4d4;--ps-cell-readonly: #2a2a2e;--ps-row-hover-bg: #2a2d2e;--ps-row-selected-bg: rgba(69, 104, 224, .2);--ps-row-alt-bg: #252526;--ps-shadow-color: rgba(0, 0, 0, .3);--ps-cell-selected-bg: rgba(69, 104, 224, .16);--ps-cell-selected-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #9ca3af;--ps-text-muted: #666;--ps-scrollbar-thumb: #555;--ps-scrollbar-thumb-hover: #777;--ps-overlay-bg: #1e2330;--ps-overlay-border: #2d3446;--ps-overlay-shadow: 0 4px 16px rgba(0, 0, 0, .4);--ps-overlay-separator: #2d3446;--ps-overlay-hover-bg: #2a3142;--ps-overlay-accent: #6b9aff;--ps-overlay-text: #d1d5db;--ps-overlay-text-strong: #e5e7eb;--ps-overlay-text-muted: #6b7280;--ps-overlay-btn-hover-bg: #2a3142;--ps-overlay-danger: #f87171;--ps-overlay-danger-bg: rgba(239, 68, 68, .1);--ps-loading-bg: rgba(0, 0, 0, .5);--ps-group-row-hover-bg: #094771;--ps-master-detail-row-bg: #1e1e1e;--ps-dirty-added-color: #4caf50;--ps-dirty-added-bg: rgba(76, 175, 80, .15);--ps-dirty-modified-color: #ffc107;--ps-dirty-modified-bg: rgba(255, 193, 7, .15);--ps-dirty-modified-cell-bg: rgba(255, 193, 7, .25);--ps-dirty-deleted-color: #f44336;--ps-dirty-deleted-bg: rgba(244, 67, 54, .15);--ps-dirty-reordered-color: #7b1fa2;--ps-dirty-reordered-bg: rgba(123, 31, 162, .1);--ps-validation-error-color: #ef5350;--ps-validation-error-bg: rgba(239, 83, 80, .1);--ps-subtotal-bg: #2a3441;--ps-subtotal-hover-bg: #343f4f;--ps-grandtotal-bg: #1e2631;--ps-grandtotal-hover-bg: #283040;--ps-column-subtotal-bg: #2a3441;--ps-statusbar-bg: #1a1f2e;--ps-statusbar-border: #2d3446;--ps-statusbar-spinner-border: #3d4556;--ps-checkbox-border: #667085;--ps-checkbox-checked: #3b82f6;--ps-sunday-color: #f87171;--ps-saturday-color: #60a5fa;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 10px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 10px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(22, 160, 133, .4);--ps-cell-flash-down-bg: rgba(231, 76, 60, .4);--ps-cell-flash-neutral-bg: rgba(241, 196, 15, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-grid-container.ps-selection-row,.ps-grid-container.ps-selection-range{--ps-row-selected-bg: var(--ps-cell-selected-bg)}.ps-grid-container{height:100%;position:relative;display:flex;flex-direction:column;isolation:isolate;overflow:hidden;background:var(--ps-bg-color);font-family:var(--ps-font-family);font-size:var(--ps-font-size);color:var(--ps-cell-text);box-sizing:border-box;outline:none}.ps-grid-container *,.ps-grid-container *:before,.ps-grid-container *:after{box-sizing:border-box}.ps-main-area{flex:1;display:flex;flex-direction:row;overflow:hidden;min-height:0}.ps-content-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.ps-scroll-area-x{flex-shrink:0;display:flex;flex-direction:row;background:var(--ps-bg-color)}.ps-header{flex-shrink:0;background:var(--ps-header-bg);overflow-x:auto;overflow-y:hidden;z-index:10000}.ps-header::-webkit-scrollbar{display:none}.ps-header{-ms-overflow-style:none;scrollbar-width:none}.ps-header-row{display:flex;height:var(--ps-header-height);width:var(--ps-total-width, 100%);position:relative;background:var(--ps-header-bg)}.ps-row .ps-cells-center .ps-cell.ps-group-indent-cell{padding-left:calc(var(--ps-group-indent, 0px) + var(--ps-cell-padding-side))}.ps-header-cell{position:absolute;top:0;display:flex;align-items:center;padding:var(--ps-cell-padding);font-weight:var(--ps-header-font-weight);color:var(--ps-header-text);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:1px solid var(--ps-border-color);-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;box-sizing:border-box}.ps-header-cell .ps-header-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-pivot-header-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.ps-resize-handle{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;background:transparent;z-index:1}.ps-resize-handle:hover{background:var(--ps-primary-color)}.ps-sort-icon{flex-shrink:0;margin-left:4px;opacity:.6}.ps-header-cell.ps-sorted .ps-sort-icon{opacity:1}.ps-header-cell.ps-sort-asc .ps-sort-icon:before{content:"▲"}.ps-header-cell.ps-sort-desc .ps-sort-icon:before{content:"▼"}.ps-sort-icon[data-sort-seq]:after{content:attr(data-sort-seq);font-size:9px;margin-left:1px;opacity:.7;vertical-align:super}.ps-filter-icon{flex-shrink:0;margin-left:4px;opacity:.6}.ps-header-cell.ps-filtered .ps-filter-icon{opacity:1}.ps-header-cell.ps-filtered .ps-filter-icon:before{content:"f"}.ps-body{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column}.ps-scroll-wrapper{flex:1;position:relative;overflow:hidden}.ps-scroll-proxy-y{flex-shrink:0;overflow-y:auto;overflow-x:hidden;z-index:5;background:var(--ps-bg-color)}.ps-scroll-proxy-y::-webkit-scrollbar{width:var(--ps-scrollbar-width)}.ps-scroll-proxy-y::-webkit-scrollbar-track{background:var(--ps-bg-color)}.ps-scroll-proxy-y::-webkit-scrollbar-thumb{background:var(--ps-scrollbar-thumb)}.ps-scroll-proxy-y::-webkit-scrollbar-thumb:hover{background:var(--ps-scrollbar-thumb-hover)}.ps-scroll-spacer-y{width:1px}.ps-scroll-proxy-x{flex:1;overflow-x:auto;overflow-y:hidden;z-index:5;background:var(--ps-bg-color)}.ps-scroll-proxy-x::-webkit-scrollbar{height:var(--ps-scrollbar-width)}.ps-scroll-proxy-x::-webkit-scrollbar-track{background:var(--ps-bg-color)}.ps-scroll-proxy-x::-webkit-scrollbar-thumb{background:var(--ps-scrollbar-thumb)}.ps-scroll-proxy-x::-webkit-scrollbar-thumb:hover{background:var(--ps-scrollbar-thumb-hover)}.ps-scroll-spacer-x{display:block;height:1px}.ps-scroll-corner{flex-shrink:0;width:var(--ps-scrollbar-width);background:var(--ps-bg-color)}.ps-viewport{position:absolute;top:0;left:0;right:0;bottom:0;overflow-x:auto;overflow-y:auto}.ps-viewport::-webkit-scrollbar{width:0;height:0;display:none}.ps-viewport{-ms-overflow-style:none;scrollbar-width:none}.ps-row-container{position:relative;width:var(--ps-total-width, 100%)}.ps-row{position:absolute;left:0;display:flex;height:var(--ps-row-height);width:var(--ps-total-width, 100%);will-change:transform;contain:layout style}.ps-cells-left,.ps-cells-center,.ps-cells-right{position:relative;height:100%;flex-shrink:0}.ps-cells-left{position:sticky;left:0;z-index:2;background:inherit;width:var(--ps-left-total-width, 0px);height:100%}.ps-cells-right{position:sticky;right:0;z-index:2;background:inherit;width:var(--ps-right-total-width, 0px);height:100%}.ps-cells-center{position:relative;width:var(--ps-center-total-width, 0px);height:100%}.ps-cell{position:absolute;top:0;display:flex;align-items:center;height:100%;padding:var(--ps-cell-padding);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:var(--ps-border-width) solid var(--ps-border-color);contain:strict;box-sizing:border-box}.ps-cell-content{width:100%;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-dynamic-row-heights .ps-cell{contain:content;height:auto;min-height:100%}.ps-cell.ps-editing{overflow:visible;outline:2px solid var(--ps-primary-color);outline-offset:-2px}.ps-cell.ps-editing input,.ps-cell.ps-editing select,.ps-cell.ps-editing textarea{flex:1;min-width:0;align-self:stretch;padding:0;margin:0;border:none;outline:none;font-family:inherit;font-size:inherit;background:transparent;color:var(--ps-cell-text);box-sizing:border-box}.ps-cell.ps-editing input[type=number]::-webkit-inner-spin-button,.ps-cell.ps-editing input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ps-cell.ps-editing input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.ps-cell.ps-cell-readonly{background:var(--ps-cell-readonly);color:var(--ps-cell-text)}.ps-empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--ps-text-muted);font-size:16px}.ps-loading{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:var(--ps-loading-bg);z-index:20000}.ps-loading-spinner{width:32px;height:32px;border:3px solid var(--ps-border-color);border-top-color:var(--ps-primary-color);border-radius:50%;animation:ps-spin .8s linear infinite}@keyframes ps-spin{to{transform:rotate(360deg)}}.ps-pinned-top,.ps-pinned-bottom{flex-shrink:0;background:var(--ps-bg-color)}.ps-pinned-row{display:flex;background:var(--ps-bg-color);width:var(--ps-total-width, 100%);position:relative}.ps-pinned-row .ps-cells-left,.ps-pinned-row .ps-cells-center,.ps-pinned-row .ps-cells-right{position:relative;height:100%;flex-shrink:0}.ps-pinned-row .ps-cells-left{position:sticky;left:0;z-index:2;background:var(--ps-bg-color);width:var(--ps-left-total-width, 0px)}.ps-pinned-row .ps-cells-center{position:relative;width:var(--ps-center-total-width, 0px)}.ps-pinned-row .ps-cells-right{position:sticky;right:0;z-index:2;background:var(--ps-bg-color);width:var(--ps-right-total-width, 0px)}.ps-column-group-row>.ps-cells-left>.ps-header-cell,.ps-column-group-row>.ps-cells-right>.ps-header-cell{background:var(--ps-header-bg)}.ps-grid-container.ps-has-top-pinned .ps-pinned-top:after{content:"";position:absolute;bottom:0;left:0;right:0;height:0;border-bottom:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-grid-container.ps-has-bottom-pinned .ps-pinned-bottom:before{content:"";position:absolute;top:0;left:0;right:0;height:0;border-top:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-grid-container.ps-has-left-pinned .ps-row>.ps-cells-left>.ps-cell:last-child,.ps-grid-container.ps-has-left-pinned .ps-pinned-row>.ps-cells-left>.ps-cell:last-child,.ps-grid-container.ps-has-left-pinned .ps-header-row>.ps-cells-left>.ps-header-cell:last-child{border-right-color:var(--ps-pinned-border-color)}.ps-grid-container.ps-has-right-pinned .ps-row>.ps-cells-right>.ps-cell:nth-child(1),.ps-grid-container.ps-has-right-pinned .ps-pinned-row>.ps-cells-right>.ps-cell:nth-child(1),.ps-grid-container.ps-has-right-pinned .ps-header-row>.ps-cells-right>.ps-header-cell:nth-child(1){border-left:1px solid var(--ps-pinned-border-color)}.ps-pivot-header-left:after{content:"";position:absolute;top:0;right:0;width:0;height:100%;border-right:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-row.ps-selected .ps-cell,.ps-row.ps-selected .ps-cell.ps-cell-merged-anchor,.ps-cell.ps-merge-float.ps-cell-row-selected{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row .ps-cell.ps-cell-selected,.ps-merge-overlay .ps-merge-float.ps-cell-selected{border-right-color:var(--ps-cell-selected-border-color);border-bottom-color:var(--ps-cell-selected-border-color)}.ps-selection-overlay{position:absolute;top:0;left:0;display:flex;width:var(--ps-total-width, 100%);height:0;pointer-events:none;z-index:7}.ps-selection-overlay .ps-cells-left,.ps-selection-overlay .ps-cells-center,.ps-selection-overlay .ps-cells-right{height:0;background:transparent;box-shadow:none;pointer-events:none}.ps-selection-overlay-region{position:absolute;border:var(--ps-selection-overlay-border-width, 1px) solid var(--ps-selection-overlay-border-color);box-sizing:border-box;pointer-events:none;box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-body.ps-dragging,.ps-body.ps-dragging *{cursor:crosshair;-webkit-user-select:none;user-select:none}.ps-row.ps-row-added{background-color:var(--ps-dirty-added-bg)}.ps-row.ps-row-added:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-added-color);position:absolute}.ps-row.ps-row-added .ps-cell{background-color:var(--ps-dirty-added-bg)}.ps-row.ps-row-modified{background-color:var(--ps-dirty-modified-bg)}.ps-row.ps-row-modified:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-modified-color);position:absolute}.ps-row.ps-row-modified .ps-cell{background-color:var(--ps-dirty-modified-bg)}.ps-row .ps-cell.ps-cell-modified{background-color:var(--ps-dirty-modified-cell-bg)}.ps-row.ps-row-deleted{background-color:var(--ps-dirty-deleted-bg);opacity:.6}.ps-row.ps-row-deleted:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-deleted-color);position:absolute}.ps-row.ps-row-deleted .ps-cell{background-color:var(--ps-dirty-deleted-bg);text-decoration:line-through;color:var(--ps-text-muted)}.ps-row.ps-row-readonly .ps-cell{background-color:var(--ps-cell-readonly);cursor:not-allowed}.ps-row.ps-selected.ps-row-readonly .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-reordered:after{content:"";position:absolute;left:0;top:0;height:100%;width:3px;background:var(--ps-dirty-reordered-color);pointer-events:none}.ps-row.ps-row-reordered .ps-cell{background-color:var(--ps-dirty-reordered-bg)}.ps-row.ps-row-dragging{opacity:.4;transition:opacity 80ms ease-out}.ps-row.ps-row-drop-target:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;background-color:#3b82f62e;box-shadow:inset 0 0 0 2px #3b82f6d9;transition:background-color 80ms ease-out,box-shadow 80ms ease-out}.ps-row.ps-row-drop-target-invalid:before{background-color:#ef44442e;box-shadow:inset 0 0 0 2px #ef4444d9}.ps-drag-handle{cursor:grab;color:var(--ps-text-muted);font-size:14px;-webkit-user-select:none;user-select:none;line-height:1}.ps-drag-handle:hover{color:var(--ps-text-secondary)}.ps-drag-handle:active{cursor:grabbing}.ps-sort-active .ps-drag-handle{cursor:not-allowed;opacity:.4}.ps-row-drop-indicator{position:absolute;left:0;height:2px;background:var(--ps-primary-color);pointer-events:none;z-index:100;transition:top .05s ease}.ps-drag-ghost{position:fixed;z-index:10000;padding:4px 12px;background:var(--ps-bg-color);border:1px solid var(--ps-primary-color);border-radius:4px;box-shadow:0 2px 8px var(--ps-shadow-color);font-size:12px;color:var(--ps-cell-text);pointer-events:none;opacity:.9}.ps-drag-ghost.ps-drag-ghost-multi{box-shadow:4px 4px 0 -1px var(--ps-bg-color),4px 4px 0 0 var(--ps-primary-color),8px 8px 0 -1px var(--ps-bg-color),8px 8px 0 0 var(--ps-primary-color),0 2px 8px var(--ps-shadow-color);font-weight:600}.ps-drag-ghost.ps-drag-ghost-multi-large{box-shadow:4px 4px 0 -1px var(--ps-bg-color),4px 4px 0 0 var(--ps-primary-color),0 2px 8px var(--ps-shadow-color)}.ps-row-drop-indicator.invalid{background:#f44336;height:3px}.ps-row-drop-indicator.invalid[data-reason]:after{content:attr(data-reason);position:absolute;top:-22px;left:8px;background:#f44336;color:#fff;padding:2px 8px;border-radius:4px;font-size:11px;white-space:nowrap;box-shadow:0 2px 4px #0003}body.ps-cross-grid-invalid,body.ps-cross-grid-invalid *{cursor:no-drop!important}.ps-row.ps-selected.ps-row-added .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-added .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-modified .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-modified .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-deleted .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-deleted .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-reordered .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-reordered .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-cell-flash-up{background-color:var(--ps-cell-flash-up-bg)!important;transition:none}.ps-cell-flash-down{background-color:var(--ps-cell-flash-down-bg)!important;transition:none}.ps-cell-flash-neutral{background-color:var(--ps-cell-flash-neutral-bg)!important;transition:none}.ps-cell-flash-fade{transition:background-color var(--ps-cell-fade-duration, 1s) ease-out;background-color:transparent!important}.ps-row.ps-group-row{background:linear-gradient(to right,var(--ps-row-alt-bg),var(--ps-bg-color));border-bottom:1px solid var(--ps-border-color);border-right:1px solid var(--ps-border-color);cursor:pointer;-webkit-user-select:none;user-select:none;width:var(--ps-total-width, 100%)}.ps-row.ps-group-row .ps-cells-center{position:relative}.ps-row.ps-group-row .ps-cell{border-bottom:none}.ps-row.ps-group-row .ps-cells-center .ps-cell{background:transparent}.ps-row.ps-group-row .ps-cells-left .ps-cell,.ps-row.ps-group-row .ps-cells-right .ps-cell{background:var(--ps-row-alt-bg)}.ps-cell.ps-merge-float.ps-group-banner-float{background:linear-gradient(to right,var(--ps-row-alt-bg),var(--ps-bg-color));border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:var(--ps-border-width) solid var(--ps-border-color);pointer-events:none;white-space:nowrap;color:var(--ps-cell-text)}.ps-cell.ps-merge-float.ps-group-banner-float.ps-group-banner-hover{background:linear-gradient(to right,var(--ps-group-row-hover-bg),var(--ps-bg-color))}.ps-row.ps-group-row:hover .ps-cells-left .ps-cell,.ps-row.ps-group-row:hover .ps-cells-right .ps-cell,.ps-row.ps-group-row:hover .ps-cells-center .ps-cell.ps-group-standalone-cell{background:var(--ps-group-row-hover-bg)}.ps-group-expand,.ps-group-collapse{margin-right:8px;color:var(--ps-cell-text)}.ps-group-label{font-weight:500}.ps-group-label strong{color:var(--ps-primary-color)}.ps-group-aggregates{font-size:13px;margin-left:16px;color:var(--ps-text-secondary, #666)}.ps-group-aggregate{color:var(--ps-header-text);margin-right:12px}.ps-row.ps-group-row .ps-cells-center .ps-cell.ps-group-standalone-cell{background:var(--ps-row-alt-bg);z-index:1}.ps-master-detail-row{border-bottom:1px solid var(--ps-border-color);background:var(--ps-master-detail-row-bg)}.ps-master-detail-row .ps-cells-center{display:block;padding:12px 16px;overflow:hidden}.ps-tree-expand,.ps-tree-collapse,.ps-master-detail-expand,.ps-master-detail-collapse,.ps-group-expand,.ps-group-collapse,.ps-pivot-expand,.ps-pivot-collapse,.ps-column-group-expand,.ps-column-group-collapse,.ps-pivotcol-expand,.ps-pivotcol-collapse{border:none;background:none;padding:0;font:inherit;outline:inherit;display:inline-block;width:16px;text-align:center;font-size:10px;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--ps-text-secondary);transition:color .15s;flex-shrink:0;margin-right:4px}.ps-tree-expand:after,.ps-master-detail-expand:after,.ps-group-expand:after,.ps-pivot-expand:after,.ps-column-group-expand:after,.ps-pivotcol-expand:after{content:"▼"}.ps-tree-collapse:after,.ps-master-detail-collapse:after,.ps-group-collapse:after,.ps-pivot-collapse:after,.ps-column-group-collapse:after,.ps-pivotcol-collapse:after{content:"▶"}.ps-tree-expand:hover,.ps-tree-collapse:hover,.ps-master-detail-expand:hover,.ps-master-detail-collapse:hover,.ps-group-expand:hover,.ps-group-collapse:hover,.ps-pivot-expand:hover,.ps-pivot-collapse:hover,.ps-column-group-expand:hover,.ps-column-group-collapse:hover,.ps-pivotcol-expand:hover,.ps-pivotcol-collapse:hover{color:var(--ps-primary-color)}.ps-column-group-expand,.ps-column-group-collapse,.ps-pivotcol-expand,.ps-pivotcol-collapse{margin-right:0;margin-left:4px}.ps-row.ps-pivot-expandable .ps-cell:first-child .ps-cell-content{display:flex;align-items:center}.ps-multi-row-header{position:relative}.ps-multi-row-header-grid{position:relative;background:var(--ps-header-bg)}.ps-multirow-container{position:relative}.ps-multi-row-cell{position:absolute;box-sizing:border-box;contain:strict;display:flex;align-items:center;padding:var(--ps-cell-padding);background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:1px dashed var(--ps-border-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.ps-multi-row-cell.ps-last-row{border-bottom:1px solid var(--ps-border-color)}.ps-multi-row-cell.ps-first-column{border-left:none}.ps-multirow-container .ps-multi-row-cell.ps-first-column{padding-left:calc(var(--ps-group-indent, 0px) + 12px)}.ps-multi-row-cell.ps-rowspan{z-index:2;background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color)}.ps-multi-row-header-grid .ps-multi-row-cell.ps-rowspan{background:var(--ps-header-bg)}.ps-multi-row-header-grid .ps-header-cell{background:var(--ps-header-bg);font-weight:var(--ps-header-font-weight);color:var(--ps-header-text);border-bottom:1px solid var(--ps-border-color)}.ps-multirow-container.ps-selected .ps-multi-row-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}:where(.ps-row.ps-row-alt) .ps-cell:where(:not(.ps-cell-merged-anchor):not(.ps-cell-readonly)){background:var(--ps-row-alt-bg)}.ps-mode-pivot .ps-row:not(.ps-row-subtotal):not(.ps-row-grandtotal):not(.ps-group-row) .ps-cells-left .ps-cell,.ps-mode-pivot .ps-merge-overlay .ps-cells-left .ps-cell.ps-merge-float{font-weight:500}.ps-row.ps-row-subtotal{background-color:var(--ps-subtotal-bg)}.ps-row.ps-row-subtotal .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-subtotal-bg);font-weight:600}.ps-row.ps-row-subtotal:hover .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-subtotal-hover-bg)}.ps-row.ps-row-grandtotal{background-color:var(--ps-grandtotal-bg)}.ps-row.ps-row-grandtotal .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-grandtotal-bg);font-weight:700}.ps-row.ps-row-grandtotal:hover .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-grandtotal-hover-bg)}.ps-cell.ps-cell-column-subtotal{background-color:var(--ps-column-subtotal-bg);font-weight:600}.ps-cell.ps-cell-column-grandtotal{background-color:var(--ps-grandtotal-bg);font-weight:700}.ps-outline-group-row{font-weight:600}.ps-outline-grandtotal-row{font-weight:700}.ps-row.ps-row-has-merge-anchor .ps-cells-left,.ps-row.ps-row-has-merge-anchor .ps-cells-right{z-index:3}.ps-cell.ps-cell-merged-anchor{display:flex;align-items:center;background:var(--ps-bg-color);z-index:1;overflow:hidden;border:var(--ps-border-width) solid var(--ps-border-color);border-top:none;border-left:none;box-sizing:border-box}.ps-dynamic-row-heights .ps-cell.ps-cell-merged-anchor{min-height:unset;overflow:visible}.ps-cell.ps-cell-merged-hidden{pointer-events:none;border-color:transparent}.ps-merge-overlay{position:absolute;top:0;left:0;display:flex;width:var(--ps-total-width, 100%);height:0;pointer-events:none;z-index:6}.ps-merge-overlay .ps-cells-left,.ps-merge-overlay .ps-cells-center,.ps-merge-overlay .ps-cells-right{height:0;background:transparent;box-shadow:none;pointer-events:none}.ps-cell.ps-merge-float{position:absolute;display:flex;align-items:center;background:var(--ps-bg-color);overflow:hidden;border:var(--ps-border-width) solid var(--ps-border-color);border-top:none;border-left:none;box-sizing:border-box;pointer-events:auto;cursor:default;user-select:none;-webkit-user-select:none}.ps-row .ps-cell.ps-cell-invalid{border-bottom:2px solid var(--ps-validation-error-color)}.ps-cell.ps-cell-invalid:after{content:"";position:absolute;right:0;bottom:0;width:0;height:0;border-style:solid;border-width:0 0 6px 6px;border-color:transparent transparent var(--ps-validation-error-color) transparent}.ps-theme-dark .ps-row .ps-cell.ps-cell-invalid{background-color:var(--ps-validation-error-bg);box-shadow:inset 2px 0 0 0 var(--ps-validation-error-color)}.ps-cell.ps-editing .ps-editor-invalid{border-color:var(--ps-validation-error-color);background-color:var(--ps-validation-error-bg)}.ps-cell-content>input.ps-cell-checkbox-input{margin:0;width:14px;height:14px;vertical-align:middle;cursor:pointer;pointer-events:none;accent-color:var(--ps-checkbox-checked)}.ps-cell[data-column-id=__drag_handle__]{padding:0;background:var(--ps-header-bg)}.ps-cell[data-column-id=__drag_handle__] .ps-cell-content{display:flex;justify-content:center}.ps-header-cell[data-column-id=__drag_handle__]{padding:0;background:var(--ps-header-bg)}.ps-cell[data-column-id=_rowHeader]{padding:var(--ps-cell-padding);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--ps-header-bg);border-right:1px solid var(--ps-border-color)}.ps-cell[data-column-id=_rowHeader] .ps-cell-content{display:flex;align-items:center;justify-content:center}.ps-header-cell[data-column-id=_rowHeader]{padding:0;background:var(--ps-header-bg)}.ps-cell-content>input.ps-row-header-checkbox-input{margin:0;width:14px;height:14px;cursor:pointer;accent-color:var(--ps-checkbox-checked)}.ps-dropdown-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:6px;box-shadow:var(--ps-overlay-shadow);overflow:hidden;display:flex;flex-direction:column}.ps-dropdown-search{padding:8px 10px;border:none;border-bottom:1px solid var(--ps-overlay-separator);font-size:13px;outline:none;width:100%;box-sizing:border-box;background:var(--ps-overlay-bg);color:var(--ps-overlay-text-strong)}.ps-dropdown-search:focus{border-bottom-color:var(--ps-overlay-accent)}.ps-dropdown-list{overflow-y:auto;max-height:250px}.ps-dropdown-item{padding:7px 10px;font-size:13px;cursor:pointer;display:flex;align-items:center;transition:background .1s}.ps-dropdown-item:hover,.ps-dropdown-item.focused{background:var(--ps-overlay-hover-bg)}.ps-dropdown-item.selected{font-weight:600;color:var(--ps-overlay-accent)}.ps-dropdown-item.selected:after{content:"";margin-left:auto;width:12px;height:12px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M2.5 6.5L5 9L9.5 3.5' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center / 12px 12px;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M2.5 6.5L5 9L9.5 3.5' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center / 12px 12px}.ps-dropdown-empty{padding:12px 10px;font-size:13px;color:var(--ps-overlay-text-muted);text-align:center}.ps-multiselect-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:6px;box-shadow:var(--ps-overlay-shadow);overflow:hidden;display:flex;flex-direction:column}.ps-multiselect-search{padding:8px 10px;border:none;border-bottom:1px solid var(--ps-overlay-separator);font-size:13px;outline:none;width:100%;box-sizing:border-box;background:var(--ps-overlay-bg);color:var(--ps-overlay-text-strong)}.ps-multiselect-search:focus{border-bottom-color:var(--ps-overlay-accent)}.ps-multiselect-toggle-all{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--ps-overlay-separator);cursor:pointer;font-size:12px;color:var(--ps-overlay-text-muted);-webkit-user-select:none;user-select:none}.ps-multiselect-toggle-all:hover{background:var(--ps-overlay-hover-bg)}.ps-multiselect-toggle-checkbox{margin:0;cursor:pointer;pointer-events:none;accent-color:var(--ps-overlay-accent)}.ps-multiselect-list{overflow-y:auto;max-height:220px}.ps-multiselect-item{padding:6px 10px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .1s}.ps-multiselect-item:hover,.ps-multiselect-item.focused{background:var(--ps-overlay-hover-bg)}.ps-multiselect-item.checked{color:var(--ps-overlay-accent)}.ps-multiselect-checkbox{margin:0;flex-shrink:0;cursor:pointer;pointer-events:none;accent-color:var(--ps-overlay-accent)}.ps-multiselect-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-multiselect-empty{padding:12px 10px;font-size:13px;color:var(--ps-overlay-text-muted);text-align:center}.ps-datepicker-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:8px;box-shadow:var(--ps-overlay-shadow);padding:12px;width:260px;-webkit-user-select:none;user-select:none}.ps-datepicker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.ps-datepicker-nav{background:none;border:none;cursor:pointer;font-size:14px;padding:4px 8px;border-radius:4px;color:var(--ps-overlay-text);transition:background .15s}.ps-datepicker-nav:hover{background:var(--ps-overlay-btn-hover-bg)}.ps-datepicker-title{font-size:14px;font-weight:600;color:var(--ps-overlay-text-strong)}.ps-datepicker-daynames{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.ps-datepicker-dayname{font-size:11px;color:var(--ps-overlay-text-muted);padding:4px 0;font-weight:500}.ps-datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.ps-datepicker-day{display:flex;align-items:center;justify-content:center;width:32px;height:32px;font-size:13px;border-radius:50%;cursor:pointer;transition:background .1s;color:var(--ps-overlay-text)}.ps-datepicker-day:hover{background:var(--ps-overlay-hover-bg)}.ps-datepicker-day.today{border:1px solid var(--ps-overlay-accent);font-weight:600}.ps-datepicker-day.selected{background:var(--ps-overlay-accent);color:#fff;font-weight:600}.ps-datepicker-day.selected:hover{background:var(--ps-primary-color)}.ps-datepicker-day.sunday{color:var(--ps-sunday-color)}.ps-datepicker-day.saturday{color:var(--ps-saturday-color)}.ps-datepicker-day.selected.sunday,.ps-datepicker-day.selected.saturday{color:#fff}.ps-datepicker-day-empty{cursor:default}.ps-datepicker-day-empty:hover{background:transparent}.ps-datepicker-footer{display:flex;justify-content:space-between;margin-top:10px;padding-top:8px;border-top:1px solid var(--ps-overlay-separator)}.ps-datepicker-btn{background:none;border:1px solid var(--ps-overlay-border);border-radius:4px;padding:4px 12px;font-size:12px;cursor:pointer;color:var(--ps-overlay-text);transition:all .15s}.ps-datepicker-btn:hover{background:var(--ps-overlay-hover-bg);border-color:var(--ps-overlay-accent);color:var(--ps-overlay-accent)}.ps-datepicker-btn-clear:hover{background:var(--ps-overlay-danger-bg);border-color:var(--ps-overlay-danger);color:var(--ps-overlay-danger)}.ps-valuelist{display:flex;flex-direction:column;font-size:var(--ps-font-size, 12px);color:var(--ps-text-color, #333);background:var(--ps-bg-color, #fff)}.ps-valuelist-head{padding:6px 8px;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-search{width:100%;box-sizing:border-box;height:26px;padding:0 8px;font-size:inherit;font-family:inherit;color:inherit;background:var(--ps-input-bg, #fff);border:1px solid var(--ps-border-color, #e0e0e0);border-radius:3px;outline:none}.ps-valuelist-search:focus{border-color:var(--ps-primary-color, #4568e0)}.ps-valuelist-modebar{display:flex;gap:2px;padding:6px 8px;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-mode-btn{flex:1 1 0;height:22px;padding:0 8px;font-size:11px;font-family:inherit;line-height:1;color:var(--ps-text-secondary, #666);background:var(--ps-segment-bg, rgba(69, 104, 224, .08));border:none;border-radius:3px;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-mode-btn:hover:not(.is-active){color:var(--ps-accent, #4568e0)}.ps-valuelist-mode-btn.is-active{color:#fff;background:var(--ps-accent, #4568e0)}.ps-valuelist-toolbar{display:flex;align-items:center;justify-content:space-between;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-picked-only{display:flex;align-items:center;gap:6px;margin-left:auto;padding:6px 10px;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-picked-only input{margin:0;cursor:pointer}.ps-valuelist-picked-only-label{font-size:12px;color:var(--ps-text-secondary, #666)}.ps-valuelist-all{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--ps-bg-color, #fff);cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-all input{margin:0;cursor:pointer}.ps-valuelist-viewport{overflow-y:auto;overflow-x:hidden;position:relative;background:var(--ps-bg-color, #fff)}.ps-valuelist-spacer{position:relative;width:100%}.ps-valuelist-item{display:flex;align-items:center;gap:6px;height:28px;padding:0 10px;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-item:hover{background:var(--ps-hover-bg, rgba(0, 0, 0, .04))}.ps-valuelist-item input{margin:0;flex-shrink:0;cursor:pointer}.ps-valuelist-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-valuelist-only{display:none;flex-shrink:0;margin-left:auto;padding:0;height:15px;line-height:12px;font-size:11px;font-family:inherit;color:var(--ps-text-secondary, #666);background:transparent;border:none;word-break:keep-all;cursor:pointer}.ps-valuelist-item:hover .ps-valuelist-only,.ps-valuelist-item:focus-within .ps-valuelist-only{display:block}.ps-valuelist-only:hover{color:var(--ps-accent, #4568e0)}.ps-valuelist-only:focus-visible{outline:1px solid var(--ps-accent, #4568e0);outline-offset:1px;border-radius:2px}.ps-valuelist-item.is-picked{background:var(--ps-picked-bg, rgba(69, 104, 224, .06));box-shadow:inset 2px 0 0 0 var(--ps-accent, #4568e0)}.ps-valuelist-item.is-picked:hover{background:var(--ps-picked-hover-bg, rgba(69, 104, 224, .12))}.ps-valuelist-item.is-pinned-last{box-shadow:inset 2px 0 0 0 var(--ps-accent, #4568e0),inset 0 -1px 0 0 var(--ps-pinned-divider, rgba(0, 0, 0, .12))}.ps-valuelist-notice{padding:6px 10px;font-size:11px;line-height:1.4;color:var(--ps-warning-text, #8a6d3b);background:var(--ps-warning-bg, #fcf8e3);border-top:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-state{padding:24px 10px;text-align:center;color:var(--ps-text-muted, #8998b5)}.ps-theme-excel{--ps-primary-color: #217346;--ps-bg-color: #ffffff;--ps-border-color: #d4d4d4;--ps-pinned-border-color: #b0b0b0;--ps-header-bg: #f3f3f3;--ps-header-text: #333333;--ps-cell-text: #333333;--ps-cell-readonly: #f9f9f9;--ps-row-hover-bg: #e8f3ed;--ps-row-selected-bg: rgba(33, 115, 70, .15);--ps-row-alt-bg: #fafafa;--ps-shadow-color: rgba(0, 0, 0, .08);--ps-cell-selected-bg: rgba(33, 115, 70, .18);--ps-cell-selected-border-color: #217346;--ps-selection-overlay-border-color: #217346;--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #595959;--ps-text-muted: #888888;--ps-scrollbar-thumb: #c0c0c0;--ps-scrollbar-thumb-hover: #a0a0a0;--ps-overlay-bg: #ffffff;--ps-overlay-border: #c8c8c8;--ps-overlay-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ps-overlay-separator: #e8e8e8;--ps-overlay-hover-bg: #f1f7f4;--ps-overlay-accent: #217346;--ps-overlay-text: #333333;--ps-overlay-text-strong: #1a1a1a;--ps-overlay-text-muted: #888888;--ps-overlay-btn-hover-bg: #f0f0f0;--ps-overlay-danger: #c5221f;--ps-overlay-danger-bg: #fef0f0;--ps-loading-bg: rgba(255, 255, 255, .8);--ps-group-row-hover-bg: #e0eee6;--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #2e7d32;--ps-dirty-added-bg: rgba(46, 125, 50, .08);--ps-dirty-modified-color: #f57c00;--ps-dirty-modified-bg: rgba(245, 124, 0, .08);--ps-dirty-modified-cell-bg: rgba(245, 124, 0, .18);--ps-dirty-deleted-color: #c5221f;--ps-dirty-deleted-bg: rgba(197, 34, 31, .08);--ps-dirty-reordered-color: #6a1b9a;--ps-dirty-reordered-bg: rgba(106, 27, 154, .07);--ps-validation-error-color: #c5221f;--ps-validation-error-bg: rgba(197, 34, 31, .06);--ps-subtotal-bg: #e8e8e8;--ps-subtotal-hover-bg: #e0e0e0;--ps-grandtotal-bg: #d8d8d8;--ps-grandtotal-hover-bg: #d0d0d0;--ps-column-subtotal-bg: #e8e8e8;--ps-statusbar-bg: #217346;--ps-statusbar-border: #1a5c38;--ps-statusbar-spinner-border: #4a9970;--ps-checkbox-border: #888888;--ps-checkbox-checked: #217346;--ps-sunday-color: #c5221f;--ps-saturday-color: #1a73e8;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 14px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 8px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: Calibri, "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 600;--ps-cell-flash-up-bg: rgba(33, 115, 70, .4);--ps-cell-flash-down-bg: rgba(197, 34, 31, .4);--ps-cell-flash-neutral-bg: rgba(245, 124, 0, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-sheets{--ps-primary-color: #1a73e8;--ps-bg-color: #ffffff;--ps-border-color: #e0e0e0;--ps-pinned-border-color: #c0c0c0;--ps-header-bg: #f8f9fa;--ps-header-text: #5f6368;--ps-cell-text: #202124;--ps-cell-readonly: #f1f3f4;--ps-row-hover-bg: #f1f3f4;--ps-row-selected-bg: rgba(26, 115, 232, .12);--ps-row-alt-bg: #fafbfc;--ps-shadow-color: rgba(60, 64, 67, .1);--ps-cell-selected-bg: rgba(26, 115, 232, .16);--ps-cell-selected-border-color: #1a73e8;--ps-selection-overlay-border-color: #1a73e8;--ps-selection-overlay-border-width: 1px;--ps-text-secondary: #5f6368;--ps-text-muted: #80868b;--ps-scrollbar-thumb: #dadce0;--ps-scrollbar-thumb-hover: #bdc1c6;--ps-overlay-bg: #ffffff;--ps-overlay-border: #dadce0;--ps-overlay-shadow: 0 4px 12px rgba(60, 64, 67, .15);--ps-overlay-separator: #e8eaed;--ps-overlay-hover-bg: #f1f3f4;--ps-overlay-accent: #1a73e8;--ps-overlay-text: #3c4043;--ps-overlay-text-strong: #202124;--ps-overlay-text-muted: #80868b;--ps-overlay-btn-hover-bg: #f1f3f4;--ps-overlay-danger: #d93025;--ps-overlay-danger-bg: #fce8e6;--ps-loading-bg: rgba(255, 255, 255, .85);--ps-group-row-hover-bg: #e8f0fe;--ps-master-detail-row-bg: #f8f9fa;--ps-dirty-added-color: #1e8e3e;--ps-dirty-added-bg: rgba(30, 142, 62, .08);--ps-dirty-modified-color: #f9ab00;--ps-dirty-modified-bg: rgba(249, 171, 0, .08);--ps-dirty-modified-cell-bg: rgba(249, 171, 0, .2);--ps-dirty-deleted-color: #d93025;--ps-dirty-deleted-bg: rgba(217, 48, 37, .08);--ps-dirty-reordered-color: #9334e6;--ps-dirty-reordered-bg: rgba(147, 52, 230, .07);--ps-validation-error-color: #d93025;--ps-validation-error-bg: rgba(217, 48, 37, .06);--ps-subtotal-bg: #e8f0fe;--ps-subtotal-hover-bg: #d2e3fc;--ps-grandtotal-bg: #d2e3fc;--ps-grandtotal-hover-bg: #aecbfa;--ps-column-subtotal-bg: #e8f0fe;--ps-statusbar-bg: #f8f9fa;--ps-statusbar-border: #dadce0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: #80868b;--ps-checkbox-checked: #1a73e8;--ps-sunday-color: #d93025;--ps-saturday-color: #1a73e8;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 12px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 12px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: "Google Sans", Roboto, Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(30, 142, 62, .35);--ps-cell-flash-down-bg: rgba(217, 48, 37, .35);--ps-cell-flash-neutral-bg: rgba(249, 171, 0, .35);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-material{--ps-primary-color: #3f51b5;--ps-bg-color: #ffffff;--ps-border-color: #e0e0e0;--ps-pinned-border-color: #bdbdbd;--ps-header-bg: #ffffff;--ps-header-text: rgba(0, 0, 0, .87);--ps-cell-text: rgba(0, 0, 0, .87);--ps-cell-readonly: #f5f5f5;--ps-row-hover-bg: rgba(63, 81, 181, .04);--ps-row-selected-bg: rgba(63, 81, 181, .08);--ps-row-alt-bg: #fafafa;--ps-shadow-color: rgba(0, 0, 0, .12);--ps-cell-selected-bg: rgba(63, 81, 181, .16);--ps-cell-selected-border-color: #3f51b5;--ps-selection-overlay-border-color: #3f51b5;--ps-selection-overlay-border-width: 1px;--ps-text-secondary: rgba(0, 0, 0, .6);--ps-text-muted: rgba(0, 0, 0, .38);--ps-scrollbar-thumb: #bdbdbd;--ps-scrollbar-thumb-hover: #9e9e9e;--ps-overlay-bg: #ffffff;--ps-overlay-border: rgba(0, 0, 0, .12);--ps-overlay-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12);--ps-overlay-separator: rgba(0, 0, 0, .12);--ps-overlay-hover-bg: rgba(63, 81, 181, .08);--ps-overlay-accent: #3f51b5;--ps-overlay-text: rgba(0, 0, 0, .87);--ps-overlay-text-strong: rgba(0, 0, 0, 1);--ps-overlay-text-muted: rgba(0, 0, 0, .6);--ps-overlay-btn-hover-bg: rgba(0, 0, 0, .04);--ps-overlay-danger: #f44336;--ps-overlay-danger-bg: #ffebee;--ps-loading-bg: rgba(255, 255, 255, .85);--ps-group-row-hover-bg: rgba(63, 81, 181, .08);--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #43a047;--ps-dirty-added-bg: rgba(67, 160, 71, .08);--ps-dirty-modified-color: #fb8c00;--ps-dirty-modified-bg: rgba(251, 140, 0, .08);--ps-dirty-modified-cell-bg: rgba(251, 140, 0, .2);--ps-dirty-deleted-color: #e53935;--ps-dirty-deleted-bg: rgba(229, 57, 53, .08);--ps-dirty-reordered-color: #8e24aa;--ps-dirty-reordered-bg: rgba(142, 36, 170, .07);--ps-validation-error-color: #f44336;--ps-validation-error-bg: rgba(244, 67, 54, .06);--ps-subtotal-bg: #e8eaf6;--ps-subtotal-hover-bg: #c5cae9;--ps-grandtotal-bg: #c5cae9;--ps-grandtotal-hover-bg: #9fa8da;--ps-column-subtotal-bg: #e8eaf6;--ps-statusbar-bg: #fafafa;--ps-statusbar-border: #e0e0e0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: rgba(0, 0, 0, .54);--ps-checkbox-checked: #3f51b5;--ps-sunday-color: #f44336;--ps-saturday-color: #2196f3;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 12px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 16px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 14px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(67, 160, 71, .4);--ps-cell-flash-down-bg: rgba(229, 57, 53, .4);--ps-cell-flash-neutral-bg: rgba(251, 140, 0, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-header-cell.ps-dragging{opacity:.5}.ps-drop-indicator{position:absolute;top:0;bottom:0;width:3px;background:var(--ps-primary-color);z-index:20000;pointer-events:none}.ps-status-bar{display:flex;justify-content:space-between;align-items:center;height:16px;padding:0 8px;background-color:var(--ps-statusbar-bg);border-top:1px solid var(--ps-statusbar-border);font-size:11px;color:var(--ps-text-secondary);flex-shrink:0;-webkit-user-select:none;user-select:none}.ps-status-bar__timing{display:flex;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-status-bar__aggregates{flex:1;text-align:right;padding-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-status-bar__row-count{white-space:nowrap;margin-left:auto}.ps-status-bar__activity{display:none;align-items:center;gap:4px;padding:0 8px 0 0;white-space:nowrap}.ps-status-bar__spinner{display:inline-block;width:10px;height:10px;border:1.5px solid var(--ps-statusbar-spinner-border);border-top-color:var(--ps-primary-color);border-radius:50%;animation:ps-spin .7s linear infinite;flex-shrink:0}.ps-status-bar__activity-label{font-size:11px;color:var(--ps-primary-color);font-weight:500}.mzc-client-excel-body{height:100%;display:flex;flex-direction:column}.mzc-client-excel-options{display:flex;gap:8px;padding:0 0 12px;justify-content:space-between;align-items:flex-end}.mzc-client-excel-options .mzc-client-excel-option{display:flex;align-items:center;gap:8px;font-size:12px}.mzc-client-excel-options .mzc-client-excel-option--grow{flex:1}.mzc-client-excel-options .mzc-client-excel-option__label{color:var(--mzc-fg-muted, #6a7184);font-weight:500;min-width:56px}.mzc-client-excel-dropzone{flex:1;min-height:220px;background-color:var(--mzc-dropzone-bg, #f8f8fd);border:1px dashed var(--mzc-accent, #4568e0);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;font-size:13px;cursor:pointer}.mzc-client-excel-dropzone>*{pointer-events:none}.mzc-client-excel-dropzone.is-active{border-style:solid}.mzc-client-excel-dropzone__text{text-align:center;color:var(--mzc-fg-muted, #6a7184);font-weight:400}.mzc-client-excel-dropzone__line{display:block}.mzc-client-excel-dropzone__accent{color:var(--mzc-accent, #4568e0)}.mzc-client-excel-dropzone__error{color:var(--mzc-toast-error, #dc5a5a)}.mzc-client-excel-popup .mzc-popup-footer .mzc-btn{min-width:80px}.moz-grid-chrome[data-v-326c95dd]{overflow:hidden}
|
|
1
|
+
.mzc-toast-container{position:fixed;top:16px;right:16px;z-index:var(--mzc-z-toast, 2500);display:flex;flex-direction:column;gap:8px;pointer-events:none}.mzc-toast{pointer-events:auto;min-width:200px;max-width:420px;padding:10px 14px;border-radius:6px;border:1px solid var(--mzc-border, #bbc6d9);border-left-width:4px;background:var(--mzc-bg, #fff);color:var(--mzc-fg, #1f2937);font-size:13px;line-height:1.4;box-shadow:0 4px 12px #0000001f;cursor:pointer;animation:mzc-toast-in .16s ease-out}.mzc-toast--success{border-left-color:var(--mzc-toast-success, #22a06b)}.mzc-toast--error{border-left-color:var(--mzc-toast-error, #dc5a5a)}.mzc-toast--warning{border-left-color:var(--mzc-toast-warning, #e39b1b)}.mzc-toast--info{border-left-color:var(--mzc-accent, #3b82f6)}@keyframes mzc-toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.ps-theme-light{--ps-primary-color: #4568e0;--ps-bg-color: #ffffff;--ps-border-color: rgb(187, 198, 217);--ps-pinned-border-color: rgb(108, 128, 170);--ps-header-bg: rgb(222, 224, 239);--ps-header-text: rgb(67, 76, 96);--ps-cell-text: rgb(67, 76, 96);--ps-cell-readonly: rgb(244, 244, 249);--ps-row-hover-bg: #f0f7ff;--ps-row-selected-bg: rgba(69, 104, 224, .2);--ps-row-alt-bg: rgb(248, 248, 253);--ps-shadow-color: rgba(0, 0, 0, .1);--ps-cell-selected-bg: rgba(69, 104, 224, .16);--ps-cell-selected-border-color: rgba(69, 104, 224, .6);--ps-selection-overlay-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #666;--ps-text-muted: #999;--ps-scrollbar-thumb: #bbc6d9;--ps-scrollbar-thumb-hover: #bbc6d9;--ps-overlay-bg: #fff;--ps-overlay-border: #d0d5dd;--ps-overlay-shadow: 0 4px 16px rgba(0, 0, 0, .12);--ps-overlay-separator: #e5e7eb;--ps-overlay-hover-bg: #f0f4ff;--ps-overlay-accent: #4a7cff;--ps-overlay-text: #374151;--ps-overlay-text-strong: #111827;--ps-overlay-text-muted: #9ca3af;--ps-overlay-btn-hover-bg: #f3f4f6;--ps-overlay-danger: #ef4444;--ps-overlay-danger-bg: #fef2f2;--ps-loading-bg: rgba(255, 255, 255, .8);--ps-group-row-hover-bg: #e3f2fd;--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #4caf50;--ps-dirty-added-bg: rgba(76, 175, 80, .08);--ps-dirty-modified-color: #ffc107;--ps-dirty-modified-bg: rgba(255, 193, 7, .08);--ps-dirty-modified-cell-bg: rgba(255, 193, 7, .2);--ps-dirty-deleted-color: #f44336;--ps-dirty-deleted-bg: rgba(244, 67, 54, .08);--ps-dirty-reordered-color: #7b1fa2;--ps-dirty-reordered-bg: rgba(123, 31, 162, .07);--ps-validation-error-color: #e53935;--ps-validation-error-bg: rgba(229, 57, 53, .06);--ps-subtotal-bg: #d6def8;--ps-subtotal-hover-bg: #d6def8;--ps-grandtotal-bg: #d6def8;--ps-grandtotal-hover-bg: #d6def8;--ps-column-subtotal-bg: #d6def8;--ps-statusbar-bg: #f8f9fa;--ps-statusbar-border: #e0e0e0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: #98a2b3;--ps-checkbox-checked: #3b82f6;--ps-sunday-color: #ef4444;--ps-saturday-color: #3b82f6;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 8px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 10px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(22, 160, 133, .4);--ps-cell-flash-down-bg: rgba(231, 76, 60, .4);--ps-cell-flash-neutral-bg: rgba(241, 196, 15, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-dark{--ps-primary-color: #4568e0;--ps-bg-color: #1e1e1e;--ps-border-color: #3c3c3c;--ps-pinned-border-color: #6e6e6e;--ps-header-bg: #2d2d2d;--ps-header-text: #e0e0e0;--ps-cell-text: #d4d4d4;--ps-cell-readonly: #2a2a2e;--ps-row-hover-bg: #2a2d2e;--ps-row-selected-bg: rgba(69, 104, 224, .2);--ps-row-alt-bg: #252526;--ps-shadow-color: rgba(0, 0, 0, .3);--ps-cell-selected-bg: rgba(69, 104, 224, .16);--ps-cell-selected-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-color: rgba(69, 104, 224, 1);--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #9ca3af;--ps-text-muted: #666;--ps-scrollbar-thumb: #555;--ps-scrollbar-thumb-hover: #777;--ps-overlay-bg: #1e2330;--ps-overlay-border: #2d3446;--ps-overlay-shadow: 0 4px 16px rgba(0, 0, 0, .4);--ps-overlay-separator: #2d3446;--ps-overlay-hover-bg: #2a3142;--ps-overlay-accent: #6b9aff;--ps-overlay-text: #d1d5db;--ps-overlay-text-strong: #e5e7eb;--ps-overlay-text-muted: #6b7280;--ps-overlay-btn-hover-bg: #2a3142;--ps-overlay-danger: #f87171;--ps-overlay-danger-bg: rgba(239, 68, 68, .1);--ps-loading-bg: rgba(0, 0, 0, .5);--ps-group-row-hover-bg: #094771;--ps-master-detail-row-bg: #1e1e1e;--ps-dirty-added-color: #4caf50;--ps-dirty-added-bg: rgba(76, 175, 80, .15);--ps-dirty-modified-color: #ffc107;--ps-dirty-modified-bg: rgba(255, 193, 7, .15);--ps-dirty-modified-cell-bg: rgba(255, 193, 7, .25);--ps-dirty-deleted-color: #f44336;--ps-dirty-deleted-bg: rgba(244, 67, 54, .15);--ps-dirty-reordered-color: #7b1fa2;--ps-dirty-reordered-bg: rgba(123, 31, 162, .1);--ps-validation-error-color: #ef5350;--ps-validation-error-bg: rgba(239, 83, 80, .1);--ps-subtotal-bg: #2a3441;--ps-subtotal-hover-bg: #343f4f;--ps-grandtotal-bg: #1e2631;--ps-grandtotal-hover-bg: #283040;--ps-column-subtotal-bg: #2a3441;--ps-statusbar-bg: #1a1f2e;--ps-statusbar-border: #2d3446;--ps-statusbar-spinner-border: #3d4556;--ps-checkbox-border: #667085;--ps-checkbox-checked: #3b82f6;--ps-sunday-color: #f87171;--ps-saturday-color: #60a5fa;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 10px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 10px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(22, 160, 133, .4);--ps-cell-flash-down-bg: rgba(231, 76, 60, .4);--ps-cell-flash-neutral-bg: rgba(241, 196, 15, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-grid-container.ps-selection-row,.ps-grid-container.ps-selection-range{--ps-row-selected-bg: var(--ps-cell-selected-bg)}.ps-grid-container{height:100%;position:relative;display:flex;flex-direction:column;isolation:isolate;overflow:hidden;background:var(--ps-bg-color);font-family:var(--ps-font-family);font-size:var(--ps-font-size);color:var(--ps-cell-text);box-sizing:border-box;outline:none}.ps-grid-container *,.ps-grid-container *:before,.ps-grid-container *:after{box-sizing:border-box}.ps-main-area{flex:1;display:flex;flex-direction:row;overflow:hidden;min-height:0}.ps-content-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.ps-scroll-area-x{flex-shrink:0;display:flex;flex-direction:row;background:var(--ps-bg-color)}.ps-header{flex-shrink:0;background:var(--ps-header-bg);overflow-x:auto;overflow-y:hidden;z-index:10000}.ps-header::-webkit-scrollbar{display:none}.ps-header{-ms-overflow-style:none;scrollbar-width:none}.ps-header-row{display:flex;height:var(--ps-header-height);width:var(--ps-total-width, 100%);position:relative;background:var(--ps-header-bg)}.ps-row .ps-cells-center .ps-cell.ps-group-indent-cell{padding-left:calc(var(--ps-group-indent, 0px) + var(--ps-cell-padding-side))}.ps-header-cell{position:absolute;top:0;display:flex;align-items:center;padding:var(--ps-cell-padding);font-weight:var(--ps-header-font-weight);color:var(--ps-header-text);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:1px solid var(--ps-border-color);-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;box-sizing:border-box}.ps-header-cell .ps-header-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-pivot-header-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.ps-resize-handle{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;background:transparent;z-index:1}.ps-resize-handle:hover{background:var(--ps-primary-color)}.ps-sort-icon{flex-shrink:0;margin-left:4px;opacity:.6}.ps-header-cell.ps-sorted .ps-sort-icon{opacity:1}.ps-header-cell.ps-sort-asc .ps-sort-icon:before{content:"▲"}.ps-header-cell.ps-sort-desc .ps-sort-icon:before{content:"▼"}.ps-sort-icon[data-sort-seq]:after{content:attr(data-sort-seq);font-size:9px;margin-left:1px;opacity:.7;vertical-align:super}.ps-filter-icon{flex-shrink:0;margin-left:4px;opacity:.6}.ps-header-cell.ps-filtered .ps-filter-icon{opacity:1}.ps-header-cell.ps-filtered .ps-filter-icon:before{content:"f"}.ps-body{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column}.ps-scroll-wrapper{flex:1;position:relative;overflow:hidden}.ps-scroll-proxy-y{flex-shrink:0;overflow-y:auto;overflow-x:hidden;z-index:5;background:var(--ps-bg-color)}.ps-scroll-proxy-y::-webkit-scrollbar{width:var(--ps-scrollbar-width)}.ps-scroll-proxy-y::-webkit-scrollbar-track{background:var(--ps-bg-color)}.ps-scroll-proxy-y::-webkit-scrollbar-thumb{background:var(--ps-scrollbar-thumb)}.ps-scroll-proxy-y::-webkit-scrollbar-thumb:hover{background:var(--ps-scrollbar-thumb-hover)}.ps-scroll-spacer-y{width:1px}.ps-scroll-proxy-x{flex:1;overflow-x:auto;overflow-y:hidden;z-index:5;background:var(--ps-bg-color)}.ps-scroll-proxy-x::-webkit-scrollbar{height:var(--ps-scrollbar-width)}.ps-scroll-proxy-x::-webkit-scrollbar-track{background:var(--ps-bg-color)}.ps-scroll-proxy-x::-webkit-scrollbar-thumb{background:var(--ps-scrollbar-thumb)}.ps-scroll-proxy-x::-webkit-scrollbar-thumb:hover{background:var(--ps-scrollbar-thumb-hover)}.ps-scroll-spacer-x{display:block;height:1px}.ps-scroll-corner{flex-shrink:0;width:var(--ps-scrollbar-width);background:var(--ps-bg-color)}.ps-viewport{position:absolute;top:0;left:0;right:0;bottom:0;overflow-x:auto;overflow-y:auto}.ps-viewport::-webkit-scrollbar{width:0;height:0;display:none}.ps-viewport{-ms-overflow-style:none;scrollbar-width:none}.ps-row-container{position:relative;width:var(--ps-total-width, 100%)}.ps-row{position:absolute;left:0;display:flex;height:var(--ps-row-height);width:var(--ps-total-width, 100%);will-change:transform;contain:layout style}.ps-cells-left,.ps-cells-center,.ps-cells-right{position:relative;height:100%;flex-shrink:0}.ps-cells-left{position:sticky;left:0;z-index:2;background:inherit;width:var(--ps-left-total-width, 0px);height:100%}.ps-cells-right{position:sticky;right:0;z-index:2;background:inherit;width:var(--ps-right-total-width, 0px);height:100%}.ps-cells-center{position:relative;width:var(--ps-center-total-width, 0px);height:100%}.ps-cell{position:absolute;top:0;display:flex;align-items:center;height:100%;padding:var(--ps-cell-padding);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:var(--ps-border-width) solid var(--ps-border-color);contain:strict;box-sizing:border-box}.ps-cell-content{width:100%;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-dynamic-row-heights .ps-cell{contain:content;height:auto;min-height:100%}.ps-cell.ps-editing{overflow:visible;outline:2px solid var(--ps-primary-color);outline-offset:-2px}.ps-cell.ps-editing input,.ps-cell.ps-editing select,.ps-cell.ps-editing textarea{flex:1;min-width:0;align-self:stretch;padding:0;margin:0;border:none;outline:none;font-family:inherit;font-size:inherit;background:transparent;color:var(--ps-cell-text);box-sizing:border-box}.ps-cell.ps-editing input[type=number]::-webkit-inner-spin-button,.ps-cell.ps-editing input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ps-cell.ps-editing input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.ps-cell.ps-cell-readonly{background:var(--ps-cell-readonly);color:var(--ps-cell-text)}.ps-empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--ps-text-muted);font-size:16px}.ps-loading{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:var(--ps-loading-bg);z-index:20000}.ps-loading-spinner{width:32px;height:32px;border:3px solid var(--ps-border-color);border-top-color:var(--ps-primary-color);border-radius:50%;animation:ps-spin .8s linear infinite}@keyframes ps-spin{to{transform:rotate(360deg)}}.ps-pinned-top,.ps-pinned-bottom{flex-shrink:0;background:var(--ps-bg-color)}.ps-pinned-row{display:flex;background:var(--ps-bg-color);width:var(--ps-total-width, 100%);position:relative}.ps-pinned-row .ps-cells-left,.ps-pinned-row .ps-cells-center,.ps-pinned-row .ps-cells-right{position:relative;height:100%;flex-shrink:0}.ps-pinned-row .ps-cells-left{position:sticky;left:0;z-index:2;background:var(--ps-bg-color);width:var(--ps-left-total-width, 0px)}.ps-pinned-row .ps-cells-center{position:relative;width:var(--ps-center-total-width, 0px)}.ps-pinned-row .ps-cells-right{position:sticky;right:0;z-index:2;background:var(--ps-bg-color);width:var(--ps-right-total-width, 0px)}.ps-column-group-row>.ps-cells-left>.ps-header-cell,.ps-column-group-row>.ps-cells-right>.ps-header-cell{background:var(--ps-header-bg)}.ps-grid-container.ps-has-top-pinned .ps-pinned-top:after{content:"";position:absolute;bottom:0;left:0;right:0;height:0;border-bottom:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-grid-container.ps-has-bottom-pinned .ps-pinned-bottom:before{content:"";position:absolute;top:0;left:0;right:0;height:0;border-top:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-grid-container.ps-has-left-pinned .ps-row>.ps-cells-left>.ps-cell:last-child,.ps-grid-container.ps-has-left-pinned .ps-pinned-row>.ps-cells-left>.ps-cell:last-child,.ps-grid-container.ps-has-left-pinned .ps-header-row>.ps-cells-left>.ps-header-cell:last-child{border-right-color:var(--ps-pinned-border-color)}.ps-grid-container.ps-has-right-pinned .ps-row>.ps-cells-right>.ps-cell:nth-child(1),.ps-grid-container.ps-has-right-pinned .ps-pinned-row>.ps-cells-right>.ps-cell:nth-child(1),.ps-grid-container.ps-has-right-pinned .ps-header-row>.ps-cells-right>.ps-header-cell:nth-child(1){border-left:1px solid var(--ps-pinned-border-color)}.ps-pivot-header-left:after{content:"";position:absolute;top:0;right:0;width:0;height:100%;border-right:1px solid var(--ps-pinned-border-color);z-index:3;pointer-events:none}.ps-row.ps-selected .ps-cell,.ps-row.ps-selected .ps-cell.ps-cell-merged-anchor,.ps-cell.ps-merge-float.ps-cell-row-selected{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row .ps-cell.ps-cell-selected,.ps-merge-overlay .ps-merge-float.ps-cell-selected{border-right-color:var(--ps-cell-selected-border-color);border-bottom-color:var(--ps-cell-selected-border-color)}.ps-selection-overlay{position:absolute;top:0;left:0;display:flex;width:var(--ps-total-width, 100%);height:0;pointer-events:none;z-index:7}.ps-selection-overlay .ps-cells-left,.ps-selection-overlay .ps-cells-center,.ps-selection-overlay .ps-cells-right{height:0;background:transparent;box-shadow:none;pointer-events:none}.ps-selection-overlay-region{position:absolute;border:var(--ps-selection-overlay-border-width, 1px) solid var(--ps-selection-overlay-border-color);box-sizing:border-box;pointer-events:none;box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-body.ps-dragging,.ps-body.ps-dragging *{cursor:crosshair;-webkit-user-select:none;user-select:none}.ps-row.ps-row-added{background-color:var(--ps-dirty-added-bg)}.ps-row.ps-row-added:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-added-color);position:absolute}.ps-row.ps-row-added .ps-cell{background-color:var(--ps-dirty-added-bg)}.ps-row.ps-row-modified{background-color:var(--ps-dirty-modified-bg)}.ps-row.ps-row-modified:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-modified-color);position:absolute}.ps-row.ps-row-modified .ps-cell{background-color:var(--ps-dirty-modified-bg)}.ps-row .ps-cell.ps-cell-modified{background-color:var(--ps-dirty-modified-cell-bg)}.ps-row.ps-row-deleted{background-color:var(--ps-dirty-deleted-bg);opacity:.6}.ps-row.ps-row-deleted:after{content:"";height:100%;border-left:3px solid var(--ps-dirty-deleted-color);position:absolute}.ps-row.ps-row-deleted .ps-cell{background-color:var(--ps-dirty-deleted-bg);text-decoration:line-through;color:var(--ps-text-muted)}.ps-row.ps-row-readonly .ps-cell{background-color:var(--ps-cell-readonly);cursor:not-allowed}.ps-row.ps-selected.ps-row-readonly .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-reordered:after{content:"";position:absolute;left:0;top:0;height:100%;width:3px;background:var(--ps-dirty-reordered-color);pointer-events:none}.ps-row.ps-row-reordered .ps-cell{background-color:var(--ps-dirty-reordered-bg)}.ps-row.ps-row-dragging{opacity:.4;transition:opacity 80ms ease-out}.ps-row.ps-row-drop-target:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;background-color:#3b82f62e;box-shadow:inset 0 0 0 2px #3b82f6d9;transition:background-color 80ms ease-out,box-shadow 80ms ease-out}.ps-row.ps-row-drop-target-invalid:before{background-color:#ef44442e;box-shadow:inset 0 0 0 2px #ef4444d9}.ps-drag-handle{cursor:grab;color:var(--ps-text-muted);font-size:14px;-webkit-user-select:none;user-select:none;line-height:1}.ps-drag-handle:hover{color:var(--ps-text-secondary)}.ps-drag-handle:active{cursor:grabbing}.ps-sort-active .ps-drag-handle{cursor:not-allowed;opacity:.4}.ps-row-drop-indicator{position:absolute;left:0;height:2px;background:var(--ps-primary-color);pointer-events:none;z-index:100;transition:top .05s ease}.ps-drag-ghost{position:fixed;z-index:10000;padding:4px 12px;background:var(--ps-bg-color);border:1px solid var(--ps-primary-color);border-radius:4px;box-shadow:0 2px 8px var(--ps-shadow-color);font-size:12px;color:var(--ps-cell-text);pointer-events:none;opacity:.9}.ps-drag-ghost.ps-drag-ghost-multi{box-shadow:4px 4px 0 -1px var(--ps-bg-color),4px 4px 0 0 var(--ps-primary-color),8px 8px 0 -1px var(--ps-bg-color),8px 8px 0 0 var(--ps-primary-color),0 2px 8px var(--ps-shadow-color);font-weight:600}.ps-drag-ghost.ps-drag-ghost-multi-large{box-shadow:4px 4px 0 -1px var(--ps-bg-color),4px 4px 0 0 var(--ps-primary-color),0 2px 8px var(--ps-shadow-color)}.ps-row-drop-indicator.invalid{background:#f44336;height:3px}.ps-row-drop-indicator.invalid[data-reason]:after{content:attr(data-reason);position:absolute;top:-22px;left:8px;background:#f44336;color:#fff;padding:2px 8px;border-radius:4px;font-size:11px;white-space:nowrap;box-shadow:0 2px 4px #0003}body.ps-cross-grid-invalid,body.ps-cross-grid-invalid *{cursor:no-drop!important}.ps-row.ps-selected.ps-row-added .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-added .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-modified .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-modified .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-deleted .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-deleted .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-row.ps-selected.ps-row-reordered .ps-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}.ps-row.ps-row-reordered .ps-cell.ps-cell-selected{box-shadow:inset 0 0 0 9999px var(--ps-cell-selected-bg)}.ps-cell-flash-up{background-color:var(--ps-cell-flash-up-bg)!important;transition:none}.ps-cell-flash-down{background-color:var(--ps-cell-flash-down-bg)!important;transition:none}.ps-cell-flash-neutral{background-color:var(--ps-cell-flash-neutral-bg)!important;transition:none}.ps-cell-flash-fade{transition:background-color var(--ps-cell-fade-duration, 1s) ease-out;background-color:transparent!important}.ps-row.ps-group-row{background:linear-gradient(to right,var(--ps-row-alt-bg),var(--ps-bg-color));border-bottom:1px solid var(--ps-border-color);border-right:1px solid var(--ps-border-color);cursor:pointer;-webkit-user-select:none;user-select:none;width:var(--ps-total-width, 100%)}.ps-row.ps-group-row .ps-cells-center{position:relative}.ps-row.ps-group-row .ps-cell{border-bottom:none}.ps-row.ps-group-row .ps-cells-center .ps-cell{background:transparent}.ps-row.ps-group-row .ps-cells-left .ps-cell,.ps-row.ps-group-row .ps-cells-right .ps-cell{background:var(--ps-row-alt-bg)}.ps-cell.ps-merge-float.ps-group-banner-float{background:linear-gradient(to right,var(--ps-row-alt-bg),var(--ps-bg-color));border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:var(--ps-border-width) solid var(--ps-border-color);pointer-events:none;white-space:nowrap;color:var(--ps-cell-text)}.ps-cell.ps-merge-float.ps-group-banner-float.ps-group-banner-hover{background:linear-gradient(to right,var(--ps-group-row-hover-bg),var(--ps-bg-color))}.ps-row.ps-group-row:hover .ps-cells-left .ps-cell,.ps-row.ps-group-row:hover .ps-cells-right .ps-cell,.ps-row.ps-group-row:hover .ps-cells-center .ps-cell.ps-group-standalone-cell{background:var(--ps-group-row-hover-bg)}.ps-group-expand,.ps-group-collapse{margin-right:8px;color:var(--ps-cell-text)}.ps-group-label{font-weight:500}.ps-group-label strong{color:var(--ps-primary-color)}.ps-group-aggregates{font-size:13px;margin-left:16px;color:var(--ps-text-secondary, #666)}.ps-group-aggregate{color:var(--ps-header-text);margin-right:12px}.ps-row.ps-group-row .ps-cells-center .ps-cell.ps-group-standalone-cell{background:var(--ps-row-alt-bg);z-index:1}.ps-master-detail-row{border-bottom:1px solid var(--ps-border-color);background:var(--ps-master-detail-row-bg)}.ps-master-detail-row .ps-cells-center{display:block;padding:12px 16px;overflow:hidden}.ps-tree-expand,.ps-tree-collapse,.ps-master-detail-expand,.ps-master-detail-collapse,.ps-group-expand,.ps-group-collapse,.ps-pivot-expand,.ps-pivot-collapse,.ps-column-group-expand,.ps-column-group-collapse,.ps-pivotcol-expand,.ps-pivotcol-collapse{border:none;background:none;padding:0;font:inherit;outline:inherit;display:inline-block;width:16px;text-align:center;font-size:10px;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--ps-text-secondary);transition:color .15s;flex-shrink:0;margin-right:4px}.ps-tree-expand:after,.ps-master-detail-expand:after,.ps-group-expand:after,.ps-pivot-expand:after,.ps-column-group-expand:after,.ps-pivotcol-expand:after{content:"▼"}.ps-tree-collapse:after,.ps-master-detail-collapse:after,.ps-group-collapse:after,.ps-pivot-collapse:after,.ps-column-group-collapse:after,.ps-pivotcol-collapse:after{content:"▶"}.ps-tree-expand:hover,.ps-tree-collapse:hover,.ps-master-detail-expand:hover,.ps-master-detail-collapse:hover,.ps-group-expand:hover,.ps-group-collapse:hover,.ps-pivot-expand:hover,.ps-pivot-collapse:hover,.ps-column-group-expand:hover,.ps-column-group-collapse:hover,.ps-pivotcol-expand:hover,.ps-pivotcol-collapse:hover{color:var(--ps-primary-color)}.ps-column-group-expand,.ps-column-group-collapse,.ps-pivotcol-expand,.ps-pivotcol-collapse{margin-right:0;margin-left:4px}.ps-row.ps-pivot-expandable .ps-cell:first-child .ps-cell-content{display:flex;align-items:center}.ps-multi-row-header{position:relative}.ps-multi-row-header-grid{position:relative;background:var(--ps-header-bg)}.ps-multirow-container{position:relative}.ps-multi-row-cell{position:absolute;box-sizing:border-box;contain:strict;display:flex;align-items:center;padding:var(--ps-cell-padding);background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color);border-bottom:1px dashed var(--ps-border-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.ps-multi-row-cell.ps-last-row{border-bottom:1px solid var(--ps-border-color)}.ps-multi-row-cell.ps-first-column{border-left:none}.ps-multirow-container .ps-multi-row-cell.ps-first-column{padding-left:calc(var(--ps-group-indent, 0px) + 12px)}.ps-multi-row-cell.ps-rowspan{z-index:2;background:var(--ps-bg-color);border-right:var(--ps-border-width) solid var(--ps-border-color)}.ps-multi-row-header-grid .ps-multi-row-cell.ps-rowspan{background:var(--ps-header-bg)}.ps-multi-row-header-grid .ps-header-cell{background:var(--ps-header-bg);font-weight:var(--ps-header-font-weight);color:var(--ps-header-text);border-bottom:1px solid var(--ps-border-color)}.ps-multirow-container.ps-selected .ps-multi-row-cell{box-shadow:inset 0 0 0 9999px var(--ps-row-selected-bg)}:where(.ps-row.ps-row-alt) .ps-cell:where(:not(.ps-cell-merged-anchor):not(.ps-cell-readonly)){background:var(--ps-row-alt-bg)}.ps-mode-pivot .ps-row:not(.ps-row-subtotal):not(.ps-row-grandtotal):not(.ps-group-row) .ps-cells-left .ps-cell,.ps-mode-pivot .ps-merge-overlay .ps-cells-left .ps-cell.ps-merge-float{font-weight:500}.ps-row.ps-row-subtotal{background-color:var(--ps-subtotal-bg)}.ps-row.ps-row-subtotal .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-subtotal-bg);font-weight:600}.ps-row.ps-row-subtotal:hover .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-subtotal-hover-bg)}.ps-row.ps-row-grandtotal{background-color:var(--ps-grandtotal-bg)}.ps-row.ps-row-grandtotal .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-grandtotal-bg);font-weight:700}.ps-row.ps-row-grandtotal:hover .ps-cell:not(.ps-cell-merged-anchor){background-color:var(--ps-grandtotal-hover-bg)}.ps-cell.ps-cell-column-subtotal{background-color:var(--ps-column-subtotal-bg);font-weight:600}.ps-cell.ps-cell-column-grandtotal{background-color:var(--ps-grandtotal-bg);font-weight:700}.ps-outline-group-row{font-weight:600}.ps-outline-grandtotal-row{font-weight:700}.ps-row.ps-row-has-merge-anchor .ps-cells-left,.ps-row.ps-row-has-merge-anchor .ps-cells-right{z-index:3}.ps-cell.ps-cell-merged-anchor{display:flex;align-items:center;background:var(--ps-bg-color);z-index:1;overflow:hidden;border:var(--ps-border-width) solid var(--ps-border-color);border-top:none;border-left:none;box-sizing:border-box}.ps-dynamic-row-heights .ps-cell.ps-cell-merged-anchor{min-height:unset;overflow:visible}.ps-cell.ps-cell-merged-hidden{pointer-events:none;border-color:transparent}.ps-merge-overlay{position:absolute;top:0;left:0;display:flex;width:var(--ps-total-width, 100%);height:0;pointer-events:none;z-index:6}.ps-merge-overlay .ps-cells-left,.ps-merge-overlay .ps-cells-center,.ps-merge-overlay .ps-cells-right{height:0;background:transparent;box-shadow:none;pointer-events:none}.ps-cell.ps-merge-float{position:absolute;display:flex;align-items:center;background:var(--ps-bg-color);overflow:hidden;border:var(--ps-border-width) solid var(--ps-border-color);border-top:none;border-left:none;box-sizing:border-box;pointer-events:auto;cursor:default;user-select:none;-webkit-user-select:none}.ps-row .ps-cell.ps-cell-invalid{border-bottom:2px solid var(--ps-validation-error-color)}.ps-cell.ps-cell-invalid:after{content:"";position:absolute;right:0;bottom:0;width:0;height:0;border-style:solid;border-width:0 0 6px 6px;border-color:transparent transparent var(--ps-validation-error-color) transparent}.ps-theme-dark .ps-row .ps-cell.ps-cell-invalid{background-color:var(--ps-validation-error-bg);box-shadow:inset 2px 0 0 0 var(--ps-validation-error-color)}.ps-cell.ps-editing .ps-editor-invalid{border-color:var(--ps-validation-error-color);background-color:var(--ps-validation-error-bg)}.ps-cell-content>input.ps-cell-checkbox-input{margin:0;width:14px;height:14px;vertical-align:middle;cursor:pointer;pointer-events:none;accent-color:var(--ps-checkbox-checked)}.ps-cell[data-column-id=__drag_handle__]{padding:0;background:var(--ps-header-bg)}.ps-cell[data-column-id=__drag_handle__] .ps-cell-content{display:flex;justify-content:center}.ps-header-cell[data-column-id=__drag_handle__]{padding:0;background:var(--ps-header-bg)}.ps-cell[data-column-id=_rowHeader]{padding:var(--ps-cell-padding);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--ps-header-bg);border-right:1px solid var(--ps-border-color)}.ps-cell[data-column-id=_rowHeader] .ps-cell-content{display:flex;align-items:center;justify-content:center}.ps-header-cell[data-column-id=_rowHeader]{padding:0;background:var(--ps-header-bg)}.ps-cell-content>input.ps-row-header-checkbox-input{margin:0;width:14px;height:14px;cursor:pointer;accent-color:var(--ps-checkbox-checked)}.ps-dropdown-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:6px;box-shadow:var(--ps-overlay-shadow);overflow:hidden;display:flex;flex-direction:column}.ps-dropdown-search{padding:8px 10px;border:none;border-bottom:1px solid var(--ps-overlay-separator);font-size:13px;outline:none;width:100%;box-sizing:border-box;background:var(--ps-overlay-bg);color:var(--ps-overlay-text-strong)}.ps-dropdown-search:focus{border-bottom-color:var(--ps-overlay-accent)}.ps-dropdown-list{overflow-y:auto;max-height:250px}.ps-dropdown-item{padding:7px 10px;font-size:13px;cursor:pointer;display:flex;align-items:center;transition:background .1s}.ps-dropdown-item:hover,.ps-dropdown-item.focused{background:var(--ps-overlay-hover-bg)}.ps-dropdown-item.selected{font-weight:600;color:var(--ps-overlay-accent)}.ps-dropdown-item.selected:after{content:"";margin-left:auto;width:12px;height:12px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M2.5 6.5L5 9L9.5 3.5' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center / 12px 12px;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M2.5 6.5L5 9L9.5 3.5' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat center / 12px 12px}.ps-dropdown-empty{padding:12px 10px;font-size:13px;color:var(--ps-overlay-text-muted);text-align:center}.ps-multiselect-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:6px;box-shadow:var(--ps-overlay-shadow);overflow:hidden;display:flex;flex-direction:column}.ps-multiselect-search{padding:8px 10px;border:none;border-bottom:1px solid var(--ps-overlay-separator);font-size:13px;outline:none;width:100%;box-sizing:border-box;background:var(--ps-overlay-bg);color:var(--ps-overlay-text-strong)}.ps-multiselect-search:focus{border-bottom-color:var(--ps-overlay-accent)}.ps-multiselect-toggle-all{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--ps-overlay-separator);cursor:pointer;font-size:12px;color:var(--ps-overlay-text-muted);-webkit-user-select:none;user-select:none}.ps-multiselect-toggle-all:hover{background:var(--ps-overlay-hover-bg)}.ps-multiselect-toggle-checkbox{margin:0;cursor:pointer;pointer-events:none;accent-color:var(--ps-overlay-accent)}.ps-multiselect-list{overflow-y:auto;max-height:220px}.ps-multiselect-item{padding:6px 10px;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .1s}.ps-multiselect-item:hover,.ps-multiselect-item.focused{background:var(--ps-overlay-hover-bg)}.ps-multiselect-item.checked{color:var(--ps-overlay-accent)}.ps-multiselect-checkbox{margin:0;flex-shrink:0;cursor:pointer;pointer-events:none;accent-color:var(--ps-overlay-accent)}.ps-multiselect-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-multiselect-empty{padding:12px 10px;font-size:13px;color:var(--ps-overlay-text-muted);text-align:center}.ps-datepicker-overlay{background:var(--ps-overlay-bg);border:1px solid var(--ps-overlay-border);border-radius:8px;box-shadow:var(--ps-overlay-shadow);padding:12px;width:260px;-webkit-user-select:none;user-select:none}.ps-datepicker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.ps-datepicker-nav{background:none;border:none;cursor:pointer;font-size:14px;padding:4px 8px;border-radius:4px;color:var(--ps-overlay-text);transition:background .15s}.ps-datepicker-nav:hover{background:var(--ps-overlay-btn-hover-bg)}.ps-datepicker-title{font-size:14px;font-weight:600;color:var(--ps-overlay-text-strong)}.ps-datepicker-daynames{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:4px}.ps-datepicker-dayname{font-size:11px;color:var(--ps-overlay-text-muted);padding:4px 0;font-weight:500}.ps-datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.ps-datepicker-day{display:flex;align-items:center;justify-content:center;width:32px;height:32px;font-size:13px;border-radius:50%;cursor:pointer;transition:background .1s;color:var(--ps-overlay-text)}.ps-datepicker-day:hover{background:var(--ps-overlay-hover-bg)}.ps-datepicker-day.today{border:1px solid var(--ps-overlay-accent);font-weight:600}.ps-datepicker-day.selected{background:var(--ps-overlay-accent);color:#fff;font-weight:600}.ps-datepicker-day.selected:hover{background:var(--ps-primary-color)}.ps-datepicker-day.sunday{color:var(--ps-sunday-color)}.ps-datepicker-day.saturday{color:var(--ps-saturday-color)}.ps-datepicker-day.selected.sunday,.ps-datepicker-day.selected.saturday{color:#fff}.ps-datepicker-day-empty{cursor:default}.ps-datepicker-day-empty:hover{background:transparent}.ps-datepicker-footer{display:flex;justify-content:space-between;margin-top:10px;padding-top:8px;border-top:1px solid var(--ps-overlay-separator)}.ps-datepicker-btn{background:none;border:1px solid var(--ps-overlay-border);border-radius:4px;padding:4px 12px;font-size:12px;cursor:pointer;color:var(--ps-overlay-text);transition:all .15s}.ps-datepicker-btn:hover{background:var(--ps-overlay-hover-bg);border-color:var(--ps-overlay-accent);color:var(--ps-overlay-accent)}.ps-datepicker-btn-clear:hover{background:var(--ps-overlay-danger-bg);border-color:var(--ps-overlay-danger);color:var(--ps-overlay-danger)}.ps-valuelist{display:flex;flex-direction:column;font-size:var(--ps-font-size, 12px);color:var(--ps-text-color, #333);background:var(--ps-bg-color, #fff)}.ps-valuelist-head{padding:6px 8px;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-search{width:100%;box-sizing:border-box;height:26px;padding:0 8px;font-size:inherit;font-family:inherit;color:inherit;background:var(--ps-input-bg, #fff);border:1px solid var(--ps-border-color, #e0e0e0);border-radius:3px;outline:none}.ps-valuelist-search:focus{border-color:var(--ps-primary-color, #4568e0)}.ps-valuelist-modebar{display:flex;gap:2px;padding:6px 8px;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-mode-btn{flex:1 1 0;height:22px;padding:0 8px;font-size:11px;font-family:inherit;line-height:1;color:var(--ps-text-secondary, #666);background:var(--ps-segment-bg, rgba(69, 104, 224, .08));border:none;border-radius:3px;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-mode-btn:hover:not(.is-active){color:var(--ps-accent, #4568e0)}.ps-valuelist-mode-btn.is-active{color:#fff;background:var(--ps-accent, #4568e0)}.ps-valuelist-toolbar{display:flex;align-items:center;justify-content:space-between;background:var(--ps-bg-color, #fff);border-bottom:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-picked-only{display:flex;align-items:center;gap:6px;margin-left:auto;padding:6px 10px;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-picked-only input{margin:0;cursor:pointer}.ps-valuelist-picked-only-label{font-size:12px;color:var(--ps-text-secondary, #666)}.ps-valuelist-all{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--ps-bg-color, #fff);cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-all input{margin:0;cursor:pointer}.ps-valuelist-viewport{overflow-y:auto;overflow-x:hidden;position:relative;background:var(--ps-bg-color, #fff)}.ps-valuelist-spacer{position:relative;width:100%}.ps-valuelist-item{display:flex;align-items:center;gap:6px;height:28px;padding:0 10px;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;user-select:none}.ps-valuelist-item:hover{background:var(--ps-hover-bg, rgba(0, 0, 0, .04))}.ps-valuelist-item input{margin:0;flex-shrink:0;cursor:pointer}.ps-valuelist-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ps-valuelist-only{display:none;flex-shrink:0;margin-left:auto;padding:0;height:15px;line-height:12px;font-size:11px;font-family:inherit;color:var(--ps-text-secondary, #666);background:transparent;border:none;word-break:keep-all;cursor:pointer}.ps-valuelist-item:hover .ps-valuelist-only,.ps-valuelist-item:focus-within .ps-valuelist-only{display:block}.ps-valuelist-only:hover{color:var(--ps-accent, #4568e0)}.ps-valuelist-only:focus-visible{outline:1px solid var(--ps-accent, #4568e0);outline-offset:1px;border-radius:2px}.ps-valuelist-item.is-picked{background:var(--ps-picked-bg, rgba(69, 104, 224, .06));box-shadow:inset 2px 0 0 0 var(--ps-accent, #4568e0)}.ps-valuelist-item.is-picked:hover{background:var(--ps-picked-hover-bg, rgba(69, 104, 224, .12))}.ps-valuelist-item.is-pinned-last{box-shadow:inset 2px 0 0 0 var(--ps-accent, #4568e0),inset 0 -1px 0 0 var(--ps-pinned-divider, rgba(0, 0, 0, .12))}.ps-valuelist-notice{padding:6px 10px;font-size:11px;line-height:1.4;color:var(--ps-warning-text, #8a6d3b);background:var(--ps-warning-bg, #fcf8e3);border-top:1px solid var(--ps-border-color, #e0e0e0)}.ps-valuelist-state{padding:24px 10px;text-align:center;color:var(--ps-text-muted, #8998b5)}.ps-theme-excel{--ps-primary-color: #217346;--ps-bg-color: #ffffff;--ps-border-color: #d4d4d4;--ps-pinned-border-color: #b0b0b0;--ps-header-bg: #f3f3f3;--ps-header-text: #333333;--ps-cell-text: #333333;--ps-cell-readonly: #f9f9f9;--ps-row-hover-bg: #e8f3ed;--ps-row-selected-bg: rgba(33, 115, 70, .15);--ps-row-alt-bg: #fafafa;--ps-shadow-color: rgba(0, 0, 0, .08);--ps-cell-selected-bg: rgba(33, 115, 70, .18);--ps-cell-selected-border-color: #217346;--ps-selection-overlay-border-color: #217346;--ps-selection-overlay-border-width: 2px;--ps-text-secondary: #595959;--ps-text-muted: #888888;--ps-scrollbar-thumb: #c0c0c0;--ps-scrollbar-thumb-hover: #a0a0a0;--ps-overlay-bg: #ffffff;--ps-overlay-border: #c8c8c8;--ps-overlay-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ps-overlay-separator: #e8e8e8;--ps-overlay-hover-bg: #f1f7f4;--ps-overlay-accent: #217346;--ps-overlay-text: #333333;--ps-overlay-text-strong: #1a1a1a;--ps-overlay-text-muted: #888888;--ps-overlay-btn-hover-bg: #f0f0f0;--ps-overlay-danger: #c5221f;--ps-overlay-danger-bg: #fef0f0;--ps-loading-bg: rgba(255, 255, 255, .8);--ps-group-row-hover-bg: #e0eee6;--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #2e7d32;--ps-dirty-added-bg: rgba(46, 125, 50, .08);--ps-dirty-modified-color: #f57c00;--ps-dirty-modified-bg: rgba(245, 124, 0, .08);--ps-dirty-modified-cell-bg: rgba(245, 124, 0, .18);--ps-dirty-deleted-color: #c5221f;--ps-dirty-deleted-bg: rgba(197, 34, 31, .08);--ps-dirty-reordered-color: #6a1b9a;--ps-dirty-reordered-bg: rgba(106, 27, 154, .07);--ps-validation-error-color: #c5221f;--ps-validation-error-bg: rgba(197, 34, 31, .06);--ps-subtotal-bg: #e8e8e8;--ps-subtotal-hover-bg: #e0e0e0;--ps-grandtotal-bg: #d8d8d8;--ps-grandtotal-hover-bg: #d0d0d0;--ps-column-subtotal-bg: #e8e8e8;--ps-statusbar-bg: #217346;--ps-statusbar-border: #1a5c38;--ps-statusbar-spinner-border: #4a9970;--ps-checkbox-border: #888888;--ps-checkbox-checked: #217346;--ps-sunday-color: #c5221f;--ps-saturday-color: #1a73e8;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 14px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 8px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: Calibri, "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 600;--ps-cell-flash-up-bg: rgba(33, 115, 70, .4);--ps-cell-flash-down-bg: rgba(197, 34, 31, .4);--ps-cell-flash-neutral-bg: rgba(245, 124, 0, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-sheets{--ps-primary-color: #1a73e8;--ps-bg-color: #ffffff;--ps-border-color: #e0e0e0;--ps-pinned-border-color: #c0c0c0;--ps-header-bg: #f8f9fa;--ps-header-text: #5f6368;--ps-cell-text: #202124;--ps-cell-readonly: #f1f3f4;--ps-row-hover-bg: #f1f3f4;--ps-row-selected-bg: rgba(26, 115, 232, .12);--ps-row-alt-bg: #fafbfc;--ps-shadow-color: rgba(60, 64, 67, .1);--ps-cell-selected-bg: rgba(26, 115, 232, .16);--ps-cell-selected-border-color: #1a73e8;--ps-selection-overlay-border-color: #1a73e8;--ps-selection-overlay-border-width: 1px;--ps-text-secondary: #5f6368;--ps-text-muted: #80868b;--ps-scrollbar-thumb: #dadce0;--ps-scrollbar-thumb-hover: #bdc1c6;--ps-overlay-bg: #ffffff;--ps-overlay-border: #dadce0;--ps-overlay-shadow: 0 4px 12px rgba(60, 64, 67, .15);--ps-overlay-separator: #e8eaed;--ps-overlay-hover-bg: #f1f3f4;--ps-overlay-accent: #1a73e8;--ps-overlay-text: #3c4043;--ps-overlay-text-strong: #202124;--ps-overlay-text-muted: #80868b;--ps-overlay-btn-hover-bg: #f1f3f4;--ps-overlay-danger: #d93025;--ps-overlay-danger-bg: #fce8e6;--ps-loading-bg: rgba(255, 255, 255, .85);--ps-group-row-hover-bg: #e8f0fe;--ps-master-detail-row-bg: #f8f9fa;--ps-dirty-added-color: #1e8e3e;--ps-dirty-added-bg: rgba(30, 142, 62, .08);--ps-dirty-modified-color: #f9ab00;--ps-dirty-modified-bg: rgba(249, 171, 0, .08);--ps-dirty-modified-cell-bg: rgba(249, 171, 0, .2);--ps-dirty-deleted-color: #d93025;--ps-dirty-deleted-bg: rgba(217, 48, 37, .08);--ps-dirty-reordered-color: #9334e6;--ps-dirty-reordered-bg: rgba(147, 52, 230, .07);--ps-validation-error-color: #d93025;--ps-validation-error-bg: rgba(217, 48, 37, .06);--ps-subtotal-bg: #e8f0fe;--ps-subtotal-hover-bg: #d2e3fc;--ps-grandtotal-bg: #d2e3fc;--ps-grandtotal-hover-bg: #aecbfa;--ps-column-subtotal-bg: #e8f0fe;--ps-statusbar-bg: #f8f9fa;--ps-statusbar-border: #dadce0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: #80868b;--ps-checkbox-checked: #1a73e8;--ps-sunday-color: #d93025;--ps-saturday-color: #1a73e8;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 12px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 12px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: "Google Sans", Roboto, Arial, sans-serif;--ps-font-size: 13px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(30, 142, 62, .35);--ps-cell-flash-down-bg: rgba(217, 48, 37, .35);--ps-cell-flash-neutral-bg: rgba(249, 171, 0, .35);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-theme-material{--ps-primary-color: #3f51b5;--ps-bg-color: #ffffff;--ps-border-color: #e0e0e0;--ps-pinned-border-color: #bdbdbd;--ps-header-bg: #ffffff;--ps-header-text: rgba(0, 0, 0, .87);--ps-cell-text: rgba(0, 0, 0, .87);--ps-cell-readonly: #f5f5f5;--ps-row-hover-bg: rgba(63, 81, 181, .04);--ps-row-selected-bg: rgba(63, 81, 181, .08);--ps-row-alt-bg: #fafafa;--ps-shadow-color: rgba(0, 0, 0, .12);--ps-cell-selected-bg: rgba(63, 81, 181, .16);--ps-cell-selected-border-color: #3f51b5;--ps-selection-overlay-border-color: #3f51b5;--ps-selection-overlay-border-width: 1px;--ps-text-secondary: rgba(0, 0, 0, .6);--ps-text-muted: rgba(0, 0, 0, .38);--ps-scrollbar-thumb: #bdbdbd;--ps-scrollbar-thumb-hover: #9e9e9e;--ps-overlay-bg: #ffffff;--ps-overlay-border: rgba(0, 0, 0, .12);--ps-overlay-shadow: 0 5px 5px -3px rgba(0, 0, 0, .2), 0 8px 10px 1px rgba(0, 0, 0, .14), 0 3px 14px 2px rgba(0, 0, 0, .12);--ps-overlay-separator: rgba(0, 0, 0, .12);--ps-overlay-hover-bg: rgba(63, 81, 181, .08);--ps-overlay-accent: #3f51b5;--ps-overlay-text: rgba(0, 0, 0, .87);--ps-overlay-text-strong: rgba(0, 0, 0, 1);--ps-overlay-text-muted: rgba(0, 0, 0, .6);--ps-overlay-btn-hover-bg: rgba(0, 0, 0, .04);--ps-overlay-danger: #f44336;--ps-overlay-danger-bg: #ffebee;--ps-loading-bg: rgba(255, 255, 255, .85);--ps-group-row-hover-bg: rgba(63, 81, 181, .08);--ps-master-detail-row-bg: #fafafa;--ps-dirty-added-color: #43a047;--ps-dirty-added-bg: rgba(67, 160, 71, .08);--ps-dirty-modified-color: #fb8c00;--ps-dirty-modified-bg: rgba(251, 140, 0, .08);--ps-dirty-modified-cell-bg: rgba(251, 140, 0, .2);--ps-dirty-deleted-color: #e53935;--ps-dirty-deleted-bg: rgba(229, 57, 53, .08);--ps-dirty-reordered-color: #8e24aa;--ps-dirty-reordered-bg: rgba(142, 36, 170, .07);--ps-validation-error-color: #f44336;--ps-validation-error-bg: rgba(244, 67, 54, .06);--ps-subtotal-bg: #e8eaf6;--ps-subtotal-hover-bg: #c5cae9;--ps-grandtotal-bg: #c5cae9;--ps-grandtotal-hover-bg: #9fa8da;--ps-column-subtotal-bg: #e8eaf6;--ps-statusbar-bg: #fafafa;--ps-statusbar-border: #e0e0e0;--ps-statusbar-spinner-border: #c0c8d4;--ps-checkbox-border: rgba(0, 0, 0, .54);--ps-checkbox-checked: #3f51b5;--ps-sunday-color: #f44336;--ps-saturday-color: #2196f3;--ps-header-height: 36px;--ps-row-height: 36px;--ps-scrollbar-width: 12px;--ps-cell-padding: 0 var(--ps-cell-padding-side);--ps-cell-padding-side: 16px;--ps-border-width: 1px;--ps-group-indent: 0px;--ps-font-family: Roboto, "Helvetica Neue", Arial, sans-serif;--ps-font-size: 14px;--ps-header-font-weight: 500;--ps-cell-flash-up-bg: rgba(67, 160, 71, .4);--ps-cell-flash-down-bg: rgba(229, 57, 53, .4);--ps-cell-flash-neutral-bg: rgba(251, 140, 0, .4);--ps-cell-flash-duration: .5s;--ps-cell-fade-duration: 1s}.ps-header-cell.ps-dragging{opacity:.5}.ps-drop-indicator{position:absolute;top:0;bottom:0;width:3px;background:var(--ps-primary-color);z-index:20000;pointer-events:none}.ps-status-bar{display:flex;justify-content:space-between;align-items:center;height:16px;padding:0 8px;background-color:var(--ps-statusbar-bg);border-top:1px solid var(--ps-statusbar-border);font-size:11px;color:var(--ps-text-secondary);flex-shrink:0;-webkit-user-select:none;user-select:none}.ps-status-bar__timing{display:flex;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-status-bar__aggregates{flex:1;text-align:right;padding-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ps-status-bar__row-count{white-space:nowrap;margin-left:auto}.ps-status-bar__activity{display:none;align-items:center;gap:4px;padding:0 8px 0 0;white-space:nowrap}.ps-status-bar__spinner{display:inline-block;width:10px;height:10px;border:1.5px solid var(--ps-statusbar-spinner-border);border-top-color:var(--ps-primary-color);border-radius:50%;animation:ps-spin .7s linear infinite;flex-shrink:0}.ps-status-bar__activity-label{font-size:11px;color:var(--ps-primary-color);font-weight:500}.mzc-grid-root{--mzc-accent: #3b82f6;--mzc-border: #bbc6d9;--mzc-bg: #fff;--mzc-fg: #1f2937;--mzc-muted: #6b7280;--mzc-hover: #f1f5f9;--mzc-radius: 4px;display:grid;overflow:hidden;position:relative;height:100%;width:100%;box-sizing:border-box}.mzc-grid-pane{display:flex;flex-direction:column;overflow:hidden;position:relative;min-height:0;border:1px solid var(--mzc-border);box-sizing:border-box}.mzc-splitter{display:none;width:100%;height:10px;cursor:row-resize}.mzc-splitter:active{background-color:#e2e7fa}.mzc-chart-host{display:none;min-height:0;overflow:hidden}.mzc-grid-body{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column;border-top:1px solid var(--mzc-border)}.mzc-grid-toolbox-host:empty+.mzc-grid-pivotbar-host:empty+.mzc-grid-grouppanel-host:empty+.mzc-grid-notification-host:empty+.mzc-grid-body{border-top:none}.mzc-grid-container{flex:1;position:relative;overflow:hidden}.mzc-pivot-chart{display:flex;flex-direction:column;width:100%;height:100%;background:#fff;border:1px solid #bbc6d9;box-sizing:border-box}.mzc-pivot-chart__detail{flex:1;display:flex;flex-direction:column;min-height:0;position:relative}.mzc-detail-chart-title{position:absolute;font-size:12px;font-weight:500;right:23px;top:15px;z-index:1;border-radius:99px;background-color:#f8f8fd;border:1px solid rgba(186,198,212,1);padding:5px 10px;display:flex;align-items:center;gap:6px;line-height:100%;color:#28364e;pointer-events:none}.mzc-detail-chart-title__icon{display:inline-flex;align-items:center}.mzc-detail-chart-canvas{margin-top:16px;width:100%;flex:1;min-height:150px}.mzc-chart-controller{display:flex;justify-content:space-between;padding:10px 12px;background-color:#f5f7fc;border-bottom:1px solid #bac6d4;-webkit-user-select:none;user-select:none}.mzc-chart-input-wrapper{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.mzc-chart-field{display:flex;flex-direction:column;gap:4px;height:fit-content}.mzc-chart-field__label{-webkit-user-select:none;user-select:none;font-size:.75rem;color:#6a7184;font-weight:500;line-height:12px;text-align:left}.mzc-chart-actions{display:flex;align-items:center;gap:5px;flex-shrink:0;height:26px}.mzc-chart-actions .mzc-btn{cursor:pointer;padding:3px}.mzc-chart-spacer{width:1px;height:10px;background-color:#bac6d4}.mzc-multiple-chart{overflow-y:auto;flex:1;display:flex;flex-wrap:wrap;align-content:flex-start;gap:10px;padding:10px}.mzc-multiple-chart-item{position:relative;width:325px;height:50px;border:1px solid #cad4e5;border-radius:4px;cursor:pointer}.mzc-multiple-chart-item:hover{border-color:#4568e0}.mzc-multiple-chart-item>span{position:absolute;left:10px;top:-6px;padding:0 4px;font-size:12px;background-color:#fff;line-height:100%;color:#28364e;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:90%;z-index:1}.mzc-multiple-chart-item.is-total{border-width:2px}.mzc-multiple-chart-item.is-total>span{font-weight:700}.mzc-mini-chart-canvas{width:100%;height:100%}.mzc-grid-toolbox-host:empty,.mzc-grid-notification-host:empty,.mzc-grid-footer-host:empty{display:none}.mzc-grid-loading-host{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:none;align-items:center;justify-content:center;background:#fff}.mzc-grid-loading-host.is-visible{display:flex}.mzc-grid-spinner{width:64px;height:64px}.mzc-grid-spinner-svg{width:100%;height:100%}.mzc-grid-spinner-circle{fill:none;stroke-width:10px;stroke-linecap:round;stroke:#4568e0}.mzc-grid-spinner-circle.bg{stroke-width:10px;stroke:#e9edf4}.mzc-grid-spinner-circle.animate{stroke-dasharray:242.6;animation:mzc-grid-fill 1s cubic-bezier(1,1,1,1) 0s infinite}@keyframes mzc-grid-fill{0%{stroke-dasharray:40 242.6;stroke-dashoffset:282.6}50%{stroke-dasharray:141.3;stroke-dashoffset:141.3}to{stroke-dashoffset:0;stroke-dasharray:40 242.6}}.mzc-grid-emptystate-host{display:contents}.mzc-empty-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;background:transparent;pointer-events:none}.mzc-empty__custom{pointer-events:auto}.mzc-empty-container{display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1;width:480px;height:100%}.mzc-empty-heading{font-size:14px;font-weight:500;line-height:20px;text-align:center;margin:20px 0 0;color:#28364e;white-space:pre-line}.mzc-empty-content{margin:4px 0 0;font-size:12px;font-weight:500;line-height:17px;text-align:center;color:#6a7184;white-space:pre-line}.mzc-empty-img{margin-top:8px;flex:1;max-height:180px;min-height:110px}.mzc-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:13px;line-height:1.4;color:var(--mzc-fg);background:var(--mzc-bg);border:1px solid var(--mzc-border);border-radius:var(--mzc-radius);cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.mzc-btn:hover:not(.is-disabled){background:var(--mzc-hover)}.mzc-btn.is-active{border-color:var(--mzc-accent);color:var(--mzc-accent)}.mzc-btn.is-disabled{opacity:.5;cursor:not-allowed}.mzc-btn--primary{background:var(--mzc-accent);color:#fff;border-color:var(--mzc-accent)}.mzc-btn--ghost{border-color:transparent;background:transparent}.mzc-btn--danger{color:#dc2626;border-color:#fca5a5}.mzc-btn--icon{width:24px;height:24px;padding:0;gap:0;border:none;background:transparent;border-radius:4px;justify-content:center;overflow:visible}.mzc-btn--icon svg{display:block}.mzc-btn--icon:hover:not(.is-disabled){background:#8998b529}.mzc-btn--icon.is-active{background:#4568e029;border:none;color:inherit}.mzc-btn--icon.is-disabled{opacity:1;cursor:not-allowed}.mzc-btn--icon .mzc-btn__badge{position:absolute;top:-7px;right:-8px;display:inline-flex;align-items:center;justify-content:center;min-width:10px;height:16px;padding:0 3px;border:none;border-radius:4px;background:#4569e0;color:#fff;font-size:12px;font-weight:400;line-height:1}.mzc-input{height:30px;padding:0 10px;font-size:13px;font-family:inherit;color:#28364e;background:#fff;border:1px solid #bac6d4;border-radius:4px;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mzc-input::placeholder{color:#96a5be;font-size:13px}.mzc-input:hover:not(.is-disabled){border-color:#4568e0}.mzc-input:focus{outline:none;border-color:#4568e0;box-shadow:0 0 0 3px #4568e033}.mzc-input.is-disabled{-webkit-user-select:none;user-select:none;color:#a7b1bc;border-color:#a7b1bc;background:#f4f4f9;cursor:not-allowed}.mzc-numinput{display:inline-flex;align-items:center;box-sizing:border-box}.mzc-numinput__btn{box-sizing:border-box;width:30px;height:30px;min-width:30px;padding:4px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;background:#4568e0;border:1px solid #4568e0;color:#fff;cursor:pointer}.mzc-numinput__btn--dec{border-radius:4px 0 0 4px}.mzc-numinput__btn--inc{border-radius:0 4px 4px 0}.mzc-numinput__btn:hover:not(:disabled){background:#3e5dc9;border-color:#3e5dc9}.mzc-numinput__btn:disabled{background:#f4f4f9;border-color:#a7b1bc;color:#a7b1bc;cursor:not-allowed}.mzc-numinput__center{display:flex;flex:1 1 auto;min-width:0;height:30px;box-sizing:border-box;border-top:1px solid #bac6d4;border-bottom:1px solid #bac6d4;background:#fff;overflow:hidden}.mzc-numinput__field{width:100%;height:100%;min-width:0;box-sizing:border-box;border:none;outline:none;background:transparent;font-size:13px;color:#28364e;text-align:center;-moz-appearance:textfield}.mzc-numinput__field::-webkit-outer-spin-button,.mzc-numinput__field::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.mzc-numinput:hover .mzc-numinput__center{border-color:#4568e0}.mzc-numinput:focus-within .mzc-numinput__center{border-color:#4568e0;box-shadow:0 0 0 3px #4568e033;z-index:2}.mzc-numinput.is-disabled .mzc-numinput__center{border-color:#a7b1bc;background:#f4f4f9}.mzc-numinput.is-disabled .mzc-numinput__field{color:#a7b1bc;cursor:not-allowed}.mzc-segment{display:inline-flex;box-sizing:border-box;height:30px;padding:2px;gap:2px;border-radius:6px;background:#4568e029}.mzc-segment.is-vertical{flex-direction:column;height:auto}.mzc-segment__btn{box-sizing:border-box;flex-grow:1;min-width:60px;height:100%;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;color:#565f6e;font-size:13px;line-height:13px;font-weight:400;background:transparent;border:none;border-radius:4px;-webkit-user-select:none;user-select:none;cursor:pointer}.mzc-segment.is-vertical .mzc-segment__btn{height:26px}.mzc-segment__btn:hover:not(:disabled){color:#4568e0}.mzc-segment__btn.is-active{color:#4568e0;background:#fff;font-weight:500}.mzc-segment__btn:disabled{color:#a7b1bc;cursor:not-allowed;pointer-events:none}.mzc-segment.is-disabled{background:#e8eaed}.mzc-radio{display:flex;box-sizing:border-box;gap:10px;flex-wrap:wrap}.mzc-radio.is-vertical{flex-direction:column;gap:6px;flex-wrap:nowrap}.mzc-radio__label{display:flex;align-items:center;height:100%;gap:6px;cursor:pointer}.mzc-radio__label.is-disabled{cursor:not-allowed;opacity:.6}.mzc-radio__icon{position:relative;display:block;width:12px;min-width:12px;height:12px;min-height:12px}.mzc-radio__input{position:absolute;top:0;left:0;z-index:1;margin:0;width:100%;height:100%;opacity:0;cursor:pointer}.mzc-radio__input:disabled{cursor:not-allowed}.mzc-radio__dot{display:block;box-sizing:border-box;position:relative;width:12px;height:12px;border:1px solid #bac6d4;border-radius:999px}.mzc-radio__dot:before{content:"";position:absolute;display:none;width:6px;height:6px;border-radius:999px;background-color:#bac6d4;top:50%;left:50%;transform:translate(-50%,-50%)}.mzc-radio__dot.is-active{border-color:#4568e0;background-color:#4568e0}.mzc-radio__dot.is-active:before{display:block;background-color:#fff}.mzc-radio__dot.is-disabled{border-color:#a7b1bc;background-color:#f4f4f9}.mzc-radio__dot.is-disabled:before{background-color:#a7b1bc}.mzc-radio__input:focus-visible+.mzc-radio__dot{box-shadow:0 0 0 3px #4568e033}.mzc-radio__text{display:inline-block;border:none;background:transparent;color:#28364e;font-size:.8125rem;line-height:.8125rem}.mzc-select{padding:4px 8px;font-size:13px;color:var(--mzc-fg);background:var(--mzc-bg);border:1px solid var(--mzc-border);border-radius:var(--mzc-radius)}.mzc-select.is-disabled{-webkit-user-select:none;user-select:none;color:#a7b1bc;border-color:#a7b1bc;background:#f4f4f9;cursor:not-allowed}.mzc-select.is-disabled:hover{border-color:#a7b1bc}.mzc-select.is-disabled .mzc-select__value{color:#a7b1bc}.mzc-checkbox{position:relative;display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.mzc-checkbox.is-disabled,.mzc-checkbox.is-disabled input{cursor:not-allowed}.mzc-checkbox.is-disabled .mzc-checkbox__visual{box-shadow:none!important}.mzc-checkbox input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;margin:0;width:12px;height:12px;opacity:0;cursor:inherit}.mzc-checkbox__visual{position:relative;box-sizing:border-box;width:12px;height:12px;min-width:12px;display:flex;align-items:center;justify-content:center;border-radius:2px;transition:box-shadow .15s ease-in-out}.mzc-checkbox__visual svg{display:block}.mzc-checkbox:hover:not(.is-disabled) input:not(:checked):not(:indeterminate)+.mzc-checkbox__visual svg path:last-of-type{stroke:#3e5dc9}.mzc-checkbox:hover:not(.is-disabled) input:checked+.mzc-checkbox__visual svg path{fill:#3e5dc9}.mzc-checkbox:hover:not(.is-disabled) input:indeterminate+.mzc-checkbox__visual svg rect{fill:#3e5dc9}.mzc-checkbox input:focus+.mzc-checkbox__visual{box-shadow:0 0 0 3px #4568e033}.mzc-checkbox input:focus:not(:focus-visible)+.mzc-checkbox__visual{box-shadow:none}.mzc-checkbox input:focus-visible+.mzc-checkbox__visual{box-shadow:0 0 0 3px #4568e033}.mzc-checkbox__label{display:flex;align-items:center;padding-left:6px;font-size:12px;line-height:12px;font-weight:500;color:#6a7184;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mzc-checkbox.is-disabled .mzc-checkbox__label{color:#a7b1bc}.mzc-switch{display:inline-flex;align-items:center;gap:6px;border:none;background:none;cursor:pointer;padding:0}.mzc-switch__track{width:36px;height:20px;box-sizing:border-box;padding:2px;background:#4568e04d;border-radius:999px;display:flex;align-items:center;transition:background-color .2s ease-in}.mzc-switch__thumb{width:16px;height:16px;background:#fff;border-radius:999px;transition:transform .2s cubic-bezier(.65,.05,.36,1)}.mzc-switch.is-on .mzc-switch__track{background:#4568e0}.mzc-switch.is-on .mzc-switch__thumb{transform:translate(16px)}.mzc-switch.is-disabled{cursor:not-allowed}.mzc-switch.is-disabled .mzc-switch__track{background:#e0e1ec}.mzc-switch.is-on.is-disabled .mzc-switch__track{background:#d3d5e5}.mzc-switch.is-disabled .mzc-switch__thumb{background:#f4f4f9}.mzc-switch:focus{outline:none}.mzc-switch:focus-visible{outline:none}.mzc-switch:focus .mzc-switch__track,.mzc-switch:focus-visible .mzc-switch__track{box-shadow:0 0 0 3px #4568e033}.mzc-popover{z-index:2000;background:var(--mzc-bg);border:1px solid var(--mzc-border);border-radius:var(--mzc-radius);box-shadow:0 4px 16px #0000001f;padding:8px;max-height:80vh;overflow:auto}.mzc-popover{--mzc-accent: #3b82f6;--mzc-border: #bbc6d9;--mzc-bg: #fff;--mzc-fg: #1f2937;--mzc-muted: #6b7280;--mzc-hover: #f1f5f9;--mzc-radius: 4px}.mzc-colorpicker{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.mzc-color-option{width:24px;height:24px;border:1px solid transparent;border-radius:4px;padding:2px;cursor:pointer;background:none}.mzc-color-option.is-selected{border-color:var(--mzc-accent)}.mzc-color-swatch{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:3px;font-weight:700;font-size:13px}.mzc-color-swatch--none{background:linear-gradient(to top left,transparent 45%,#ef4444 45%,#ef4444 55%,transparent 55%);border:1px solid var(--mzc-border)}.mzc-drag-item.is-dragging{opacity:.4}.mzc-drag-item.is-over{box-shadow:inset 0 2px 0 var(--mzc-accent)}.mzc-drag-handle{cursor:grab;color:var(--mzc-muted);padding:0 4px}.mzc-toolbox{display:flex;align-items:center;gap:8px;padding:6px 8px;flex-wrap:wrap}.mzc-toolbox__search{flex:0 1 200px}.mzc-toolbox__search .mzc-input{width:100%}.mzc-toolbox__actions{display:flex;align-items:center;gap:6px;margin-left:auto}.mzc-toolbox__left,.mzc-toolbox__items{display:inline-flex;align-items:center;gap:6px}.mzc-filter,.mzc-sort{min-width:380px;display:flex;flex-direction:column;gap:6px}.mzc-filter__rows,.mzc-sort__rows{display:flex;flex-direction:column;gap:4px}.mzc-filter__row,.mzc-sort__row{display:flex;align-items:center;gap:6px;padding:4px;border-radius:var(--mzc-radius)}.mzc-filter__row:hover,.mzc-sort__row:hover{background:var(--mzc-hover)}.mzc-filter__where{width:56px;font-size:12px;color:var(--mzc-muted)}.mzc-filter__novalue{flex:1}.mzc-filter__footer,.mzc-sort__footer{display:flex;align-items:center;gap:6px;padding-top:6px;border-top:1px solid var(--mzc-border)}.mzc-spacer{flex:1}.mzc-sort__dir{display:inline-flex;gap:2px}.mzc-footer{border-top:1px solid #bbc6d9;background:#fff;height:31px;min-height:31px;max-height:31px;display:flex;justify-content:space-between;flex-direction:row}.mzc-footer__count,.mzc-footer__aggregates{padding:5px 10px;color:#4568e0;font-size:13px;font-style:normal;font-weight:500;display:flex;align-items:center}.mzc-footer__count{margin-right:auto}.mzc-footer__aggregates{gap:16px;font-size:12px}.mzc-footer__slot{display:flex;align-items:center}.mzc-contextmenu{z-index:2100}.mzc-menu{list-style:none;margin-top:4px;padding:4px 0;min-width:140px;background:#fff;border:1px solid #bac6d4;border-radius:4px;box-shadow:0 3px 4px #39377a1a}.mzc-menu__item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;height:30px;padding:0 13px;font-size:13px;line-height:100%;color:#28364e;cursor:pointer;white-space:nowrap}.mzc-menu__item:hover:not(.is-disabled){background:#4568e017}.mzc-menu__item.is-disabled{opacity:.6;color:#a7b1bc;cursor:not-allowed}.mzc-menu__label{flex:1}.mzc-menu__arrow{flex:none;width:6px;height:10px;background-position:center center;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAYAAAAx8TU7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACLSURBVHgBbU07DoJQEJxdSGg9Akfw3cDehncEago7EzsrSWgsUS9BojHaeQWPgDewI5CwC48EQsEUu5P5ZJBd3rvT9R5hBhZI5KlXpPljM4lBVdv+l8RcZLfn2onkTpq/Qib5OF4FjWEswB9TpFi1aMwxtn+fSc+9GUJgDokthyFF+xNFvE+237HeAebpK4t5Dh02AAAAAElFTkSuQmCC)}.mzc-menu__sep{height:1px;margin:6px 0;background:#cad4e5}.mzc-menu__submenu{position:absolute;top:0;left:100%;padding-left:2px}.mzc-menu__submenu--flip{left:auto;right:100%;padding-left:0;padding-right:2px}.mzc-menu__agg{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:8px 14px;font-size:13px;line-height:100%;font-weight:500;white-space:nowrap;-webkit-user-select:none;user-select:none}.mzc-menu__agg--compact{padding:4px 14px;font-size:12px}.mzc-menu__agg-label{color:#6a7184;font-size:12px;flex-shrink:0}.mzc-menu__agg-value{color:#28364e;font-weight:600;text-align:right}.mzc-colset{display:flex;flex-direction:column;height:100%;min-height:0;padding:0 0 16px;box-sizing:border-box}.mzc-colset__tabs{display:flex;flex-shrink:0;height:34px;border-bottom:1px solid #e2e1ee;margin-bottom:12px;padding:0 16px}.mzc-colset__tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 16px;color:#565f6e;font-size:12px;font-weight:400;background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer}.mzc-colset__tab:hover{color:#4568e0}.mzc-colset__tab.is-active{color:#4568e0;font-weight:500;border-bottom-color:#4568e0}.mzc-colset__tab[aria-disabled=true]{color:#a0a7b4;cursor:not-allowed}.mzc-colset__notice{display:flex;align-items:center;gap:8px;flex-shrink:0;margin:0 16px 12px;padding:8px 10px;border-radius:4px;background:#f3f5f9;color:#657086;font-size:12px;line-height:1.5}.mzc-popup-body .mzc-sort .mzc-colset__notice,.mzc-popup-body .mzc-sort .mzc-sort__tabs{margin-bottom:0}.mzc-colset__controls{min-width:0;margin:0;padding:0;border:0}.mzc-settings-controls{position:relative;isolation:isolate}.mzc-colopt>.mzc-settings-controls>div:first-child{display:flex;flex-direction:column;gap:14px}.mzc-settings-controls__overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#ffffff7f;cursor:not-allowed}.mzc-colset__tabcontent[inert] .mzc-settings-controls__overlay{display:none}.mzc-pivot-panel .mzc-pchip__remove[aria-disabled=true]{opacity:.5;cursor:not-allowed}.mzc-colset__notice>svg{flex-shrink:0}.mzc-colset__tabcontent{flex:1;min-height:0;display:flex;flex-direction:column}.mzc-colset__readonly-overlay{position:absolute;top:0;right:16px;bottom:0;left:16px;z-index:1;background:#ffffff7f;cursor:not-allowed}.mzc-colset__controls[disabled] .mzc-select,.mzc-colset .mzc-pchip__remove[aria-disabled=true]{cursor:not-allowed}.mzc-colset .mzc-pchip__remove[aria-disabled=true]{opacity:.4}.mzc-colset__aggregate-table button:disabled{opacity:.4}.mzc-colset [draggable=false] .mzc-drag-handle{opacity:.4;cursor:default}.mzc-colset__tabbody{position:relative;isolation:isolate;flex:1;min-height:0;display:flex;flex-direction:column;padding:0 16px}.mzc-colset__summary-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid #e2e1ee;color:#6a7184;font-size:12px;font-weight:500}.mzc-colset__aggregate-list{flex:1;min-height:0;overflow:auto}.mzc-colset__aggregate-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0 6px;font-size:12px;color:#28364e}.mzc-colset__aggregate-value-column{width:180px}.mzc-colset__aggregate-reset-column{width:36px}.mzc-colset__aggregate-table th{padding:2px 6px 4px;text-align:left;font-weight:500;color:#6a7184}.mzc-colset__aggregate-table th:first-child{padding-left:12px}.mzc-colset__aggregate-table td{padding:8px 6px;background:#f7f9ff;border-top:1px solid #e7edfb;border-bottom:1px solid #e7edfb;transition:background-color .12s}.mzc-colset__aggregate-table td:first-child{padding-left:12px;border-left:1px solid #e7edfb;border-radius:8px 0 0 8px}.mzc-colset__aggregate-table td:last-child{border-right:1px solid #e7edfb;border-radius:0 8px 8px 0}.mzc-colset__aggregate-table tbody tr:hover td,.mzc-colset__aggregate-table tbody tr:focus-within td{background:#f0f5ff}.mzc-colset__aggregate-name{display:flex;align-items:center;gap:12px;min-width:0}.mzc-colset__aggregate-name .mzc-colset__type{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#eaf2ff;color:#7c99d4;font-size:10px;font-weight:500;line-height:1.4}.mzc-colset__aggregate-name .mzc-colset__type:empty{display:none}.mzc-colset__group-zone{flex:2 1 0}.mzc-colset__aggregate-zone{flex:3 1 0}.mzc-colset__group-cols.is-drop,.mzc-colset__group-aggs.is-drop,.mzc-colset__list.is-drop{border-color:#4568e0;background:#f0f6ff}.mzc-pchip.mzc-colset__group-col.is-selected{outline:none;background:#cfdcff;box-shadow:0 1px 3px #4568e033;font-weight:600}.mzc-colset__axis-badge{flex-shrink:0;min-width:16px;height:16px;border-radius:8px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;background:#4568e0;color:#fff;font-size:10px;font-weight:600;line-height:1}.mzc-colset__group-agg.is-custom{opacity:.65}.mzc-colset__group-agg .mzc-pchip__left>svg{flex:0 0 10px;cursor:grab}.mzc-colset__group-shared{flex-shrink:0;font-size:10px;color:#4568e0}.mzc-colset__group-agg .mzc-pchip__agg{display:flex;align-items:center;gap:6px}.mzc-colset__aggregate-divider{border-top:1px solid #bac3d3;margin:6px 0;flex-shrink:0;align-self:stretch}.mzc-colset__group-func{font-size:11px;color:#8a93a5}.mzc-pdz__placeholder.mzc-colset__group-empty{padding:0}.mzc-colset__actions{display:flex;justify-content:flex-end;align-items:center;padding:8px 0 0}.mzc-colset__reset-all{cursor:pointer;font-size:13px;color:#4568e0;background:none;border:none;padding:4px 8px}.mzc-colset__reset-all:hover{text-decoration:underline}.mzc-colset__reset-all.is-disabled,.mzc-colset__reset-all:disabled{cursor:default;color:#999;text-decoration:none;pointer-events:none}.mzc-colset__body{display:grid;grid-template-columns:227px minmax(0,1fr);gap:12px;flex:1;min-height:0}.mzc-colset__pane{display:flex;flex-direction:column;gap:6px;min-height:0;min-width:0}.mzc-colset__pane-title{font-size:12px;font-weight:500;color:#28364e;flex-shrink:0}.mzc-colset__list{display:flex;flex-direction:column;flex:1;gap:2px;padding:5px;overflow-y:auto;min-height:0;border:1px solid #e2e1ee}.mzc-colset__search{width:100%;height:28px;margin-bottom:4px;flex-shrink:0}.mzc-colset__all{flex-shrink:0;padding:0 6px 6px;margin-bottom:4px;border-bottom:1px solid #e2e1ee}.mzc-colset__row{display:flex;align-items:center;gap:6px;padding:0 6px;border-radius:3px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;color:#28364e;transition:background .12s;min-width:0;overflow:hidden;height:22px;flex-shrink:0}.mzc-colset__row:hover{background:#f0f4ff}.mzc-colset__row.is-dragging,.mzc-colset__group-col.is-dragging,.mzc-colset__group-agg.is-dragging{opacity:.4}.mzc-colset__row.is-over-before,.mzc-colset__group-col.is-over-before,.mzc-colset__group-agg.is-over-before{box-shadow:inset 0 2px #4568e0}.mzc-colset__row.is-over-after,.mzc-colset__group-col.is-over-after,.mzc-colset__group-agg.is-over-after{box-shadow:inset 0 -2px #4568e0}.mzc-colset__meta{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.mzc-colset__type{color:#8998b5;font-size:10px;flex-shrink:0}.mzc-colset__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-colset__pin{font-size:11px;opacity:.7}.mzc-colset .mzc-drag-handle{color:#b6b7c1;font-size:12px;cursor:grab}.mzc-colset .mzc-drag-handle:active{cursor:grabbing}.mzc-colset__detail{flex:1;overflow:auto;background:#fff;min-height:0;border:1px solid #e2e1ee;padding:12px}.mzc-colset__detail .mzc-colopt{padding:0;width:100%;height:auto;overflow:visible}.mzc-colopt{--col-options-row-width: 372px;display:flex;flex-direction:column;gap:14px;padding:16px;height:100%;overflow-y:auto;width:calc(var(--col-options-row-width) + 24px + 32px + 16px);scrollbar-gutter:stable;box-sizing:border-box}.mzc-colopt__empty{display:flex;align-items:center;justify-content:center;height:100%;color:#6a7184;font-size:13px;text-align:center;padding:20px}.mzc-colopt__header{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:10px;border-bottom:1px solid #e1e3f0}.mzc-colopt__id{font-family:Consolas,monospace;font-size:12px;color:#6a7184;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-colopt__type{font-size:11px;color:#4568e0;background:#eaf3ff;padding:2px 6px;border-radius:3px;text-transform:uppercase}.mzc-pivot-panel .mzc-colopt{width:100%;padding:0;height:auto;overflow:visible;scrollbar-gutter:auto}.mzc-colopt__group{display:flex;flex-direction:column;gap:16px;padding:12px;background:#f9fafc;border:1px solid #e1e3f0;border-radius:4px}.mzc-colopt__group--header{background:#4568e00a}.mzc-colopt__note{margin:0;color:#96a5be;font-size:12px;line-height:1.5}.mzc-colopt__group-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#6a7184;margin-bottom:2px;padding-bottom:6px;border-bottom:1px solid #e1e3f0}.mzc-colopt__field{display:flex;flex-direction:column;gap:10px}.mzc-colopt__field>span{font-size:12px;line-height:12px;font-weight:500;color:#6a7184;font-family:noto sans kr,sans-serif}.mzc-colopt__group>.mzc-colopt__field>.mzc-input,.mzc-colopt__group>.mzc-colopt__field>.mzc-select{width:100%}.mzc-colopt__row2{display:flex;flex-wrap:nowrap;align-items:flex-end;justify-content:space-between;width:100%}.mzc-colopt__row2>.mzc-colopt__field{flex:0 0 auto}.mzc-colopt__footer{margin-top:auto;padding-top:12px;border-top:1px solid #e1e3f0}.mzc-colopt__footer .mzc-btn{width:100%;height:30px;font-size:12px;color:#6a7184;background:#fff;border:1px solid #e1e3f0;border-radius:4px;justify-content:center}.mzc-colopt__footer .mzc-btn:hover{background:#f9fafc;color:#28364e}.mzc-bulkedit__field,.mzc-bulkedit__field .mzc-input,.mzc-bulkedit__field .mzc-numinput,.mzc-bulkedit__field .mzc-select{width:100%}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn{height:30px;border-radius:4px;font-size:.875rem;gap:8px}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn .mzc-btn__label{font-size:.875rem;font-weight:inherit}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--primary{background:#4568e0;color:#fff;border:1px solid #4568e0;padding:0 .6875rem;font-weight:300}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--primary:hover:not(.is-disabled){background:#3e5dc9;border-color:#3e5dc9}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--primary.is-disabled{background:#e0e1ec;border-color:#e0e1ec;color:#a7b1bc;opacity:1}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--default{background:transparent;color:#4568e0;border:1px solid #4568e0;padding:0 14px;font-weight:400}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--default:hover:not(.is-disabled){background:transparent;border-color:#3e5dc9;color:#3e5dc9}.mzc-bulkedit-popup .mzc-popup-footer .mzc-btn--default.is-disabled{border-color:#a7b1bc;color:#a7b1bc;opacity:1}.mzc-grid-grouppanel-host{background-color:#fff}.mzc-grid-grouppanel-host:empty{display:none;background-color:#fff}.mzc-grid-grouppanel-host.is-toolbar-collapsed{display:none}.mzc-grouppanel{display:flex;align-items:center;flex-wrap:nowrap;height:36px;padding:0 6px 0 8px;gap:6px;margin:0 11px 8px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;background-color:#f8f8fd;border:1px solid #e1e3f0;border-radius:4px}.mzc-grid-toolbox-host:empty+.mzc-grid-pivotbar-host:empty+.mzc-grid-grouppanel-host .mzc-grouppanel{margin-top:8px}.mzc-grouppanel.is-drag-over{background:#f0f6ff}.mzc-grouppanel__drag-icon{flex:none;width:23px;height:23px;background-image:url("data:image/svg+xml,%3Csvg%20width%3D%2226%22%20height%3D%2226%22%20viewBox%3D%220%200%2026%2026%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20clip-path%3D%22url(%23clip0_1702_837)%22%3E%3Cpath%20d%3D%22M13%2026C20.1797%2026%2026%2020.1797%2026%2013C26%205.8203%2020.1797%200%2013%200C5.8203%200%200%205.8203%200%2013C0%2020.1797%205.8203%2026%2013%2026Z%22%20fill%3D%22%23E1E9FF%22%2F%3E%3Cpath%20d%3D%22M6.985%2013.853C6.93852%2013.0157%207.19773%2012.19%207.71442%2011.5294C8.23111%2010.8689%208.97012%2010.4185%209.794%2010.262L9.245%2010.815C9.18096%2010.8789%209.13015%2010.9548%209.09549%2011.0384C9.06082%2011.1219%209.04298%2011.2115%209.04298%2011.302C9.04298%2011.3925%209.06082%2011.4821%209.09549%2011.5656C9.13015%2011.6492%209.18096%2011.7251%209.245%2011.789C9.30891%2011.853%209.38481%2011.9038%209.46838%2011.9385C9.55195%2011.9732%209.64153%2011.991%209.732%2011.991C9.82247%2011.991%209.91205%2011.9732%209.99562%2011.9385C10.0792%2011.9038%2010.1551%2011.853%2010.219%2011.789L12.012%2010C12.076%209.9361%2012.1268%209.86019%2012.1615%209.77662C12.1962%209.69306%2012.214%209.60347%2012.214%209.513C12.214%209.42253%2012.1962%209.33295%2012.1615%209.24938C12.1268%209.16582%2012.076%209.08991%2012.012%209.026L10.23%207.238C10.1661%207.17396%2010.0902%207.12316%2010.0066%207.08849C9.92305%207.05382%209.83347%207.03598%209.743%207.03598C9.65253%207.03598%209.56295%207.05382%209.47938%207.08849C9.39581%207.12316%209.31991%207.17396%209.256%207.238C9.19196%207.30191%209.14115%207.37782%209.10649%207.46138C9.07182%207.54495%209.05398%207.63453%209.05398%207.725C9.05398%207.81547%209.07182%207.90506%209.10649%207.98862C9.14115%208.07219%209.19196%208.1481%209.256%208.212L9.867%208.805V8.846C8.6293%208.99587%207.49698%209.61699%206.70545%2010.5802C5.91392%2011.5435%205.52409%2012.7747%205.617%2014.018C5.73495%2015.2545%206.314%2016.4012%207.23896%2017.2302C8.16393%2018.0592%209.36704%2018.5097%2010.609%2018.492H11.809C11.9918%2018.4912%2012.1668%2018.4183%2012.296%2018.289C12.4253%2018.1598%2012.4982%2017.9848%2012.499%2017.802C12.4982%2017.6192%2012.4253%2017.4442%2012.296%2017.315C12.1668%2017.1857%2011.9918%2017.1128%2011.809%2017.112H10.583C9.68155%2017.1272%208.80809%2016.7989%208.13988%2016.1936C7.47167%2015.5884%207.05878%2014.7516%206.985%2013.853Z%22%20fill%3D%22%234568E0%22%2F%3E%3Cpath%20d%3D%22M13.883%2015.04V17.111C13.8841%2017.4769%2014.0299%2017.8276%2014.2886%2018.0863C14.5474%2018.3451%2014.8981%2018.4909%2015.264%2018.492H18.716C19.0819%2018.4909%2019.4326%2018.3451%2019.6913%2018.0863C19.9501%2017.8276%2020.0959%2017.4769%2020.097%2017.111V15.04C20.0959%2014.6741%2019.9501%2014.3234%2019.6913%2014.0646C19.4326%2013.8059%2019.0819%2013.6601%2018.716%2013.659H15.264C14.8981%2013.6601%2014.5474%2013.8059%2014.2886%2014.0646C14.0299%2014.3234%2013.8841%2014.6741%2013.883%2015.04ZM18.716%2017.111H15.264V15.04H18.716V17.111Z%22%20fill%3D%22%234568E0%22%2F%3E%3Cpath%20d%3D%22M18.716%207.44501H15.264C14.8981%207.44606%2014.5474%207.5919%2014.2886%207.85066C14.0299%208.10942%2013.8841%208.46007%2013.883%208.82601V10.897C13.8841%2011.2629%2014.0299%2011.6136%2014.2886%2011.8724C14.5474%2012.1311%2014.8981%2012.277%2015.264%2012.278H18.716C19.0819%2012.277%2019.4326%2012.1311%2019.6913%2011.8724C19.9501%2011.6136%2020.0959%2011.2629%2020.097%2010.897V8.82601C20.0959%208.46007%2019.9501%208.10942%2019.6913%207.85066C19.4326%207.5919%2019.0819%207.44606%2018.716%207.44501Z%22%20fill%3D%22%234568E0%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22clip0_1702_837%22%3E%3Crect%20width%3D%2226%22%20height%3D%2226%22%20fill%3D%22white%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:center;background-size:contain;color:#4568e0;-webkit-user-select:none;user-select:none}.mzc-grouppanel__placeholder{color:#6a7184;font-size:12px;-webkit-user-select:none;user-select:none}.mzc-grouppanel__chip{display:flex;align-items:center;height:22px;padding:0 4px;background:#e1e9ff;color:#4568e0;border:1px solid #4568e0;border-radius:4px;position:relative;font-size:12px;-webkit-user-select:none;user-select:none;cursor:grab;transition:opacity .15s,background-color .12s}.mzc-grouppanel__chip:hover{background:#d3e0ff}.mzc-grouppanel__chip.is-dragging{opacity:.4}.mzc-grouppanel__chip-icon{color:#4568e0;font-size:11px;margin-right:2px}.mzc-grouppanel__chip-icon:after{content:url("data:image/svg+xml,%3Csvg%20width%3D%2210%22%20height%3D%2210%22%20viewBox%3D%220%200%2010%2010%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cg%20clip-path%3D%22url(%23clip0_1702_878)%22%3E%0A%3Cmask%20id%3D%22mask0_1702_878%22%20style%3D%22mask-type%3Aluminance%22%20maskUnits%3D%22userSpaceOnUse%22%20x%3D%220%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%3Cpath%20d%3D%22M10%200H0V10H10V0Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fmask%3E%0A%3Cg%20mask%3D%22url(%23mask0_1702_878)%22%3E%0A%3Cpath%20d%3D%22M7.69601%201.77601C7.69601%201.97004%207.63848%202.1597%207.53068%202.32103C7.42289%202.48235%207.26968%202.60809%207.09042%202.68234C6.91117%202.75659%206.71392%202.77602%206.52363%202.73816C6.33333%202.70031%206.15853%202.60688%206.02134%202.46969C5.88414%202.33249%205.79071%202.15769%205.75286%201.9674C5.71501%201.7771%205.73443%201.57986%205.80868%201.4006C5.88293%201.22135%206.00867%201.06814%206.17%200.960342C6.33132%200.852548%206.52099%200.795013%206.71501%200.795013C6.97519%200.795013%207.22471%200.898368%207.40868%201.08234C7.59265%201.26631%207.69601%201.51584%207.69601%201.77601Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3Cpath%20d%3D%22M4.264%201.77601C4.264%201.97004%204.20647%202.1597%204.09867%202.32103C3.99088%202.48235%203.83767%202.60809%203.65841%202.68234C3.47916%202.75659%203.28191%202.77602%203.09162%202.73816C2.90132%202.70031%202.72653%202.60688%202.58933%202.46969C2.45214%202.33249%202.3587%202.15769%202.32085%201.9674C2.283%201.7771%202.30243%201.57986%202.37668%201.4006C2.45093%201.22135%202.57666%201.06814%202.73799%200.960342C2.89931%200.852548%203.08898%200.795013%203.283%200.795013C3.54318%200.795013%203.7927%200.898368%203.97667%201.08234C4.16065%201.26631%204.264%201.51584%204.264%201.77601Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3Cpath%20d%3D%22M7.69601%205.00001C7.69601%205.19408%207.63845%205.38379%207.53061%205.54513C7.42277%205.70648%207.2695%205.83221%207.09019%205.90643C6.91088%205.98065%206.71358%206.00002%206.52326%205.96209C6.33293%205.92416%206.15814%205.83063%206.02098%205.69333C5.88383%205.55603%205.79048%205.38114%205.75274%205.19078C5.715%205.00042%205.73457%204.80314%205.80897%204.62391C5.88337%204.44467%206.00927%204.29153%206.17072%204.18385C6.33218%204.07618%206.52194%204.01882%206.71601%204.01901C6.97619%204.01901%207.22571%204.12237%207.40968%204.30634C7.59365%204.49031%207.69601%204.73984%207.69601%205.00001Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3Cpath%20d%3D%22M4.264%205.00001C4.264%205.19408%204.20644%205.38379%204.0986%205.54513C3.99077%205.70648%203.8375%205.83221%203.65818%205.90643C3.47887%205.98065%203.28157%206.00002%203.09125%205.96209C2.90093%205.92416%202.72613%205.83063%202.58898%205.69333C2.45182%205.55603%202.35847%205.38114%202.32073%205.19078C2.28299%205.00042%202.30256%204.80314%202.37696%204.62391C2.45137%204.44467%202.57726%204.29153%202.73872%204.18385C2.90017%204.07618%203.08994%204.01882%203.284%204.01901C3.54418%204.01901%203.7937%204.12237%203.97767%204.30634C4.16165%204.49031%204.264%204.73984%204.264%205.00001Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3Cpath%20d%3D%22M7.69601%208.22502C7.69601%208.41904%207.63848%208.60871%207.53068%208.77003C7.42289%208.93136%207.26968%209.05709%207.09042%209.13134C6.91117%209.20559%206.71392%209.22502%206.52363%209.18717C6.33333%209.14932%206.15853%209.05589%206.02134%208.91869C5.88414%208.78149%205.79071%208.6067%205.75286%208.4164C5.71501%208.22611%205.73443%208.02886%205.80868%207.84961C5.88293%207.67035%206.00867%207.51714%206.17%207.40935C6.33132%207.30155%206.52099%207.24402%206.71501%207.24402C6.84384%207.24402%206.9714%207.26939%207.09042%207.31869C7.20944%207.36799%207.31759%207.44025%207.40868%207.53135C7.49978%207.62244%207.57204%207.73059%207.62134%207.84961C7.67064%207.96863%207.69601%208.09619%207.69601%208.22502Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3Cpath%20d%3D%22M4.264%208.22502C4.264%208.41904%204.20647%208.60871%204.09867%208.77003C3.99088%208.93136%203.83767%209.05709%203.65841%209.13134C3.47916%209.20559%203.28191%209.22502%203.09162%209.18717C2.90132%209.14932%202.72653%209.05589%202.58933%208.91869C2.45214%208.78149%202.3587%208.6067%202.32085%208.4164C2.283%208.22611%202.30243%208.02886%202.37668%207.84961C2.45093%207.67035%202.57666%207.51714%202.73799%207.40935C2.89931%207.30155%203.08898%207.24402%203.283%207.24402C3.41183%207.24402%203.53939%207.26939%203.65841%207.31869C3.77744%207.36799%203.88558%207.44025%203.97667%207.53135C4.06777%207.62244%204.14003%207.73059%204.18933%207.84961C4.23863%207.96863%204.264%208.09619%204.264%208.22502Z%22%20fill%3D%22%234568E0%22%2F%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3Cdefs%3E%0A%3CclipPath%20id%3D%22clip0_1702_878%22%3E%0A%3Crect%20width%3D%2210%22%20height%3D%2210%22%20fill%3D%22white%22%2F%3E%0A%3C%2FclipPath%3E%0A%3C%2Fdefs%3E%0A%3C%2Fsvg%3E%0A")}.mzc-grouppanel__chip-label{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-grouppanel__chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;padding:0;border:none;background:transparent;color:#4568e0;font-size:14px;line-height:1;cursor:pointer;border-radius:2px}.mzc-grouppanel__chip-remove:hover{color:#3e5dc9}.mzc-grouppanel__chip{cursor:pointer}.mzc-grouppanel__chip:active{cursor:grabbing}.mzc-grouppanel__close,.mzc-pivotbar__close{margin-left:auto;position:sticky;right:0;flex:none;display:inline-flex;align-items:center;padding-left:6px;background:linear-gradient(to right,#f8f8fd00,#f8f8fd 6px)}.mzc-grouppanel__chip .ps-sort-icon{display:none;margin-left:8px;margin-right:0}.mzc-grouppanel__chip.ps-sorted .ps-sort-icon{display:inline-flex;align-items:center;opacity:1}.mzc-grouppanel__chip.ps-sorted .mzc-grouppanel__chip-remove{margin-left:0}.mzc-grid-pivotbar-host{background-color:#fff}.mzc-grid-pivotbar-host:empty{display:none}.mzc-grid-pivotbar-host.is-toolbar-collapsed{display:none}.mzc-pivotbar{display:flex;align-items:center;flex-wrap:nowrap;height:36px;padding:0 6px 0 8px;gap:6px;margin:0 11px 8px;background-color:#f8f8fd;border:1px solid #e1e3f0;border-radius:4px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.mzc-grid-toolbox-host:empty+.mzc-grid-pivotbar-host .mzc-pivotbar{margin-top:8px}.mzc-pivotbar__area{display:flex;align-items:center;gap:6px;min-width:60px;height:100%;padding:0 2px}.mzc-pivotbar__area[data-area=value]{flex:1 1 auto}.mzc-pivotbar__area-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;color:#8998b5;-webkit-user-select:none;user-select:none}.mzc-pivotbar__items{display:flex;align-items:center;gap:4px;min-width:0;height:100%}.mzc-pivotbar__divider{flex:none;width:1px;height:16px;background-color:#bac6d4}.mzc-pivotbar__item{position:relative;display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 6px 0 3px;background:#e1e9ff;color:#4568e0;border:1px solid #4568e0;border-radius:4px;font-size:12px;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer;transition:opacity .15s,background-color .12s}.mzc-pivotbar__item:hover{background:#d3e0ff}.mzc-pivotbar__item.is-dragging{opacity:.4}.mzc-pivotbar__item.is-drop-before:after,.mzc-pivotbar__item.is-drop-after:after,.mzc-grouppanel__chip.is-drop-before:after,.mzc-grouppanel__chip.is-drop-after:after{content:"";position:absolute;top:-3px;bottom:-3px;width:2px;border-radius:1px;background:#1b3fae;box-shadow:0 0 0 1px #fff;pointer-events:none;z-index:1}.mzc-pivotbar__item.is-drop-before:after,.mzc-grouppanel__chip.is-drop-before:after{left:-3px}.mzc-pivotbar__item.is-drop-after:after,.mzc-grouppanel__chip.is-drop-after:after{right:-3px}.mzc-pivotbar__area.is-drop-empty{background:#eaf3ff;border-radius:4px}.mzc-pivotbar__area.is-drop-empty .mzc-pivotbar__items:after{content:"";display:inline-block;width:2px;height:22px;border-radius:1px;background:#1b3fae;box-shadow:0 0 0 1px #fff}.mzc-pivotbar__grip{display:inline-flex;align-items:center;justify-content:center;flex:none;width:14px;height:100%;color:#4568e0;cursor:grab}.mzc-pivotbar__grip:active{cursor:grabbing}.mzc-pivotbar__grip[draggable=false]{color:#a7b1bc;cursor:not-allowed}.mzc-pivotbar__label{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-pivotbar__item .ps-sort-icon{display:none}.mzc-pivotbar__item.ps-sorted .ps-sort-icon{display:inline-flex;align-items:center;opacity:1}.mzc-pivotbar__item .ps-filter-icon{margin-left:0;cursor:pointer;opacity:1}.mzc-pivotbar__item:not(.ps-filtered) .ps-filter-icon{opacity:.45;transition:opacity .12s ease-in-out}.mzc-pivotbar__item:not(.ps-filtered) .ps-filter-icon:before{content:"";width:12px;height:12px;min-width:12px;min-height:12px;display:inline-block;background-repeat:no-repeat;background-position:center;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='M1.29807%202.05245C2.53007%203.64145%204.80807%206.58645%204.80807%206.58645V10.2645C4.80807%2010.4266%204.87221%2010.5822%204.98649%2010.6972C5.10078%2010.8122%205.25592%2010.8774%205.41807%2010.8785H6.63907C6.80122%2010.8774%206.95637%2010.8122%207.07065%2010.6972C7.18494%2010.5822%207.24908%2010.4266%207.24907%2010.2645V6.58645C7.24907%206.58645%209.52007%203.64145%2010.7491%202.05245C10.8192%201.96236%2010.8628%201.85444%2010.8748%201.74089C10.8868%201.62734%2010.8669%201.51269%2010.8171%201.4099C10.7674%201.30711%2010.6899%201.22029%2010.5934%201.15924C10.4969%201.09819%2010.3853%201.06536%2010.2711%201.06445H1.78007C1.66555%201.06462%201.55337%201.09691%201.45629%201.15766C1.35921%201.21842%201.28112%201.30519%201.23091%201.40812C1.1807%201.51104%201.16037%201.62599%201.17224%201.7399C1.18412%201.85381%201.22771%201.96209%201.29807%202.05245Z'%20stroke='%236E82BE'%20stroke-width='1.65'%20stroke-linejoin='round'%3e%3c/path%3e%3c/svg%3e")}.mzc-pivotbar__item:not(.ps-filtered) .ps-filter-icon:hover{opacity:1}.mzc-excel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2200;display:flex;align-items:center;justify-content:center;background:#00000040}.mzc-excel{min-width:420px;max-width:80vw;max-height:80vh;background:var(--mzc-bg);border:1px solid var(--mzc-border);border-radius:var(--mzc-radius);box-shadow:0 8px 32px #0003;padding:16px;display:flex;flex-direction:column;gap:12px;overflow:auto}.mzc-excel__title{font-size:14px;font-weight:600}.mzc-excel__busy{color:var(--mzc-muted);font-size:12px}.mzc-excel__error{color:#dc2626;font-size:12px}.mzc-excel__preview{overflow:auto;max-height:320px;border:1px solid var(--mzc-border);border-radius:var(--mzc-radius)}.mzc-excel__table{border-collapse:collapse;font-size:12px;width:100%}.mzc-excel__table th,.mzc-excel__table td{border:1px solid var(--mzc-border);padding:3px 6px;text-align:left;white-space:nowrap}.mzc-excel__table th{background:var(--mzc-hover);position:sticky;top:0}.mzc-excel__count{font-size:11px;color:var(--mzc-muted);padding:4px 0}.mzc-excel__footer{display:flex;justify-content:flex-end;gap:6px}.mzc-pivot-panel{display:flex;flex-direction:column;height:100%;min-height:0}.mzc-pivot-panel>.mzc-settings-controls{display:flex;flex:1;min-height:0}.mzc-pivot-panel>.mzc-settings-controls>div:first-child{display:flex;flex:1;min-height:0;min-width:0}.mzc-pivot-panel>.mzc-settings-controls>.mzc-settings-controls__overlay{top:0;right:16px;bottom:16px;left:16px}.mzc-pivot-panel [inert] .mzc-settings-controls__overlay{display:none}.mzc-pivot-panel__body{display:flex;gap:12px;flex:1;min-height:0;padding:0 16px 16px}.mzc-pivot-panel__heading{font-size:12px;font-weight:500;color:#28364e;flex-shrink:0}.mzc-pivot-panel__list{width:227px;flex-shrink:0;display:flex;flex-direction:column;gap:6px;overflow:hidden;min-height:0}.mzc-pivot-panel__field-items{flex:1;overflow-y:auto;border:1px solid #e2e1ee;padding:5px;min-height:0}.mzc-pivot-panel__search{width:100%;height:28px;margin-bottom:4px}.mzc-pivot-panel__field-item{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:0 6px;border-radius:3px;cursor:grab;font-size:12px;-webkit-user-select:none;user-select:none;height:22px}.mzc-pivot-panel__field-item:hover{background:#f0f4ff}.mzc-pivot-panel__field-item .mzc-checkbox{overflow:hidden}.mzc-pivot-panel__field-meta{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.mzc-pivot-panel__field-type{color:#8998b5;font-size:10px;flex-shrink:0}.mzc-pivot-panel__axis-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:14px;height:14px;color:#4568e0}.mzc-pivot-panel__axis-icon--column{color:#9a5b16}.mzc-pivot-panel__axis-icon--value{color:#1a8a5a}.mzc-pivot-panel__placed-group+.mzc-pivot-panel__placed-group{margin-top:10px}.mzc-pivot-panel__placed-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:#4568e0;padding:0 2px;margin-bottom:3px;-webkit-user-select:none;user-select:none}.mzc-pivot-panel__placed-label--column{color:#9a5b16}.mzc-pivot-panel__placed-label--value{color:#1a8a5a}.mzc-pivot-panel__placed-rule{flex:1;height:1px;background:currentColor;opacity:.35;min-width:8px}.mzc-pivot-panel__placed-item{height:22px;display:flex;align-items:center;gap:6px;padding:0 6px 0 22px;border-radius:3px;font-size:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.mzc-pivot-panel__placed-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mzc-pivot-panel__placed-item:hover{background:#f0f4ff}.mzc-pivot-panel__placed-item.is-selected,.mzc-colset__row.is-selected{background:#e8effd;color:#2b4bc4;font-weight:500}.mzc-pivot-panel__placed-empty{font-size:12px;color:#8998b5;line-height:1.5;padding:6px 4px}.mzc-pvo__section--stacked{display:flex;flex-direction:column;gap:14px;padding:2px 2px 8px}.mzc-pvo__section--stacked .mzc-select,.mzc-pvo__section--stacked .mzc-multiselect{width:100%}.mzc-colopt__field--toggle{flex-direction:row;align-items:center}.mzc-pivot-panel__right{flex:1;display:flex;flex-direction:column;gap:6px;min-height:0;min-width:0}.mzc-pivot-panel__tabs{display:flex;flex-shrink:0;height:34px;border-bottom:1px solid #e2e1ee;margin-bottom:12px;padding:0 16px}.mzc-pivot-panel__tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 16px;color:#565f6e;font-size:12px;font-weight:400;background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer}.mzc-pivot-panel__tab:hover{color:#4568e0}.mzc-pivot-panel__tab.is-active{color:#4568e0;font-weight:500;border-bottom-color:#4568e0}.mzc-pivot-panel__tabbody{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column}.mzc-pivot-panel__tabbody--boxed{border:1px solid #e2e1ee;padding:12px}.mzc-pchip.is-selected{outline:1px solid #4568e0;outline-offset:-1px}.mzc-pivot-panel__zones{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"heading heading" "row column" "splitter splitter" "value value";column-gap:16px;row-gap:6px}.mzc-pivot-panel__zones>.mzc-pivot-panel__heading{grid-area:heading;margin-bottom:4px}.mzc-pdz[data-area=row]{grid-area:row}.mzc-pdz[data-area=column]{grid-area:column}.mzc-pdz[data-area=value]{grid-area:value}.mzc-pivot-panel__zone-splitter{grid-area:splitter;display:block}.mzc-pivot-panel__footer{display:flex;align-items:center;justify-content:space-between;width:100%}.mzc-footer-commit{display:flex;align-items:center;gap:8px;flex:none;margin-left:12px}.mzc-footer-commit__actions{display:flex;align-items:center;gap:8px}.mzc-footer-commit__separator{width:1px;height:15px;background-color:#bac6d4;flex:none;margin:0 2px}.mzc-footer-commit .mzc-btn{height:28px;padding:0 14px;gap:5px;font-size:13px;font-weight:400;border-radius:4px;justify-content:center;width:auto;min-width:56px}.mzc-footer-commit .mzc-btn--primary{background:#4568e0;border:1px solid #4568e0;color:#fff}.mzc-footer-commit .mzc-btn--primary:hover:not(.is-disabled){background:#3e5dc9;border-color:#3e5dc9}.mzc-footer-commit .mzc-btn--primary.is-disabled{background:#e0e1ec;border-color:#e0e1ec;color:#a7b1bc;opacity:1}.mzc-footer-commit .mzc-btn--default{background:#fff;border:1px solid #4568e0;color:#4568e0}.mzc-footer-commit .mzc-btn--default:hover:not(.is-disabled){background:#fff;border-color:#3e5dc9;color:#3e5dc9}.mzc-footer-commit__actions .mzc-btn--default.is-disabled{border-color:#bac6d4;color:#a7b1bc;opacity:1}.mzc-pdz{min-height:0;display:flex;flex-direction:column;overflow:hidden}.mzc-pdz__label{font-size:12px;font-weight:600;color:#6a7184;margin-bottom:5px}.mzc-pdz__content{position:relative;display:flex;flex:1;min-height:0}.mzc-pdz__area{min-height:34px;padding:12px;border:1px dashed #4568e0;background:#f8f8fd;transition:background .15s,border-color .15s;position:relative;overflow:hidden auto;flex:1;min-height:0;display:flex;flex-direction:column;gap:4px}.mzc-pdz__placeholder{position:absolute;width:100%;top:50%;left:50%;transform:translate(-50%,-50%);color:#8998b5;font-size:12px;-webkit-user-select:none;user-select:none;pointer-events:none;text-align:center}.mzc-pchip{position:relative;display:flex;align-items:center;box-sizing:border-box;flex-shrink:0;height:26px;padding:0 6px;background:#e1e9ff;color:#4568e0;border:1px solid #4568e0;border-radius:4px;font-size:12px;-webkit-user-select:none;user-select:none;gap:2px;cursor:grab}.mzc-pchip__grip{flex-shrink:0}.mzc-pchip__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-pchip__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:2px;cursor:pointer;color:#4568e0}.mzc-pchip__remove:hover{color:#3e5dc9}.mzc-pchip--value{background:#e2e7fa;justify-content:space-between;height:26px;padding:0 6px;gap:6px}.mzc-pchip--value .mzc-pchip__left{display:flex;align-items:center;overflow:hidden;gap:2px;flex:1;min-width:0}.mzc-pchip--value .mzc-pchip__label{color:#4568e0}.mzc-pchip--value .mzc-pchip__agg{flex-shrink:0}.mzc-pchip--value .mzc-pchip__agg .mzc-select{height:20px;padding:0 6px;gap:2px;font-size:11px;border-radius:3px;background:#fff}.mzc-pchip--value .mzc-pchip__agg .mzc-select__value{font-size:11px}.mzc-pchip--value .mzc-pchip__agg .mzc-select__arrow{font-size:9px}.mzc-pchip--over-top:before{content:"";position:absolute;top:-3px;left:0;right:0;height:2px;background:#4568e0;border-radius:1px;z-index:1;pointer-events:none}.mzc-pchip--over-bottom:after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:2px;background:#4568e0;border-radius:1px;z-index:1;pointer-events:none}.mzc-popup-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100dvw;height:100dvh;overflow:hidden}.mzc-popup-backdrop{width:100%;height:100%;background:#42485380}.mzc-popup{position:absolute;display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:10px;box-shadow:0 10px 40px #0003;min-width:300px;max-width:96vw;max-height:92vh;font-weight:500}.mzc-popup-title{display:flex;align-items:center;justify-content:space-between;height:45px;min-height:45px;padding:0 16px;font-size:1rem;font-weight:500;color:#28364e;border-bottom:1px solid #e1e3f0;box-sizing:border-box}.mzc-popup-title.draggable{cursor:move}.mzc-popup-title__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-popup-close{display:inline-flex;align-items:center;justify-content:center}.mzc-popup-body{flex:1;overflow:auto;color:#28364e;font-weight:400}.mzc-popup-footer{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:16px;font-weight:400}.mzc-popup-footer.with-border{border-top:1px solid #e1e3f0}.mzc-popup-footer--empty{padding:0;border-top:none}.mzc-popup-resize{position:absolute;right:0;bottom:0;width:15px;height:15px;cursor:nwse-resize}.mzc-swatches{width:100%;display:flex;gap:4px;padding:0;flex-wrap:wrap}.mzc-swatch,.mzc-swatch-custom{width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;border:1px solid #dddde2;border-radius:4px;cursor:pointer;padding:0;background:#fff}.mzc-swatch:hover,.mzc-swatch-custom:hover{border-color:var(--mzc-swatch-border, #dddde2)}.mzc-swatch.is-selected,.mzc-swatch-custom.is-selected{border-width:2px;border-color:var(--mzc-swatch-border, #dddde2)}.mzc-swatch--text{font-size:13px;font-weight:500;line-height:1}.mzc-swatch--none{position:relative}.mzc-swatch--none .mzc-swatch__mark{position:absolute;top:50%;left:12%;right:12%;height:1.5px;background:#f28270;transform:translateY(-50%) rotate(-30deg)}.mzc-swatch-custom{position:relative}.mzc-swatch-custom__input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.mzc-drag-item.is-over-before{box-shadow:inset 0 2px #4568e0}.mzc-drag-item.is-over-after{box-shadow:inset 0 -2px #4568e0}.mzc-search{display:flex;align-items:stretch;width:180px;height:30px;border-radius:4px}.mzc-search__nav{display:flex;align-items:center;justify-content:center;width:30px;min-width:30px;height:100%;border:1px solid #a7b1bc;border-radius:4px;background:#4568e0;color:#fff;cursor:pointer;box-sizing:border-box}.mzc-search__nav--prev{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.mzc-search__nav--next{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.mzc-search__nav--next svg{transform:rotate(180deg)}.mzc-search__nav:disabled{background-color:#fff;color:#a7b1bc;border-color:#b1bac4;cursor:default}.mzc-search:hover .mzc-search__nav,.mzc-search:focus-within .mzc-search__nav{border-color:#4568e0}.mzc-search__field{position:relative;display:flex;align-items:center;flex:1;min-width:0;border:1px solid #bac6d4;box-sizing:border-box}.mzc-search:hover .mzc-search__field,.mzc-search__field:focus-within{border-color:#4568e0}.mzc-search__field:focus-within{box-shadow:0 0 0 3px #4568e033;z-index:2}.mzc-search__input{flex:1;min-width:0;height:28px;padding:4px 8px;color:#28364e;font-size:.813rem;border:none;background:transparent;box-sizing:border-box}.mzc-search__input:focus{outline:none}.mzc-search__input::placeholder{color:#96a5be}.mzc-search__icon{flex:none;margin:0 7px;color:#8998b5}.mzc-search__count{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:4px;padding:2px 8px;font-size:.6875rem;color:#6a7184;background:#fff;border:1px solid #dde2ea;border-radius:4px;white-space:nowrap;box-shadow:0 2px 6px #00000014;z-index:10;pointer-events:none;display:flex;align-items:center;gap:4px}.mzc-search__count-input{width:var(--mzc-count-w, 3ch);min-width:var(--mzc-count-w, 3ch);padding:0 2px;font-size:inherit;line-height:inherit;color:inherit;text-align:center;border:none;border-bottom:1px solid #c3ccd8;background:transparent;pointer-events:auto;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.mzc-search__count-input:focus{outline:none;border-bottom-color:#4568e0}.mzc-search__count-input:disabled{border-bottom-color:transparent}.mzc-search__count-input::-webkit-inner-spin-button,.mzc-search__count-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.mzc-search__loading{display:inline-flex;align-items:center;gap:3px;color:#4568e0;font-size:.625rem}.mzc-search__spinner{width:10px;height:10px;border:1.5px solid #dde2ea;border-top-color:#4568e0;border-radius:50%;animation:mzc-search-spin .6s linear infinite}@keyframes mzc-search-spin{to{transform:rotate(360deg)}}.mzc-select{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:space-between;gap:4px;height:30px;min-width:0;padding:0 8px;font-size:13px;color:#28364e;background:#fff;border:1px solid #bac6d4;border-radius:var(--mzc-radius, 4px);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.mzc-select:hover:not(.is-disabled){border-color:#4568e0}.mzc-select:focus,.mzc-select:focus-visible,.mzc-select--open:not(.is-disabled){border-color:#4568e0;box-shadow:0 0 0 3px #4568e033}.mzc-select.is-disabled{cursor:not-allowed;color:#a7b1bc;border-color:#a7b1bc;background:#f4f4f9}.mzc-select__value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-select__value.is-placeholder{color:#96a5be}.mzc-select__arrow{flex:none;display:inline-flex;align-items:center;color:#8998b5}.mzc-select__arrow-down,.mzc-select__arrow-up{display:inline-flex;align-items:center}.mzc-select__arrow-up{display:none}.mzc-select--open .mzc-select__arrow{color:#4568e0}.mzc-select--open .mzc-select__arrow-down{display:none}.mzc-select--open .mzc-select__arrow-up{display:inline-flex}.mzc-listbox{box-sizing:border-box;display:flex;flex-direction:column;max-height:250px;overflow:hidden;margin:4px 0;background:#fff;border:1px solid #bac6d4;border-radius:4px;box-shadow:0 3px 4px #39377a1a}.mzc-listbox__filter{position:relative;box-sizing:border-box;display:flex;align-items:center;height:29px;min-height:29px;overflow:hidden;border-bottom:1px solid #bac6d4}.mzc-listbox__filter-field{flex:1;min-width:0;height:100%;border:none;background:transparent;padding:0 8px;font-size:13px;color:#28364e;outline:none}.mzc-listbox__filter-field::placeholder{color:#96a5be}.mzc-listbox__search-icon{display:flex;align-items:center;justify-content:center;min-width:28px;font-size:14px;color:#8998b5}.mzc-listbox__list{flex:1;overflow-y:auto;padding:3px 0}.mzc-listbox__item{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:24px;padding:0 10px;font-size:13px;line-height:24px;color:#28364e;cursor:pointer}.mzc-listbox__item.is-active,.mzc-listbox__item:hover{background:#4568e017}.mzc-listbox__item.is-selected{background:#4568e029}.mzc-listbox__item.is-disabled{color:#a7b1bc;cursor:not-allowed}.mzc-listbox__item-content{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-listbox__check{flex:none;display:inline-flex;align-items:center;color:#4568e0}.mzc-listbox__empty{padding:6px 10px;font-size:13px;color:#96a5be;cursor:default}.mzc-filter-popup .mzc-popup{overflow-x:hidden}.mzc-filter{width:100%}.mzc-filter__rows{display:flex;flex-direction:column;gap:10px}.mzc-filter__row{display:grid;grid-template-columns:20px 88px 130px 54px 1fr 20px;align-items:center;gap:10px}.mzc-filter__row.is-minify{grid-template-columns:20px 130px 54px 1fr 20px}.mzc-filter__row.is-dragging{opacity:.5}.mzc-filter__row.is-over-before{box-shadow:inset 0 2px #4568e0}.mzc-filter__row.is-over-after{box-shadow:inset 0 -2px #4568e0}.mzc-filter__handle{display:flex;justify-content:center;align-items:center;width:20px;height:20px}.mzc-filter__spacer{display:block}.mzc-filter__row .mzc-input{width:100%;min-width:0}.mzc-filter__novalue{display:block}.mzc-filter__op{display:flex;flex-direction:row;align-items:center;gap:20px;width:100%}.mzc-op-symbol{width:14px;min-width:14px;text-align:center;font-size:14px;color:#28364e}.mzc-op-desc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#96a5be}.mzc-filter__footer{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 4px}.mzc-filter__footer-toggles{display:flex;align-items:center;gap:16px}.mzc-filter__row .mzc-btn--ghost,.mzc-sort__row .mzc-btn--ghost,.mzc-sort__group-row .mzc-btn--ghost{width:20px;min-width:20px;height:20px;padding:0;display:flex;justify-content:center;align-items:center}.mzc-toolbox{flex-direction:column;align-items:stretch;gap:0;padding:0;flex-wrap:nowrap}.mzc-toolbox__top{display:flex;align-items:center;height:50px;min-height:50px;max-height:50px;padding:8px 10px;background:#fff;box-sizing:border-box}.mzc-toolbox__top[hidden]{display:none}.mzc-toolbox__top .mzc-toolbox__actions{margin-left:auto;gap:2px;margin-right:6px}.mzc-toolbox__setting{position:relative;display:inline-flex;align-items:center}.mzc-toolbox__separator{width:1px;height:15px;background-color:#bac6d4;flex:none;margin-right:10px}.mzc-toolbox__separator--chart{margin-left:4px;margin-right:4px}.mzc-toolbox__search{flex:0 0 180px}.mzc-toolbox__toggle{width:18px;height:18px;flex:none;margin-left:10px;background-color:#e9edf4;border-radius:100%;display:flex;justify-content:center;align-items:center;cursor:pointer;color:#8998b5}.mzc-toolbox__toggle:hover{background-color:#4568e029}.mzc-toolbox__toggle-collapsed{display:flex;justify-content:center;align-items:center;height:12px;background:#fff;cursor:pointer;color:#8998b5}.mzc-toolbox__toggle-collapsed[hidden]{display:none}.mzc-toolbox__toggle-collapsed:hover{background-color:#4568e017}.mzc-toolbox__toggle-collapsed--down svg{transform:rotate(180deg)}.mzc-popup-body .mzc-sort{min-width:0;gap:10px}.mzc-sort__tabs,.mzc-filter__tabs{display:flex;flex-shrink:0;height:34px;border-bottom:1px solid #e2e1ee;margin-bottom:2px}.mzc-sort__tab,.mzc-filter__tab{display:inline-flex;gap:6px;align-items:center;justify-content:center;padding:0 16px;color:#565f6e;font-size:12px;font-weight:400;background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer}.mzc-sort__tab:hover:not(:disabled),.mzc-filter__tab:hover:not(:disabled),.mzc-sort__tab.has-filter:not(:disabled),.mzc-filter__tab.has-filter:not(:disabled){color:#4568e0}.mzc-sort__tab:disabled,.mzc-filter__tab:disabled{opacity:.45;cursor:not-allowed}.mzc-sort__tab.is-active,.mzc-filter__tab.is-active{color:#4568e0;font-weight:500;border-bottom-color:#4568e0}.mzc-filter__tabs{margin-bottom:12px}.mzc-filter__tabpanel{padding:0 16px;min-width:0}.mzc-settings-blocked-body{position:relative;isolation:isolate;min-width:0}.mzc-settings-blocked-overlay{position:absolute;top:0;right:16px;bottom:0;left:16px;z-index:1;background:#ffffff7f;cursor:not-allowed}.mzc-group-filter{display:flex;flex-direction:column;gap:12px;min-width:0}.mzc-popup-body .mzc-sort__rows{gap:6px;padding:0 16px}.mzc-popup-body .mzc-sort__row{display:grid;grid-template-columns:20px minmax(0,1fr) 100px 20px;align-items:center;gap:10px;padding:0}.mzc-popup-body .mzc-sort__row.mzc-sort__row--pivot{grid-template-columns:20px minmax(0,1fr) 100px 120px 20px}.mzc-popup-body .mzc-sort__group-row{display:grid;grid-template-columns:170px 100px minmax(0,1fr) 20px;align-items:center;gap:10px}.mzc-popup-body .mzc-sort__row:hover{background:transparent}.mzc-popup-body .mzc-sort__empty{box-sizing:border-box;height:30px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--mzc-muted)}.mzc-sort__handle{display:flex;justify-content:center;align-items:center;width:20px;height:20px;cursor:grab}.mzc-sort__handle:active{cursor:grabbing}.mzc-popup-footer .mzc-sort__footer{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0;border-top:none}.mzc-align-picker{display:inline-flex;border:1px solid #e1e3f0;border-radius:4px;overflow:hidden}.mzc-align-picker__btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:28px;padding:0;background:#fff;border:none;border-right:1px solid #e1e3f0;cursor:pointer;transition:background .15s}.mzc-align-picker__btn:last-child{border-right:none}.mzc-align-picker__btn:hover{background:#f9fafc}.mzc-align-picker__btn.is-active{background:#eaf3ff}.mzc-align-picker__btn.is-active .mzc-align-picker__line{background:#4568e0}.mzc-align-picker__icon{display:inline-flex;flex-direction:column;gap:2px;width:14px}.mzc-align-picker__line{height:1.5px;background:#6a7184;border-radius:1px}.mzc-align-picker__icon[data-align=left] .mzc-align-picker__line--1{width:100%}.mzc-align-picker__icon[data-align=left] .mzc-align-picker__line--2{width:60%;align-self:flex-start}.mzc-align-picker__icon[data-align=left] .mzc-align-picker__line--3{width:80%;align-self:flex-start}.mzc-align-picker__icon[data-align=center] .mzc-align-picker__line--1{width:100%;align-self:center}.mzc-align-picker__icon[data-align=center] .mzc-align-picker__line--2{width:60%;align-self:center}.mzc-align-picker__icon[data-align=center] .mzc-align-picker__line--3{width:80%;align-self:center}.mzc-align-picker__icon[data-align=right] .mzc-align-picker__line--1{width:100%;align-self:flex-end}.mzc-align-picker__icon[data-align=right] .mzc-align-picker__line--2{width:60%;align-self:flex-end}.mzc-align-picker__icon[data-align=right] .mzc-align-picker__line--3{width:80%;align-self:flex-end}.mzc-fontstyle{display:inline-flex;border:1px solid #e1e3f0;border-radius:4px;overflow:hidden}.mzc-fontstyle__btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:#fff;border:none;border-right:1px solid #e1e3f0;cursor:pointer;transition:background .12s}.mzc-fontstyle__btn:last-child{border-right:none}.mzc-fontstyle__btn:hover{background:#f9fafc}.mzc-fontstyle__btn.is-active{background:#eaf3ff}.mzc-fontstyle__btn.is-active .mzc-fontstyle__label{color:#3e5dc9}.mzc-fontstyle__label{font-size:13px;color:#28364e;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}.mzc-fontstyle__label--bold{font-weight:700}.mzc-fontstyle__label--italic{font-style:italic;font-family:serif}.mzc-fontstyle__label--underline{text-decoration:underline}.mzc-mask-picker{display:flex;flex-direction:column;gap:4px}.mzc-mask-picker__hint{font-size:11px;color:#6a7184;font-style:italic}.mzc-ms{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;height:30px;padding:0 8px;box-sizing:border-box;min-width:120px;border:1px solid #bac6d4;border-radius:4px;background:#fff;cursor:pointer;font-size:13px;color:#28364e;transition:border-color .12s}.mzc-ms:hover:not(.is-disabled){border-color:#4568e0}.mzc-ms.is-disabled{background:#f4f4f9;color:#a7b1bc;cursor:not-allowed}.mzc-ms__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-ms__value.is-placeholder{color:#96a5be}.mzc-ms__arrow{color:#8998b5;flex-shrink:0;display:inline-flex;align-items:center}.mzc-ms__arrow-down,.mzc-ms__arrow-up{display:inline-flex;align-items:center}.mzc-ms__arrow-up{display:none}.mzc-ms--open .mzc-ms__arrow{color:#4568e0}.mzc-ms--open .mzc-ms__arrow-down{display:none}.mzc-ms--open .mzc-ms__arrow-up{display:inline-flex}.mzc-ms-overlay-host{position:static}.mzc-ms-listbox{position:fixed;z-index:2400;box-sizing:border-box;max-height:280px;display:flex;flex-direction:column;background:#fff;border:1px solid #bac6d4;border-radius:4px;box-shadow:0 3px 6px #39377a1a;overflow:hidden}.mzc-ms-listbox__filter{position:relative;padding:6px;border-bottom:1px solid #e1e3f0}.mzc-ms-listbox__spacer{position:relative}.mzc-ms-listbox__window{position:absolute;top:0;left:0;right:0;will-change:transform}.mzc-ms-listbox__item{box-sizing:border-box;height:32px}.mzc-ms-listbox__notice{padding:6px 10px;font-size:11px;line-height:1.4;color:#8a6d3b;background:#fcf8e3;border-bottom:1px solid #e1e3f0}.mzc-ms-listbox__filter-field{width:100%;height:28px;box-sizing:border-box;padding:0 26px 0 8px;border:1px solid #bac6d4;border-radius:4px;font-size:13px;color:#28364e;outline:none}.mzc-ms-listbox__filter-field:focus{border-color:#4568e0}.mzc-ms-listbox__search-icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;color:#8998b5}.mzc-ms-listbox__list{overflow-y:auto;flex:1}.mzc-ms-listbox__item{display:flex;align-items:center;gap:8px;min-height:24px;padding:4px 10px;cursor:pointer;font-size:13px;color:#28364e}.mzc-ms-listbox__item:hover{background:#4568e017}.mzc-ms-listbox__item.is-selected{background:#4568e012}.mzc-ms-listbox__item.is-disabled{color:#a7b1bc;cursor:not-allowed}.mzc-ms-listbox__all{border-bottom:1px solid #e1e3f0;font-weight:500}.mzc-ms-listbox__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mzc-ms-listbox__badge{flex:none;display:inline-flex;align-items:center;color:#8998b5}.mzc-ms-listbox__empty{padding:12px;text-align:center;color:#96a5be;font-size:13px}.formula-input-container,.formula-input-wrapper{position:relative;width:100%}.formula-highlight-overlay,.formula-textarea{padding:10px 12px;margin:0;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:0;word-spacing:0;text-indent:0;text-transform:none;tab-size:4;-moz-tab-size:4;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;box-sizing:border-box;border:1px solid transparent;border-radius:4px}.formula-highlight-overlay{position:absolute;top:0;right:0;bottom:0;left:0;min-height:60px;z-index:1;color:#28364e;background-color:transparent;overflow:auto;pointer-events:none}.formula-highlight-overlay span{display:inline;margin:0;padding:0;border:0;font:inherit;letter-spacing:inherit;word-spacing:inherit;line-height:inherit;vertical-align:baseline}.formula-highlight-overlay .hl-column{color:#001080}.formula-highlight-overlay .hl-number{color:#098658}.formula-highlight-overlay .hl-string{color:#a31515}.formula-highlight-overlay .hl-date{color:#af00db}.formula-highlight-overlay .hl-boolean,.formula-highlight-overlay .hl-logical,.formula-highlight-overlay .hl-arithmetic,.formula-highlight-overlay .hl-string-op,.formula-highlight-overlay .hl-postfix-op{color:#00f}.formula-highlight-overlay .hl-comparison{color:#d63384}.formula-highlight-overlay .hl-paren{color:#000}.formula-textarea{position:relative;width:100%;min-height:60px;max-height:240px;color:#28364e;-webkit-text-fill-color:transparent;caret-color:#28364e;cursor:text;background-color:#fff;border-color:#cad4e5;resize:vertical;transition:border-color .2s ease,box-shadow .2s ease}.formula-textarea::placeholder{color:#a8b4c9;-webkit-text-fill-color:#a8b4c9}.formula-textarea:hover{border-color:#4568e0}.formula-textarea:focus{outline:none;border-color:#4568e0;box-shadow:0 0 0 3px #4568e026}.formula-textarea:disabled{background-color:#f4f4f9;border-color:#d3d5e5;caret-color:#d3d5e5;cursor:not-allowed;opacity:1}.formula-textarea:disabled:hover{border-color:#d3d5e5}.is-invalid .formula-textarea{border-color:#f28270;box-shadow:0 0 0 3px #f2827026}.formula-suggestions-dropdown{background-color:#fff;border:1px solid #bac6d4;border-radius:4px;box-shadow:0 3px 6px #39377a1a;min-width:280px;max-width:400px;overflow:hidden}.formula-suggestions-dropdown .suggestions-header{line-height:12px;padding:9px 10px}.formula-suggestions-dropdown .context-badge{font-size:12px;line-height:12px;font-weight:500;color:#939aac}.formula-suggestions-dropdown .suggestions-list{max-height:200px;overflow-y:auto}.formula-suggestions-dropdown .suggestion-item{display:flex;align-items:center;padding:5.5px 10px;cursor:pointer;transition:background-color .1s ease}.formula-suggestions-dropdown .suggestion-item:hover,.formula-suggestions-dropdown .suggestion-item.is-selected{background-color:#4568e017}.formula-suggestions-dropdown .suggestion-text{flex:1;font-size:13px;line-height:13px;color:#28364e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.formula-suggestions-dropdown .suggestion-text .highlight{color:#3550b0;font-weight:700}.formula-suggestions-dropdown .suggestion-axis-icon{flex-shrink:0;display:inline-flex;align-items:center;margin-right:6px;color:#8998b5}.formula-suggestions-dropdown .suggestion-description{flex-shrink:0;font-size:12px;line-height:12px;color:#96a5be;max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:8px}.formula-suggestions-dropdown .suggestions-footer{display:flex;gap:10px;padding:9px 10px;border-top:1px solid #bac6d4;background-color:#f5f7fc}.formula-suggestions-dropdown .suggestions-footer .hint{font-size:12px;line-height:12px;color:#939aac}.formula-suggestions-dropdown .suggestions-footer .hint:before{content:"";display:inline-block;width:4px;height:4px;margin-right:4px;margin-bottom:2px;background-color:#939aac;border-radius:50%;vertical-align:middle}.mzc-customcell{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-customcell__list{display:flex;flex-direction:column;gap:16px;overflow-y:auto;min-height:0}.mzc-customcell__empty{box-sizing:border-box;height:30px;margin-bottom:8px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--mzc-muted)}.mzc-cc-set{border:1px solid #cad4e5;border-radius:6px}.mzc-cc-set__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px;border-bottom:1px solid #e1e3f0}.mzc-cc-set__title{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.mzc-cc-set__title .mzc-input{flex:1}.mzc-cc-priority{min-width:24px;height:24px;padding:0 6px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;background:#4568e029;color:#4568e0;border-radius:4px;font-size:14px;font-weight:500}.mzc-cc-set__divider{width:1px;height:14px;background:#bac6d4;margin:0 10px 0 14px}.mzc-cc-set__actions{display:flex;gap:4px}.mzc-cc-set__actions .mzc-btn{padding:4px;min-width:24px;justify-content:center}.mzc-cc-set__content{display:flex;flex-direction:column}.mzc-cc-formula{display:flex;flex-direction:column;gap:8px;padding:12px}.mzc-fx-status{position:relative;min-height:18px;font-size:12px}.mzc-fx-status__error{color:#dc5a5a}.mzc-fx-status__valid{color:#357e63;display:flex;align-items:center;gap:4px}.mzc-fx-status__check{display:inline-flex;align-items:center}.mzc-fx-status__hint{color:#96a5be}.mzc-fx-help{background:#f5f7fc;border-radius:6px;padding:12px}.mzc-fx-help__title{display:flex;align-items:center;gap:4px;font-size:12px;line-height:12px;font-weight:500;color:#6a7184;margin-bottom:16px}.mzc-fx-help__icon{display:inline-flex;align-items:center}.mzc-fx-help__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px}.mzc-fx-help__item{display:flex;align-items:center;gap:12px;font-size:11px;line-height:11px}.mzc-fx-help__label{font-size:11px;color:#8998b5;width:50px;white-space:nowrap;flex-shrink:0}.mzc-fx-help__item code{font-size:11px;color:#2d5592;font-family:Consolas,Monaco,monospace}.mzc-cc-styling{display:flex;align-items:center;gap:12px;padding:12px;border-top:1px solid #e1e3f0}.mzc-cc-styling__cols{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.mzc-cc-styling__cols .mzc-ms{flex:1}.mzc-cc-styling__label{font-size:12px;font-weight:500;color:#6a7184;white-space:nowrap}.mzc-cc-styling__colorpick{display:flex;align-items:center;gap:6px}.mzc-cc-color-trigger{width:22px;height:22px;border:1px solid #bac6d4;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.mzc-cc-color-trigger__a{font-size:13px;font-weight:500;line-height:1}.mzc-cc-color-host{position:static}.mzc-cc-color-dropdown{position:fixed;z-index:10001;background:#fff;border:1px solid #bac6d4;border-radius:6px;box-shadow:0 4px 12px #39377a29;padding:12px;display:flex;flex-direction:column;gap:12px}.mzc-cc-color-title{font-size:12px;font-weight:500;color:#6a7184;margin-bottom:8px}.mzc-cc-color-presets{display:flex;gap:6px;flex-wrap:nowrap}.mzc-cc-color-option{width:22px;height:22px;border-radius:4px;cursor:pointer;box-sizing:border-box;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;padding:0}.mzc-cc-color-option.is-selected{background:#4568e008}.mzc-cc-swatch{width:22px;height:22px;box-sizing:border-box;border:1px solid #dddde2;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.mzc-cc-color-option.is-selected .mzc-cc-swatch{border-width:2px;border-color:#4568e0}.mzc-cc-swatch--text{font-size:13px;font-weight:500;background:#fff}.mzc-cc-swatch--custom{border:1px dashed #bac6d4;font-size:11px}.mzc-cc-color-custom{position:relative}.mzc-cc-color-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.mzc-customcell-popup .mzc-popup-footer{flex-direction:column;align-items:stretch;gap:0;padding-top:12px}.mzc-cc-footer__help{width:100%;margin-bottom:12px}.mzc-cc-footer{display:flex;align-items:center;justify-content:space-between;width:100%}.mzc-popover.mzc-pivot-opt{min-width:290px;padding:0;border-radius:8px;background:#fff;box-shadow:0 3px 4px #39377a1a;border:1px solid #bac6d4;overflow:visible}.mzc-pvo{font-size:13px;color:#28364e;padding:4px 0}.mzc-pvo__title-wrap{padding:8px 16px;display:flex;justify-content:space-between;align-items:center}.mzc-pvo__title{font-size:16px;font-weight:500;color:#28364e}.mzc-pvo__title-actions{display:flex;gap:6px;align-items:center}.mzc-pvo__nav-btn{width:20px;height:20px;min-width:20px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:4px;cursor:pointer;padding:0}.mzc-pvo__nav-btn:hover{background:#8998b529}.mzc-pvo__nav-divider{width:1px;height:10px;background-color:#bac6d4}.mzc-pvo__sep{height:1px;background:#ddddec;margin:6px 0}.mzc-pvo__item{padding:0 16px;height:36px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.mzc-pvo__item:hover{background:#4568e017}.mzc-pvo__item[aria-disabled=true]{cursor:not-allowed}.mzc-pvo__item[aria-disabled=true]:hover{background:transparent}.mzc-pvo__label{display:inline-flex;align-items:center;gap:6px}.mzc-pvo__permission-info{display:inline-flex;align-items:center;cursor:help;transform:translateY(1px)}.mzc-pvo__opt{padding:0 16px;height:36px;display:flex;justify-content:space-between;align-items:center;gap:10px}.mzc-pvo__section{padding:0}.mzc-pvo__toggle{display:inline-flex;align-items:center}.ps-key-field:before{content:"";width:12px;height:12px;min-width:12px;min-height:12px;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cg%20clip-path='url(%23clip0_7840_6172)'%3e%3cpath%20d='M5.32501%200.347116C6.03401%200.467898%206.70045%200.767629%207.26124%201.21793C7.82204%201.66824%208.25863%202.25422%208.52969%202.9204C8.80075%203.58658%208.8973%204.31091%208.81021%205.02483C8.72312%205.73876%208.45527%206.41864%208.03201%207.00012L8.09501%207.06212H8.60801C8.69659%207.06212%208.78154%207.09731%208.84418%207.15994C8.90682%207.22258%208.94201%207.30753%208.94201%207.39612V7.82112H9.37001C9.45859%207.82112%209.54354%207.85631%209.60618%207.91894C9.66882%207.98158%209.70401%208.06653%209.70401%208.15512V8.58012H10.132C10.2206%208.58012%2010.3055%208.61531%2010.3682%208.67794C10.4308%208.74058%2010.466%208.82553%2010.466%208.91412V9.34312H10.991C11.0368%209.34324%2011.082%209.35271%2011.1239%209.37094C11.1659%209.38917%2011.2037%209.41577%2011.235%209.44912L11.609%209.84912C11.6678%209.91197%2011.7%209.99508%2011.699%2010.0811L11.685%2011.4581C11.6842%2011.5462%2011.6487%2011.6304%2011.5861%2011.6924C11.5236%2011.7543%2011.4391%2011.7891%2011.351%2011.7891H9.99201C9.94785%2011.7889%209.90417%2011.78%209.86349%2011.7628C9.82281%2011.7457%209.78594%2011.7206%209.75501%2011.6891L6.41001%208.34512C5.80867%208.6281%205.14914%208.76549%204.48483%208.74614C3.82051%208.7268%203.17009%208.55127%202.58624%208.23377C2.00239%207.91627%201.50153%207.46573%201.1242%206.91863C0.746885%206.37153%200.503719%205.74326%200.414401%205.08469C0.325083%204.42613%200.392124%203.75578%200.610094%203.12795C0.828064%202.50011%201.19084%201.93244%201.66903%201.4709C2.14722%201.00936%202.72739%200.666936%203.36256%200.47135C3.99772%200.275764%204.67002%200.232518%205.32501%200.345116M3.31101%204.22412C3.54784%204.28542%203.79826%204.26714%204.02368%204.17208C4.24909%204.07702%204.43699%203.91047%204.55841%203.69809C4.67982%203.48571%204.72802%203.23929%204.69558%202.99681C4.66313%202.75433%204.55184%202.52926%204.37885%202.35627C4.20587%202.18329%203.98079%202.07199%203.73831%202.03955C3.49584%202.0071%203.24942%202.0553%203.03704%202.17672C2.82465%202.29814%202.6581%202.48603%202.56304%202.71145C2.46798%202.93686%202.4497%203.18728%202.51101%203.42412C2.56105%203.61661%202.66159%203.79225%202.80223%203.93289C2.94287%204.07353%203.11851%204.17407%203.31101%204.22412Z'%20fill='%238998B5'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_7840_6172'%3e%3crect%20width='12'%20height='12'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");margin-right:6px}.ps-sorted.ps-sort-asc .ps-sort-icon{display:flex!important;align-items:center;display:inline-block}.ps-sorted.ps-sort-asc .ps-sort-icon:before{content:""!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;display:inline-block;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='M5.04577%203.5507L2.27851%205.99951C2.10357%206.15432%201.88091%206.23173%201.61055%206.23173C1.34018%206.23173%201.11753%206.15432%200.942589%205.99951C0.767647%205.8447%200.680176%205.64767%200.680176%205.40842C0.680176%205.16917%200.767647%204.97214%200.942589%204.81733L5.33204%200.933012C5.52289%200.764129%205.74554%200.679688%206%200.679688C6.25446%200.679688%206.47711%200.764129%206.66796%200.933012L11.0574%204.81733C11.2324%204.97214%2011.3198%205.16917%2011.3198%205.40842C11.3198%205.64767%2011.2324%205.8447%2011.0574%205.99951C10.8825%206.15432%2010.6598%206.23173%2010.3895%206.23173C10.1191%206.23173%209.89643%206.15432%209.72149%205.99951L6.95423%203.5507V10.4749C6.95423%2010.7142%206.86278%2010.9147%206.67989%2011.0766C6.49699%2011.2384%206.27036%2011.3193%206%2011.3193C5.72964%2011.3193%205.50301%2011.2384%205.32011%2011.0766C5.13722%2010.9147%205.04577%2010.7142%205.04577%2010.4749V3.5507Z'%20fill='%234568E0'%3e%3c/path%3e%3c/svg%3e")}.ps-sorted.ps-sort-asc .ps-sort-icon:after{color:#4568e0;font-size:12px;opacity:1;display:inline-block}.ps-sorted.ps-sort-desc .ps-sort-icon{display:flex!important;align-items:center;display:inline-block}.ps-sorted.ps-sort-desc .ps-sort-icon:before{content:""!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;display:inline-block;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='M5.04577%208.4493L2.27851%206.00049C2.10357%205.84568%201.88091%205.76827%201.61055%205.76827C1.34018%205.76827%201.11753%205.84568%200.942589%206.00049C0.767647%206.1553%200.680176%206.35233%200.680176%206.59158C0.680176%206.83083%200.767647%207.02786%200.942589%207.18267L5.33204%2011.067C5.52289%2011.2359%205.74554%2011.3203%206%2011.3203C6.25446%2011.3203%206.47711%2011.2359%206.66796%2011.067L11.0574%207.18267C11.2324%207.02786%2011.3198%206.83083%2011.3198%206.59158C11.3198%206.35233%2011.2324%206.1553%2011.0574%206.00049C10.8825%205.84568%2010.6598%205.76827%2010.3895%205.76827C10.1191%205.76827%209.89643%205.84568%209.72149%206.00049L6.95423%208.4493V1.52508C6.95423%201.28583%206.86278%201.08528%206.67989%200.923434C6.49699%200.761588%206.27036%200.680664%206%200.680664C5.72964%200.680664%205.50301%200.761588%205.32011%200.923434C5.13722%201.08528%205.04577%201.28583%205.04577%201.52508V8.4493Z'%20fill='%234568E0'%3e%3c/path%3e%3c/svg%3e")}.ps-sorted.ps-sort-desc .ps-sort-icon:after{color:#4568e0;font-size:12px;opacity:1;display:inline-block}.ps-filtered .ps-filter-icon{display:flex!important;align-items:center;display:inline-block}.ps-filtered .ps-filter-icon:before{content:""!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;display:inline-block;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='M1.29807%202.05245C2.53007%203.64145%204.80807%206.58645%204.80807%206.58645V10.2645C4.80807%2010.4266%204.87221%2010.5822%204.98649%2010.6972C5.10078%2010.8122%205.25592%2010.8774%205.41807%2010.8785H6.63907C6.80122%2010.8774%206.95637%2010.8122%207.07065%2010.6972C7.18494%2010.5822%207.24908%2010.4266%207.24907%2010.2645V6.58645C7.24907%206.58645%209.52007%203.64145%2010.7491%202.05245C10.8192%201.96236%2010.8628%201.85444%2010.8748%201.74089C10.8868%201.62734%2010.8669%201.51269%2010.8171%201.4099C10.7674%201.30711%2010.6899%201.22029%2010.5934%201.15924C10.4969%201.09819%2010.3853%201.06536%2010.2711%201.06445H1.78007C1.66555%201.06462%201.55337%201.09691%201.45629%201.15766C1.35921%201.21842%201.28112%201.30519%201.23091%201.40812C1.1807%201.51104%201.16037%201.62599%201.17224%201.7399C1.18412%201.85381%201.22771%201.96209%201.29807%202.05245Z'%20stroke='%234568E0'%20stroke-width='1.65'%20stroke-linejoin='round'%3e%3c/path%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center}.ps-header-cell .ps-filter-icon,.mzc-pivotbar__item .ps-filter-icon{display:inline-flex;align-items:center;width:12px;height:12px;min-width:12px}.ps-header-cell:not(.ps-filtered) .ps-filter-icon:before{content:"";width:12px;height:12px;min-width:12px;min-height:12px;display:inline-block;background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3e%3cpath%20d='M1.29807%202.05245C2.53007%203.64145%204.80807%206.58645%204.80807%206.58645V10.2645C4.80807%2010.4266%204.87221%2010.5822%204.98649%2010.6972C5.10078%2010.8122%205.25592%2010.8774%205.41807%2010.8785H6.63907C6.80122%2010.8774%206.95637%2010.8122%207.07065%2010.6972C7.18494%2010.5822%207.24908%2010.4266%207.24907%2010.2645V6.58645C7.24907%206.58645%209.52007%203.64145%2010.7491%202.05245C10.8192%201.96236%2010.8628%201.85444%2010.8748%201.74089C10.8868%201.62734%2010.8669%201.51269%2010.8171%201.4099C10.7674%201.30711%2010.6899%201.22029%2010.5934%201.15924C10.4969%201.09819%2010.3853%201.06536%2010.2711%201.06445H1.78007C1.66555%201.06462%201.55337%201.09691%201.45629%201.15766C1.35921%201.21842%201.28112%201.30519%201.23091%201.40812C1.1807%201.51104%201.16037%201.62599%201.17224%201.7399C1.18412%201.85381%201.22771%201.96209%201.29807%202.05245Z'%20stroke='%238998B5'%20stroke-width='1.65'%20stroke-linejoin='round'%3e%3c/path%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center}.ps-header-cell:not(.ps-filtered) .ps-filter-icon{opacity:.45;transition:opacity .12s ease-in-out}.ps-header-cell:not(.ps-filtered) .ps-filter-icon:hover{opacity:1}.ps-header-cell .ps-filter-icon.is-filter-open,.mzc-pivotbar__item .ps-filter-icon.is-filter-open{background:var(--mzc-filter-open-surface);outline:3px solid var(--mzc-filter-open-surface);outline-offset:0;border-radius:2px;opacity:1}.ps-header-cell .ps-filter-icon.is-filter-open{--mzc-filter-open-surface: rgba(19, 32, 64, .1)}.mzc-pivotbar__item .ps-filter-icon.is-filter-open{--mzc-filter-open-surface: rgba(69, 104, 224, .22)}.mzc-filter__formula{display:flex;flex-direction:column;gap:4px;padding:0 4px}.mzc-filter__formula-host{width:100%}.mzc-filter__tree-divider{width:100%;height:1px;margin:4px 0;background:#dfe5ef}.mzc-filter__tree-divider+.mzc-filter__tree-host,.mzc-filter__tree-divider+.mzc-filter__tree-unsupported{margin-top:0}.mzc-popover.mzc-colvalfilter{width:380px;padding:0;overflow:hidden}.mzc-colvalfilter__mode{padding:0 10px;border-bottom:1px solid var(--mzc-border)}.mzc-colvalfilter__tabs{display:flex;width:100%;height:38px}.mzc-colvalfilter__tab{position:relative;flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 10px;color:#565f6e;font-size:13px;font-weight:400;background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer}.mzc-colvalfilter__tab:hover,.mzc-colvalfilter__tab.has-filter{color:#4568e0}.mzc-colvalfilter__tab.is-active{color:#4568e0;font-weight:500;border-bottom-color:#4568e0}.mzc-colvalfilter__tab.is-disabled,.mzc-colvalfilter__tab.is-disabled:hover{color:var(--mzc-muted, #8998b5);opacity:.5;cursor:not-allowed;border-bottom-color:transparent}.mzc-colvalfilter__tab-dot{width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#4568e0}.mzc-colvalfilter__tab-dot.is-pending{background:#fa9e23}.mzc-colvalfilter__tab-count{min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;border-radius:8px;color:#fff;background:#4568e0;font-size:10px;line-height:16px}.mzc-colvalfilter__exprs{display:flex;flex-direction:column;gap:0;padding:8px 10px}.mzc-colvalfilter__expr{display:grid;grid-template-columns:20px 78px 54px 1fr 20px;align-items:center;gap:8px;padding:4px;border-radius:var(--mzc-radius)}.mzc-colvalfilter__expr:hover{background:var(--mzc-hover)}.mzc-colvalfilter__expr.is-dragging{opacity:.5}.mzc-colvalfilter__expr.is-over-before{box-shadow:inset 0 2px #4568e0}.mzc-colvalfilter__expr.is-over-after{box-shadow:inset 0 -2px #4568e0}.mzc-colvalfilter__handle{display:flex;justify-content:center;align-items:center;width:20px;height:20px}.mzc-colvalfilter__spacer{display:block}.mzc-colvalfilter__expr .mzc-input{width:100%;min-width:0}.mzc-colvalfilter__expr .mzc-btn--ghost{width:20px;min-width:20px;height:20px;padding:0;display:flex;justify-content:center;align-items:center}.mzc-colvalfilter__expr-empty{box-sizing:border-box;height:38px;display:flex;align-items:center;justify-content:center;padding:0 4px;font-size:12px;color:var(--mzc-muted)}.mzc-add-zone{box-sizing:border-box;width:100%;min-height:40px;flex-shrink:0;margin:8px 0 0;display:flex;align-items:center;justify-content:center;gap:6px;padding:0;font-size:13px;font-family:inherit;color:#4568e0;background:#f5f8ff;border:1px solid #dde8fc;border-radius:var(--mzc-radius, 4px);cursor:pointer}.mzc-add-zone:hover:not(:disabled){background:#ebf1fe;border-color:#c9daf9}.mzc-add-zone:focus-visible{outline:1px solid #4568e0;outline-offset:-1px}.mzc-add-zone:disabled{color:#a7b1bc;background:#f6f7fa;border-color:#e4e7ee;cursor:not-allowed}.mzc-colvalfilter__expr-body>.mzc-add-zone{width:calc(100% - 20px);margin:8px 10px}.mzc-colvalfilter__exprs{padding-bottom:0}.mzc-popup-body .mzc-sort .mzc-add-zone{width:calc(100% - 32px);margin-left:16px;margin-right:16px}.mzc-popup-body .mzc-sort>.mzc-add-zone{margin-top:0}.mzc-popup-body .mzc-sort .mzc-settings-blocked-body .mzc-add-zone{margin-top:10px}.mzc-filter__formula>.mzc-add-zone{margin-top:4px}.mzc-colvalfilter__foot{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--mzc-bg);border-top:1px solid var(--mzc-border)}.mzc-colvalfilter__foot-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:20px}.mzc-colvalfilter__count{font-size:11px;color:var(--mzc-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mzc-colvalfilter__actions{display:flex;align-items:center;justify-content:space-between;gap:6px}.mzc-colvalfilter__action-buttons{display:flex;align-items:center;gap:8px}.mzc-footer-commit .mzc-colvalfilter__action-buttons .mzc-btn{padding:0 8px;min-width:0}.mzc-colvalfilter__actions .mzc-checkbox{font-size:12px}.moz-grid-tooltip{position:fixed;color:#fff;font-size:.8125rem;line-height:1rem;text-align:left;padding:6px 10px;background:#5d606b;pointer-events:none;box-shadow:2px 2px 7px #00000030;border-radius:4px;z-index:999999;max-width:350px;overflow:hidden;word-break:break-all;transition-property:opacity;transition-duration:.12s}.moz-grid-tooltip div,.moz-grid-tooltip span,.moz-grid-tooltip td,.moz-grid-tooltip th{color:#fff}.moz-grid-tooltip .title{display:flex;align-items:center;font-weight:700;font-size:15px}.moz-grid-tooltip .small{font-size:.6875rem;line-height:.6875rem;font-weight:400;color:#b6b7c1;display:block;margin-bottom:2px;margin-top:4px}.moz-grid-tooltip--error{background:#c0392b}.mzc-sort-popup .mzc-popup-body,.mzc-filter-popup .mzc-popup-body,.mzc-customcell-popup .mzc-popup-body{display:flex;flex-direction:column;overflow:hidden}.mzc-sort{display:flex;flex-direction:column;min-height:0;flex:1;width:100%}.mzc-sort>.mzc-sort__tabs,.mzc-filter>.mzc-filter__tabs{flex-shrink:0}.mzc-filter{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-filter>.mzc-settings-blocked-body{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-filter>.mzc-settings-blocked-body>div{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-filter__tabpanel,.mzc-filter__formula{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-popup-body .mzc-sort__rows{overflow-y:auto;min-height:0}.mzc-sort .mzc-settings-blocked-body{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-sort .mzc-settings-blocked-body>div{display:flex;flex-direction:column;min-height:0;flex:1}.mzc-filter__tree-host{margin-top:6px;overflow-y:auto;min-height:0;flex:1}.mzc-filter__formula>.mzc-filter__formula-host,.mzc-filter__formula>.mzc-filter__tree-divider,.mzc-filter__formula>.mzc-add-zone{flex-shrink:0}.mzc-filter__formula>.mzc-fx-help{overflow-y:auto;min-height:0}.mzc-filter__tree-unsupported{margin-top:6px;padding:8px 10px;border-radius:4px;background:#f6f8fa;color:#5b6b8c;font-size:12px;line-height:1.5}.mzc-frows{padding-left:24px;margin-left:-24px}.mzc-frows__rows{display:flex;flex-direction:column;gap:4px}.mzc-frows__empty{box-sizing:border-box;height:32px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--mzc-muted)}.mzc-frows__row{display:flex;align-items:center;gap:6px;border-top:1px solid transparent;border-bottom:1px solid transparent;position:relative}.mzc-frows__row.is-over-before{border-top-color:#4568e0}.mzc-frows__row.is-over-after{border-bottom-color:#4568e0}.mzc-frows__row.is-dragging{opacity:.5}.mzc-frows__handle{flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;cursor:grab;-webkit-user-select:none;user-select:none}.mzc-frows__handle:active{cursor:grabbing}.mzc-frows__tree{flex:0 0 auto;display:flex;align-self:stretch;position:relative}.mzc-frows__tree-col{flex:0 0 20px;width:20px;position:relative}.mzc-frows__tree-col--line:before,.mzc-frows__tree-col--bracket-mid:before{content:"";position:absolute;left:9px;top:-3px;bottom:-3px;width:2px;background:#cdd6e5}.mzc-frows__tree-col--bracket-top:before{content:"";position:absolute;left:9px;top:50%;bottom:-3px;width:2px;background:#cdd6e5}.mzc-frows__tree-col--bracket-bottom:before{content:"";position:absolute;left:9px;top:-3px;height:calc(50% + 3px);width:2px;background:#cdd6e5}.mzc-frows__tree-col--bracket-top:after,.mzc-frows__tree-col--bracket-mid:after,.mzc-frows__tree-col--bracket-bottom:after,.mzc-frows__tree-col--bracket-only:after{content:"";position:absolute;left:9px;top:50%;width:11px;height:2px;background:#cdd6e5}.mzc-frows__group-boundary{position:absolute;z-index:2;right:-2px;top:-14px;width:24px;height:24px;padding:4px;border:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#8998b5;background:transparent;cursor:pointer;opacity:0;transition:opacity .12s ease,color .12s ease}.mzc-frows__group-boundary:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;z-index:-1;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #cdd6e5;opacity:0;transition:opacity .12s ease,box-shadow .12s ease}.mzc-frows__group-boundary:hover,.mzc-frows__group-boundary:focus-visible,.mzc-frows__row:hover .mzc-frows__group-boundary,.mzc-frows__group-boundary.is-merge{opacity:1}.mzc-frows__group-boundary:hover,.mzc-frows__group-boundary:focus-visible,.mzc-frows__group-boundary.is-merge{color:#4568e0}.mzc-frows__group-boundary:focus-visible{outline:none}.mzc-frows__group-boundary:hover:before,.mzc-frows__group-boundary:focus-visible:before{opacity:1;box-shadow:0 0 0 1px #4568e0}.mzc-frows__row:hover .mzc-frows__group-boundary:before{opacity:1}.mzc-frows__logical{flex:0 0 72px}.mzc-frows__rows{--mzc-frows-paren-char: 9px;--mzc-frows-paren-pad: 11px}.mzc-frows__paren{box-sizing:border-box;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--mzc-radius, 4px);color:#4568e0;font-weight:600;font-family:monospace;font-size:15px;white-space:nowrap;-webkit-user-select:none;user-select:none}.mzc-frows__paren--open{flex:0 0 calc(var(--mzc-frows-paren-pad) + var(--mzc-frows-paren-char) * var(--mzc-frows-paren-open, 1))}.mzc-frows__paren--close{flex:0 0 calc(var(--mzc-frows-paren-pad) + var(--mzc-frows-paren-char) * var(--mzc-frows-paren-close, 1))}.mzc-frows__paren:not(:empty){background:#eef2ff}.mzc-frows__cond{flex:1;min-width:0;display:grid;grid-template-columns:110px 54px minmax(0,1fr) auto;align-items:center;gap:6px}.mzc-frows__cond.is-unary{grid-template-columns:110px 54px}.mzc-frows__cond>*:nth-child(3){min-width:0;width:100%}.mzc-frows__cond>.mzc-input,.mzc-frows__cond>input{flex:1;min-width:0}.mzc-frows__cond>.mzc-btn--icon{flex:0 0 auto}.mzc-frows__row.is-drop-preview{background:#eef2ff;outline:1px dashed #4568e0;outline-offset:-1px}.mzc-frows__row.is-drop-group{background:#dbe4ff;box-shadow:0 -2px #dbe4ff,0 2px #dbe4ff}.mzc-frows__row.is-drop-group-top{border-top-color:#4568e0}.mzc-frows__row.is-drop-group-bottom{border-bottom-color:#4568e0}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox],.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox],.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;box-sizing:border-box;width:12px;height:12px;min-width:12px;margin:0;padding:0;border:0;border-radius:2px;background-color:transparent;background-repeat:no-repeat;background-position:center;background-size:12px 12px;background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><path d=%22M10 0H2C0.89543 0 0 0.89543 0 2V10C0 11.1046 0.89543 12 2 12H10C11.1046 12 12 11.1046 12 10V2C12 0.89543 11.1046 0 10 0Z%22 fill=%22%23ffffff%22/><path d=%22M10 0.5H2C1.17157 0.5 0.5 1.17157 0.5 2V10C0.5 10.8284 1.17157 11.5 2 11.5H10C10.8284 11.5 11.5 10.8284 11.5 10V2C11.5 1.17157 10.8284 0.5 10 0.5Z%22 stroke=%22%23bac6d4%22/></svg>");cursor:pointer;transition:box-shadow .15s ease-in-out}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:checked,.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:checked,.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:checked{background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><path d=%22M10 12H2C1.46957 12 0.960859 11.7893 0.585786 11.4142C0.210714 11.0391 0 10.5304 0 10V2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0L10 0C10.5304 0 11.0391 0.210714 11.4142 0.585786C11.7893 0.960859 12 1.46957 12 2V10C12 10.5304 11.7893 11.0391 11.4142 11.4142C11.0391 11.7893 10.5304 12 10 12ZM2.276 5.472C2.18827 5.47227 2.10149 5.49011 2.02077 5.52446C1.94005 5.5588 1.86702 5.60897 1.806 5.672C1.68191 5.79695 1.61227 5.9659 1.61227 6.142C1.61227 6.3181 1.68191 6.48705 1.806 6.612L4.2 9C4.32469 9.12457 4.49374 9.19455 4.67 9.19455C4.84626 9.19455 5.01531 9.12457 5.14 9L10.194 3.94C10.2557 3.87821 10.3047 3.80487 10.338 3.72417C10.3714 3.64347 10.3886 3.55698 10.3885 3.46965C10.3885 3.38231 10.3712 3.29584 10.3378 3.21518C10.3043 3.13451 10.2553 3.06122 10.1935 2.9995C10.1317 2.93778 10.0584 2.88883 9.97767 2.85545C9.89697 2.82208 9.81048 2.80492 9.72315 2.80497C9.63581 2.80501 9.54934 2.82226 9.46868 2.85572C9.38801 2.88919 9.31472 2.93821 9.253 3L4.667 7.587L2.747 5.667C2.68531 5.60494 2.61191 5.55574 2.53105 5.52227C2.4502 5.48879 2.36351 5.47171 2.276 5.472Z%22 fill=%22%234568e0%22/></svg>")}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:indeterminate,.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:indeterminate,.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><rect width=%2212%22 height=%2212%22 rx=%222%22 fill=%22%234568e0%22/><path d=%22M3 6H9%22 stroke=%22white%22 stroke-width=%222%22 stroke-linecap=%22round%22/></svg>")}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:hover:not(:checked):not(:indeterminate),.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:hover:not(:checked):not(:indeterminate),.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:hover:not(:checked):not(:indeterminate){background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><path d=%22M10 0H2C0.89543 0 0 0.89543 0 2V10C0 11.1046 0.89543 12 2 12H10C11.1046 12 12 11.1046 12 10V2C12 0.89543 11.1046 0 10 0Z%22 fill=%22%23ffffff%22/><path d=%22M10 0.5H2C1.17157 0.5 0.5 1.17157 0.5 2V10C0.5 10.8284 1.17157 11.5 2 11.5H10C10.8284 11.5 11.5 10.8284 11.5 10V2C11.5 1.17157 10.8284 0.5 10 0.5Z%22 stroke=%22%233e5dc9%22/></svg>")}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:hover:checked,.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:hover:checked,.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:hover:checked{background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><path d=%22M10 12H2C1.46957 12 0.960859 11.7893 0.585786 11.4142C0.210714 11.0391 0 10.5304 0 10V2C0 1.46957 0.210714 0.960859 0.585786 0.585786C0.960859 0.210714 1.46957 0 2 0L10 0C10.5304 0 11.0391 0.210714 11.4142 0.585786C11.7893 0.960859 12 1.46957 12 2V10C12 10.5304 11.7893 11.0391 11.4142 11.4142C11.0391 11.7893 10.5304 12 10 12ZM2.276 5.472C2.18827 5.47227 2.10149 5.49011 2.02077 5.52446C1.94005 5.5588 1.86702 5.60897 1.806 5.672C1.68191 5.79695 1.61227 5.9659 1.61227 6.142C1.61227 6.3181 1.68191 6.48705 1.806 6.612L4.2 9C4.32469 9.12457 4.49374 9.19455 4.67 9.19455C4.84626 9.19455 5.01531 9.12457 5.14 9L10.194 3.94C10.2557 3.87821 10.3047 3.80487 10.338 3.72417C10.3714 3.64347 10.3886 3.55698 10.3885 3.46965C10.3885 3.38231 10.3712 3.29584 10.3378 3.21518C10.3043 3.13451 10.2553 3.06122 10.1935 2.9995C10.1317 2.93778 10.0584 2.88883 9.97767 2.85545C9.89697 2.82208 9.81048 2.80492 9.72315 2.80497C9.63581 2.80501 9.54934 2.82226 9.46868 2.85572C9.38801 2.88919 9.31472 2.93821 9.253 3L4.667 7.587L2.747 5.667C2.68531 5.60494 2.61191 5.55574 2.53105 5.52227C2.4502 5.48879 2.36351 5.47171 2.276 5.472Z%22 fill=%22%233e5dc9%22/></svg>")}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:hover:indeterminate,.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:hover:indeterminate,.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:hover:indeterminate{background-image:url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%2212%22 viewBox=%220 0 12 12%22 fill=%22none%22><rect width=%2212%22 height=%2212%22 rx=%222%22 fill=%22%233e5dc9%22/><path d=%22M3 6H9%22 stroke=%22white%22 stroke-width=%222%22 stroke-linecap=%22round%22/></svg>")}.mzc-colvalfilter .ps-valuelist-all input[type=checkbox]:focus-visible,.mzc-colvalfilter .ps-valuelist-picked-only input[type=checkbox]:focus-visible,.mzc-colvalfilter .ps-valuelist-item input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px #4568e033}.mzc-client-excel-body{height:100%;display:flex;flex-direction:column}.mzc-client-excel-options{display:flex;gap:8px;padding:0 0 12px;justify-content:space-between;align-items:flex-end}.mzc-client-excel-options .mzc-client-excel-option{display:flex;align-items:center;gap:8px;font-size:12px}.mzc-client-excel-options .mzc-client-excel-option--grow{flex:1}.mzc-client-excel-options .mzc-client-excel-option__label{color:var(--mzc-fg-muted, #6a7184);font-weight:500;min-width:56px}.mzc-client-excel-dropzone{flex:1;min-height:220px;background-color:var(--mzc-dropzone-bg, #f8f8fd);border:1px dashed var(--mzc-accent, #4568e0);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;font-size:13px;cursor:pointer}.mzc-client-excel-dropzone>*{pointer-events:none}.mzc-client-excel-dropzone.is-active{border-style:solid}.mzc-client-excel-dropzone__text{text-align:center;color:var(--mzc-fg-muted, #6a7184);font-weight:400}.mzc-client-excel-dropzone__line{display:block}.mzc-client-excel-dropzone__accent{color:var(--mzc-accent, #4568e0)}.mzc-client-excel-dropzone__error{color:var(--mzc-toast-error, #dc5a5a)}.mzc-client-excel-popup .mzc-popup-footer .mzc-btn{min-width:80px}.moz-grid-chrome[data-v-330c3d14]{overflow:hidden}
|
|
@@ -5,7 +5,7 @@ import { defineStore } from "pinia";
|
|
|
5
5
|
import { inject, computed } from "vue";
|
|
6
6
|
import { getUserLockKey, unlock, removeSession, lock, setSession, updateSessionFileName, isLocked, initExcelGuard } from "./ExcelGuard.js";
|
|
7
7
|
import { u as useGridNotificationStore } from "../../chunks/notification.contract-BTOch6ed.js";
|
|
8
|
-
import { g as getGridVueLocale,
|
|
8
|
+
import { g as getGridVueLocale, u as useExcelStore, f as generateGUID } from "../../chunks/index-DY0dbAHJ.js";
|
|
9
9
|
import dayjs from "dayjs";
|
|
10
10
|
const encodeUnescapeBtoa = (text) => {
|
|
11
11
|
if (!text) return "";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vmscloud/moz-ui-grid-vue",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "MozGrid - Vue 3 wrapping library for @vmscloud/moz-ui-grid-core",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"type": "module",
|
|
@@ -64,13 +64,29 @@
|
|
|
64
64
|
"url": "https://github.com/vmscloud/mozart-cloud.git",
|
|
65
65
|
"directory": "components/frontend/moz-ui-grid/moz-ui-grid-vue"
|
|
66
66
|
},
|
|
67
|
+
"scripts": {
|
|
68
|
+
"preinstall": "node ../../../scripts/enforce-pm.cjs",
|
|
69
|
+
"build": "vue-tsc --noEmit && vite build --config vite.config.lib.ts",
|
|
70
|
+
"build:lib": "vite build --config vite.config.lib.ts && node scripts/copy-docs.mjs",
|
|
71
|
+
"docs:bundle": "node scripts/copy-docs.mjs",
|
|
72
|
+
"prepack": "node scripts/copy-docs.mjs",
|
|
73
|
+
"prepublishOnly": "bun run build:lib",
|
|
74
|
+
"dev": "vite --config vite.config.lib.ts",
|
|
75
|
+
"test": "vitest run",
|
|
76
|
+
"test:watch": "vitest",
|
|
77
|
+
"test:coverage": "vitest run --coverage",
|
|
78
|
+
"typecheck": "vue-tsc --noEmit",
|
|
79
|
+
"storybook": "bunx rimraf node_modules/.cache/storybook && storybook dev -p 6008",
|
|
80
|
+
"build-storybook": "storybook build"
|
|
81
|
+
},
|
|
67
82
|
"dependencies": {
|
|
83
|
+
"@vmscloud/moz-ui-grid-core": "^0.1.42",
|
|
84
|
+
"@vmscloud/moz-ui-grid-wrapper": "^0.1.13",
|
|
85
|
+
"bytebuffer": "^5.0.1",
|
|
68
86
|
"crypto-js": "^4.2.0",
|
|
69
87
|
"echarts": "^5.5.0",
|
|
70
88
|
"es-toolkit": "^1.0.0",
|
|
71
|
-
"lit-html": "^3.2.0"
|
|
72
|
-
"@vmscloud/moz-ui-grid-core": "^0.1.43",
|
|
73
|
-
"@vmscloud/moz-ui-grid-wrapper": "^0.1.14"
|
|
89
|
+
"lit-html": "^3.2.0"
|
|
74
90
|
},
|
|
75
91
|
"peerDependencies": {
|
|
76
92
|
"vue": ">=3.4.0",
|
|
@@ -97,6 +113,7 @@
|
|
|
97
113
|
"@storybook/addon-essentials": "^8.6.14",
|
|
98
114
|
"@storybook/vue3": "^8.6.14",
|
|
99
115
|
"@storybook/vue3-vite": "^8.6.14",
|
|
116
|
+
"@types/bytebuffer": "^5.0.48",
|
|
100
117
|
"@vitejs/plugin-vue": "^5.0.3",
|
|
101
118
|
"@vue/test-utils": "^2.4.3",
|
|
102
119
|
"jsdom": "^27.4.0",
|
|
@@ -112,17 +129,5 @@
|
|
|
112
129
|
"axios": "^1.6.0",
|
|
113
130
|
"file-saver": "^2.0.5",
|
|
114
131
|
"dayjs": "^1.11.0"
|
|
115
|
-
},
|
|
116
|
-
"scripts": {
|
|
117
|
-
"build": "vue-tsc --noEmit && vite build --config vite.config.lib.ts",
|
|
118
|
-
"build:lib": "vite build --config vite.config.lib.ts && node scripts/copy-docs.mjs",
|
|
119
|
-
"docs:bundle": "node scripts/copy-docs.mjs",
|
|
120
|
-
"dev": "vite --config vite.config.lib.ts",
|
|
121
|
-
"test": "vitest run",
|
|
122
|
-
"test:watch": "vitest",
|
|
123
|
-
"test:coverage": "vitest run --coverage",
|
|
124
|
-
"typecheck": "vue-tsc --noEmit",
|
|
125
|
-
"storybook": "npx rimraf node_modules/.cache/storybook && storybook dev -p 6008",
|
|
126
|
-
"build-storybook": "storybook build"
|
|
127
132
|
}
|
|
128
|
-
}
|
|
133
|
+
}
|