@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.
Files changed (79) hide show
  1. package/README.md +14 -1
  2. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -1
  3. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  4. package/dist/cjs/src/share/text/normalize.js +2 -0
  5. package/dist/cjs/src/share/text/normalize.js.map +1 -0
  6. package/dist/cjs/src/table/copy/components.js +1 -1
  7. package/dist/cjs/src/table/copy/components.js.map +1 -1
  8. package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
  9. package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
  10. package/dist/cjs/src/table/filter-v2/hook.js +1 -1
  11. package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
  12. package/dist/cjs/src/table/libs/generate-validate-function.js +1 -1
  13. package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
  14. package/dist/cjs/src/table/locale/messages.js +2 -0
  15. package/dist/cjs/src/table/locale/messages.js.map +1 -0
  16. package/dist/cjs/src/table/locale/provider.js +2 -0
  17. package/dist/cjs/src/table/locale/provider.js.map +1 -0
  18. package/dist/cjs/src/table/operation/components/key-catcher.js +2 -0
  19. package/dist/cjs/src/table/operation/components/key-catcher.js.map +1 -0
  20. package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -1
  21. package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
  22. package/dist/cjs/src/table/operation/editor-input.js +2 -0
  23. package/dist/cjs/src/table/operation/editor-input.js.map +1 -0
  24. package/dist/cjs/src/table/operation/event-target.js +1 -1
  25. package/dist/cjs/src/table/operation/event-target.js.map +1 -1
  26. package/dist/cjs/src/table/paste/hooks.js +1 -1
  27. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  28. package/dist/cjs/src/table/paste/logic.js +1 -1
  29. package/dist/cjs/src/table/paste/logic.js.map +1 -1
  30. package/dist/cjs/src/table/sheet/providers.js +1 -1
  31. package/dist/cjs/src/table/sheet/providers.js.map +1 -1
  32. package/dist/cjs/src/table/sort/hooks.js +1 -1
  33. package/dist/cjs/src/table/sort/hooks.js.map +1 -1
  34. package/dist/cjs/src/table/sort/provider.js +1 -1
  35. package/dist/cjs/src/table/sort/provider.js.map +1 -1
  36. package/dist/cjs/src/table/table/base.js +1 -1
  37. package/dist/cjs/src/table/table/base.js.map +1 -1
  38. package/dist/cjs/src/table/table/hook.js +1 -1
  39. package/dist/cjs/src/table/table/hook.js.map +1 -1
  40. package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -1
  41. package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  42. package/dist/esm/src/share/text/normalize.js +2 -0
  43. package/dist/esm/src/share/text/normalize.js.map +1 -0
  44. package/dist/esm/src/table/copy/components.js +1 -1
  45. package/dist/esm/src/table/copy/components.js.map +1 -1
  46. package/dist/esm/src/table/edit/ui/select-input.js +1 -1
  47. package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
  48. package/dist/esm/src/table/filter-v2/hook.js +1 -1
  49. package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
  50. package/dist/esm/src/table/libs/generate-validate-function.js +1 -1
  51. package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
  52. package/dist/esm/src/table/locale/messages.js +2 -0
  53. package/dist/esm/src/table/locale/messages.js.map +1 -0
  54. package/dist/esm/src/table/locale/provider.js +2 -0
  55. package/dist/esm/src/table/locale/provider.js.map +1 -0
  56. package/dist/esm/src/table/operation/components/key-catcher.js +2 -0
  57. package/dist/esm/src/table/operation/components/key-catcher.js.map +1 -0
  58. package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -1
  59. package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
  60. package/dist/esm/src/table/operation/editor-input.js +2 -0
  61. package/dist/esm/src/table/operation/editor-input.js.map +1 -0
  62. package/dist/esm/src/table/operation/event-target.js +1 -1
  63. package/dist/esm/src/table/operation/event-target.js.map +1 -1
  64. package/dist/esm/src/table/paste/hooks.js +1 -1
  65. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  66. package/dist/esm/src/table/paste/logic.js +1 -1
  67. package/dist/esm/src/table/paste/logic.js.map +1 -1
  68. package/dist/esm/src/table/sheet/providers.js +1 -1
  69. package/dist/esm/src/table/sheet/providers.js.map +1 -1
  70. package/dist/esm/src/table/sort/hooks.js +1 -1
  71. package/dist/esm/src/table/sort/hooks.js.map +1 -1
  72. package/dist/esm/src/table/sort/provider.js +1 -1
  73. package/dist/esm/src/table/sort/provider.js.map +1 -1
  74. package/dist/esm/src/table/table/base.js +1 -1
  75. package/dist/esm/src/table/table/base.js.map +1 -1
  76. package/dist/esm/src/table/table/hook.js +1 -1
  77. package/dist/esm/src/table/table/hook.js.map +1 -1
  78. package/dist/index.d.ts +39 -26
  79. package/package.json +1 -1
@@ -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 { cols, validators, range, onUpdateRowFunction, 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 });\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":["usePasteReducer","args","setRange","useRangeActionContext","validators","useColumnValidatesContext","range","useRangeStateContext","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":"6bAQM,SAAUA,EAAgBC,GACtB,IAAAC,EAAaC,aACfC,EAAaC,IACbC,EAAQC,IACRC,EAAUC,EAAOR,EAAKS,MAItBC,EAASF,EAAMG,EAAAA,EAAA,CAAA,EAAMX,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,KAClDO,GAAU,WACRF,EAAOG,QAAOF,EAAAA,EAAA,CAAA,EAAQX,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,GAC/C,IAEA,IAAMS,EAAUC,GAAY,SAACN,GAC3BF,EAAQM,QAAUJ,CACpB,GAAG,IAEGO,EAAUD,GACd,SAACE,GACO,IAAAC,EACJR,EAAOG,QADDM,SAAMhB,eAAYE,UAAOe,wBAAqBC,iBAGtD,GAAKhB,EAAMiB,aAAgBF,EAA3B,CAIA,IAAMG,EAAMC,EAAM,CAChBP,UAASA,EAGTQ,UAAW,CACTC,MAAO,CACLC,SAAUC,KAAKC,IAAIxB,EAAMqB,MAAMC,SAAUtB,EAAMyB,IAAIH,UACnDI,SAAUH,KAAKC,IAAIxB,EAAMqB,MAAMK,SAAU1B,EAAMyB,IAAIC,WAErDD,IAAK,CACHH,SAAUC,KAAKI,IAAI3B,EAAMqB,MAAMC,SAAUtB,EAAMyB,IAAIH,UACnDI,SAAUH,KAAKI,IAAI3B,EAAMqB,MAAMK,SAAU1B,EAAMyB,IAAIC,YAGvDE,YAAa1B,EAAQM,QACrBqB,YAAaf,EACbhB,WAAUA,IAGZ,GAAIoB,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,IACA1C,EAASsB,EAAIqB,WAvCb,CAwCF,GACA,CAAC3C,IA6BH,OA1BAW,GAAU,WACR,IAAMiC,EAAW,SAACC,GACV,IAAA5B,EAAiCR,EAAOG,QAAtCR,EAAKa,EAAAb,MAAEe,EAAmBF,EAAAE,oBAE7Bf,EAAMiB,aAAgBF,IAKvB2B,EAAkBD,EAAEE,SAIpBF,EAAEG,gBACJH,EAAEI,iBACFlC,EAAQmC,EAAmBL,EAAEG,cAAcG,QAAQ,WAEvD,EAIA,OAFAC,SAASC,iBAAiB,QAAST,GAE5B,WACLQ,SAASE,oBAAoB,QAASV,EACxC,CACF,GAAG,CAAC7B,IAEGwC,GAAQ,WAAM,OAAG1C,QAAOA,EAAEE,QAAOA,EAAnB,GAAwB,CAACF,EAASE,GACzD"}
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":["usePasteReducer","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":"ifASM,SAAUA,EAAgBC,GACtB,IAAAC,EAAaC,aACfC,EAAaC,IACbC,EAAQC,IACRC,EAAWC,IACXC,EAAUC,EAAOV,EAAKW,MAItBC,EAASF,EAAMG,EAAAA,EAAA,CAAA,EAAMb,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,EAAEE,SAAQA,KAC5DO,GAAU,WACRF,EAAOG,QAAOF,EAAAA,EAAA,CAAA,EAAQb,IAAMG,WAAUA,EAAEE,MAAKA,EAAEE,SAAQA,GACzD,IAEA,IAAMS,EAAUC,GAAY,SAACN,GAC3BF,EAAQM,QAAUJ,CACpB,GAAG,IAEGO,EAAUD,GACd,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,EAAM,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,GAAU,WACR,IAAMiC,EAAW,SAACC,GACV,IAAA5B,EAAiCR,EAAOG,QAAtCV,EAAKe,EAAAf,MAAEiB,EAAmBF,EAAAE,oBAE7BjB,EAAMmB,aAAgBF,IAKvB2B,EAAkBD,EAAEE,SAIpBF,EAAEG,gBACJH,EAAEI,iBACFlC,EAAQmC,EAAmBL,EAAEG,cAAcG,QAAQ,WAEvD,EAIA,OAFAC,SAASC,iBAAiB,QAAST,GAE5B,WACLQ,SAASE,oBAAoB,QAASV,EACxC,CACF,GAAG,CAAC7B,IAEGwC,GAAQ,WAAM,OAAG1C,QAAOA,EAAEE,QAAOA,EAAnB,GAAwB,CAACF,EAASE,GACzD"}
@@ -1,2 +1,2 @@
1
- import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";var r=/^-?\d{1,3}(,\d{3})+(\.\d+)?$/;function t(e,t){if("number"!==e.type)return t;var a=t.trim();return r.test(a)?a.replace(/,/g,""):a}function a(r){var a,n=r.pasteData.length,s=Math.max.apply(Math,r.pasteData.map((function(e){return e.length})));if(0===n||0===s)return{isError:!0,type:"NoPasteData",message:"ペーストデータがありません。"};var o=r.pasteArea.end.rowIndex-r.pasteArea.start.rowIndex+1,l=r.pasteArea.end.colIndex-r.pasteArea.start.colIndex+1,p=o<n?n:o,d=l<s?s:l;if(p+r.pasteArea.start.rowIndex>r.currentRows.length)return{isError:!0,type:"NOT_ENOUGH_ROWS",message:"貼り付け先の行数が足りません。"};if(d+r.pasteArea.start.colIndex>r.currentCols.length)return{isError:!0,type:"NOT_ENOUGH_COLUMNS",message:"貼り付け先の列数が足りません。"};for(var u=0;u<d;u++){if(!(x=r.currentCols[r.pasteArea.start.colIndex+u]).editable)return{isError:!0,type:"NOT_EDITABLE_COLUMN",message:"編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(a=x.label)&&void 0!==a?a:x.key)}}for(u=0;u<n;u++)for(var c=r.pasteData[u],i=0;i<d;i++){var x,I=i%c.length,f=t(x=r.currentCols[r.pasteArea.start.colIndex+i],c[I]);if(!(0,r.validators[x.key])(f))return{isError:!0,type:"ValidationError",message:"バリデーションエラー: ".concat(f)}}var A=[];for(u=0;u<p;u++){c=r.pasteData[u%n];var m=e({},r.currentRows[r.pasteArea.start.rowIndex+u]),w=!1,g=function(e){var a=r.currentCols[r.pasteArea.start.colIndex+e],n=t(a,c[e%c.length]),s="number"===a.type?Number(n):"select"===a.type?""===n?"":a.options.find((function(e){return e.label===n})).value:n;m[a.key]!==s&&(w=!0,m[a.key]=s)};for(i=0;i<d;i++)g(i);w&&A.push({newRow:m,oldRow:r.currentRows[r.pasteArea.start.rowIndex+u]})}return{isError:!1,updateArgument:A,pasteRange:{start:{rowIndex:r.pasteArea.start.rowIndex,colIndex:r.pasteArea.start.colIndex},end:{rowIndex:r.pasteArea.start.rowIndex+p-1,colIndex:r.pasteArea.start.colIndex+d-1}}}}export{a as paste};
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{MESSAGES as r}from"../locale/messages.js";var 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}function s(t){var s,n,o=null!==(s=t.messages)&&void 0!==s?s:r.ja.paste,l=t.pasteData.length,p=Math.max.apply(Math,t.pasteData.map((function(e){return e.length})));if(0===l||0===p)return{isError:!0,type:"NoPasteData",message:o.noData};var d=t.pasteArea.end.rowIndex-t.pasteArea.start.rowIndex+1,u=t.pasteArea.end.colIndex-t.pasteArea.start.colIndex+1,i=d<l?l:d,c=u<p?p:u;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 m=0;m<c;m++){if(!(f=t.currentCols[t.pasteArea.start.colIndex+m]).editable)return{isError:!0,type:"NOT_EDITABLE_COLUMN",message:o.notEditableColumn(null!==(n=f.label)&&void 0!==n?n:f.key)}}for(m=0;m<l;m++)for(var x=t.pasteData[m],I=0;I<c;I++){var f,g=I%x.length,A=a(f=t.currentCols[t.pasteArea.start.colIndex+I],x[g]);if(!(0,t.validators[f.key])(A))return{isError:!0,type:"ValidationError",message:o.invalidValue(A)}}var w=[];for(m=0;m<i;m++){x=t.pasteData[m%l];var v=e({},t.currentRows[t.pasteArea.start.rowIndex+m]),E=!1,y=function(e){var r=t.currentCols[t.pasteArea.start.colIndex+e],s=a(r,x[e%x.length]),n="number"===r.type?Number(s):"select"===r.type?""===s?"":r.options.find((function(e){return e.label===s})).value:s;v[r.key]!==n&&(E=!0,v[r.key]=n)};for(I=0;I<c;I++)y(I);E&&w.push({newRow:v,oldRow:t.currentRows[t.pasteArea.start.rowIndex+m]})}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}}}}export{s as paste};
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: \"ペーストデータがありません。\",\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: \"貼り付け先の行数が足りません。\",\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: \"貼り付け先の列数が足りません。\",\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: `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\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: `バリデーションエラー: ${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","paste","args","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","message","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","currentCols","i","editable","concat","_a","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","updateArguments","newRow","__assign","checkUpdatedRow","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"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"}
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","paste","args","messages","_a","MESSAGES","ja","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":"qHAgEA,IAAMA,EAAiB,+BAMvB,SAASC,EAAqBC,EAAwBC,GACpD,GAAiB,WAAbD,EAAIE,KACN,OAAOD,EAGT,IAAME,EAAUF,EAAMG,OACtB,OAAON,EAAeO,KAAKF,GAAWA,EAAQG,QAAQ,KAAM,IAAMH,CACpE,CAEM,SAAUI,EAAMC,WACdC,EAAwB,QAAbC,EAAAF,EAAKC,gBAAQ,IAAAC,EAAAA,EAAIC,EAASC,GAAGL,MAGxCM,EAAqBL,EAAKM,UAAUC,OACpCC,EAAqBC,KAAKC,UAALD,KACtBT,EAAKM,UAAUK,KAAI,SAACC,GAAQ,OAAAA,EAAIL,MAAJ,KAIjC,GAA2B,IAAvBF,GAAmD,IAAvBG,EAC9B,MAAO,CACLK,SAAS,EACTnB,KAAM,cACNoB,QAASb,EAASc,QAKtB,IAAMC,EACJhB,EAAKiB,UAAUC,IAAIC,SAAWnB,EAAKiB,UAAUG,MAAMD,SAAW,EAC1DE,EACJrB,EAAKiB,UAAUC,IAAII,SAAWtB,EAAKiB,UAAUG,MAAME,SAAW,EAE1DC,EACJP,EAAiBX,EAAqBA,EAAqBW,EACvDQ,EACJH,EAAiBb,EAAqBA,EAAqBa,EAG7D,GACEE,EAAiBvB,EAAKiB,UAAUG,MAAMD,SACtCnB,EAAKyB,YAAYlB,OAEjB,MAAO,CACLM,SAAS,EACTnB,KAAM,kBACNoB,QAASb,EAASyB,eAItB,GACEF,EAAiBxB,EAAKiB,UAAUG,MAAME,SACtCtB,EAAK2B,YAAYpB,OAEjB,MAAO,CACLM,SAAS,EACTnB,KAAM,qBACNoB,QAASb,EAAS2B,kBAKtB,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAgBK,IAAK,CAGvC,KAFMrC,EAAMQ,EAAK2B,YAAY3B,EAAKiB,UAAUG,MAAME,SAAWO,IAEpDC,SACP,MAAO,CACLjB,SAAS,EACTnB,KAAM,sBACNoB,QAASb,EAAS8B,kBACP,QAATC,EAAAxC,EAAIyC,aAAK,IAAAD,EAAAA,EAAKxC,EAAI0C,KAI1B,CAGA,IAASL,EAAI,EAAGA,EAAIxB,EAAoBwB,IAGtC,IAFA,IAAMM,EAAWnC,EAAKM,UAAUuB,GAEvBO,EAAI,EAAGA,EAAIZ,EAAgBY,IAAK,CACvC,IACM5C,EADA6C,EAAkBD,EAAID,EAAS5B,OAE/B+B,EAAa/C,EADbC,EAAMQ,EAAK2B,YAAY3B,EAAKiB,UAAUG,MAAME,SAAWc,GAChBD,EAASE,IAGtD,KAAKE,EAFYvC,EAAKwC,WAAWhD,EAAI0C,MAEvBI,GACZ,MAAO,CACLzB,SAAS,EACTnB,KAAM,kBACNoB,QAASb,EAASwC,aAAaH,GAGrC,CAGF,IAAMI,EAAkD,GAGxD,IAASb,EAAI,EAAGA,EAAIN,EAAgBM,IAAK,CACjCM,EAAWnC,EAAKM,UAAUuB,EAAIxB,GAApC,IACMsC,EAAMC,EAAA,CAAA,EAAQ5C,EAAKyB,YAAYzB,EAAKiB,UAAUG,MAAMD,SAAWU,IACjEgB,GAAkB,aAEbT,GACP,IAAM5C,EAAMQ,EAAK2B,YAAY3B,EAAKiB,UAAUG,MAAME,SAAWc,GACvDE,EAAa/C,EAAqBC,EAAK2C,EAASC,EAAID,EAAS5B,SAC7Dd,EACS,WAAbD,EAAIE,KACAoD,OAAOR,GACM,WAAb9C,EAAIE,KACW,KAAf4C,EACE,GACA9C,EAAIuD,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOhB,QAAUK,CAAjB,IAA8B7C,MAC7D6C,EACFK,EAAOnD,EAAI0C,OAASzC,IACtBoD,GAAkB,EAClBF,EAAOnD,EAAI0C,KAAOzC,IAbtB,IAAS2C,EAAI,EAAGA,EAAIZ,EAAgBY,MAA3BA,GAiBLS,GACFH,EAAgBQ,KAAK,CACnBP,OAAMA,EACNQ,OAAQnD,EAAKyB,YAAYzB,EAAKiB,UAAUG,MAAMD,SAAWU,IAG/D,CAEA,MAAO,CACLhB,SAAS,EACTuC,eAAgBV,EAChBW,WAAY,CACVjC,MAAO,CACLD,SAAUnB,EAAKiB,UAAUG,MAAMD,SAC/BG,SAAUtB,EAAKiB,UAAUG,MAAME,UAEjCJ,IAAK,CACHC,SAAUnB,EAAKiB,UAAUG,MAAMD,SAAWI,EAAiB,EAC3DD,SAAUtB,EAAKiB,UAAUG,MAAME,SAAWE,EAAiB,IAInE"}
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as n,useMemo as t}from"react";import{generateValidateFunction as i}from"../libs/generate-validate-function.js";var o=e({cols:[],validates:{}});function u(e){var n=e.children,u=e.cols,c=e.errorHandler,a=t((function(){return u.reduce((function(r,e){return r[e.key]=i(e,c),r}),{})}),[u]),l=t((function(){return{cols:u,validates:a}}),[u]);return r(o.Provider,{value:l,children:n})}function c(){return n(o).cols}function a(r){return n(o).validates[r]}function l(){return n(o).validates}export{u as ColumnsProvider,a as useColumnValidateContext,l as useColumnValidatesContext,c as useColumnsContext};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as t,useRef as e,useEffect as i,useMemo as o}from"react";import{generateValidateFunction as c}from"../libs/generate-validate-function.js";import{useMessages as u}from"../locale/provider.js";var a=n({cols:[],validates:{}});function l(n){var t=n.children,l=n.cols,f=n.errorHandler,s=u(),v=e(f);i((function(){v.current=f}));var d=o((function(){var r=function(r){v.current?v.current(r):alert(s.validation(r))};return l.reduce((function(n,t){return n[t.key]=c(t,r),n}),{})}),[l,s]),m=o((function(){return{cols:l,validates:d}}),[l,d]);return r(a.Provider,{value:m,children:t})}function f(){return t(a).cols}function s(r){return t(a).validates[r]}function v(){return t(a).validates}export{l as ColumnsProvider,s as useColumnValidateContext,v as useColumnValidatesContext,f as useColumnsContext};
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 () =>\n cols.reduce((acc, col) => {\n const { key } = col;\n\n acc[key] = generateValidateFunction(col as any, errorHandler);\n\n return acc;\n }, {} as { [key in keyof T]: (value: any) => boolean }),\n [cols]\n );\n\n const state = useMemo(() => ({ cols, validates }), [cols]);\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","ColumnsProvider","_a","children","errorHandler","useMemo","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useColumnsContext","useContext","useColumnValidateContext","useColumnValidatesContext"],"mappings":"yMASA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,IAGP,SAAUC,EAAsCC,GACpD,IAAAC,aACAJ,EAAIG,EAAAH,KACJK,EAAYF,EAAAE,aAMNJ,EAAYK,GAChB,WACE,OAAAN,EAAKO,QAAO,SAACC,EAAKC,GAKhB,OAFAD,EAFgBC,EAAGC,KAERC,EAAyBF,EAAYJ,GAEzCG,CACT,GAAG,CAAA,EANH,GAOF,CAACR,IAGGY,EAAQN,GAAQ,WAAM,MAAA,CAAGN,KAAIA,EAAEC,UAASA,EAAlB,GAAuB,CAACD,IAEpD,OACEa,EAACf,EAAYgB,SAAQ,CACnBC,MACEH,EAGCR,SAGFA,GAGP,UAEgBY,IACd,OAAOC,EAAWnB,GAAaE,IACjC,CAEM,SAAUkB,EAAyBR,GACvC,OAAOO,EAAWnB,GAAaG,UAAUS,EAC3C,UAEgBS,IACd,OAAOF,EAAWnB,GAAaG,SACjC"}
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","ColumnsProvider","_a","children","errorHandler","messages","useMessages","errorHandlerRef","useRef","useEffect","current","useMemo","handleErrors","errors","alert","validation","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useColumnsContext","useContext","useColumnValidateContext","useColumnValidatesContext"],"mappings":"wRAUA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,IAGP,SAAUC,EAAsCC,GACpD,IAAAC,aACAJ,EAAIG,EAAAH,KACJK,EAAYF,EAAAE,aAMNC,EAAWC,IAIXC,EAAkBC,EAAOJ,GAC/BK,GAAU,WACRF,EAAgBG,QAAUN,CAC5B,IAEA,IAAMJ,EAAYW,GAAQ,WACxB,IAAMC,EAAe,SAACC,GAChBN,EAAgBG,QAClBH,EAAgBG,QAAQG,GAExBC,MAAMT,EAASU,WAAWF,GAE9B,EAEA,OAAOd,EAAKiB,QAAO,SAACC,EAAKC,GAKvB,OAFAD,EAFgBC,EAAGC,KAERC,EAAyBF,EAAYN,GAEzCK,CACT,GAAG,CAAA,EACL,GAAG,CAAClB,EAAMM,IAEJgB,EAAQV,GAAQ,WAAM,MAAA,CAAGZ,KAAIA,EAAEC,YAAT,GAAuB,CAACD,EAAMC,IAE1D,OACEsB,EAACzB,EAAY0B,SAAQ,CACnBC,MACEH,EAGClB,SAGFA,GAGP,UAEgBsB,IACd,OAAOC,EAAW7B,GAAaE,IACjC,CAEM,SAAU4B,EAAyBR,GACvC,OAAOO,EAAW7B,GAAaG,UAAUmB,EAC3C,UAEgBS,IACd,OAAOF,EAAW7B,GAAaG,SACjC"}
@@ -1,2 +1,2 @@
1
- import{__spreadArray as t,__assign as a}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useCallback as n,useMemo as i}from"react";var r=function(t,e){switch(e.type){case"changeKey":return{key:e.payload.key,asc:!0,isUpdatedData:!1,sortTiming:t.sortTiming+1};case"changeOrder":return t.isUpdatedData?a(a({},t),{isUpdatedData:!1,sortTiming:t.sortTiming+1}):a(a({},t),{asc:!t.asc,sortTiming:t.sortTiming+1});case"updateData":return a(a({},t),{isUpdatedData:!0})}};function s(a){var s,o,c=e(r,{key:null!==(s=null==a?void 0:a.key)&&void 0!==s?s:"id",asc:null===(o=null==a?void 0:a.asc)||void 0===o||o,isUpdatedData:!1,sortTiming:0}),d=c[0],y=c[1],u=function(t){y({type:"changeKey",payload:{key:t}})},p=function(){y({type:"changeOrder"})},k=function(){y({type:"updateData"})},g=n((function(a){return t([],a,!0).sort((function(t,a){return""===t[d.key]&&""===a[d.key]?0:""===t[d.key]?1:""===a[d.key]?-1:t[d.key]<a[d.key]?d.asc?-1:1:t[d.key]>a[d.key]?d.asc?1:-1:0}))}),[d.key,d.asc]);return{state:i((function(){return{key:d.key,asc:d.asc,isUpdatedData:d.isUpdatedData}}),[d.key,d.asc,d.isUpdatedData]),actions:i((function(){return{changeKey:u,changeOrder:p,updatedData:k,sort:g}}),[g]),sortTiming:d.sortTiming}}export{s as useSortReducer};
1
+ import{__spreadArray as t,__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as a,useCallback as n,useMemo as i}from"react";import{compareText as r}from"../../share/text/normalize.js";function o(t){return null==t||""===t||"number"==typeof t&&isNaN(t)||t instanceof Date&&isNaN(t.getTime())}var s=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(e({},t),{isUpdatedData:!1,sortTiming:t.sortTiming+1}):e(e({},t),{asc:!t.asc,sortTiming:t.sortTiming+1});case"updateData":return e(e({},t),{isUpdatedData:!0})}};function u(e){var u,c,d=a(s,{key:null!==(u=null==e?void 0:e.key)&&void 0!==u?u:"id",asc:null===(c=null==e?void 0:e.asc)||void 0===c||c,isUpdatedData:!1,sortTiming:0}),f=d[0],p=d[1],m=function(t){p({type:"changeKey",payload:{key:t}})},y=function(){p({type:"changeOrder"})},g=function(){p({type:"updateData"})},l=n((function(e,a){return void 0===a&&(a=function(t){return t[f.key]}),t([],e,!0).sort((function(t,e){var n=a(t),i=a(e);if(o(n)&&o(i))return 0;if(o(n))return 1;if(o(i))return-1;var s=function(t,e){return"number"==typeof t&&"number"==typeof e?t-e:t instanceof Date&&e instanceof Date?t.getTime()-e.getTime():r(String(t),String(e))}(n,i);return f.asc?s:-s}))}),[f.key,f.asc]);return{state:i((function(){return{key:f.key,asc:f.asc,isUpdatedData:f.isUpdatedData}}),[f.key,f.asc,f.isUpdatedData]),actions:i((function(){return{changeKey:m,changeOrder:y,updatedData:g,sort:l}}),[l]),sortTiming:f.sortTiming}}export{u as useSortReducer};
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((a, b) => {\n if (a[state.key] === \"\" && b[state.key] === \"\") {\n return 0;\n } else if (a[state.key] === \"\") {\n return 1;\n } else if (b[state.key] === \"\") {\n return -1;\n }\n\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\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":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","useSortReducer","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"wJAIA,IAAMA,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,EAAAA,EAAA,CAAA,EACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAK,CAAEK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,CAAA,EAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SAAuBC,GACrB,OAAAC,EAAA,GAAID,GAAI,GAAEF,MAAK,SAACI,EAAGC,GACjB,MAAqB,KAAjBD,EAAEvB,EAAMG,MAAgC,KAAjBqB,EAAExB,EAAMG,KAC1B,EACmB,KAAjBoB,EAAEvB,EAAMG,KACV,EACmB,KAAjBqB,EAAExB,EAAMG,MACV,EAGLoB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,KAAM,EAAK,EAEtBkB,EAAEvB,EAAMG,KAAOqB,EAAExB,EAAMG,KAClBH,EAAMK,IAAM,GAAI,EAElB,CACT,GAhBA,GAiBF,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6ByB,GAC7B,WAAM,MAAA,CACJtB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cAHjB,GAKN,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BoB,QAPcD,GACd,WAAM,MAAA,CAAGT,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAA5C,GACN,CAACA,IAMDZ,WAAYP,EAAMO,WAEtB"}
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","useSortReducer","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":"oNAKA,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,EAAAA,EAAA,CAAA,EACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,EAAA,CAAA,EAAYR,GAAK,CAAEK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,EAAA,CAAA,EAAYR,GAAK,CAAEM,eAAe,IAExC,EAEM,SAAUG,EAAqCC,WAI7CC,EAAoBC,EAAWb,EAAS,CAC5CI,IAAiB,QAAZU,EAAAH,eAAAA,EAASP,WAAG,IAAAU,EAAAA,EAAI,KACrBR,IAAiB,QAAZS,EAAAJ,eAAAA,EAASL,WAAG,IAAAS,GAAAA,EACjBR,eAAe,EACfC,WAAY,IAJPP,EAAKW,EAAA,GAAEI,OAORC,EAAY,SAACb,GACjBY,EAAS,CAAEb,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMc,EAAc,WAClBF,EAAS,CAAEb,KAAM,eACnB,EAEMgB,EAAc,WAClBH,EAAS,CAAEb,KAAM,cACnB,EAEMiB,EAAOC,GACX,SACEC,EACAC,GAEA,YAFA,IAAAA,IAAAA,EAAA,SAA6CC,GAAQ,OAAAA,EAAIvB,EAAMG,IAAV,GAErDqB,EAAA,GAAIH,GAAI,GAAEF,MAAK,SAACM,EAAMC,GACpB,IAAMC,EAAIL,EAASG,GACbG,EAAIN,EAASI,GAGnB,GAAIhC,EAAQiC,IAAMjC,EAAQkC,GAAI,OAAO,EACrC,GAAIlC,EAAQiC,GAAI,OAAO,EACvB,GAAIjC,EAAQkC,GAAI,OAAO,EAEvB,IAAMC,EAnEd,SAAuBF,EAAYC,GACjC,MAAiB,iBAAND,GAA+B,iBAANC,EAAuBD,EAAIC,EAC3DD,aAAa9B,MAAQ+B,aAAa/B,KAAa8B,EAAE7B,UAAY8B,EAAE9B,UAC5DgC,EAAYC,OAAOJ,GAAII,OAAOH,GACvC,CA+DuBI,CAAcL,EAAGC,GAChC,OAAO5B,EAAMK,IAAMwB,GAAUA,CAC/B,GAXA,GAYF,CAAC7B,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BiC,GAC7B,WAAM,MAAA,CACJ9B,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cAHjB,GAKN,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7B4B,QAPcD,GACd,WAAM,MAAA,CAAGjB,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAA5C,GACN,CAACA,IAMDZ,WAAYP,EAAMO,WAEtB"}
@@ -1,2 +1,2 @@
1
- "use client";import{__assign as n}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{useSortReducer as o}from"./hooks.js";var i=t(0),u=t({key:"",asc:!1,isUpdatedData:!1}),c=t({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.")}});function a(n){var t=o(n.initialCondition),e=t.state,a=t.actions,d=t.sortTiming;return r(i.Provider,{value:d,children:r(u.Provider,{value:e,children:r(c.Provider,{value:a,children:n.children})})})}function d(){return n(n(n({},e(u)),e(c)),{sortTiming:e(i)})}function m(){return e(c)}function s(){return e(i)}export{a as SortProvider,m as useSortActionContext,d as useSortContext,s as useSortTimingContext};
1
+ "use client";import{__assign as n}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{useSortReducer as o}from"./hooks.js";var i=t(0),u=t({key:"",asc:!1,isUpdatedData:!1}),c=t({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.")}});function a(n){var t=o(n.initialCondition),e=t.state,a=t.actions,d=t.sortTiming;return r(i.Provider,{value:d,children:r(u.Provider,{value:e,children:r(c.Provider,{value:a,children:n.children})})})}function d(){return n(n(n({},e(u)),e(c)),{sortTiming:e(i)})}function m(){return e(u)}function s(){return e(c)}function l(){return e(i)}export{a as SortProvider,s as useSortActionContext,d as useSortContext,m as useSortStateContext,l as useSortTimingContext};
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","SortProvider","props","_a","useSortReducer","initialCondition","state","actions","sortTiming","_jsx","Provider","value","children","useSortContext","__assign","useContext","useSortActionContext","useSortTimingContext"],"mappings":"2NAOA,IAAMA,EAAoBC,EAAsB,GAE1CC,EAAmBD,EACvB,CACEE,IAAK,GACLC,KAAK,EACLC,eAAe,IAIbC,EAAoBL,EAExB,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,IAGI,SAAUI,EAAaC,GAIrB,IAAAC,EAAiCC,EAAeF,EAAMG,kBAApDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,eACxB,OACEC,EAACpB,EAAkBqB,SAAQ,CAACC,MAAOH,WACjCC,EAAClB,EAAiBmB,UAASC,MAAOL,EAAKM,SACrCH,EAACd,EAAkBe,SAAQ,CAACC,MAAOJ,EAAOK,SACvCV,EAAMU,cAKjB,UAEgBC,IACd,OAAAC,EAAAA,EAAAA,EAAA,CAAA,EACKC,EAAWxB,IACXwB,EAAWpB,IAAkB,CAChCa,WAAYO,EAAW1B,IAE3B,UAMgB2B,IACd,OAAOD,EAAWpB,EACpB,UAEgBsB,IACd,OAAOF,EAAW1B,EACpB"}
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","SortProvider","props","_a","useSortReducer","initialCondition","state","actions","sortTiming","_jsx","Provider","value","children","useSortContext","__assign","useContext","useSortStateContext","useSortActionContext","useSortTimingContext"],"mappings":"2NAOA,IAAMA,EAAoBC,EAAsB,GAE1CC,EAAmBD,EACvB,CACEE,IAAK,GACLC,KAAK,EACLC,eAAe,IAIbC,EAAoBL,EAExB,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,IAGI,SAAUI,EAAaC,GAIrB,IAAAC,EAAiCC,EAAeF,EAAMG,kBAApDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,eACxB,OACEC,EAACpB,EAAkBqB,SAAQ,CAACC,MAAOH,WACjCC,EAAClB,EAAiBmB,UAASC,MAAOL,EAAKM,SACrCH,EAACd,EAAkBe,SAAQ,CAACC,MAAOJ,EAAOK,SACvCV,EAAMU,cAKjB,UAEgBC,IACd,OAAAC,EAAAA,EAAAA,EAAA,CAAA,EACKC,EAAWxB,IACXwB,EAAWpB,IAAkB,CAChCa,WAAYO,EAAW1B,IAE3B,UAEgB2B,IACd,OAAOD,EAAWxB,EACpB,UAEgB0B,IACd,OAAOF,EAAWpB,EACpB,UAEgBuB,IACd,OAAOH,EAAW1B,EACpB"}
@@ -1,2 +1,2 @@
1
- "use client";import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as d,Pagenation as l}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as s}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as c}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as j}from"../paste/provider.js";import{generateFormattingString as u}from"../libs/conditional-formatting.js";import{Editor as g}from"../edit/ui/editor.js";import{RangeProvider as w,TestRange as b}from"../range/provider.js";import{CopyProvider as k}from"../copy/provider.js";import{CopiedMessage as y}from"../copy/components.js";import{TableIdGeneratorProvider as C,useTableIdGenerator as N}from"../id/provider.js";import{TableHeader as R}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as I,ColumnsWidthStyle as S}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as F}from"../header/x-scroll-position/provider.js";import{Frame as P}from"../frame/frame.js";import{ComponentProvider as H,useGenerateSortButton as W}from"./component-provider/provider.js";import{SelectBoxProvider as D}from"../../select-box/provider.js";function T(i){var t,d,l,x,u,g;return r(H,{children:r(C,{id:i.id,children:r(I,{cols:i.cols,children:r(s,{initialConditions:[],children:r(c,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(u=null!==(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagination)&&void 0!==l?l:null===(x=i.initialCondition)||void 0===x?void 0:x.pagenation)||void 0===u?void 0:u.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(w,{children:e(k,{rows:i.rows,cols:i.cols,children:[r(y,{}),e(j,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,onPasteError:i.onPasteError,children:[r(v,{enableDeprecatedCopy:null===(g=i.deprecatedOptions)||void 0===g?void 0:g.enableDeprecatedCopy}),r(F,{children:r(A,o({},i))})]})]})})})})})})})})})})})})})}function A(o){var n=i(o),s=n.cols,c=n.rowMaps,a=n.pageRowIds,m=N(),p=W();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(R,{cols:s,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(S,{scopeId:m.getTableId()}),r(D,{children:e(P,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),s.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:s.length+(o.checkbox?1:0),className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,row:c[e].data,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:u(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(g,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{T as default};
1
+ "use client";import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as d}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as c}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as s}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{KeyCatcher as j}from"../operation/components/key-catcher.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as u}from"../paste/provider.js";import{generateFormattingString as g}from"../libs/conditional-formatting.js";import{Editor as w}from"../edit/ui/editor.js";import{RangeProvider as b,TestRange as k}from"../range/provider.js";import{CopyProvider as y}from"../copy/provider.js";import{CopiedMessage as C}from"../copy/components.js";import{TableIdGeneratorProvider as N,useTableIdGenerator as R}from"../id/provider.js";import{TableHeader as I}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as S,ColumnsWidthStyle as F}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as P}from"../header/x-scroll-position/provider.js";import{Frame as H}from"../frame/frame.js";import{ComponentProvider as W,useGenerateSortButton as D}from"./component-provider/provider.js";import{SelectBoxProvider as T}from"../../select-box/provider.js";import{LocaleProvider as A}from"../locale/provider.js";function E(i){var t,l,d,j,x,g;return r(A,{locale:i.locale,children:r(W,{children:r(N,{id:i.id,children:r(S,{cols:i.cols,children:r(c,{initialConditions:[],children:r(s,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(x=null!==(d=null===(l=i.initialCondition)||void 0===l?void 0:l.pagination)&&void 0!==d?d:null===(j=i.initialCondition)||void 0===j?void 0:j.pagenation)||void 0===x?void 0:x.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(b,{children:e(y,{rows:i.rows,cols:i.cols,children:[r(C,{}),e(u,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,onPasteError:i.onPasteError,children:[r(v,{enableDeprecatedCopy:null===(g=i.deprecatedOptions)||void 0===g?void 0:g.enableDeprecatedCopy}),r(P,{children:r(M,o({},i))})]})]})})})})})})})})})})})})})})}function M(o){var n=i(o),c=n.cols,s=n.rowMaps,a=n.pageRowIds,m=R(),p=D();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(I,{cols:c,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(F,{scopeId:m.getTableId()}),r(T,{children:e(H,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),c.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:c.length+(o.checkbox?1:0),className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,row:s[e].data,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(s[e].data,c,o.conditionalFormattings)},e)}))]})]}),r(k,{}),r(j,{}),r(w,{rowMaps:s,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(d,{})})]})]})}export{E as default};
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":["Table","props","_jsx","ComponentProvider","children","TableIdGeneratorProvider","id","ColumnsWidthProvider","cols","FilterProvider","initialConditions","SortProvider","initialCondition","_a","sort","PagenationProvider","rowCount","rows","length","perPage","_e","_c","_b","pagination","_d","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","_f","deprecatedOptions","ScrollXPositionProvider","BaseTable","__assign","useTable","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","className","TableHeader","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","Editor","DisplayRange","Pagenation"],"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":["Table","props","_jsx","LocaleProvider","locale","children","ComponentProvider","TableIdGeneratorProvider","id","ColumnsWidthProvider","cols","FilterProvider","initialConditions","SortProvider","initialCondition","_a","sort","PagenationProvider","rowCount","rows","length","perPage","_e","_c","_b","pagination","_d","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","_f","deprecatedOptions","ScrollXPositionProvider","BaseTable","__assign","useTable","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","className","TableHeader","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","KeyCatcher","Editor","DisplayRange","Pagenation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useMemo as r,useEffect as t}from"react";import{usePageContext as o}from"../pagenation/providers.js";import{useCheckboxStatusContext as n}from"../checkbox/provider.js";import{useSortActionContext as e,useSortTimingContext as i}from"../sort/provider.js";import{useTablePropertyActionContext as c}from"../table-property/provider.js";import{usePasteActionContext as u}from"../paste/provider.js";import{useCopyActionContext as s}from"../copy/provider.js";import{useFilterFunctions as f}from"../filter-v2/context.js";function a(a){var p=f().filter,d=e(),l=d.sort,m=d.updatedData,h=i(),v=o(),w=v.setRowCount,g=v.pageFilter,x=n().dispatchCheckboxStatus,j=u().setRows,k=s().setRows,y=c(),b=y.setMaxDisplayColCount,R=y.setMaxDisplayRowCount,C=r((function(){return JSON.stringify(a.rows.map((function(r){return r.id})))}),[a.rows]),S=r((function(){return p(a.rows)}),[p,h,C]);t((function(){w(S.length)}),[S.length]);var D=r((function(){return a.checkbox?a.rows.filter((function(r){var t;return null===(t=a.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[a.checkbox,a.rows]);t((function(){x({type:"SET",payload:{checkedRecords:D}})}),[D]);var M=r((function(){return l(S)}),[S,h]);t((function(){m()}),[a.rows]);var E=r((function(){return g(M)}),[g,M]),F=r((function(){return E.map((function(r){return r.id}))}),[E]),I=r((function(){return new Set(F)}),[F]),J=r((function(){return a.rows.filter((function(r){return I.has(r.id)})).reduce((function(r,t){return r[t.id]={data:t},r}),{})}),[a.rows,I]);return t((function(){b(a.cols.length)}),[a.cols.length]),t((function(){R(F.length)}),[F.length]),t((function(){var r=F.map((function(r){return J[r].data}));k(r),j(r)}),[J]),{cols:a.cols,rowMaps:J,pageRowIds:F}}export{a as useTable};
1
+ import{useMemo as r,useEffect as t}from"react";import{usePageContext as n}from"../pagenation/providers.js";import{useCheckboxStatusContext as o}from"../checkbox/provider.js";import{useSortActionContext as e,useSortTimingContext as i,useSortStateContext as u}from"../sort/provider.js";import{useTablePropertyActionContext as c}from"../table-property/provider.js";import{usePasteActionContext as s}from"../paste/provider.js";import{useCopyActionContext as f}from"../copy/provider.js";import{useFilterFunctions as a}from"../filter-v2/context.js";function p(p){var l=a().filter,d=e(),m=d.sort,v=d.updatedData,w=i(),h=u().key,g=n(),y=g.setRowCount,k=g.pageFilter,x=o().dispatchCheckboxStatus,b=s().setRows,j=f().setRows,R=c(),S=R.setMaxDisplayColCount,C=R.setMaxDisplayRowCount,M=r((function(){return JSON.stringify(p.rows.map((function(r){return r.id})))}),[p.rows]),D=r((function(){return l(p.rows)}),[l,w,M]);t((function(){y(D.length)}),[D.length]);var J=r((function(){return p.checkbox?p.rows.filter((function(r){var t;return null===(t=p.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[p.checkbox,p.rows]);t((function(){x({type:"SET",payload:{checkedRecords:J}})}),[J]);var N=p.cols.find((function(r){return r.key===h})),O="select"===(null==N?void 0:N.type)?JSON.stringify(N.options.map((function(r){return[r.value,r.label]}))):"",E=r((function(){if(""!==O){var r=new Map(JSON.parse(O));return function(t){var n,o=t[h];return null!==(n=r.get(o))&&void 0!==n?n:o}}}),[h,O]),F=r((function(){return m(D,E)}),[D,w,E]);t((function(){v()}),[p.rows]);var I=r((function(){return k(F)}),[k,F]),T=r((function(){return I.map((function(r){return r.id}))}),[I]),q=r((function(){return new Set(T)}),[T]),z=r((function(){return p.rows.filter((function(r){return q.has(r.id)})).reduce((function(r,t){return r[t.id]={data:t},r}),{})}),[p.rows,q]);return t((function(){S(p.cols.length)}),[p.cols.length]),t((function(){C(T.length)}),[T.length]),t((function(){var r=T.map((function(r){return z[r].data}));j(r),b(r)}),[z]),{cols:p.cols,rowMaps:z,pageRowIds:T}}export{p as useTable};
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 { useSortActionContext, useSortTimingContext } 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 { 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 const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\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":["useTable","props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_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","sortedRows","pageRows","pageRowIds","pageRowIdSets","Set","rowMaps","has","reduce","acc","data","cols"],"mappings":"sgBAUM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACbC,EAAwBC,IAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,IACbC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,2BAClBC,EAAoBC,YACpBC,EAAmBC,YAC9BC,EACJC,IADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAK9CC,EAAYC,GAChB,WAAM,OAAAC,KAAKC,UAAU1B,EAAM2B,KAAKC,KAAI,SAACC,GAAQ,OAAAA,EAAIC,EAAJ,IAAvC,GACN,CAAC9B,EAAM2B,OAGHI,EAAeP,GACnB,WAAM,OAAAvB,EAAOD,EAAM2B,KAAb,GACN,CAAC1B,EAAQM,EAAYgB,IAGvBS,GAAU,WACRrB,EAAYoB,EAAaE,OAC3B,GAAG,CAACF,EAAaE,SAEjB,IAAMC,EAAaV,GAAQ,WACzB,OAAKxB,EAAMmC,SAIJnC,EAAM2B,KAAK1B,QAAO,SAAC4B,GAAG,IAAA1B,EAAK,eAAAA,EAAAH,EAAMmC,+BAAUC,QAAQP,EAAI,IAHrD,EAIX,GAAG,CAAC7B,EAAMmC,SAAUnC,EAAM2B,OAE1BK,GAAU,WACRnB,EAAuB,CACrBwB,KAAM,MACNC,QAAS,CAAEC,eAAgBL,IAE/B,GAAG,CAACA,IAEJ,IAAMM,EAAahB,GACjB,WAAM,OAAAnB,EAAK0B,EAAL,GACN,CAACA,EAAcxB,IAGjByB,GAAU,WACR1B,GACF,GAAG,CAACN,EAAM2B,OAEV,IAAMc,EAAWjB,GACf,WAAM,OAAAZ,EAAW4B,EAAX,GACN,CAAC5B,EAAY4B,IAGTE,EAAalB,GAAQ,WAAM,OAAAiB,EAASb,KAAI,SAACC,GAAQ,OAAAA,EAAIC,EAAJ,GAAtB,GAA+B,CAACW,IAC3DE,EAAgBnB,GAAQ,WAAM,OAAA,IAAIoB,IAAIF,EAAR,GAAqB,CAACA,IAIpDG,EAAUrB,GACd,WACE,OAAAxB,EAAM2B,KACH1B,QAAO,SAAC4B,GAAQ,OAAAc,EAAcG,IAAIjB,EAAIC,GAAtB,IAChBiB,QAAO,SAACC,EAAKnB,GAEZ,OADAmB,EAAInB,EAAIC,IAAM,CAAEmB,KAAMpB,GACfmB,CACT,GAAG,CAAA,EALL,GAMF,CAAChD,EAAM2B,KAAMgB,IAiBf,OAdAX,GAAU,WACRX,EAAsBrB,EAAMkD,KAAKjB,OACnC,GAAG,CAACjC,EAAMkD,KAAKjB,SAEfD,GAAU,WACRV,EAAsBoB,EAAWT,OACnC,GAAG,CAACS,EAAWT,SAEfD,GAAU,WACR,IAAML,EAAOe,EAAWd,KAAI,SAACE,GAAO,OAAAe,EAAQf,GAAImB,IAAZ,IACpChC,EAAeU,GACfZ,EAAgBY,EAClB,GAAG,CAACkB,IAEG,CACLK,KAAMlD,EAAMkD,KACZL,QAAOA,EACPH,WAAUA,EAEd"}
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":["useTable","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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"}
package/dist/index.d.ts CHANGED
@@ -7,31 +7,6 @@ type TPasteError = {
7
7
  message: string;
8
8
  };
9
9
 
10
- interface Options {
11
- /**
12
- * The label is the string that will be displayed for the option.
13
- */
14
- label: string;
15
- /**
16
- * The value is the value of the option and will not be displayed.
17
- */
18
- value: string;
19
- /**
20
- * The searchLabel is the string that will be displayed in the list of options when the user is selecting an option.
21
- * The difference between label and searchLabel is that label is the string displayed when the option is selected,
22
- * while searchLabel is the string displayed in the list of options during selection.
23
- * If searchLabel is undefined, the list of options will display the label.
24
- */
25
- searchLabel?: string;
26
- /**
27
- * The searchText is the string used for searching and filtering the list of options.
28
- * For example, in the case of Japanese options, you can use hiragana or katakana readings in searchText,
29
- * allowing users to search using hiragana even if the displayed label is in kanji.
30
- * If searchText is undefined, the search will use searchLabel if defined, otherwise it will use label.
31
- */
32
- searchText?: string;
33
- }
34
-
35
10
  type TStringValidateOption = {
36
11
  maxLength?: number;
37
12
  minLength?: number;
@@ -72,6 +47,34 @@ type TErrorValidation = {
72
47
  type: "NOT_DATETIME";
73
48
  });
74
49
 
50
+ /** Language of the messages the table shows by itself. */
51
+ type TLocale = "ja" | "en";
52
+
53
+ interface Options {
54
+ /**
55
+ * The label is the string that will be displayed for the option.
56
+ */
57
+ label: string;
58
+ /**
59
+ * The value is the value of the option and will not be displayed.
60
+ */
61
+ value: string;
62
+ /**
63
+ * The searchLabel is the string that will be displayed in the list of options when the user is selecting an option.
64
+ * The difference between label and searchLabel is that label is the string displayed when the option is selected,
65
+ * while searchLabel is the string displayed in the list of options during selection.
66
+ * If searchLabel is undefined, the list of options will display the label.
67
+ */
68
+ searchLabel?: string;
69
+ /**
70
+ * The searchText is the string used for searching and filtering the list of options.
71
+ * For example, in the case of Japanese options, you can use hiragana or katakana readings in searchText,
72
+ * allowing users to search using hiragana even if the displayed label is in kanji.
73
+ * If searchText is undefined, the search will use searchLabel if defined, otherwise it will use label.
74
+ */
75
+ searchText?: string;
76
+ }
77
+
75
78
  type DataRecord = Record<string, string | number | Date>;
76
79
  type DataObject<T extends DataRecord> = T & {
77
80
  id: number | string;
@@ -144,6 +147,11 @@ type TConditionalFormatting<T extends DataRecord> = {
144
147
  };
145
148
  type TailwindCssStyle = string;
146
149
  type TPaginationCondition = {
150
+ /**
151
+ * Rows per page. Defaults to 50.
152
+ * "all" renders every row at once and gets slow with many rows; use
153
+ * pagination for more than about 1,000 rows.
154
+ */
147
155
  rowCountPerPage?: 20 | 50 | 100 | "all";
148
156
  };
149
157
  type TPropsTable<T extends DataRecord> = {
@@ -171,6 +179,11 @@ type TPropsTable<T extends DataRecord> = {
171
179
  * table or targets a read-only column. Defaults to window.alert.
172
180
  */
173
181
  onPasteError?: (error: TPasteError) => void;
182
+ /**
183
+ * Language of the messages the table shows by itself, such as the default
184
+ * validation alert and the "copied" notice. Defaults to "ja".
185
+ */
186
+ locale?: TLocale;
174
187
  deprecatedOptions?: {
175
188
  enableDeprecatedCopy?: boolean;
176
189
  };
@@ -292,4 +305,4 @@ interface IReturnFileUploader {
292
305
  }
293
306
  declare function useFileUploader(props: IPropsFileUploader): IReturnFileUploader;
294
307
 
295
- export { type DataObject, type DataRecord, FileUploader, type FileUploaderProps, type Options, type TColumnType, type TConditionalFormatting, type TErrorValidation, type TNumberValidateOption, type TPasteError, type TPropsTable, type TStringValidateOption, type TTableColumn, Table, useFileUploader };
308
+ export { type DataObject, type DataRecord, FileUploader, type FileUploaderProps, type Options, type TColumnType, type TConditionalFormatting, type TErrorValidation, type TLocale, type TNumberValidateOption, type TPasteError, type TPropsTable, type TStringValidateOption, type TTableColumn, Table, useFileUploader };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",