@teppen/react-ui 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -1
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -1
- package/dist/cjs/src/share/text/normalize.js +2 -0
- package/dist/cjs/src/share/text/normalize.js.map +1 -0
- package/dist/cjs/src/table/copy/components.js +1 -1
- package/dist/cjs/src/table/copy/components.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
- package/dist/cjs/src/table/libs/generate-validate-function.js +1 -1
- package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
- package/dist/cjs/src/table/locale/messages.js +2 -0
- package/dist/cjs/src/table/locale/messages.js.map +1 -0
- package/dist/cjs/src/table/locale/provider.js +2 -0
- package/dist/cjs/src/table/locale/provider.js.map +1 -0
- package/dist/cjs/src/table/operation/components/key-catcher.js +2 -0
- package/dist/cjs/src/table/operation/components/key-catcher.js.map +1 -0
- package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/cjs/src/table/operation/editor-input.js +2 -0
- package/dist/cjs/src/table/operation/editor-input.js.map +1 -0
- package/dist/cjs/src/table/operation/event-target.js +1 -1
- package/dist/cjs/src/table/operation/event-target.js.map +1 -1
- package/dist/cjs/src/table/paste/hooks.js +1 -1
- package/dist/cjs/src/table/paste/hooks.js.map +1 -1
- package/dist/cjs/src/table/paste/logic.js +1 -1
- package/dist/cjs/src/table/paste/logic.js.map +1 -1
- package/dist/cjs/src/table/sheet/providers.js +1 -1
- package/dist/cjs/src/table/sheet/providers.js.map +1 -1
- package/dist/cjs/src/table/sort/hooks.js +1 -1
- package/dist/cjs/src/table/sort/hooks.js.map +1 -1
- package/dist/cjs/src/table/sort/provider.js +1 -1
- package/dist/cjs/src/table/sort/provider.js.map +1 -1
- package/dist/cjs/src/table/table/base.js +1 -1
- package/dist/cjs/src/table/table/base.js.map +1 -1
- package/dist/cjs/src/table/table/hook.js +1 -1
- package/dist/cjs/src/table/table/hook.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -1
- package/dist/esm/src/share/text/normalize.js +2 -0
- package/dist/esm/src/share/text/normalize.js.map +1 -0
- package/dist/esm/src/table/copy/components.js +1 -1
- package/dist/esm/src/table/copy/components.js.map +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
- package/dist/esm/src/table/filter-v2/hook.js +1 -1
- package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
- package/dist/esm/src/table/libs/generate-validate-function.js +1 -1
- package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
- package/dist/esm/src/table/locale/messages.js +2 -0
- package/dist/esm/src/table/locale/messages.js.map +1 -0
- package/dist/esm/src/table/locale/provider.js +2 -0
- package/dist/esm/src/table/locale/provider.js.map +1 -0
- package/dist/esm/src/table/operation/components/key-catcher.js +2 -0
- package/dist/esm/src/table/operation/components/key-catcher.js.map +1 -0
- package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
- package/dist/esm/src/table/operation/editor-input.js +2 -0
- package/dist/esm/src/table/operation/editor-input.js.map +1 -0
- package/dist/esm/src/table/operation/event-target.js +1 -1
- package/dist/esm/src/table/operation/event-target.js.map +1 -1
- package/dist/esm/src/table/paste/hooks.js +1 -1
- package/dist/esm/src/table/paste/hooks.js.map +1 -1
- package/dist/esm/src/table/paste/logic.js +1 -1
- package/dist/esm/src/table/paste/logic.js.map +1 -1
- package/dist/esm/src/table/sheet/providers.js +1 -1
- package/dist/esm/src/table/sheet/providers.js.map +1 -1
- package/dist/esm/src/table/sort/hooks.js +1 -1
- package/dist/esm/src/table/sort/hooks.js.map +1 -1
- package/dist/esm/src/table/sort/provider.js +1 -1
- package/dist/esm/src/table/sort/provider.js.map +1 -1
- package/dist/esm/src/table/table/base.js +1 -1
- package/dist/esm/src/table/table/base.js.map +1 -1
- package/dist/esm/src/table/table/hook.js +1 -1
- package/dist/esm/src/table/table/hook.js.map +1 -1
- package/dist/index.d.ts +39 -26
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useRangeContext } from \"../../range/provider\";\nimport { useCopyActionContext } from \"../../copy/provider\";\nimport { useTableIdGenerator } from \"../../id\";\nimport { isComposingKey, isTextEntryTarget } from \"../event-target\";\
|
|
1
|
+
{"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useRangeContext } from \"../../range/provider\";\nimport { useCopyActionContext } from \"../../copy/provider\";\nimport { useTableIdGenerator } from \"../../id\";\nimport { isComposingKey, isTextEntryTarget } from \"../event-target\";\nimport { setEditorInitialValue } from \"../editor-input\";\n\nexport function KeyboardSetting(options?: { enableDeprecatedCopy?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const edit = useEditContext();\n const range = useRangeContext();\n const { copy } = useCopyActionContext();\n const col = useColumnsContext()[range.isSelecting ? range.start.colIndex : 0];\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (isComposingKey(e)) {\n return;\n }\n\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (range.isSelecting && !isTextEntryTarget(e.target)) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n range.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n range.reset();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendRightEnd();\n } else if (e.ctrlKey) {\n range.moveRightEnd();\n } else if (e.shiftKey) {\n range.extendRight();\n } else {\n range.moveRight();\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendLeftEnd();\n } else if (e.ctrlKey) {\n range.moveLeftEnd();\n } else if (e.shiftKey) {\n range.extendLeft();\n } else {\n range.moveLeft();\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendTop();\n } else if (e.ctrlKey) {\n range.moveTop();\n } else if (e.shiftKey) {\n range.extendUp();\n } else {\n range.moveUp();\n }\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendBottom();\n } else if (e.ctrlKey) {\n range.moveBottom();\n } else if (e.shiftKey) {\n range.extendDown();\n } else {\n range.moveDown();\n }\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n } else if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === \"c\") {\n e.preventDefault();\n copy({ enableDeprecatedCopy: options?.enableDeprecatedCopy });\n } else if (\n !e.altKey &&\n !e.ctrlKey &&\n !e.metaKey &&\n // Any key that types one character (letters, digits, symbols,\n // space). IME input is handled by KeyCatcher instead.\n Array.from(e.key).length === 1\n ) {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setEditorInitialValue(e.key, IdGenerator.getEditorId());\n }, 10);\n } else if (e.key === \"Backspace\" || e.key === \"Delete\") {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setEditorInitialValue(\"\", IdGenerator.getEditorId());\n }, 10);\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [range, edit.isEditing]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["options","IdGenerator","useTableIdGenerator","edit","useEditContext","range","useRangeContext","copy","useCopyActionContext","col","useColumnsContext","isSelecting","start","colIndex","useEffect","listener","e","isComposingKey","isEditing","key","preventDefault","endEditing","isTextEntryTarget","target","moveDown","reset","ctrlKey","shiftKey","extendRightEnd","moveRightEnd","extendRight","moveRight","extendLeftEnd","moveLeftEnd","extendLeft","moveLeft","extendTop","moveTop","extendUp","moveUp","extendBottom","moveBottom","extendDown","startEditing","metaKey","toLowerCase","enableDeprecatedCopy","altKey","Array","from","length","stopPropagation","setTimeout","setEditorInitialValue","getEditorId","document","addEventListener","removeEventListener","editable","_jsx"],"mappings":"6VAWM,SAA0BA,GAC9B,IAAMC,EAAcC,EAAAA,sBACdC,EAAOC,EAAAA,iBACPC,EAAQC,EAAAA,kBACNC,EAASC,EAAAA,4BACXC,EAAMC,EAAAA,oBAAoBL,EAAMM,YAAcN,EAAMO,MAAMC,SAAW,GAkH3E,OAhHAC,EAAAA,WAAU,WACR,IAAMC,EAAW,SAACC,GACZC,EAAAA,eAAeD,KAIfb,EAAKe,UACO,WAAVF,EAAEG,MACJH,EAAEI,iBACFjB,EAAKkB,cAEEhB,EAAMM,cAAgBW,EAAAA,kBAAkBN,EAAEO,UACrC,UAAVP,EAAEG,KACJH,EAAEI,iBACFf,EAAMmB,YACa,WAAVR,EAAEG,KACXH,EAAEI,iBACFf,EAAMoB,SACa,eAAVT,EAAEG,KACXH,EAAEI,iBAEEJ,EAAEU,SAAWV,EAAEW,SACjBtB,EAAMuB,iBACGZ,EAAEU,QACXrB,EAAMwB,eACGb,EAAEW,SACXtB,EAAMyB,cAENzB,EAAM0B,aAEW,cAAVf,EAAEG,KACXH,EAAEI,iBAEEJ,EAAEU,SAAWV,EAAEW,SACjBtB,EAAM2B,gBACGhB,EAAEU,QACXrB,EAAM4B,cACGjB,EAAEW,SACXtB,EAAM6B,aAEN7B,EAAM8B,YAEW,YAAVnB,EAAEG,KACXH,EAAEI,iBAEEJ,EAAEU,SAAWV,EAAEW,SACjBtB,EAAM+B,YACGpB,EAAEU,QACXrB,EAAMgC,UACGrB,EAAEW,SACXtB,EAAMiC,WAENjC,EAAMkC,UAEW,cAAVvB,EAAEG,KACXH,EAAEI,iBAEEJ,EAAEU,SAAWV,EAAEW,SACjBtB,EAAMmC,eACGxB,EAAEU,QACXrB,EAAMoC,aACGzB,EAAEW,SACXtB,EAAMqC,aAENrC,EAAMmB,YAEW,OAAVR,EAAEG,KACXH,EAAEI,iBACFjB,EAAKwC,iBACK3B,EAAEU,SAAWV,EAAE4B,UAAoC,MAAxB5B,EAAEG,IAAI0B,eAC3C7B,EAAEI,iBACFb,EAAK,CAAEuC,qBAAsB9C,aAAO,EAAPA,EAAS8C,wBAErC9B,EAAE+B,QACF/B,EAAEU,SACFV,EAAE4B,SAG0B,IAA7BI,MAAMC,KAAKjC,EAAEG,KAAK+B,OASC,cAAVlC,EAAEG,KAAiC,WAAVH,EAAEG,MACpCH,EAAEI,iBACFJ,EAAEmC,kBACFhD,EAAKwC,eAELS,YAAW,WACTC,EAAAA,sBAAsB,GAAIpD,EAAYqD,cACxC,GAAG,MAdHtC,EAAEI,iBACFJ,EAAEmC,kBACFhD,EAAKwC,eAELS,YAAW,WACTC,EAAAA,sBAAsBrC,EAAEG,IAAKlB,EAAYqD,cAC3C,GAAG,MAWT,EAIA,OAFAC,SAASC,iBAAiB,UAAWzC,GAE9B,WACLwC,SAASE,oBAAoB,UAAW1C,EAC1C,CACF,GAAG,CAACV,EAAOF,EAAKe,YAEhBJ,EAAAA,WAAU,WACJX,EAAKe,YAAcT,EAAIiD,UACzBvD,EAAKkB,YAET,GAAG,CAAClB,EAAMM,IAEHkD,EAAAA,kBACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.setEditorInitialValue=function(t,e){var n,i=document.getElementById(e);if(i instanceof HTMLInputElement){var l=null===(n=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===n?void 0:n.set;null==l||l.call(i,t),i.dispatchEvent(new Event("input",{bubbles:!0}))}};
|
|
2
|
+
//# sourceMappingURL=editor-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-input.js","sources":["../../../../../src/table/operation/editor-input.ts"],"sourcesContent":["/**\n * Puts text into the cell editor (`id`) as if the user had typed it, so the\n * editor's onChange runs. Used when editing starts by typing on a cell.\n */\nexport function setEditorInitialValue(text: string, id: string) {\n const inputElement = document.getElementById(id);\n if (!(inputElement instanceof HTMLInputElement)) {\n return;\n }\n\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\"\n )?.set;\n nativeInputValueSetter?.call(inputElement, text);\n inputElement.dispatchEvent(new Event(\"input\", { bubbles: true }));\n}\n"],"names":["text","id","inputElement","document","getElementById","HTMLInputElement","nativeInputValueSetter","_a","Object","getOwnPropertyDescriptor","window","prototype","set","call","dispatchEvent","Event","bubbles"],"mappings":"2CAIM,SAAgCA,EAAcC,SAC5CC,EAAeC,SAASC,eAAeH,GAC7C,GAAMC,aAAwBG,iBAA9B,CAIA,IAAMC,EAGL,QAH8BC,EAAAC,OAAOC,yBACpCC,OAAOL,iBAAiBM,UACxB,gBACD,IAAAJ,OAAA,EAAAA,EAAEK,IACHN,SAAAA,EAAwBO,KAAKX,EAAcF,GAC3CE,EAAaY,cAAc,IAAIC,MAAM,QAAS,CAAEC,SAAS,IAPzD,CAQF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.isComposingKey=function(e){return e.isComposing||229===e.keyCode},exports.isTextEntryTarget=function(
|
|
1
|
+
"use strict";var e="data-react-ui-key-catcher";exports.KEY_CATCHER_ATTRIBUTE=e,exports.isComposingKey=function(e){return e.isComposing||229===e.keyCode},exports.isTextEntryTarget=function(t){return t instanceof HTMLElement&&(!t.hasAttribute(e)&&(!!t.isContentEditable||(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement)))};
|
|
2
2
|
//# sourceMappingURL=event-target.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-target.js","sources":["../../../../../src/table/operation/event-target.ts"],"sourcesContent":["/**\n * Returns true when the event comes from an element where the user types\n * text (input, textarea, select or contenteditable). The table must not take\n * over keys or pastes aimed at such elements.\n */\nexport function isTextEntryTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n if (target.isContentEditable) {\n return true;\n }\n\n return (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n\n/** True while an IME (e.g. Japanese input) is composing text. */\nexport function isComposingKey(e: KeyboardEvent): boolean {\n return e.isComposing || e.keyCode === 229;\n}\n"],"names":["e","isComposing","keyCode","target","HTMLElement","isContentEditable","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement"],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-target.js","sources":["../../../../../src/table/operation/event-target.ts"],"sourcesContent":["/** Marks the hidden input that receives keys while a cell is selected. */\nexport const KEY_CATCHER_ATTRIBUTE = \"data-react-ui-key-catcher\";\n\n/**\n * Returns true when the event comes from an element where the user types\n * text (input, textarea, select or contenteditable). The table must not take\n * over keys or pastes aimed at such elements.\n */\nexport function isTextEntryTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n // The table's own hidden input that receives keys for the selected cell.\n if (target.hasAttribute(KEY_CATCHER_ATTRIBUTE)) {\n return false;\n }\n\n if (target.isContentEditable) {\n return true;\n }\n\n return (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n\n/** True while an IME (e.g. Japanese input) is composing text. */\nexport function isComposingKey(e: KeyboardEvent): boolean {\n return e.isComposing || e.keyCode === 229;\n}\n"],"names":["KEY_CATCHER_ATTRIBUTE","e","isComposing","keyCode","target","HTMLElement","hasAttribute","isContentEditable","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement"],"mappings":"aACO,IAAMA,EAAwB,mFA6B/B,SAAyBC,GAC7B,OAAOA,EAAEC,aAA6B,MAAdD,EAAEE,OAC5B,4BAxBM,SAA4BC,GAChC,OAAMA,aAAkBC,eAKpBD,EAAOE,aAAaN,OAIpBI,EAAOG,oBAKTH,aAAkBI,kBAClBJ,aAAkBK,qBAClBL,aAAkBM,oBAEtB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),r=require("../sheet/providers.js"),a=require("../range/provider.js"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),r=require("../sheet/providers.js"),a=require("../range/provider.js"),s=require("./logic.js"),n=require("./parse.js"),o=require("../operation/event-target.js"),i=require("../locale/provider.js");exports.usePasteReducer=function(u){var c=a.useRangeActionContext().setRange,d=r.useColumnValidatesContext(),l=a.useRangeStateContext(),g=i.useMessages(),p=t.useRef(u.rows),v=t.useRef(e.__assign(e.__assign({},u),{validators:d,range:l,messages:g}));t.useEffect((function(){v.current=e.__assign(e.__assign({},u),{validators:d,range:l,messages:g})}));var x=t.useCallback((function(e){p.current=e}),[]),f=t.useCallback((function(e){var t=v.current,r=t.cols,a=t.validators,n=t.range,o=t.messages,i=t.onUpdateRowFunction,u=t.onPasteError;if(n.isSelecting&&i){var d=s.paste({pasteData:e,pasteArea:{start:{rowIndex:Math.min(n.start.rowIndex,n.end.rowIndex),colIndex:Math.min(n.start.colIndex,n.end.colIndex)},end:{rowIndex:Math.max(n.start.rowIndex,n.end.rowIndex),colIndex:Math.max(n.start.colIndex,n.end.colIndex)}},currentRows:p.current,currentCols:r,validators:a,messages:o.paste});if(d.isError){if("ValidationError"===d.type||"NoPasteData"===d.type)return;var l={type:d.type,message:d.message};u?u(l):alert(l.message)}else d.updateArgument.forEach((function(e){var t=e.newRow,r=e.oldRow;i(t,r)})),c(d.pasteRange)}}),[c]);return t.useEffect((function(){var e=function(e){var t=v.current,r=t.range,a=t.onUpdateRowFunction;r.isSelecting&&a&&(o.isTextEntryTarget(e.target)||e.clipboardData&&(e.preventDefault(),f(n.parseClipboardText(e.clipboardData.getData("Text")))))};return document.addEventListener("paste",e),function(){document.removeEventListener("paste",e)}}),[f]),t.useMemo((function(){return{setRows:x,onPaste:f}}),[x,f])};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { TPasteHookArguments, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeActionContext, useRangeStateContext } from \"../range/provider\";\nimport { paste } from \"./logic\";\nimport { parseClipboardText } from \"./parse\";\nimport { isTextEntryTarget } from \"../operation/event-target\";\n\nexport function usePasteReducer(args: TPasteHookArguments): TPasteReducerReturn {\n const { setRange } = useRangeActionContext();\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n const rowsRef = useRef(args.rows);\n\n // Read the latest props when a paste happens, so callbacks passed in later\n // renders are the ones that get called.\n const latest = useRef({ ...args, validators, range });\n useEffect(() => {\n latest.current = { ...args, validators, range };\n });\n\n const setRows = useCallback((rows: any[]) => {\n rowsRef.current = rows;\n }, []);\n\n const onPaste = useCallback(\n (pasteData: string[][]) => {\n const {
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { TPasteHookArguments, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeActionContext, useRangeStateContext } from \"../range/provider\";\nimport { paste } from \"./logic\";\nimport { parseClipboardText } from \"./parse\";\nimport { isTextEntryTarget } from \"../operation/event-target\";\nimport { useMessages } from \"../locale/provider\";\n\nexport function usePasteReducer(args: TPasteHookArguments): TPasteReducerReturn {\n const { setRange } = useRangeActionContext();\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n const messages = useMessages();\n const rowsRef = useRef(args.rows);\n\n // Read the latest props when a paste happens, so callbacks passed in later\n // renders are the ones that get called.\n const latest = useRef({ ...args, validators, range, messages });\n useEffect(() => {\n latest.current = { ...args, validators, range, messages };\n });\n\n const setRows = useCallback((rows: any[]) => {\n rowsRef.current = rows;\n }, []);\n\n const onPaste = useCallback(\n (pasteData: string[][]) => {\n const {\n cols,\n validators,\n range,\n messages,\n onUpdateRowFunction,\n onPasteError,\n } = latest.current;\n\n if (!range.isSelecting || !onUpdateRowFunction) {\n return;\n }\n\n const res = paste({\n pasteData,\n // The selection may have been made bottom-up or right-to-left, so\n // paste from its top-left cell.\n pasteArea: {\n start: {\n rowIndex: Math.min(range.start.rowIndex, range.end.rowIndex),\n colIndex: Math.min(range.start.colIndex, range.end.colIndex),\n },\n end: {\n rowIndex: Math.max(range.start.rowIndex, range.end.rowIndex),\n colIndex: Math.max(range.start.colIndex, range.end.colIndex),\n },\n },\n currentRows: rowsRef.current,\n currentCols: cols,\n validators,\n messages: messages.paste,\n });\n\n if (res.isError) {\n // Validation errors are already reported by the column validators.\n if (res.type === \"ValidationError\" || res.type === \"NoPasteData\") {\n return;\n }\n\n const error = { type: res.type, message: res.message };\n if (onPasteError) {\n onPasteError(error);\n } else {\n alert(error.message);\n }\n return;\n }\n\n res.updateArgument.forEach(({ newRow, oldRow }) => {\n onUpdateRowFunction(newRow, oldRow);\n });\n setRange(res.pasteRange);\n },\n [setRange]\n );\n\n useEffect(() => {\n const listener = (e: ClipboardEvent) => {\n const { range, onUpdateRowFunction } = latest.current;\n\n if (!range.isSelecting || !onUpdateRowFunction) {\n return;\n }\n\n // Leave pastes into text fields (including the cell editor) to them.\n if (isTextEntryTarget(e.target)) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n onPaste(parseClipboardText(e.clipboardData.getData(\"Text\")));\n }\n };\n\n document.addEventListener(\"paste\", listener);\n\n return () => {\n document.removeEventListener(\"paste\", listener);\n };\n }, [onPaste]);\n\n return useMemo(() => ({ setRows, onPaste }), [setRows, onPaste]);\n}\n"],"names":["args","setRange","useRangeActionContext","validators","useColumnValidatesContext","range","useRangeStateContext","messages","useMessages","rowsRef","useRef","rows","latest","__assign","useEffect","current","setRows","useCallback","onPaste","pasteData","_a","cols","onUpdateRowFunction","onPasteError","isSelecting","res","paste","pasteArea","start","rowIndex","Math","min","end","colIndex","max","currentRows","currentCols","isError","type","error","message","alert","updateArgument","forEach","newRow","oldRow","pasteRange","listener","e","isTextEntryTarget","target","clipboardData","preventDefault","parseClipboardText","getData","document","addEventListener","removeEventListener","useMemo"],"mappings":"oTASM,SAA0BA,GACtB,IAAAC,EAAaC,EAAAA,iCACfC,EAAaC,EAAAA,4BACbC,EAAQC,EAAAA,uBACRC,EAAWC,EAAAA,cACXC,EAAUC,EAAAA,OAAOV,EAAKW,MAItBC,EAASF,EAAAA,OAAMG,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAMb,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,EAAEE,SAAQA,KAC5DO,EAAAA,WAAU,WACRF,EAAOG,QAAOF,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAQb,IAAMG,WAAUA,EAAEE,MAAKA,EAAEE,SAAQA,GACzD,IAEA,IAAMS,EAAUC,eAAY,SAACN,GAC3BF,EAAQM,QAAUJ,CACpB,GAAG,IAEGO,EAAUD,eACd,SAACE,GACO,IAAAC,EAOFR,EAAOG,QANTM,EAAID,EAAAC,KACJlB,EAAUiB,EAAAjB,WACVE,EAAKe,EAAAf,MACLE,EAAQa,EAAAb,SACRe,EAAmBF,EAAAE,oBACnBC,EAAYH,EAAAG,aAGd,GAAKlB,EAAMmB,aAAgBF,EAA3B,CAIA,IAAMG,EAAMC,EAAAA,MAAM,CAChBP,UAASA,EAGTQ,UAAW,CACTC,MAAO,CACLC,SAAUC,KAAKC,IAAI1B,EAAMuB,MAAMC,SAAUxB,EAAM2B,IAAIH,UACnDI,SAAUH,KAAKC,IAAI1B,EAAMuB,MAAMK,SAAU5B,EAAM2B,IAAIC,WAErDD,IAAK,CACHH,SAAUC,KAAKI,IAAI7B,EAAMuB,MAAMC,SAAUxB,EAAM2B,IAAIH,UACnDI,SAAUH,KAAKI,IAAI7B,EAAMuB,MAAMK,SAAU5B,EAAM2B,IAAIC,YAGvDE,YAAa1B,EAAQM,QACrBqB,YAAaf,EACblB,WAAUA,EACVI,SAAUA,EAASmB,QAGrB,GAAID,EAAIY,QAAR,CAEE,GAAiB,oBAAbZ,EAAIa,MAA2C,gBAAbb,EAAIa,KACxC,OAGF,IAAMC,EAAQ,CAAED,KAAMb,EAAIa,KAAME,QAASf,EAAIe,SACzCjB,EACFA,EAAagB,GAEbE,MAAMF,EAAMC,QAGhB,MAEAf,EAAIiB,eAAeC,SAAQ,SAACvB,OAAEwB,EAAMxB,EAAAwB,OAAEC,EAAMzB,EAAAyB,OAC1CvB,EAAoBsB,EAAQC,EAC9B,IACA5C,EAASwB,EAAIqB,WAxCb,CAyCF,GACA,CAAC7C,IA6BH,OA1BAa,EAAAA,WAAU,WACR,IAAMiC,EAAW,SAACC,GACV,IAAA5B,EAAiCR,EAAOG,QAAtCV,EAAKe,EAAAf,MAAEiB,EAAmBF,EAAAE,oBAE7BjB,EAAMmB,aAAgBF,IAKvB2B,EAAAA,kBAAkBD,EAAEE,SAIpBF,EAAEG,gBACJH,EAAEI,iBACFlC,EAAQmC,EAAAA,mBAAmBL,EAAEG,cAAcG,QAAQ,WAEvD,EAIA,OAFAC,SAASC,iBAAiB,QAAST,GAE5B,WACLQ,SAASE,oBAAoB,QAASV,EACxC,CACF,GAAG,CAAC7B,IAEGwC,EAAAA,SAAQ,WAAM,OAAG1C,QAAOA,EAAEE,QAAOA,EAAnB,GAAwB,CAACF,EAASE,GACzD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=/^-?\d{1,3}(,\d{3})+(\.\d+)?$/;function
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("../locale/messages.js"),t=/^-?\d{1,3}(,\d{3})+(\.\d+)?$/;function a(e,r){if("number"!==e.type)return r;var a=r.trim();return t.test(a)?a.replace(/,/g,""):a}exports.paste=function(t){var s,n,o=null!==(s=t.messages)&&void 0!==s?s:r.MESSAGES.ja.paste,l=t.pasteData.length,u=Math.max.apply(Math,t.pasteData.map((function(e){return e.length})));if(0===l||0===u)return{isError:!0,type:"NoPasteData",message:o.noData};var p=t.pasteArea.end.rowIndex-t.pasteArea.start.rowIndex+1,d=t.pasteArea.end.colIndex-t.pasteArea.start.colIndex+1,i=p<l?l:p,c=d<u?u:d;if(i+t.pasteArea.start.rowIndex>t.currentRows.length)return{isError:!0,type:"NOT_ENOUGH_ROWS",message:o.notEnoughRows};if(c+t.pasteArea.start.colIndex>t.currentCols.length)return{isError:!0,type:"NOT_ENOUGH_COLUMNS",message:o.notEnoughColumns};for(var x=0;x<c;x++){if(!(A=t.currentCols[t.pasteArea.start.colIndex+x]).editable)return{isError:!0,type:"NOT_EDITABLE_COLUMN",message:o.notEditableColumn(null!==(n=A.label)&&void 0!==n?n:A.key)}}for(x=0;x<l;x++)for(var I=t.pasteData[x],g=0;g<c;g++){var A,f=g%I.length,m=a(A=t.currentCols[t.pasteArea.start.colIndex+g],I[f]);if(!(0,t.validators[A.key])(m))return{isError:!0,type:"ValidationError",message:o.invalidValue(m)}}var w=[];for(x=0;x<i;x++){I=t.pasteData[x%l];var E=e.__assign({},t.currentRows[t.pasteArea.start.rowIndex+x]),v=!1,y=function(e){var r=t.currentCols[t.pasteArea.start.colIndex+e],s=a(r,I[e%I.length]),n="number"===r.type?Number(s):"select"===r.type?""===s?"":r.options.find((function(e){return e.label===s})).value:s;E[r.key]!==n&&(v=!0,E[r.key]=n)};for(g=0;g<c;g++)y(g);v&&w.push({newRow:E,oldRow:t.currentRows[t.pasteArea.start.rowIndex+x]})}return{isError:!1,updateArgument:w,pasteRange:{start:{rowIndex:t.pasteArea.start.rowIndex,colIndex:t.pasteArea.start.colIndex},end:{rowIndex:t.pasteArea.start.rowIndex+i-1,colIndex:t.pasteArea.start.colIndex+c-1}}}};
|
|
2
2
|
//# sourceMappingURL=logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea?: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type:\n | \"ValidationError\"\n | \"NoPasteData\"\n | \"NOT_ENOUGH_ROWS\"\n | \"NOT_ENOUGH_COLUMNS\"\n | \"NOT_EDITABLE_COLUMN\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\n// A number with thousands separators, as Excel copies formatted numbers.\nconst GROUPED_NUMBER = /^-?\\d{1,3}(,\\d{3})+(\\.\\d+)?$/;\n\n/**\n * Turns pasted text into the form the column's validator expects. For number\n * columns, surrounding spaces and thousands separators (\"1,000\") are removed.\n */\nfunction normalizePastedValue(col: TTableColumn<any>, value: string): string {\n if (col.type !== \"number\") {\n return value;\n }\n\n const trimmed = value.trim();\n return GROUPED_NUMBER.test(trimmed) ? trimmed.replace(/,/g, \"\") : trimmed;\n}\n\nexport function paste(args: TPasteArgument): TPasteResult {\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message:
|
|
1
|
+
{"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { MESSAGES, TMessages } from \"../locale/messages\";\nimport { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea?: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n /** Messages for the errors. Japanese when omitted. */\n messages?: TMessages[\"paste\"];\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type:\n | \"ValidationError\"\n | \"NoPasteData\"\n | \"NOT_ENOUGH_ROWS\"\n | \"NOT_ENOUGH_COLUMNS\"\n | \"NOT_EDITABLE_COLUMN\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\n// A number with thousands separators, as Excel copies formatted numbers.\nconst GROUPED_NUMBER = /^-?\\d{1,3}(,\\d{3})+(\\.\\d+)?$/;\n\n/**\n * Turns pasted text into the form the column's validator expects. For number\n * columns, surrounding spaces and thousands separators (\"1,000\") are removed.\n */\nfunction normalizePastedValue(col: TTableColumn<any>, value: string): string {\n if (col.type !== \"number\") {\n return value;\n }\n\n const trimmed = value.trim();\n return GROUPED_NUMBER.test(trimmed) ? trimmed.replace(/,/g, \"\") : trimmed;\n}\n\nexport function paste(args: TPasteArgument): TPasteResult {\n const messages = args.messages ?? MESSAGES.ja.paste;\n\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message: messages.noData,\n };\n }\n\n // Rangeの種類を取得\n const rangeRowLength =\n args.pasteArea.end.rowIndex - args.pasteArea.start.rowIndex + 1;\n const rangeColLength =\n args.pasteArea.end.colIndex - args.pasteArea.start.colIndex + 1;\n\n const pasteRowLength =\n rangeRowLength < pasteDataRowLength ? pasteDataRowLength : rangeRowLength;\n const pasteColLength =\n rangeColLength < pasteDataColLength ? pasteDataColLength : rangeColLength;\n\n // ペースト先の行数が足りない場合はエラー\n if (\n pasteRowLength + args.pasteArea.start.rowIndex >\n args.currentRows.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_ROWS\",\n message: messages.notEnoughRows,\n };\n }\n // ペースト先の列数が足りない場合はエラー\n if (\n pasteColLength + args.pasteArea.start.colIndex >\n args.currentCols.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_COLUMNS\",\n message: messages.notEnoughColumns,\n };\n }\n\n // ペースト先の列に編集不可列が含まれている場合はエラー\n for (let i = 0; i < pasteColLength; i++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + i];\n\n if (!col.editable) {\n return {\n isError: true,\n type: \"NOT_EDITABLE_COLUMN\",\n message: messages.notEditableColumn(\n col.label ?? (col.key as string)\n ),\n };\n }\n }\n\n // ペーストデータのバリデーション\n for (let i = 0; i < pasteDataRowLength; i++) {\n const pasteRow = args.pasteData[i];\n\n for (let j = 0; j < pasteColLength; j++) {\n const colIndexForData = j % pasteRow.length;\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[colIndexForData]);\n const validate = args.validators[col.key as string];\n\n if (!validate(pasteValue)) {\n return {\n isError: true,\n type: \"ValidationError\",\n message: messages.invalidValue(pasteValue),\n };\n }\n }\n }\n\n const updateArguments: { newRow: any; oldRow: any }[] = [];\n\n // ペーストデータを反映\n for (let i = 0; i < pasteRowLength; i++) {\n const pasteRow = args.pasteData[i % pasteDataRowLength];\n const newRow = { ...args.currentRows[args.pasteArea.start.rowIndex + i] };\n let checkUpdatedRow = false;\n\n for (let j = 0; j < pasteColLength; j++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[j % pasteRow.length]);\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!.value\n : pasteValue;\n if (newRow[col.key] !== value) {\n checkUpdatedRow = true;\n newRow[col.key] = value;\n }\n }\n\n if (checkUpdatedRow) {\n updateArguments.push({\n newRow,\n oldRow: args.currentRows[args.pasteArea.start.rowIndex + i],\n });\n }\n }\n\n return {\n isError: false,\n updateArgument: updateArguments,\n pasteRange: {\n start: {\n rowIndex: args.pasteArea.start.rowIndex,\n colIndex: args.pasteArea.start.colIndex,\n },\n end: {\n rowIndex: args.pasteArea.start.rowIndex + pasteRowLength - 1,\n colIndex: args.pasteArea.start.colIndex + pasteColLength - 1,\n },\n },\n };\n}\n"],"names":["GROUPED_NUMBER","normalizePastedValue","col","value","type","trimmed","trim","test","replace","args","messages","_a","MESSAGES","ja","paste","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","message","noData","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","notEnoughRows","currentCols","notEnoughColumns","i","editable","notEditableColumn","_b","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","invalidValue","updateArguments","newRow","__assign","checkUpdatedRow","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../libs/generate-validate-function.js"),n=t.createContext({cols:[],validates:{}});exports.ColumnsProvider=function(
|
|
1
|
+
"use client";"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../libs/generate-validate-function.js"),n=require("../locale/provider.js"),u=t.createContext({cols:[],validates:{}});exports.ColumnsProvider=function(o){var s=o.children,i=o.cols,a=o.errorHandler,c=n.useMessages(),l=t.useRef(a);t.useEffect((function(){l.current=a}));var d=t.useMemo((function(){var e=function(e){l.current?l.current(e):alert(c.validation(e))};return i.reduce((function(t,n){return t[n.key]=r.generateValidateFunction(n,e),t}),{})}),[i,c]),v=t.useMemo((function(){return{cols:i,validates:d}}),[i,d]);return e.jsx(u.Provider,{value:v,children:s})},exports.useColumnValidateContext=function(e){return t.useContext(u).validates[e]},exports.useColumnValidatesContext=function(){return t.useContext(u).validates},exports.useColumnsContext=function(){return t.useContext(u).cols};
|
|
2
2
|
//# sourceMappingURL=providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sources":["../../../../../src/table/sheet/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport {\n generateValidateFunction,\n TErrorValidation,\n} from \"../libs/generate-validate-function\";\n\nconst ColsContext = createContext<{\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n}>({\n cols: [],\n validates: {},\n});\n\nexport function ColumnsProvider<T extends DataRecord>({\n children,\n cols,\n errorHandler,\n}: {\n children: React.ReactNode;\n cols: TTableColumn<T>[];\n errorHandler?: (errors: TErrorValidation[]) => void;\n}) {\n const validates = useMemo(\n ()
|
|
1
|
+
{"version":3,"file":"providers.js","sources":["../../../../../src/table/sheet/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useEffect, useMemo, useRef } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport {\n generateValidateFunction,\n TErrorValidation,\n} from \"../libs/generate-validate-function\";\nimport { useMessages } from \"../locale/provider\";\n\nconst ColsContext = createContext<{\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n}>({\n cols: [],\n validates: {},\n});\n\nexport function ColumnsProvider<T extends DataRecord>({\n children,\n cols,\n errorHandler,\n}: {\n children: React.ReactNode;\n cols: TTableColumn<T>[];\n errorHandler?: (errors: TErrorValidation[]) => void;\n}) {\n const messages = useMessages();\n\n // Call the latest errorHandler without rebuilding the validators (and\n // re-rendering every cell) when the app passes a new function.\n const errorHandlerRef = useRef(errorHandler);\n useEffect(() => {\n errorHandlerRef.current = errorHandler;\n });\n\n const validates = useMemo(() => {\n const handleErrors = (errors: TErrorValidation[]) => {\n if (errorHandlerRef.current) {\n errorHandlerRef.current(errors);\n } else {\n alert(messages.validation(errors));\n }\n };\n\n return cols.reduce((acc, col) => {\n const { key } = col;\n\n acc[key] = generateValidateFunction(col as any, handleErrors);\n\n return acc;\n }, {} as { [key in keyof T]: (value: any) => boolean });\n }, [cols, messages]);\n\n const state = useMemo(() => ({ cols, validates }), [cols, validates]);\n\n return (\n <ColsContext.Provider\n value={\n state as {\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n }\n }\n >\n {children}\n </ColsContext.Provider>\n );\n}\n\nexport function useColumnsContext() {\n return useContext(ColsContext).cols;\n}\n\nexport function useColumnValidateContext(key: string) {\n return useContext(ColsContext).validates[key];\n}\n\nexport function useColumnValidatesContext() {\n return useContext(ColsContext).validates;\n}\n"],"names":["ColsContext","createContext","cols","validates","_a","children","errorHandler","messages","useMessages","errorHandlerRef","useRef","useEffect","current","useMemo","handleErrors","errors","alert","validation","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useContext"],"mappings":"sKAUMA,EAAcC,EAAAA,cAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,4BAGP,SAAgDC,GACpD,IAAAC,aACAH,EAAIE,EAAAF,KACJI,EAAYF,EAAAE,aAMNC,EAAWC,EAAAA,cAIXC,EAAkBC,EAAAA,OAAOJ,GAC/BK,EAAAA,WAAU,WACRF,EAAgBG,QAAUN,CAC5B,IAEA,IAAMH,EAAYU,EAAAA,SAAQ,WACxB,IAAMC,EAAe,SAACC,GAChBN,EAAgBG,QAClBH,EAAgBG,QAAQG,GAExBC,MAAMT,EAASU,WAAWF,GAE9B,EAEA,OAAOb,EAAKgB,QAAO,SAACC,EAAKC,GAKvB,OAFAD,EAFgBC,EAAGC,KAERC,2BAAyBF,EAAYN,GAEzCK,CACT,GAAG,CAAA,EACL,GAAG,CAACjB,EAAMK,IAEJgB,EAAQV,EAAAA,SAAQ,WAAM,MAAA,CAAGX,KAAIA,EAAEC,YAAT,GAAuB,CAACD,EAAMC,IAE1D,OACEqB,EAAAA,IAACxB,EAAYyB,SAAQ,CACnBC,MACEH,EAGClB,SAGFA,GAGP,mCAMM,SAAmCgB,GACvC,OAAOM,aAAW3B,GAAaG,UAAUkB,EAC3C,+CAGE,OAAOM,EAAAA,WAAW3B,GAAaG,SACjC,uCATE,OAAOwB,EAAAA,WAAW3B,GAAaE,IACjC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),a=require("../../share/text/normalize.js");function n(e){return null==e||""===e||"number"==typeof e&&isNaN(e)||e instanceof Date&&isNaN(e.getTime())}var r=function(t,a){switch(a.type){case"changeKey":return{key:a.payload.key,asc:!0,isUpdatedData:!1,sortTiming:t.sortTiming+1};case"changeOrder":return t.isUpdatedData?e.__assign(e.__assign({},t),{isUpdatedData:!1,sortTiming:t.sortTiming+1}):e.__assign(e.__assign({},t),{asc:!t.asc,sortTiming:t.sortTiming+1});case"updateData":return e.__assign(e.__assign({},t),{isUpdatedData:!0})}};exports.useSortReducer=function(i){var s,u,o=t.useReducer(r,{key:null!==(s=null==i?void 0:i.key)&&void 0!==s?s:"id",asc:null===(u=null==i?void 0:i.asc)||void 0===u||u,isUpdatedData:!1,sortTiming:0}),c=o[0],d=o[1],g=function(e){d({type:"changeKey",payload:{key:e}})},p=function(){d({type:"changeOrder"})},y=function(){d({type:"updateData"})},f=t.useCallback((function(t,r){return void 0===r&&(r=function(e){return e[c.key]}),e.__spreadArray([],t,!0).sort((function(e,t){var i=r(e),s=r(t);if(n(i)&&n(s))return 0;if(n(i))return 1;if(n(s))return-1;var u=function(e,t){return"number"==typeof e&&"number"==typeof t?e-t:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():a.compareText(String(e),String(t))}(i,s);return c.asc?u:-u}))}),[c.key,c.asc]);return{state:t.useMemo((function(){return{key:c.key,asc:c.asc,isUpdatedData:c.isUpdatedData}}),[c.key,c.asc,c.isUpdatedData]),actions:t.useMemo((function(){return{changeKey:g,changeOrder:p,updatedData:y,sort:f}}),[f]),sortTiming:c.sortTiming}};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\nimport { compareText } from \"../../share/text/normalize\";\n\nfunction isEmpty(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n value === \"\" ||\n (typeof value === \"number\" && isNaN(value)) ||\n (value instanceof Date && isNaN(value.getTime()))\n );\n}\n\n/** Numbers and dates by value; text in Japanese order (\"2\" before \"10\"). */\nfunction compareValues(a: unknown, b: unknown): number {\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n return compareText(String(a), String(b));\n}\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(\n rows: DataObject<U>[],\n getValue: (row: DataObject<U>) => unknown = (row) => row[state.key]\n ) =>\n [...rows].sort((rowA, rowB) => {\n const a = getValue(rowA);\n const b = getValue(rowB);\n\n // Empty values stay at the end in both orders.\n if (isEmpty(a) && isEmpty(b)) return 0;\n if (isEmpty(a)) return 1;\n if (isEmpty(b)) return -1;\n\n const result = compareValues(a, b);\n return state.asc ? result : -result;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["isEmpty","value","isNaN","Date","getTime","reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","getValue","row","__spreadArray","rowA","rowB","a","b","result","compareText","String","compareValues","useMemo","actions"],"mappings":"qIAKA,SAASA,EAAQC,GACf,OACEA,SAEU,KAAVA,GACkB,iBAAVA,GAAsBC,MAAMD,IACnCA,aAAiBE,MAAQD,MAAMD,EAAMG,UAE1C,CASA,IAAMC,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,WAAAA,EAAAA,SAAA,CAAA,EACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAK,CAAEK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAAA,WAAWZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,EAAAA,aACX,SACEC,EACAC,GAEA,YAFA,IAAAA,IAAAA,EAAA,SAA6CC,GAAQ,OAAAA,EAAItB,EAAMG,IAAV,GAErDoB,EAAAA,cAAA,GAAIH,GAAI,GAAEF,MAAK,SAACM,EAAMC,GACpB,IAAMC,EAAIL,EAASG,GACbG,EAAIN,EAASI,GAGnB,GAAI/B,EAAQgC,IAAMhC,EAAQiC,GAAI,OAAO,EACrC,GAAIjC,EAAQgC,GAAI,OAAO,EACvB,GAAIhC,EAAQiC,GAAI,OAAO,EAEvB,IAAMC,EAnEd,SAAuBF,EAAYC,GACjC,MAAiB,iBAAND,GAA+B,iBAANC,EAAuBD,EAAIC,EAC3DD,aAAa7B,MAAQ8B,aAAa9B,KAAa6B,EAAE5B,UAAY6B,EAAE7B,UAC5D+B,EAAAA,YAAYC,OAAOJ,GAAII,OAAOH,GACvC,CA+DuBI,CAAcL,EAAGC,GAChC,OAAO3B,EAAMK,IAAMuB,GAAUA,CAC/B,GAXA,GAYF,CAAC5B,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BgC,WAC7B,WAAM,MAAA,CACJ7B,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cAHjB,GAKN,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7B2B,QAPcD,EAAAA,SACd,WAAM,MAAA,CAAGjB,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAA5C,GACN,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),n=require("react"),r=require("./hooks.js"),o=n.createContext(0),i=n.createContext({key:"",asc:!1,isUpdatedData:!1}),s=n.createContext({changeKey:function(){throw new Error("Function not implemented.")},changeOrder:function(){throw new Error("Function not implemented.")},sort:function(){return[]},updatedData:function(){throw new Error("Function not implemented.")}});exports.SortProvider=function(e){var n=r.useSortReducer(e.initialCondition),u=n.state,c=n.actions,a=n.sortTiming;return t.jsx(o.Provider,{value:a,children:t.jsx(i.Provider,{value:u,children:t.jsx(s.Provider,{value:c,children:e.children})})})},exports.useSortActionContext=function(){return n.useContext(s)},exports.useSortContext=function(){return e.__assign(e.__assign(e.__assign({},n.useContext(i)),n.useContext(s)),{sortTiming:n.useContext(o)})},exports.useSortTimingContext=function(){return n.useContext(o)};
|
|
1
|
+
"use client";"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),n=require("react"),r=require("./hooks.js"),o=n.createContext(0),i=n.createContext({key:"",asc:!1,isUpdatedData:!1}),s=n.createContext({changeKey:function(){throw new Error("Function not implemented.")},changeOrder:function(){throw new Error("Function not implemented.")},sort:function(){return[]},updatedData:function(){throw new Error("Function not implemented.")}});exports.SortProvider=function(e){var n=r.useSortReducer(e.initialCondition),u=n.state,c=n.actions,a=n.sortTiming;return t.jsx(o.Provider,{value:a,children:t.jsx(i.Provider,{value:u,children:t.jsx(s.Provider,{value:c,children:e.children})})})},exports.useSortActionContext=function(){return n.useContext(s)},exports.useSortContext=function(){return e.__assign(e.__assign(e.__assign({},n.useContext(i)),n.useContext(s)),{sortTiming:n.useContext(o)})},exports.useSortStateContext=function(){return n.useContext(i)},exports.useSortTimingContext=function(){return n.useContext(o)};
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/sort/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport { TReturnSortReducer } from \"./types\";\nimport { useSortReducer } from \"./hooks\";\nimport { DataRecord } from \"../table/type\";\n\nconst SortTimingContext = createContext<number>(0);\n\nconst SortStateContext = createContext<TReturnSortReducer<DataRecord>[\"state\"]>(\n {\n key: \"\",\n asc: false,\n isUpdatedData: false,\n }\n);\n\nconst SortActionContext = createContext<\n TReturnSortReducer<DataRecord>[\"actions\"]\n>({\n changeKey: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n changeOrder: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n sort: () => [],\n updatedData: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n});\n\nexport function SortProvider(props: {\n children: React.ReactNode;\n initialCondition?: { key: string; asc?: boolean };\n}) {\n const { state, actions, sortTiming } = useSortReducer(props.initialCondition);\n return (\n <SortTimingContext.Provider value={sortTiming}>\n <SortStateContext.Provider value={state}>\n <SortActionContext.Provider value={actions}>\n {props.children}\n </SortActionContext.Provider>\n </SortStateContext.Provider>\n </SortTimingContext.Provider>\n );\n}\n\nexport function useSortContext() {\n return {\n ...useContext(SortStateContext),\n ...useContext(SortActionContext),\n sortTiming: useContext(SortTimingContext),\n };\n}\n\nexport function useSortStateContext() {\n return useContext(SortStateContext);\n}\n\nexport function useSortActionContext() {\n return useContext(SortActionContext);\n}\n\nexport function useSortTimingContext() {\n return useContext(SortTimingContext);\n}\n"],"names":["SortTimingContext","createContext","SortStateContext","key","asc","isUpdatedData","SortActionContext","changeKey","Error","changeOrder","sort","updatedData","props","_a","useSortReducer","initialCondition","state","actions","sortTiming","_jsx","Provider","value","children","useContext","__assign"],"mappings":"8JAOMA,EAAoBC,EAAAA,cAAsB,GAE1CC,EAAmBD,EAAAA,cACvB,CACEE,IAAK,GACLC,KAAK,EACLC,eAAe,IAIbC,EAAoBL,EAAAA,cAExB,CACAM,UAAW,WACT,MAAM,IAAIC,MAAM,4BAClB,EACAC,YAAa,WACX,MAAM,IAAID,MAAM,4BAClB,EACAE,KAAM,WAAM,MAAA,EAAA,EACZC,YAAa,WACX,MAAM,IAAIH,MAAM,4BAClB,yBAGI,SAAuBI,GAIrB,IAAAC,EAAiCC,EAAAA,eAAeF,EAAMG,kBAApDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,eACxB,OACEC,MAACnB,EAAkBoB,SAAQ,CAACC,MAAOH,WACjCC,MAACjB,EAAiBkB,UAASC,MAAOL,EAAKM,SACrCH,MAACb,EAAkBc,SAAQ,CAACC,MAAOJ,EAAOK,SACvCV,EAAMU,cAKjB,0CAeE,OAAOC,EAAAA,WAAWjB,EACpB,oCAbE,OAAAkB,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EACKD,EAAAA,WAAWrB,IACXqB,EAAAA,WAAWjB,IAAkB,CAChCY,WAAYK,EAAAA,WAAWvB,IAE3B,
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/sort/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport { TReturnSortReducer } from \"./types\";\nimport { useSortReducer } from \"./hooks\";\nimport { DataRecord } from \"../table/type\";\n\nconst SortTimingContext = createContext<number>(0);\n\nconst SortStateContext = createContext<TReturnSortReducer<DataRecord>[\"state\"]>(\n {\n key: \"\",\n asc: false,\n isUpdatedData: false,\n }\n);\n\nconst SortActionContext = createContext<\n TReturnSortReducer<DataRecord>[\"actions\"]\n>({\n changeKey: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n changeOrder: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n sort: () => [],\n updatedData: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n});\n\nexport function SortProvider(props: {\n children: React.ReactNode;\n initialCondition?: { key: string; asc?: boolean };\n}) {\n const { state, actions, sortTiming } = useSortReducer(props.initialCondition);\n return (\n <SortTimingContext.Provider value={sortTiming}>\n <SortStateContext.Provider value={state}>\n <SortActionContext.Provider value={actions}>\n {props.children}\n </SortActionContext.Provider>\n </SortStateContext.Provider>\n </SortTimingContext.Provider>\n );\n}\n\nexport function useSortContext() {\n return {\n ...useContext(SortStateContext),\n ...useContext(SortActionContext),\n sortTiming: useContext(SortTimingContext),\n };\n}\n\nexport function useSortStateContext() {\n return useContext(SortStateContext);\n}\n\nexport function useSortActionContext() {\n return useContext(SortActionContext);\n}\n\nexport function useSortTimingContext() {\n return useContext(SortTimingContext);\n}\n"],"names":["SortTimingContext","createContext","SortStateContext","key","asc","isUpdatedData","SortActionContext","changeKey","Error","changeOrder","sort","updatedData","props","_a","useSortReducer","initialCondition","state","actions","sortTiming","_jsx","Provider","value","children","useContext","__assign"],"mappings":"8JAOMA,EAAoBC,EAAAA,cAAsB,GAE1CC,EAAmBD,EAAAA,cACvB,CACEE,IAAK,GACLC,KAAK,EACLC,eAAe,IAIbC,EAAoBL,EAAAA,cAExB,CACAM,UAAW,WACT,MAAM,IAAIC,MAAM,4BAClB,EACAC,YAAa,WACX,MAAM,IAAID,MAAM,4BAClB,EACAE,KAAM,WAAM,MAAA,EAAA,EACZC,YAAa,WACX,MAAM,IAAIH,MAAM,4BAClB,yBAGI,SAAuBI,GAIrB,IAAAC,EAAiCC,EAAAA,eAAeF,EAAMG,kBAApDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,eACxB,OACEC,MAACnB,EAAkBoB,SAAQ,CAACC,MAAOH,WACjCC,MAACjB,EAAiBkB,UAASC,MAAOL,EAAKM,SACrCH,MAACb,EAAkBc,SAAQ,CAACC,MAAOJ,EAAOK,SACvCV,EAAMU,cAKjB,0CAeE,OAAOC,EAAAA,WAAWjB,EACpB,oCAbE,OAAAkB,EAAAA,SAAAA,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EACKD,EAAAA,WAAWrB,IACXqB,EAAAA,WAAWjB,IAAkB,CAChCY,WAAYK,EAAAA,WAAWvB,IAE3B,yCAGE,OAAOuB,EAAAA,WAAWrB,EACpB,0CAOE,OAAOqB,EAAAA,WAAWvB,EACpB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),s=require("../pagenation/providers.js"),n=require("../pagenation/components.js");require("../filter-v2/context.js");var t=require("../filter-v2/provider.js");require("../sort/icon.js");var d=require("../sort/provider.js"),
|
|
1
|
+
"use client";"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),s=require("../pagenation/providers.js"),n=require("../pagenation/components.js");require("../filter-v2/context.js");var t=require("../filter-v2/provider.js");require("../sort/icon.js");var d=require("../sort/provider.js"),l=require("../sheet/providers.js"),a=require("../checkbox/provider.js"),c=require("../edit/provider.js"),x=require("../table-property/provider.js"),j=require("../operation/components/keyboard-setting.js"),h=require("../operation/components/key-catcher.js"),u=require("../sheet/components.js"),p=require("../paste/provider.js"),v=require("../libs/conditional-formatting.js"),m=require("../edit/ui/editor.js"),g=require("../range/provider.js"),b=require("../copy/provider.js"),q=require("../copy/components.js"),w=require("../id/provider.js"),P=require("../header/header-v2.js");require("../header/columns-width/context.js");var C=require("../header/columns-width/provider.js");require("../header/x-scroll-position/context.js");var y=require("../header/x-scroll-position/provider.js"),k=require("../frame/frame.js"),S=require("./component-provider/provider.js"),f=require("../../select-box/provider.js"),R=require("../locale/provider.js");function T(e){var s=o.useTable(e),t=s.cols,d=s.rowMaps,l=s.pageRowIds,a=w.useTableIdGenerator(),c=S.useGenerateSortButton();return r.jsxs("div",{className:"w-full max-w-full max-h-full",children:[r.jsxs("div",{children:[r.jsx(P.TableHeader,{cols:t,checkbox:!!e.checkbox,rows:e.rows,maxWidth:e.maxWidth,generateSortButton:c}),r.jsx(C.ColumnsWidthStyle,{scopeId:a.getTableId()}),r.jsx(f.SelectBoxProvider,{children:r.jsxs(k.Frame,{id:a.getTableId(),maxHeight:e.maxHeight,maxWidth:e.maxWidth,displayScroll:!1,children:[r.jsxs("table",{className:"table",children:[r.jsx("thead",{children:r.jsxs("tr",{children:[e.checkbox&&r.jsx("th",{className:"p-px"}),t.map((function(e){return r.jsx(i.TableHeaderElement,{keyname:e.key.toString()},e.key.toString())}))]})}),r.jsxs("tbody",{children:[0===l.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:t.length+(e.checkbox?1:0),className:"px-px py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),l.map((function(o,i){return r.jsx(u.Row,{existCheckbox:!!e.checkbox,rowIndex:i,row:d[o].data,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:v.generateFormattingString(d[o].data,t,e.conditionalFormattings)},o)}))]})]}),r.jsx(g.TestRange,{}),r.jsx(h.KeyCatcher,{}),r.jsx(m.Editor,{rowMaps:d,pageRowIds:l})]})})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(n.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(n.Pagenation,{})})]})]})}module.exports=function(o){var i,n,h,u,v,m;return r.jsx(R.LocaleProvider,{locale:o.locale,children:r.jsx(S.ComponentProvider,{children:r.jsx(w.TableIdGeneratorProvider,{id:o.id,children:r.jsx(C.ColumnsWidthProvider,{cols:o.cols,children:r.jsx(t.FilterProvider,{initialConditions:[],children:r.jsx(d.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(s.PagenationProvider,{rowCount:o.rows.length,perPage:null===(v=null!==(h=null===(n=o.initialCondition)||void 0===n?void 0:n.pagination)&&void 0!==h?h:null===(u=o.initialCondition)||void 0===u?void 0:u.pagenation)||void 0===v?void 0:v.rowCountPerPage,children:r.jsx(a.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(a.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(l.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.EditProvider,{children:r.jsx(x.TablePropertyProvider,{children:r.jsx(g.RangeProvider,{children:r.jsxs(b.CopyProvider,{rows:o.rows,cols:o.cols,children:[r.jsx(q.CopiedMessage,{}),r.jsxs(p.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,onPasteError:o.onPasteError,children:[r.jsx(j.KeyboardSetting,{enableDeprecatedCopy:null===(m=o.deprecatedOptions)||void 0===m?void 0:m.enableDeprecatedCopy}),r.jsx(y.ScrollXPositionProvider,{children:r.jsx(T,e.__assign({},o))})]})]})})})})})})})})})})})})})})};
|
|
2
2
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../../../../../src/table/table/base.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTable } from \"./hook\";\nimport { TableHeaderElement } from \"../header/header\";\nimport {\n DataRecord,\n TConditionalFormatting,\n TPropsTable,\n TTableColumn,\n} from \"./type\";\nimport { PagenationProvider, DisplayRange, Pagenation } from \"../pagenation\";\nimport { FilterProvider } from \"../filter-v2\";\nimport { SortProvider } from \"../sort\";\nimport { ColumnsProvider } from \"../sheet/providers\";\nimport { CheckboxProvider, CheckboxStatusProvider } from \"../checkbox/provider\";\nimport { EditProvider } from \"../edit/provider\";\nimport { TablePropertyProvider } from \"../table-property/provider\";\nimport { KeyboardSetting } from \"../operation/components/keyboard-setting\";\nimport { Row } from \"../sheet/components\";\nimport { PasteProvider } from \"../paste/provider\";\nimport { generateFormattingString } from \"../libs/conditional-formatting\";\nimport { Editor } from \"../edit/ui/editor\";\nimport { RangeProvider, TestRange } from \"../range/provider\";\nimport { CopyProvider } from \"../copy/provider\";\nimport { CopiedMessage } from \"../copy/components\";\nimport { TableIdGeneratorProvider, useTableIdGenerator } from \"../id\";\nimport { TableHeader } from \"../header/header-v2\";\nimport {\n ColumnsWidthProvider,\n ColumnsWidthStyle,\n ScrollXPositionProvider,\n} from \"../header\";\nimport { Frame } from \"../frame\";\nimport { ComponentProvider } from \"./component-provider\";\nimport { useGenerateSortButton } from \"./component-provider/provider\";\nimport { SelectBoxProvider } from \"../../select-box/provider\";\n\nexport default function Table<T extends DataRecord>(props: TPropsTable<T>) {\n return (\n <ComponentProvider>\n <TableIdGeneratorProvider id={props.id}>\n <ColumnsWidthProvider cols={props.cols as TTableColumn<DataRecord>[]}>\n <FilterProvider initialConditions={[]}>\n <SortProvider initialCondition={props.initialCondition?.sort}>\n <PagenationProvider\n rowCount={props.rows.length}\n perPage={\n (\n props.initialCondition?.pagination ??\n props.initialCondition?.pagenation\n )?.rowCountPerPage\n }\n >\n <CheckboxProvider checkbox={props.checkbox}>\n <CheckboxStatusProvider checkboxCount={props.rows.length}>\n <ColumnsProvider\n cols={props.cols}\n errorHandler={props.errorHandler}\n >\n <EditProvider>\n <TablePropertyProvider>\n <RangeProvider>\n <CopyProvider rows={props.rows} cols={props.cols}>\n <CopiedMessage />\n <PasteProvider\n rows={props.rows}\n cols={props.cols}\n onUpdateRowFunction={props.onUpdateRow}\n onPasteError={props.onPasteError}\n >\n <KeyboardSetting\n enableDeprecatedCopy={\n props.deprecatedOptions\n ?.enableDeprecatedCopy\n }\n />\n <ScrollXPositionProvider>\n <BaseTable {...props} />\n </ScrollXPositionProvider>\n </PasteProvider>\n </CopyProvider>\n </RangeProvider>\n </TablePropertyProvider>\n </EditProvider>\n </ColumnsProvider>\n </CheckboxStatusProvider>\n </CheckboxProvider>\n </PagenationProvider>\n </SortProvider>\n </FilterProvider>\n </ColumnsWidthProvider>\n </TableIdGeneratorProvider>\n </ComponentProvider>\n );\n}\n\nfunction BaseTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { cols, rowMaps, pageRowIds } = useTable<T>(props);\n const IdGenerator = useTableIdGenerator();\n const generateSortButton = useGenerateSortButton();\n\n return (\n <div className=\"w-full max-w-full max-h-full\">\n <div>\n <TableHeader\n cols={cols}\n checkbox={!!props.checkbox}\n rows={props.rows}\n maxWidth={props.maxWidth}\n generateSortButton={generateSortButton}\n />\n\n <ColumnsWidthStyle scopeId={IdGenerator.getTableId()} />\n <SelectBoxProvider>\n <Frame\n id={IdGenerator.getTableId()}\n maxHeight={props.maxHeight}\n maxWidth={props.maxWidth}\n displayScroll={false}\n >\n <table className={`table`}>\n <thead>\n <tr>\n {props.checkbox && <th className=\"p-px\"></th>}\n {cols.map((col) => (\n <TableHeaderElement\n key={col.key.toString()}\n keyname={col.key.toString()}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {pageRowIds.length === 0 && (\n <tr>\n <td\n colSpan={cols.length + (props.checkbox ? 1 : 0)}\n className=\"px-px py-5\"\n >\n <p className=\"text-center font-bold text-lg\">NO DATA</p>\n </td>\n </tr>\n )}\n {pageRowIds.map((rowId, i) => (\n <Row\n key={rowId}\n existCheckbox={!!props.checkbox}\n rowIndex={i}\n row={rowMaps[rowId].data}\n cols={props.cols as TTableColumn<DataRecord>[]}\n onClickRow={props.onClickRow}\n applyRowFormatting={props.applyRowFormatting}\n conditionalFormattingString={generateFormattingString(\n rowMaps[rowId].data,\n cols as TTableColumn<DataRecord>[],\n props.conditionalFormattings as TConditionalFormatting<DataRecord>[]\n )}\n />\n ))}\n </tbody>\n </table>\n <TestRange />\n <Editor rowMaps={rowMaps} pageRowIds={pageRowIds} />\n </Frame>\n </SelectBoxProvider>\n </div>\n <div className=\"mt-1\">\n <DisplayRange />\n <div className=\"mt-2\">\n <Pagenation />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["BaseTable","props","_a","useTable","cols","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","_jsxs","className","children","_jsx","TableHeader","checkbox","rows","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","id","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","length","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","Editor","DisplayRange","Pagenation","ComponentProvider","TableIdGeneratorProvider","ColumnsWidthProvider","FilterProvider","initialConditions","SortProvider","initialCondition","sort","PagenationProvider","rowCount","perPage","_e","_c","_b","pagination","_d","pagenation","rowCountPerPage","CheckboxProvider","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","_f","deprecatedOptions","ScrollXPositionProvider","__assign"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../../../../src/table/table/base.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTable } from \"./hook\";\nimport { TableHeaderElement } from \"../header/header\";\nimport {\n DataRecord,\n TConditionalFormatting,\n TPropsTable,\n TTableColumn,\n} from \"./type\";\nimport { PagenationProvider, DisplayRange, Pagenation } from \"../pagenation\";\nimport { FilterProvider } from \"../filter-v2\";\nimport { SortProvider } from \"../sort\";\nimport { ColumnsProvider } from \"../sheet/providers\";\nimport { CheckboxProvider, CheckboxStatusProvider } from \"../checkbox/provider\";\nimport { EditProvider } from \"../edit/provider\";\nimport { TablePropertyProvider } from \"../table-property/provider\";\nimport { KeyboardSetting } from \"../operation/components/keyboard-setting\";\nimport { KeyCatcher } from \"../operation/components/key-catcher\";\nimport { Row } from \"../sheet/components\";\nimport { PasteProvider } from \"../paste/provider\";\nimport { generateFormattingString } from \"../libs/conditional-formatting\";\nimport { Editor } from \"../edit/ui/editor\";\nimport { RangeProvider, TestRange } from \"../range/provider\";\nimport { CopyProvider } from \"../copy/provider\";\nimport { CopiedMessage } from \"../copy/components\";\nimport { TableIdGeneratorProvider, useTableIdGenerator } from \"../id\";\nimport { TableHeader } from \"../header/header-v2\";\nimport {\n ColumnsWidthProvider,\n ColumnsWidthStyle,\n ScrollXPositionProvider,\n} from \"../header\";\nimport { Frame } from \"../frame\";\nimport { ComponentProvider } from \"./component-provider\";\nimport { useGenerateSortButton } from \"./component-provider/provider\";\nimport { SelectBoxProvider } from \"../../select-box/provider\";\nimport { LocaleProvider } from \"../locale/provider\";\n\nexport default function Table<T extends DataRecord>(props: TPropsTable<T>) {\n return (\n <LocaleProvider locale={props.locale}>\n <ComponentProvider>\n <TableIdGeneratorProvider id={props.id}>\n <ColumnsWidthProvider cols={props.cols as TTableColumn<DataRecord>[]}>\n <FilterProvider initialConditions={[]}>\n <SortProvider initialCondition={props.initialCondition?.sort}>\n <PagenationProvider\n rowCount={props.rows.length}\n perPage={\n (\n props.initialCondition?.pagination ??\n props.initialCondition?.pagenation\n )?.rowCountPerPage\n }\n >\n <CheckboxProvider checkbox={props.checkbox}>\n <CheckboxStatusProvider checkboxCount={props.rows.length}>\n <ColumnsProvider\n cols={props.cols}\n errorHandler={props.errorHandler}\n >\n <EditProvider>\n <TablePropertyProvider>\n <RangeProvider>\n <CopyProvider rows={props.rows} cols={props.cols}>\n <CopiedMessage />\n <PasteProvider\n rows={props.rows}\n cols={props.cols}\n onUpdateRowFunction={props.onUpdateRow}\n onPasteError={props.onPasteError}\n >\n <KeyboardSetting\n enableDeprecatedCopy={\n props.deprecatedOptions\n ?.enableDeprecatedCopy\n }\n />\n <ScrollXPositionProvider>\n <BaseTable {...props} />\n </ScrollXPositionProvider>\n </PasteProvider>\n </CopyProvider>\n </RangeProvider>\n </TablePropertyProvider>\n </EditProvider>\n </ColumnsProvider>\n </CheckboxStatusProvider>\n </CheckboxProvider>\n </PagenationProvider>\n </SortProvider>\n </FilterProvider>\n </ColumnsWidthProvider>\n </TableIdGeneratorProvider>\n </ComponentProvider>\n </LocaleProvider>\n );\n}\n\nfunction BaseTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { cols, rowMaps, pageRowIds } = useTable<T>(props);\n const IdGenerator = useTableIdGenerator();\n const generateSortButton = useGenerateSortButton();\n\n return (\n <div className=\"w-full max-w-full max-h-full\">\n <div>\n <TableHeader\n cols={cols}\n checkbox={!!props.checkbox}\n rows={props.rows}\n maxWidth={props.maxWidth}\n generateSortButton={generateSortButton}\n />\n\n <ColumnsWidthStyle scopeId={IdGenerator.getTableId()} />\n <SelectBoxProvider>\n <Frame\n id={IdGenerator.getTableId()}\n maxHeight={props.maxHeight}\n maxWidth={props.maxWidth}\n displayScroll={false}\n >\n <table className={`table`}>\n <thead>\n <tr>\n {props.checkbox && <th className=\"p-px\"></th>}\n {cols.map((col) => (\n <TableHeaderElement\n key={col.key.toString()}\n keyname={col.key.toString()}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {pageRowIds.length === 0 && (\n <tr>\n <td\n colSpan={cols.length + (props.checkbox ? 1 : 0)}\n className=\"px-px py-5\"\n >\n <p className=\"text-center font-bold text-lg\">NO DATA</p>\n </td>\n </tr>\n )}\n {pageRowIds.map((rowId, i) => (\n <Row\n key={rowId}\n existCheckbox={!!props.checkbox}\n rowIndex={i}\n row={rowMaps[rowId].data}\n cols={props.cols as TTableColumn<DataRecord>[]}\n onClickRow={props.onClickRow}\n applyRowFormatting={props.applyRowFormatting}\n conditionalFormattingString={generateFormattingString(\n rowMaps[rowId].data,\n cols as TTableColumn<DataRecord>[],\n props.conditionalFormattings as TConditionalFormatting<DataRecord>[]\n )}\n />\n ))}\n </tbody>\n </table>\n <TestRange />\n <KeyCatcher />\n <Editor rowMaps={rowMaps} pageRowIds={pageRowIds} />\n </Frame>\n </SelectBoxProvider>\n </div>\n <div className=\"mt-1\">\n <DisplayRange />\n <div className=\"mt-2\">\n <Pagenation />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["BaseTable","props","_a","useTable","cols","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","_jsxs","className","children","_jsx","TableHeader","checkbox","rows","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","id","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","length","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","KeyCatcher","Editor","DisplayRange","Pagenation","LocaleProvider","locale","ComponentProvider","TableIdGeneratorProvider","ColumnsWidthProvider","FilterProvider","initialConditions","SortProvider","initialCondition","sort","PagenationProvider","rowCount","perPage","_e","_c","_b","pagination","_d","pagenation","rowCountPerPage","CheckboxProvider","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","_f","deprecatedOptions","ScrollXPositionProvider","__assign"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("../pagenation/providers.js"),r=require("../checkbox/provider.js"),
|
|
1
|
+
"use strict";var e=require("react"),t=require("../pagenation/providers.js"),r=require("../checkbox/provider.js"),n=require("../sort/provider.js"),o=require("../table-property/provider.js"),u=require("../paste/provider.js"),s=require("../copy/provider.js"),i=require("../filter-v2/context.js");exports.useTable=function(c){var a=i.useFilterFunctions().filter,f=n.useSortActionContext(),l=f.sort,p=f.updatedData,d=n.useSortTimingContext(),v=n.useSortStateContext().key,x=t.usePageContext(),h=x.setRowCount,w=x.pageFilter,C=r.useCheckboxStatusContext().dispatchCheckboxStatus,g=u.usePasteActionContext().setRows,m=s.useCopyActionContext().setRows,y=o.useTablePropertyActionContext(),M=y.setMaxDisplayColCount,S=y.setMaxDisplayRowCount,b=e.useMemo((function(){return JSON.stringify(c.rows.map((function(e){return e.id})))}),[c.rows]),k=e.useMemo((function(){return a(c.rows)}),[a,d,b]);e.useEffect((function(){h(k.length)}),[k.length]);var q=e.useMemo((function(){return c.checkbox?c.rows.filter((function(e){var t;return null===(t=c.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[c.checkbox,c.rows]);e.useEffect((function(){C({type:"SET",payload:{checkedRecords:q}})}),[q]);var j=c.cols.find((function(e){return e.key===v})),E="select"===(null==j?void 0:j.type)?JSON.stringify(j.options.map((function(e){return[e.value,e.label]}))):"",R=e.useMemo((function(){if(""!==E){var e=new Map(JSON.parse(E));return function(t){var r,n=t[v];return null!==(r=e.get(n))&&void 0!==r?r:n}}}),[v,E]),A=e.useMemo((function(){return l(k,R)}),[k,d,R]);e.useEffect((function(){p()}),[c.rows]);var T=e.useMemo((function(){return w(A)}),[w,A]),D=e.useMemo((function(){return T.map((function(e){return e.id}))}),[T]),F=e.useMemo((function(){return new Set(D)}),[D]),J=e.useMemo((function(){return c.rows.filter((function(e){return F.has(e.id)})).reduce((function(e,t){return e[t.id]={data:t},e}),{})}),[c.rows,F]);return e.useEffect((function(){M(c.cols.length)}),[c.cols.length]),e.useEffect((function(){S(D.length)}),[D.length]),e.useEffect((function(){var e=D.map((function(e){return J[e].data}));m(e),g(e)}),[J]),{cols:c.cols,rowMaps:J,pageRowIds:D}};
|
|
2
2
|
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport {\n useSortActionContext,\n useSortStateContext,\n useSortTimingContext,\n} from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\nimport { useCopyActionContext } from \"../copy/provider\";\nimport { useFilterFunctions } from \"../filter-v2/context\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterFunctions();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { key: sortKey } = useSortStateContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows: setRowsForPaste } = usePasteActionContext();\n const { setRows: setRowsForCopy } = useCopyActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n // Re-run filter/sort only when the set of rows changes (rows added, removed\n // or replaced). Edits that keep the same ids keep the current order.\n const rowIdsKey = useMemo(\n () => JSON.stringify(props.rows.map((row) => row.id)),\n [props.rows]\n );\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, rowIdsKey]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n // Select columns are sorted by the labels shown, not the stored values.\n // Keyed on the options' content so that a new cols array with the same\n // options (e.g. defined inline) does not re-sort on every render.\n const sortCol = props.cols.find((c) => c.key === sortKey);\n const sortLabelsKey =\n sortCol?.type === \"select\"\n ? JSON.stringify(sortCol.options.map((o) => [o.value, o.label]))\n : \"\";\n const getSortValue = useMemo(() => {\n if (sortLabelsKey === \"\") return undefined;\n\n const labels = new Map<unknown, string>(JSON.parse(sortLabelsKey));\n return (row: DataObject<T>) => {\n const value = row[sortKey as keyof T];\n return labels.get(value) ?? value;\n };\n }, [sortKey, sortLabelsKey]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows, getSortValue),\n [filteredRows, sortTiming, getSortValue]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n // Rows on the current page by id. `data` is the row object passed in\n // through props, so callbacks receive it unchanged (Date values stay Date).\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n acc[row.id] = { data: row };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any> } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n const rows = pageRowIds.map((id) => rowMaps[id].data);\n setRowsForCopy(rows);\n setRowsForPaste(rows);\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","sortKey","useSortStateContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRowsForPaste","usePasteActionContext","setRowsForCopy","useCopyActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","rowIdsKey","useMemo","JSON","stringify","rows","map","row","id","filteredRows","useEffect","length","checkBoxes","checkbox","checked","type","payload","checkedRecords","sortCol","cols","find","c","key","sortLabelsKey","options","o","value","label","getSortValue","labels","Map","parse","get","sortedRows","pageRows","pageRowIds","pageRowIdSets","Set","rowMaps","has","reduce","acc","data"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import{useState as i,useRef as o,useEffect as r}from"react";import{SelectBox as a}from"../../select-box/index.js";import{useConditionInputState as u,useConditionInputAction as l}from"./condition-input-management/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useIdGenerator as p}from"../id-generator/context.js";import{TiDeleteOutline as c}from"../../../node_modules/react-icons/ti/index.js";function
|
|
1
|
+
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import{useState as i,useRef as o,useEffect as r}from"react";import{SelectBox as a}from"../../select-box/index.js";import{useConditionInputState as u,useConditionInputAction as l}from"./condition-input-management/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useIdGenerator as p}from"../id-generator/context.js";import{TiDeleteOutline as c}from"../../../node_modules/react-icons/ti/index.js";import{parseNumberText as s}from"../../share/text/normalize.js";import{isComposingKey as d}from"../../table/operation/event-target.js";function f(t){switch(u().status){case"waiting for input":return e(g,{});case"inputted target":return e(m,{});case"inputted operator":return e(v,{size:t.size})}}function g(){var t=p().generateId,n=u().targets,i=l().inputTarget;return e(a,{id:t("TargetInput"),onSelect:function(e){i(e)},options:n.map((function(e){return{value:e.key,label:e.label}})),placeholder:"Select target",no_appearance:!0,no_icon:!0})}function m(){var i=p().generateId,o=u(),r=l(),c=r.inputOperator,s=r.removeInputedTarget;if("inputted target"!==o.status)return null;var d=o.inputtingCondition.target,f=o.useableOperators;return t(n,{children:[e(h,{label:d.label,onClickDelete:function(){s()}}),e("div",{className:"w-full min-w-64",children:e(a,{id:i("OperatorInput"),onSelect:function(e){c(e),setTimeout((function(){var e=document.getElementById(i("ValueInput"));e&&e.focus()}),10)},options:f.map((function(e){return{value:e.key,label:e.label}})),defaultIsOpen:!0,placeholder:"Select operator",no_appearance:!0,no_icon:!0})})]})}function v(i){var o=u(),r=l(),a=r.removeInputedOperator,p=r.removeInputedTarget;if("inputted operator"!==o.status)return null;var c=o.inputtingCondition.target,s=o.inputtingCondition.operator;return t(n,{children:[e(h,{label:c.label,onClickDelete:function(){p()}}),e(h,{label:s.label,onClickDelete:function(){a()}}),"single string"===o.inputtingCondition.operator.inputType?e(y,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"single number"===o.inputtingCondition.operator.inputType?e(b,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"select"===o.inputtingCondition.operator.inputType?e(w,{inputType:o.inputtingCondition.operator.inputType,options:"select"===o.inputtingCondition.target.type?o.inputtingCondition.target.options:[]}):"single datetime"===o.inputtingCondition.operator.inputType?e(T,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"single date"===o.inputtingCondition.operator.inputType?e(x,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):console.error("Not implemented")]})}function y(t){var n=p().generateId,o=i(""),r=o[0],a=o[1],u=l().inputValue;return e("input",{id:n("ValueInput"),className:"appearance-none w-full min-w-64 border-none px-2 py-1 placeholder:text-gray-400 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){a(e.target.value)},onKeyDown:function(e){"Enter"!==e.key||d(e.nativeEvent)||(u({type:t.inputType,payload:{value:r}}),a(""))}})}function b(t){var n=p().generateId,o=i(""),r=o[0],a=o[1],u=i(!1),c=u[0],f=u[1],g=l().inputValue;return e("input",{id:n("ValueInput"),"aria-invalid":c,className:"appearance-none w-full min-w-64 border-none px-2 py-1 placeholder:text-gray-400 focus:outline-none focus-visible:outline-none bg-transparent ".concat(c?"text-red-600 underline decoration-wavy":""," ").concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){a(e.target.value),f(!1)},onKeyDown:function(e){if("Enter"===e.key&&!d(e.nativeEvent)){var n=s(r);if(null===n)return void f(!0);g({type:t.inputType,payload:{value:n}}),a("")}}})}function w(t){var n=l().inputValue,i=p().generateId;return e("div",{className:"w-full min-w-64",children:e(a,{id:i("ValueInput"),onSelect:function(e){n({type:t.inputType,payload:{value:e}})},options:t.options,defaultIsOpen:!0,placeholder:"Select value",no_appearance:!0,no_icon:!0})})}function T(t){var n=p().generateId,i=l().inputValue,a=o(null);return r((function(){if(a.current){var e=a.current;e.focus(),e.scrollIntoView(),e.click()}}),[]),e("input",{ref:a,id:n("ValueInput"),className:"appearance-none w-fit min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"datetime-local",defaultValue:new Date((new Date).getTime()-6e4*(new Date).getTimezoneOffset()).toISOString().slice(0,16),onKeyDown:function(e){var n,o;if("Enter"===e.key){var r=new Date(null!==(o=null===(n=a.current)||void 0===n?void 0:n.value)&&void 0!==o?o:"");if(isNaN(r.getTime()))return;i({type:t.inputType,payload:{value:r}})}},onClick:function(e){e.currentTarget.showPicker()}})}function x(t){var n=p().generateId,i=l().inputValue,a=o(null),u=o(!1);return r((function(){if(a.current){var e=a.current;e.focus(),e.scrollIntoView(),e.click()}}),[]),e("input",{ref:a,id:n("ValueInput"),className:"appearance-none w-fit min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===t.size?"text-sm":"large"===t.size?"text-lg":""),type:"date",defaultValue:new Date((new Date).getTime()-6e4*(new Date).getTimezoneOffset()).toISOString().slice(0,10),onKeyDown:function(e){var n;if("Enter"===e.key){if(!(null===(n=a.current)||void 0===n?void 0:n.value))return;var o=a.current.value.split("-"),r=o[0],u=o[1],l=o[2],p=new Date(Number(r),Number(u)-1,Number(l));if(isNaN(p.getTime()))return;i({type:t.inputType,payload:{value:p}})}},onClick:function(e){u.current||(e.currentTarget.showPicker(),u.current=!0)}})}function h(n){return t("div",{className:"flex items-center gap-2 w-fit px-2 border border-gray-200 rounded bg-slate-100",children:[e("p",{className:"whitespace-nowrap",children:n.label}),n.onClickDelete&&e("div",{children:e(c,{className:"bg-white hover:bg-slate-300 rounded-full cursor-pointer",onClick:n.onClickDelete})})]})}export{f as SearchBarInputForm};
|
|
2
2
|
//# sourceMappingURL=input-form.js.map
|