@teppen/react-ui 1.10.2 → 2.0.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 (185) hide show
  1. package/README.md +73 -6
  2. package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -1
  3. package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -1
  4. package/dist/cjs/node_modules/react-icons/lib/iconContext.js.map +1 -1
  5. package/dist/cjs/node_modules/react-icons/lu/index.js.map +1 -1
  6. package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -1
  7. package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -1
  8. package/dist/cjs/node_modules/tslib/tslib.es6.js +1 -1
  9. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
  10. package/dist/cjs/src/file-uploader/hook.js +1 -1
  11. package/dist/cjs/src/file-uploader/hook.js.map +1 -1
  12. package/dist/cjs/src/search-bar/condition-search-bar/base.js +1 -2
  13. package/dist/cjs/src/search-bar/condition-search-bar/base.js.map +1 -1
  14. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js +1 -2
  15. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
  16. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -2
  17. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  18. package/dist/cjs/src/search-bar/id-generator/provider.js +1 -2
  19. package/dist/cjs/src/search-bar/id-generator/provider.js.map +1 -1
  20. package/dist/cjs/src/select-box/index.js +1 -2
  21. package/dist/cjs/src/select-box/index.js.map +1 -1
  22. package/dist/cjs/src/select-box/parts/input-area.js +1 -2
  23. package/dist/cjs/src/select-box/parts/input-area.js.map +1 -1
  24. package/dist/cjs/src/select-box/provider.js +1 -2
  25. package/dist/cjs/src/select-box/provider.js.map +1 -1
  26. package/dist/cjs/src/table/cell/ui/cell.js +1 -2
  27. package/dist/cjs/src/table/cell/ui/cell.js.map +1 -1
  28. package/dist/cjs/src/table/checkbox/components.js +1 -2
  29. package/dist/cjs/src/table/checkbox/components.js.map +1 -1
  30. package/dist/cjs/src/table/copy/format.js +2 -0
  31. package/dist/cjs/src/table/copy/format.js.map +1 -0
  32. package/dist/cjs/src/table/copy/hooks.js +1 -1
  33. package/dist/cjs/src/table/copy/hooks.js.map +1 -1
  34. package/dist/cjs/src/table/edit/provider.js +1 -2
  35. package/dist/cjs/src/table/edit/provider.js.map +1 -1
  36. package/dist/cjs/src/table/edit/ui/base-input.js +1 -2
  37. package/dist/cjs/src/table/edit/ui/base-input.js.map +1 -1
  38. package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
  39. package/dist/cjs/src/table/edit/ui/number-input.js +1 -2
  40. package/dist/cjs/src/table/edit/ui/number-input.js.map +1 -1
  41. package/dist/cjs/src/table/edit/ui/select-input.js +1 -2
  42. package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
  43. package/dist/cjs/src/table/edit/ui/string-input.js +1 -2
  44. package/dist/cjs/src/table/edit/ui/string-input.js.map +1 -1
  45. package/dist/cjs/src/table/filter-v2/hook.js +1 -1
  46. package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
  47. package/dist/cjs/src/table/frame/frame.js +1 -2
  48. package/dist/cjs/src/table/frame/frame.js.map +1 -1
  49. package/dist/cjs/src/table/header/columns-width/provider.js +1 -2
  50. package/dist/cjs/src/table/header/columns-width/provider.js.map +1 -1
  51. package/dist/cjs/src/table/header/columns-width/reducer.js +1 -1
  52. package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -1
  53. package/dist/cjs/src/table/header/header-v2-hook.js +1 -1
  54. package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -1
  55. package/dist/cjs/src/table/header/header-v2.js +1 -1
  56. package/dist/cjs/src/table/header/header-v2.js.map +1 -1
  57. package/dist/cjs/src/table/header/header.js +1 -2
  58. package/dist/cjs/src/table/header/header.js.map +1 -1
  59. package/dist/cjs/src/table/id/provider.js +1 -1
  60. package/dist/cjs/src/table/id/provider.js.map +1 -1
  61. package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -2
  62. package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
  63. package/dist/cjs/src/table/operation/event-target.js +2 -0
  64. package/dist/cjs/src/table/operation/event-target.js.map +1 -0
  65. package/dist/cjs/src/table/pagenation/components.js +1 -2
  66. package/dist/cjs/src/table/pagenation/components.js.map +1 -1
  67. package/dist/cjs/src/table/pagenation/hooks.js +1 -1
  68. package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
  69. package/dist/cjs/src/table/pagenation/providers.js +1 -2
  70. package/dist/cjs/src/table/pagenation/providers.js.map +1 -1
  71. package/dist/cjs/src/table/paste/hooks.js +1 -1
  72. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  73. package/dist/cjs/src/table/paste/logic.js +1 -1
  74. package/dist/cjs/src/table/paste/logic.js.map +1 -1
  75. package/dist/cjs/src/table/paste/parse.js +2 -0
  76. package/dist/cjs/src/table/paste/parse.js.map +1 -0
  77. package/dist/cjs/src/table/paste/provider.js +1 -1
  78. package/dist/cjs/src/table/paste/provider.js.map +1 -1
  79. package/dist/cjs/src/table/sheet/components.js +1 -1
  80. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  81. package/dist/cjs/src/table/sheet/providers.js +1 -2
  82. package/dist/cjs/src/table/sheet/providers.js.map +1 -1
  83. package/dist/cjs/src/table/sort/components.js +1 -2
  84. package/dist/cjs/src/table/sort/components.js.map +1 -1
  85. package/dist/cjs/src/table/sort/provider.js +1 -2
  86. package/dist/cjs/src/table/sort/provider.js.map +1 -1
  87. package/dist/cjs/src/table/table/base.js +1 -2
  88. package/dist/cjs/src/table/table/base.js.map +1 -1
  89. package/dist/cjs/src/table/table/component-provider/provider.js +1 -2
  90. package/dist/cjs/src/table/table/component-provider/provider.js.map +1 -1
  91. package/dist/cjs/src/table/table/hook.js +1 -1
  92. package/dist/cjs/src/table/table/hook.js.map +1 -1
  93. package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -1
  94. package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -1
  95. package/dist/esm/node_modules/react-icons/lib/iconContext.js.map +1 -1
  96. package/dist/esm/node_modules/react-icons/lu/index.js.map +1 -1
  97. package/dist/esm/node_modules/react-icons/md/index.js.map +1 -1
  98. package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -1
  99. package/dist/esm/node_modules/tslib/tslib.es6.js +1 -1
  100. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  101. package/dist/esm/src/file-uploader/hook.js +1 -1
  102. package/dist/esm/src/file-uploader/hook.js.map +1 -1
  103. package/dist/esm/src/search-bar/condition-search-bar/base.js +1 -2
  104. package/dist/esm/src/search-bar/condition-search-bar/base.js.map +1 -1
  105. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js +1 -2
  106. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
  107. package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -2
  108. package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  109. package/dist/esm/src/search-bar/id-generator/provider.js +1 -2
  110. package/dist/esm/src/search-bar/id-generator/provider.js.map +1 -1
  111. package/dist/esm/src/select-box/index.js +1 -2
  112. package/dist/esm/src/select-box/index.js.map +1 -1
  113. package/dist/esm/src/select-box/parts/input-area.js +1 -2
  114. package/dist/esm/src/select-box/parts/input-area.js.map +1 -1
  115. package/dist/esm/src/select-box/provider.js +1 -2
  116. package/dist/esm/src/select-box/provider.js.map +1 -1
  117. package/dist/esm/src/table/cell/ui/cell.js +1 -2
  118. package/dist/esm/src/table/cell/ui/cell.js.map +1 -1
  119. package/dist/esm/src/table/checkbox/components.js +1 -2
  120. package/dist/esm/src/table/checkbox/components.js.map +1 -1
  121. package/dist/esm/src/table/copy/format.js +2 -0
  122. package/dist/esm/src/table/copy/format.js.map +1 -0
  123. package/dist/esm/src/table/copy/hooks.js +1 -1
  124. package/dist/esm/src/table/copy/hooks.js.map +1 -1
  125. package/dist/esm/src/table/edit/provider.js +1 -2
  126. package/dist/esm/src/table/edit/provider.js.map +1 -1
  127. package/dist/esm/src/table/edit/ui/base-input.js +1 -2
  128. package/dist/esm/src/table/edit/ui/base-input.js.map +1 -1
  129. package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
  130. package/dist/esm/src/table/edit/ui/number-input.js +1 -2
  131. package/dist/esm/src/table/edit/ui/number-input.js.map +1 -1
  132. package/dist/esm/src/table/edit/ui/select-input.js +1 -2
  133. package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
  134. package/dist/esm/src/table/edit/ui/string-input.js +1 -2
  135. package/dist/esm/src/table/edit/ui/string-input.js.map +1 -1
  136. package/dist/esm/src/table/filter-v2/hook.js +1 -1
  137. package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
  138. package/dist/esm/src/table/frame/frame.js +1 -2
  139. package/dist/esm/src/table/frame/frame.js.map +1 -1
  140. package/dist/esm/src/table/header/columns-width/provider.js +1 -2
  141. package/dist/esm/src/table/header/columns-width/provider.js.map +1 -1
  142. package/dist/esm/src/table/header/columns-width/reducer.js +1 -1
  143. package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -1
  144. package/dist/esm/src/table/header/header-v2-hook.js +1 -1
  145. package/dist/esm/src/table/header/header-v2-hook.js.map +1 -1
  146. package/dist/esm/src/table/header/header-v2.js +1 -1
  147. package/dist/esm/src/table/header/header-v2.js.map +1 -1
  148. package/dist/esm/src/table/header/header.js +1 -2
  149. package/dist/esm/src/table/header/header.js.map +1 -1
  150. package/dist/esm/src/table/id/provider.js +1 -1
  151. package/dist/esm/src/table/id/provider.js.map +1 -1
  152. package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -2
  153. package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
  154. package/dist/esm/src/table/operation/event-target.js +2 -0
  155. package/dist/esm/src/table/operation/event-target.js.map +1 -0
  156. package/dist/esm/src/table/pagenation/components.js +1 -2
  157. package/dist/esm/src/table/pagenation/components.js.map +1 -1
  158. package/dist/esm/src/table/pagenation/hooks.js +1 -1
  159. package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
  160. package/dist/esm/src/table/pagenation/providers.js +1 -2
  161. package/dist/esm/src/table/pagenation/providers.js.map +1 -1
  162. package/dist/esm/src/table/paste/hooks.js +1 -1
  163. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  164. package/dist/esm/src/table/paste/logic.js +1 -1
  165. package/dist/esm/src/table/paste/logic.js.map +1 -1
  166. package/dist/esm/src/table/paste/parse.js +2 -0
  167. package/dist/esm/src/table/paste/parse.js.map +1 -0
  168. package/dist/esm/src/table/paste/provider.js +1 -1
  169. package/dist/esm/src/table/paste/provider.js.map +1 -1
  170. package/dist/esm/src/table/sheet/components.js +1 -1
  171. package/dist/esm/src/table/sheet/components.js.map +1 -1
  172. package/dist/esm/src/table/sheet/providers.js +1 -2
  173. package/dist/esm/src/table/sheet/providers.js.map +1 -1
  174. package/dist/esm/src/table/sort/components.js +1 -2
  175. package/dist/esm/src/table/sort/components.js.map +1 -1
  176. package/dist/esm/src/table/sort/provider.js +1 -2
  177. package/dist/esm/src/table/sort/provider.js.map +1 -1
  178. package/dist/esm/src/table/table/base.js +1 -2
  179. package/dist/esm/src/table/table/base.js.map +1 -1
  180. package/dist/esm/src/table/table/component-provider/provider.js +1 -2
  181. package/dist/esm/src/table/table/component-provider/provider.js.map +1 -1
  182. package/dist/esm/src/table/table/hook.js +1 -1
  183. package/dist/esm/src/table/table/hook.js.map +1 -1
  184. package/dist/index.d.ts +13 -1
  185. package/package.json +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n if (!state.enable) {\n return {\n ...state,\n rowCount: action.payload.rowCount,\n };\n }\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n if (action.payload.perPage === \"all\") {\n return {\n rowCount: state.rowCount,\n enable: false,\n };\n }\n\n if (!state.enable) {\n return {\n rowCount: state.rowCount,\n enable: true,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n }\n\n return {\n ...state,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (!state.enable) {\n return state;\n }\n\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => {\n if (!state.enable) {\n return 0;\n }\n return (state.currentPage - 1) * state.perPage;\n }, [state]);\n\n const to = useMemo(() => {\n if (!state.enable) {\n return state.rowCount;\n }\n return state.currentPage * state.perPage;\n }, [state]);\n\n const pageFilter = useCallback(\n <U extends DataRecord>(data: DataObject<U>[]): DataObject<U>[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n enable: state.enable,\n perPage: state.enable ? state.perPage : state.rowCount,\n current: state.enable ? state.currentPage : 1,\n rowCount: state.rowCount,\n pageCount: state.enable ? Math.ceil(state.rowCount / state.perPage) : 1,\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","enable","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,EAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbG,QAASP,EAAOM,QAAQC,UAXjB,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,EACRE,YAAa,EACbG,QAASP,EAAOM,QAAQC,SAS9B,IAAK,OACH,OAAKR,EAAMG,OAIPH,EAAMK,cAAgBI,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAClDR,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAKTF,EAAOM,QAAQI,WAAa,GAC5BV,EAAOM,QAAQI,WAAaF,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,UAC7DR,EAAMK,cAAgBJ,EAAOM,QAAQI,WAE9BX,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,CAEM,SAAUY,EAAeC,GACvB,IAAAC,EAAoBC,EACxBhB,EACAc,QAAAA,EAAgBG,GAFXhB,OAAOiB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEf,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEf,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WACnB,OAAKxB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEyB,EAAKD,GAAQ,WACjB,OAAKxB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEE0B,EAAaP,GACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLtB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CuB,QAAS7B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBwB,UAAW9B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEe,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n if (!state.enable) {\n return {\n ...state,\n rowCount: action.payload.rowCount,\n };\n }\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n if (action.payload.perPage === \"all\") {\n return {\n rowCount: state.rowCount,\n enable: false,\n };\n }\n\n if (!state.enable) {\n return {\n rowCount: state.rowCount,\n enable: true,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n }\n\n return {\n ...state,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage >= Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (!state.enable) {\n return state;\n }\n\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => {\n if (!state.enable) {\n return 0;\n }\n return (state.currentPage - 1) * state.perPage;\n }, [state]);\n\n const to = useMemo(() => {\n if (!state.enable) {\n return state.rowCount;\n }\n return state.currentPage * state.perPage;\n }, [state]);\n\n const pageFilter = useCallback(\n <U extends DataRecord>(data: DataObject<U>[]): DataObject<U>[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n enable: state.enable,\n perPage: state.enable ? state.perPage : state.rowCount,\n current: state.enable ? state.currentPage : 1,\n rowCount: state.rowCount,\n pageCount: state.enable ? Math.ceil(state.rowCount / state.perPage) : 1,\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","enable","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,EAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbG,QAASP,EAAOM,QAAQC,UAXjB,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,EACRE,YAAa,EACbG,QAASP,EAAOM,QAAQC,SAS9B,IAAK,OACH,OAAKR,EAAMG,OAIPH,EAAMK,aAAeI,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SACjDR,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAKTF,EAAOM,QAAQI,WAAa,GAC5BV,EAAOM,QAAQI,WAAaF,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,UAC7DR,EAAMK,cAAgBJ,EAAOM,QAAQI,WAE9BX,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,CAEM,SAAUY,EAAeC,GACvB,IAAAC,EAAoBC,EACxBhB,EACAc,QAAAA,EAAgBG,GAFXhB,OAAOiB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEf,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEf,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WACnB,OAAKxB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEyB,EAAKD,GAAQ,WACjB,OAAKxB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEE0B,EAAaP,GACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLtB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CuB,QAAS7B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBwB,UAAW9B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEe,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as e}from"react";import{usePageReducer as o}from"./hooks.js";var t=r({enable:!0,perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){return[]}});function u(r){var e,u,i="all"===r.perPage?{enable:!1,rowCount:r.rowCount}:{enable:!0,rowCount:r.rowCount,perPage:null!==(e=r.perPage)&&void 0!==e?e:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1};return n(t.Provider,{value:o(i),children:r.children})}function i(){return e(t)}export{u as PagenationProvider,i as usePageContext};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as e}from"react";import{usePageReducer as o}from"./hooks.js";var t=r({enable:!0,perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){return[]}});function u(r){var e,u,i="all"===r.perPage?{enable:!1,rowCount:r.rowCount}:{enable:!0,rowCount:r.rowCount,perPage:null!==(e=r.perPage)&&void 0!==e?e:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1};return n(t.Provider,{value:o(i),children:r.children})}function i(){return e(t)}export{u as PagenationProvider,i as usePageContext};
3
2
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"providers.js","sources":["../../../../../src/table/pagenation/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport { TPageContext, TPageState } from \"./types\";\nimport { usePageReducer } from \"./hooks\";\n\nconst PageContext = createContext<TPageContext>({\n enable: true,\n perPage: 0,\n current: 0,\n pageCount: 0,\n from: 0,\n to: 0,\n rowCount: 0,\n next: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n prev: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n jump: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n setRowCount: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n pageFilter: () => [],\n});\n\nexport function PagenationProvider(props: {\n children: React.ReactNode;\n rowCount: number;\n perPage?: number | \"all\";\n currentPage?: number;\n}) {\n const pagenationParams: TPageState =\n props.perPage === \"all\"\n ? { enable: false, rowCount: props.rowCount }\n : {\n enable: true,\n rowCount: props.rowCount,\n perPage: props.perPage ?? 50,\n currentPage: props.currentPage ?? 1,\n };\n\n return (\n <PageContext.Provider value={usePageReducer(pagenationParams)}>\n {props.children}\n </PageContext.Provider>\n );\n}\n\nexport function usePageContext() {\n return useContext(PageContext);\n}\n"],"names":["PageContext","createContext","enable","perPage","current","pageCount","from","to","rowCount","next","Error","prev","jump","setRowCount","pageFilter","PagenationProvider","props","pagenationParams","_a","currentPage","_b","_jsx","Provider","value","usePageReducer","children","usePageContext","useContext"],"mappings":"uJAMA,IAAMA,EAAcC,EAA4B,CAC9CC,QAAQ,EACRC,QAAS,EACTC,QAAS,EACTC,UAAW,EACXC,KAAM,EACNC,GAAI,EACJC,SAAU,EACVC,KAAM,WACJ,MAAM,IAAIC,MAAM,4BAClB,EACAC,KAAM,WACJ,MAAM,IAAID,MAAM,4BAClB,EACAE,KAAM,WACJ,MAAM,IAAIF,MAAM,4BAClB,EACAG,YAAa,WACX,MAAM,IAAIH,MAAM,4BAClB,EACAI,WAAY,WAAM,MAAA,EAAA,IAGd,SAAUC,EAAmBC,WAM3BC,EACc,QAAlBD,EAAMb,QACF,CAAED,QAAQ,EAAOM,SAAUQ,EAAMR,UACjC,CACEN,QAAQ,EACRM,SAAUQ,EAAMR,SAChBL,gBAASe,EAAAF,EAAMb,uBAAW,GAC1BgB,oBAAaC,EAAAJ,EAAMG,2BAAe,GAG1C,OACEE,EAACrB,EAAYsB,SAAQ,CAACC,MAAOC,EAAeP,GAAiBQ,SAC1DT,EAAMS,UAGb,UAEgBC,IACd,OAAOC,EAAW3B,EACpB"}
@@ -1,2 +1,2 @@
1
- import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as a,useCallback as o,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as c}from"./logic.js";var d=function(e,a){switch(a.type){case"setRows":return t(t({},e),{rows:a.payload.rows});case"setCols":return t(t({},e),{cols:a.payload.cols});case"setColValidators":return t(t({},e),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var o=a.payload.pasteData,n=e.rows,r=e.cols,s=e.colValidators,i=e.start,d=e.end;if(!e.onUpdateRowFunction)return e;var u=c({pasteData:o,pasteArea:{start:i,end:d},currentRows:n,currentCols:r,validators:s,tableArea:{end:{rowIndex:n.length-1,colIndex:r.length-1}}});return u.isError?("ValidationError"!==u.type&&"NoPasteData"!==u.type&&alert(u.message),e):t(t({},e),{updateParameters:{arguments:u.updateArgument,pastedRange:u.pasteRange,timing:e.updateParameters.timing+1}});case"focus":return t(t({},e),{isFocused:!0,start:a.payload.start,end:a.payload.end});case"unfocus":return t(t({},e),{isFocused:!1})}};function u(c){var u=s().setRange,l=e(d,t(t({},c),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),p=l[0],m=l[1],f=r(),g=i();a((function(){m({type:"setCols",payload:{cols:c.cols}})}),[c.cols]),a((function(){g.isSelecting?m({type:"focus",payload:{start:g.start,end:g.end}}):m({type:"unfocus"})}),[g]);var y=o((function(t){m({type:"setRows",payload:{rows:t}})}),[]),w=o((function(t){m({type:"setCols",payload:{cols:t}})}),[]),R=o((function(t){m({type:"setColValidators",payload:{colValidators:t}})}),[]);a((function(){R(f)}),[f]);var v=o((function(t){m({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),F=o((function(t){m({type:"onPaste",payload:{pasteData:t}})}),[]);return a((function(){p.updateParameters.arguments.length>0&&p.updateParameters.arguments.forEach((function(t){var e,a=t.newRow,o=t.oldRow;null===(e=p.onUpdateRowFunction)||void 0===e||e.call(p,a,o)})),p.updateParameters.pastedRange&&u(p.updateParameters.pastedRange)}),[p.updateParameters.timing,p.onUpdateRowFunction]),a((function(){var t=function(t){if(g.isSelecting&&t.clipboardData){t.preventDefault();var e=t.clipboardData.getData("Text");F(e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")})))}};return document.addEventListener("paste",t),function(){document.removeEventListener("paste",t)}}),[g.isSelecting]),n((function(){return{setRows:y,setCols:w,setColValidators:R,setOnUpdateRowFunction:v,onPaste:F}}),[])}export{u as usePasteReducer};
1
+ import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{useRef as t,useEffect as e,useCallback as a,useMemo as o}from"react";import{useColumnValidatesContext as n}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as c}from"./logic.js";import{parseClipboardText as u}from"./parse.js";import{isTextEntryTarget as p}from"../operation/event-target.js";function m(m){var d=s().setRange,f=n(),l=i(),v=t(m.rows),g=t(r(r({},m),{validators:f,range:l}));e((function(){g.current=r(r({},m),{validators:f,range:l})}));var w=a((function(r){v.current=r}),[]),R=a((function(r){var t=g.current,e=t.cols,a=t.validators,o=t.range,n=t.onUpdateRowFunction,s=t.onPasteError;if(o.isSelecting&&n){var i=c({pasteData:r,pasteArea:{start:o.start,end:o.end},currentRows:v.current,currentCols:e,validators:a});if(i.isError){if("ValidationError"===i.type||"NoPasteData"===i.type)return;var u={type:i.type,message:i.message};s?s(u):alert(u.message)}else i.updateArgument.forEach((function(r){var t=r.newRow,e=r.oldRow;n(t,e)})),d(i.pasteRange)}}),[d]);return e((function(){var r=function(r){var t=g.current,e=t.range,a=t.onUpdateRowFunction;e.isSelecting&&a&&(p(r.target)||r.clipboardData&&(r.preventDefault(),R(u(r.clipboardData.getData("Text")))))};return document.addEventListener("paste",r),function(){document.removeEventListener("paste",r)}}),[R]),o((function(){return{setRows:w,onPaste:R}}),[w,R])}export{m as usePasteReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeActionContext, useRangeStateContext } from \"../range/provider\";\nimport { paste } from \"./logic\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const { rows, cols, colValidators, start, end, onUpdateRowFunction } =\n state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const res = paste({\n pasteData,\n pasteArea: { start, end },\n currentRows: rows,\n currentCols: cols,\n validators: colValidators,\n tableArea: {\n start: {\n rowIndex: 0,\n colIndex: 0,\n },\n end: {\n rowIndex: rows.length - 1,\n colIndex: cols.length - 1,\n },\n },\n });\n\n if (res.isError) {\n if (res.type !== \"ValidationError\" && res.type !== \"NoPasteData\") {\n alert(res.message);\n }\n return state;\n }\n\n return {\n ...state,\n updateParameters: {\n arguments: res.updateArgument,\n pastedRange: res.pasteRange,\n timing: state.updateParameters.timing + 1,\n },\n };\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n start: action.payload.start,\n end: action.payload.end,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const { setRange } = useRangeActionContext();\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n dispatch({ type: \"setCols\", payload: { cols: initial.cols } });\n }, [initial.cols]);\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n start: range.start,\n end: range.end,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n\n if (state.updateParameters.pastedRange) {\n setRange(state.updateParameters.pastedRange);\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n useEffect(() => {\n const paste = (e: ClipboardEvent) => {\n if (!range.isSelecting) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n const pastedData = e.clipboardData.getData(\"Text\");\n\n onPaste(\n pastedData\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"))\n );\n }\n };\n\n document.addEventListener(\"paste\", paste);\n\n return () => {\n document.removeEventListener(\"paste\", paste);\n };\n }, [range.isSelecting]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","start","end","res","paste","pasteArea","currentRows","currentCols","validators","tableArea","rowIndex","length","colIndex","isError","alert","message","updateParameters","arguments","updateArgument","pastedRange","pasteRange","timing","usePasteReducer","initial","setRange","useRangeActionContext","_a","useReducer","dispatch","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","forEach","newRow","oldRow","_b","call","e","clipboardData","preventDefault","pastedData","getData","replace","trim","split","map","row","document","addEventListener","removeEventListener","useMemo"],"mappings":"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"}
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 pasteArea: { start: range.start, end: range.end },\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","end","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,EACTQ,UAAW,CAAEC,MAAOrB,EAAMqB,MAAOC,IAAKtB,EAAMsB,KAC5CC,YAAarB,EAAQM,QACrBgB,YAAaV,EACbhB,WAAUA,IAGZ,GAAIoB,EAAIO,QAAR,CAEE,GAAiB,oBAAbP,EAAIQ,MAA2C,gBAAbR,EAAIQ,KACxC,OAGF,IAAMC,EAAQ,CAAED,KAAMR,EAAIQ,KAAME,QAASV,EAAIU,SACzCZ,EACFA,EAAaW,GAEbE,MAAMF,EAAMC,QAGhB,MAEAV,EAAIY,eAAeC,SAAQ,SAAClB,OAAEmB,EAAMnB,EAAAmB,OAAEC,EAAMpB,EAAAoB,OAC1ClB,EAAoBiB,EAAQC,EAC9B,IACArC,EAASsB,EAAIgB,WA5Bb,CA6BF,GACA,CAACtC,IA6BH,OA1BAW,GAAU,WACR,IAAM4B,EAAW,SAACC,GACV,IAAAvB,EAAiCR,EAAOG,QAAtCR,EAAKa,EAAAb,MAAEe,EAAmBF,EAAAE,oBAE7Bf,EAAMiB,aAAgBF,IAKvBsB,EAAkBD,EAAEE,SAIpBF,EAAEG,gBACJH,EAAEI,iBACF7B,EAAQ8B,EAAmBL,EAAEG,cAAcG,QAAQ,WAEvD,EAIA,OAFAC,SAASC,iBAAiB,QAAST,GAE5B,WACLQ,SAASE,oBAAoB,QAASV,EACxC,CACF,GAAG,CAACxB,IAEGmC,GAAQ,WAAM,OAAGrC,QAAOA,EAAEE,QAAOA,EAAnB,GAAwB,CAACF,EAASE,GACzD"}
@@ -1,2 +1,2 @@
1
- import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";function e(e){var t,a=e.pasteData.length,s=Math.max.apply(Math,e.pasteData.map((function(r){return r.length})));if(0===a||0===s)return{isError:!0,type:"NoPasteData",message:"ペーストデータがありません。"};var n=e.pasteArea.end.rowIndex-e.pasteArea.start.rowIndex+1,o=e.pasteArea.end.colIndex-e.pasteArea.start.colIndex+1,l=n<a?a:n,p=o<s?s:o;if(l+e.pasteArea.start.rowIndex>e.currentRows.length)return{isError:!0,type:"OtherError",message:"貼り付け先の行数が足りません。"};if(p+e.pasteArea.start.colIndex>e.currentCols.length)return{isError:!0,type:"OtherError",message:"貼り付け先の列数が足りません。"};for(var d=0;d<p;d++){if(!(I=e.currentCols[e.pasteArea.start.colIndex+d]).editable)return{isError:!0,type:"OtherError",message:"編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(t=I.label)&&void 0!==t?t:I.key)}}for(d=0;d<a;d++)for(var u=e.pasteData[d],c=0;c<p;c++){var i=c%u.length,x=u[i],I=e.currentCols[e.pasteArea.start.colIndex+c];if(!(0,e.validators[I.key])(x))return{isError:!0,type:"ValidationError",message:"バリデーションエラー: ".concat(x)}}var f=[];for(d=0;d<l;d++){u=e.pasteData[d%a];var A=r({},e.currentRows[e.pasteArea.start.rowIndex+d]),w=!1,g=function(r){var t=u[r%u.length],a=e.currentCols[e.pasteArea.start.colIndex+r],s="number"===a.type?Number(t):"select"===a.type?""===t?"":a.options.find((function(r){return r.label===t})).value:t;A[a.key]!==s&&(w=!0,A[a.key]=s)};for(c=0;c<p;c++)g(c);w&&f.push({newRow:A,oldRow:e.currentRows[e.pasteArea.start.rowIndex+d]})}return{isError:!1,updateArgument:f,pasteRange:{start:{rowIndex:e.pasteArea.start.rowIndex,colIndex:e.pasteArea.start.colIndex},end:{rowIndex:e.pasteArea.start.rowIndex+l-1,colIndex:e.pasteArea.start.colIndex+p-1}}}}export{e as paste};
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};
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: \"ValidationError\" | \"NoPasteData\" | \"OtherError\";\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\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: \"OtherError\",\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: \"OtherError\",\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: \"OtherError\",\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 pasteValue = pasteRow[colIndexForData];\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\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 pasteValue = pasteRow[j % pasteRow.length];\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\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":["paste","args","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","type","message","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","currentCols","i","col","editable","concat","_a","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","updateArguments","newRow","__assign","checkUpdatedRow","value","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"oEAuDM,SAAUA,EAAMC,SAEdC,EAAqBD,EAAKE,UAAUC,OACpCC,EAAqBC,KAAKC,UAALD,KACtBL,EAAKE,UAAUK,KAAI,SAACC,GAAQ,OAAAA,EAAIL,MAAJ,KAIjC,GAA2B,IAAvBF,GAAmD,IAAvBG,EAC9B,MAAO,CACLK,SAAS,EACTC,KAAM,cACNC,QAAS,kBAKb,IAAMC,EACJZ,EAAKa,UAAUC,IAAIC,SAAWf,EAAKa,UAAUG,MAAMD,SAAW,EAC1DE,EACJjB,EAAKa,UAAUC,IAAII,SAAWlB,EAAKa,UAAUG,MAAME,SAAW,EAE1DC,EACJP,EAAiBX,EAAqBA,EAAqBW,EACvDQ,EACJH,EAAiBb,EAAqBA,EAAqBa,EAG7D,GACEE,EAAiBnB,EAAKa,UAAUG,MAAMD,SACtCf,EAAKqB,YAAYlB,OAEjB,MAAO,CACLM,SAAS,EACTC,KAAM,aACNC,QAAS,mBAIb,GACES,EAAiBpB,EAAKa,UAAUG,MAAME,SACtClB,EAAKsB,YAAYnB,OAEjB,MAAO,CACLM,SAAS,EACTC,KAAM,aACNC,QAAS,mBAKb,IAAK,IAAIY,EAAI,EAAGA,EAAIH,EAAgBG,IAAK,CAGvC,KAFMC,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWK,IAEpDE,SACP,MAAO,CACLhB,SAAS,EACTC,KAAM,aACNC,QAAS,wCAAAe,OACE,QAATC,EAAAH,EAAII,aAAK,IAAAD,EAAAA,EAAKH,EAAIK,KAI1B,CAGA,IAASN,EAAI,EAAGA,EAAItB,EAAoBsB,IAGtC,IAFA,IAAMO,EAAW9B,EAAKE,UAAUqB,GAEvBQ,EAAI,EAAGA,EAAIX,EAAgBW,IAAK,CACvC,IAAMC,EAAkBD,EAAID,EAAS3B,OAC/B8B,EAAaH,EAASE,GACtBR,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWa,GAG7D,KAAKG,EAFYlC,EAAKmC,WAAWX,EAAIK,MAEvBI,GACZ,MAAO,CACLxB,SAAS,EACTC,KAAM,kBACNC,QAAS,eAAAe,OAAeO,GAG9B,CAGF,IAAMG,EAAkD,GAGxD,IAASb,EAAI,EAAGA,EAAIJ,EAAgBI,IAAK,CACjCO,EAAW9B,EAAKE,UAAUqB,EAAItB,GAApC,IACMoC,EAAMC,EAAA,CAAA,EAAQtC,EAAKqB,YAAYrB,EAAKa,UAAUG,MAAMD,SAAWQ,IACjEgB,GAAkB,aAEbR,GACP,IAAME,EAAaH,EAASC,EAAID,EAAS3B,QACnCqB,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWa,GACvDS,EACS,WAAbhB,EAAId,KACA+B,OAAOR,GACM,WAAbT,EAAId,KACW,KAAfuB,EACE,GACAT,EAAIkB,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOhB,QAAUK,CAAjB,IAA8BO,MAC7DP,EACFI,EAAOb,EAAIK,OAASW,IACtBD,GAAkB,EAClBF,EAAOb,EAAIK,KAAOW,IAbtB,IAAST,EAAI,EAAGA,EAAIX,EAAgBW,MAA3BA,GAiBLQ,GACFH,EAAgBS,KAAK,CACnBR,OAAMA,EACNS,OAAQ9C,EAAKqB,YAAYrB,EAAKa,UAAUG,MAAMD,SAAWQ,IAG/D,CAEA,MAAO,CACLd,SAAS,EACTsC,eAAgBX,EAChBY,WAAY,CACVhC,MAAO,CACLD,SAAUf,EAAKa,UAAUG,MAAMD,SAC/BG,SAAUlB,EAAKa,UAAUG,MAAME,UAEjCJ,IAAK,CACHC,SAAUf,EAAKa,UAAUG,MAAMD,SAAWI,EAAiB,EAC3DD,SAAUlB,EAAKa,UAAUG,MAAME,SAAWE,EAAiB,IAInE"}
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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"}
@@ -0,0 +1,2 @@
1
+ function n(n){var e=n.replace(/\r\n?/g,"\n").replace(/\n$/,"");if(""===e)return[];for(var l=[],t=[],u=0;;){var i='"'===e[u]?r(e,u):null,a=void 0;if(i)a=i.value,u=i.next;else{for(var f=u;f<e.length&&"\t"!==e[f]&&"\n"!==e[f];)f++;a=e.slice(u,f),u=f}if(t.push(a),u>=e.length)return l.push(t),l;"\n"===e[u]&&(l.push(t),t=[]),u++}}function r(n,r){for(var e="",l=r+1;l<n.length;){if('"'===n[l]){if('"'===n[l+1]){e+='"',l+=2;continue}var t=n[l+1];return void 0===t||"\t"===t||"\n"===t?{value:e,next:l+1}:null}e+=n[l],l++}return null}export{n as parseClipboardText};
2
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sources":["../../../../../src/table/paste/parse.ts"],"sourcesContent":["/**\n * Parses clipboard text copied from a spreadsheet (Excel, Google Sheets)\n * into rows of cells.\n *\n * - Cells are separated by tabs and rows by line breaks.\n * - A cell wrapped in double quotes may contain tabs and line breaks, and\n * `\"\"` inside it stands for one `\"` (this is how Excel copies such cells).\n * - Commas are kept as part of the value, so \"1,000\" stays one cell.\n * - Only the final line break is dropped; empty cells are kept.\n */\nexport function parseClipboardText(text: string): string[][] {\n const source = text.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\");\n\n if (source === \"\") {\n return [];\n }\n\n const rows: string[][] = [];\n let row: string[] = [];\n let i = 0;\n\n while (true) {\n const quoted = source[i] === '\"' ? readQuotedCell(source, i) : null;\n let cell: string;\n\n if (quoted) {\n cell = quoted.value;\n i = quoted.next;\n } else {\n let end = i;\n while (end < source.length && source[end] !== \"\\t\" && source[end] !== \"\\n\") {\n end++;\n }\n cell = source.slice(i, end);\n i = end;\n }\n\n row.push(cell);\n\n if (i >= source.length) {\n rows.push(row);\n return rows;\n }\n\n if (source[i] === \"\\n\") {\n rows.push(row);\n row = [];\n }\n i++;\n }\n}\n\n/**\n * Reads a quoted cell starting at `start`. Returns null if the text is not a\n * properly closed quoted cell, in which case it is read as plain text.\n */\nfunction readQuotedCell(\n source: string,\n start: number\n): { value: string; next: number } | null {\n let value = \"\";\n let i = start + 1;\n\n while (i < source.length) {\n if (source[i] === '\"') {\n if (source[i + 1] === '\"') {\n value += '\"';\n i += 2;\n continue;\n }\n\n const after = source[i + 1];\n if (after === undefined || after === \"\\t\" || after === \"\\n\") {\n return { value, next: i + 1 };\n }\n return null;\n }\n\n value += source[i];\n i++;\n }\n\n return null;\n}\n"],"names":["parseClipboardText","text","source","replace","rows","row","i","quoted","readQuotedCell","cell","value","next","end","length","slice","push","start","after","undefined"],"mappings":"AAUM,SAAUA,EAAmBC,GACjC,IAAMC,EAASD,EAAKE,QAAQ,SAAU,MAAMA,QAAQ,MAAO,IAE3D,GAAe,KAAXD,EACF,MAAO,GAOT,IAJA,IAAME,EAAmB,GACrBC,EAAgB,GAChBC,EAAI,IAEK,CACX,IAAMC,EAAuB,MAAdL,EAAOI,GAAaE,EAAeN,EAAQI,GAAK,KAC3DG,SAEJ,GAAIF,EACFE,EAAOF,EAAOG,MACdJ,EAAIC,EAAOI,SACN,CAEL,IADA,IAAIC,EAAMN,EACHM,EAAMV,EAAOW,QAA0B,OAAhBX,EAAOU,IAAiC,OAAhBV,EAAOU,IAC3DA,IAEFH,EAAOP,EAAOY,MAAMR,EAAGM,GACvBN,EAAIM,CACN,CAIA,GAFAP,EAAIU,KAAKN,GAELH,GAAKJ,EAAOW,OAEd,OADAT,EAAKW,KAAKV,GACHD,EAGS,OAAdF,EAAOI,KACTF,EAAKW,KAAKV,GACVA,EAAM,IAERC,GACF,CACF,CAMA,SAASE,EACPN,EACAc,GAKA,IAHA,IAAIN,EAAQ,GACRJ,EAAIU,EAAQ,EAETV,EAAIJ,EAAOW,QAAQ,CACxB,GAAkB,MAAdX,EAAOI,GAAY,CACrB,GAAsB,MAAlBJ,EAAOI,EAAI,GAAY,CACzBI,GAAS,IACTJ,GAAK,EACL,QACF,CAEA,IAAMW,EAAQf,EAAOI,EAAI,GACzB,YAAcY,IAAVD,GAAiC,OAAVA,GAA4B,OAAVA,EACpC,CAAEP,MAAKA,EAAEC,KAAML,EAAI,GAErB,IACT,CAEAI,GAASR,EAAOI,GAChBA,GACF,CAEA,OAAO,IACT"}
@@ -1,2 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import{usePasteReducer as r}from"./hooks.js";var i=n({setRows:function(){},setCols:function(){},setColValidators:function(){},setOnUpdateRowFunction:function(){},onPaste:function(){}});function e(n){var t=n.children,e=n.rows,c=n.cols,s=n.onUpdateRowFunction,u=void 0===s?function(){}:s;return o(i.Provider,{value:r({rows:e,cols:c,onUpdateRowFunction:u}),children:t})}function c(){return t(i)}export{e as PasteProvider,c as usePasteActionContext};
1
+ import{__rest as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{usePasteReducer as n}from"./hooks.js";var i=t({setRows:function(){},onPaste:function(){}});function s(t){var e=t.children,s=r(t,["children"]);return o(i.Provider,{value:n(s),children:e})}function m(){return e(i)}export{s as PasteProvider,m as usePasteActionContext};
2
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n setCols: () => {},\n setColValidators: () => {},\n setOnUpdateRowFunction: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n rows,\n cols,\n onUpdateRowFunction = () => {},\n}: {\n children: React.JSX.Element | React.JSX.Element[];\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}) {\n return (\n <PasteContext.Provider\n value={usePasteReducer({\n rows,\n cols,\n onUpdateRowFunction,\n })}\n >\n {children}\n </PasteContext.Provider>\n );\n}\n\nexport function usePasteActionContext() {\n return useContext(PasteContext);\n}\n"],"names":["PasteContext","createContext","setRows","setCols","setColValidators","setOnUpdateRowFunction","onPaste","PasteProvider","_a","children","rows","cols","_b","onUpdateRowFunction","_jsx","Provider","value","usePasteReducer","usePasteActionContext","useContext"],"mappings":"2IAIA,IAAMA,EAAeC,EAAmC,CACtDC,QAAS,WAAO,EAChBC,QAAS,WAAO,EAChBC,iBAAkB,WAAO,EACzBC,uBAAwB,WAAO,EAC/BC,QAAS,WAAO,IAGZ,SAAUC,EAAcC,GAC5B,IAAAC,EAAQD,EAAAC,SACRC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KACJC,EAAAJ,EAAAK,oBAAAA,OAAmB,IAAAD,EAAG,WAAO,EAACA,EAO9B,OACEE,EAACd,EAAae,SAAQ,CACpBC,MAAOC,EAAgB,CACrBP,KAAIA,EACJC,KAAIA,EACJE,oBAAmBA,IACnBJ,SAEDA,GAGP,UAEgBS,IACd,OAAOC,EAAWnB,EACpB"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteHookArguments, TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n ...args\n}: TPasteHookArguments & {\n children: React.JSX.Element | React.JSX.Element[];\n}) {\n return (\n <PasteContext.Provider value={usePasteReducer(args)}>\n {children}\n </PasteContext.Provider>\n );\n}\n\nexport function usePasteActionContext() {\n return useContext(PasteContext);\n}\n"],"names":["PasteContext","createContext","setRows","onPaste","PasteProvider","_a","children","args","__rest","_jsx","Provider","value","usePasteReducer","usePasteActionContext","useContext"],"mappings":"6MAIA,IAAMA,EAAeC,EAAmC,CACtDC,QAAS,WAAO,EAChBC,QAAS,WAAO,IAGZ,SAAUC,EAAcC,GAC5B,IAAAC,EAAQD,EAAAC,SACLC,EAAIC,EAAAH,EAFqB,cAM5B,OACEI,EAACT,EAAaU,UAASC,MAAOC,EAAgBL,GAAKD,SAChDA,GAGP,UAEgBO,IACd,OAAOC,EAAWd,EACpB"}
@@ -1,2 +1,2 @@
1
- import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{Checkbox as e}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{useRangeActionContext as a}from"../range/provider.js";import{useTableIdGenerator as n}from"../id/provider.js";var l=t((function(t){var l=n(),c=a().reset,p=JSON.parse(t.dataString),s=t.conditionalFormattingString.split(",");return r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(p):""),onClick:function(r){r.preventDefault(),t.onClickRow&&(t.onClickRow(p),c())},"data-testid":p.id,children:[t.existCheckbox&&o("td",{className:"w-8 h-full p-px",onClick:function(r){r.stopPropagation()},children:o(e,{row:p})}),t.cols.map((function(r,e){var a;return o(i,{id:l.getTableCellId({rowIndex:t.rowIndex,columnIndex:e}),row:p,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],editable:null!==(a=r.editable)&&void 0!==a&&a},r.key)}))]})}));export{l as Row};
1
+ import{jsxs as o,jsx as r}from"react/jsx-runtime";import{memo as e}from"react";import{Checkbox as t}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as a}from"../id/provider.js";var l=e((function(e){var l=a(),c=n().reset,p=e.row,m=e.conditionalFormattingString.split(",");return o("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ".concat(e.onClickRow?"hover:cursor-pointer":""," ").concat(e.applyRowFormatting?e.applyRowFormatting(p):""),onClick:function(o){o.preventDefault(),e.onClickRow&&(e.onClickRow(p),c())},"data-testid":p.id,children:[e.existCheckbox&&r("td",{className:"w-8 h-full p-px",onClick:function(o){o.stopPropagation()},children:r(t,{row:p})}),e.cols.map((function(o,t){var n;return r(i,{id:l.getTableCellId({rowIndex:e.rowIndex,columnIndex:t}),row:p,isExistOnClickRow:!!e.onClickRow,cellFormatClassName:m[t],editable:null!==(n=o.editable)&&void 0!==n&&n},o.key)}))]})}));export{l as Row};
2
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n className=\"w-8 h-full p-px\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","stopPropagation","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"4SAiBaA,EAAMC,GAAK,SAAiCC,GACvD,IAAMC,EAAcC,IACZC,EAAUC,UACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,EAAA,KAAA,CACEC,UAAW,0JAAAC,OACPd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWV,GACjBF,IAEJ,gBACaE,EAAIe,GAAEC,SAAA,CAElBrB,EAAMsB,eACLC,EAAA,KAAA,CACEV,UAAU,kBACVI,QAAS,SAACC,GACRA,EAAEM,iBACJ,EAACH,SAEDE,EAACE,EAAQ,CAACpB,IAAKA,MAGlBL,EAAM0B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAACO,EAAS,CAERV,GAAInB,EAAY8B,eAAe,CAC7BC,SAAUhC,EAAMgC,SAChBC,YAAaJ,IAEfxB,IAAKA,EACL6B,oBAAqBlC,EAAMe,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,QAAZC,EAAAT,EAAIQ,gBAAQ,IAAAC,GAAAA,GARjBT,EAAIU,IAWf,MAGN"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataObject, DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n row: DataObject<DataRecord>;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = props.row;\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n className=\"w-8 h-full p-px\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","stopPropagation","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"4SAiBaA,EAAMC,GAAK,SAAiCC,GACvD,IAAMC,EAAcC,IACZC,EAAUC,UACZC,EAAML,EAAMK,IACZC,EAAwBN,EAAMO,4BAA4BC,MAAM,KAEtE,OACEC,EAAA,KAAA,CACEC,UAAW,0JAAAC,OACPX,EAAMY,WAAa,uBAAyB,GAAE,KAAAD,OAC9CX,EAAMa,mBAAqBb,EAAMa,mBAAmBR,GAAO,IAC/DS,QAAS,SAACC,GACRA,EAAEC,iBAEIhB,EAAMY,aACVZ,EAAMY,WAAWP,GACjBF,IAEJ,gBACaE,EAAIY,GAAEC,SAAA,CAElBlB,EAAMmB,eACLC,EAAA,KAAA,CACEV,UAAU,kBACVI,QAAS,SAACC,GACRA,EAAEM,iBACJ,EAACH,SAEDE,EAACE,EAAQ,CAACjB,IAAKA,MAGlBL,EAAMuB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAACO,EAAS,CAERV,GAAIhB,EAAY2B,eAAe,CAC7BC,SAAU7B,EAAM6B,SAChBC,YAAaJ,IAEfrB,IAAKA,EACL0B,oBAAqB/B,EAAMY,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,QAAZC,EAAAT,EAAIQ,gBAAQ,IAAAC,GAAAA,GARjBT,EAAIU,IAWf,MAGN"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- 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,a=e.errorHandler,c=t((function(){return u.reduce((function(r,e){return r[e.key]=i(e,a),r}),{})}),[u]),l=t((function(){return{cols:u,validates:c}}),[u]);return r(o.Provider,{value:l,children:n})}function a(){return n(o).cols}function c(r){return n(o).validates[r]}function l(){return n(o).validates}export{u as ColumnsProvider,c as useColumnValidateContext,l as useColumnValidatesContext,a as useColumnsContext};
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};
3
2
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
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,3 +1,2 @@
1
- "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function n(n){var t=o(),c=t.key,i=t.asc,m=t.changeKey,s=t.changeOrder,a=c===n.columnKey;return r("div",{onClick:function(r){r.preventDefault(),a?s():m(n.columnKey)},className:"cursor-pointer",children:r(e,{sortOrder:a?i?"ASC":"DESC":"ASC",isSortActive:a})})}export{n as SortButton};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function n(n){var t=o(),c=t.key,i=t.asc,m=t.changeKey,s=t.changeOrder,u=c===n.columnKey;return r("div",{onClick:function(r){r.preventDefault(),u?s():m(n.columnKey)},className:"cursor-pointer",children:r(e,{sortOrder:u?i?"ASC":"DESC":"ASC",isSortActive:u})})}export{n as SortButton};
3
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sort/components.tsx"],"sourcesContent":["\"use client\";\n\nimport { SortIcon } from \"./icon\";\nimport { useSortContext } from \"./provider\";\n\ntype TPropsSort = {\n columnKey: string;\n};\n\nexport function SortButton(props: TPropsSort) {\n const { key, asc, changeKey, changeOrder } = useSortContext();\n\n const isActive = key === props.columnKey;\n\n return (\n <div\n onClick={(e) => {\n e.preventDefault();\n if (isActive) {\n changeOrder();\n } else {\n changeKey(props.columnKey);\n }\n }}\n className=\"cursor-pointer\"\n >\n <SortIcon\n sortOrder={isActive ? (asc ? \"ASC\" : \"DESC\") : \"ASC\"}\n isSortActive={isActive}\n />\n </div>\n );\n}\n"],"names":["SortButton","props","_a","useSortContext","key","asc","changeKey","changeOrder","isActive","columnKey","_jsx","onClick","e","preventDefault","className","children","SortIcon","sortOrder","isSortActive"],"mappings":"yIASM,SAAUA,EAAWC,GACnB,IAAAC,EAAuCC,IAArCC,EAAGF,EAAAE,IAAEC,EAAGH,EAAAG,IAAEC,EAASJ,EAAAI,UAAEC,gBAEvBC,EAAWJ,IAAQH,EAAMQ,UAE/B,OACEC,EAAA,MAAA,CACEC,QAAS,SAACC,GACRA,EAAEC,iBACEL,EACFD,IAEAD,EAAUL,EAAMQ,UAEpB,EACAK,UAAU,iBAAgBC,SAE1BL,EAACM,EAAQ,CACPC,UAAWT,EAAYH,EAAM,MAAQ,OAAU,MAC/Ca,aAAcV,KAItB"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}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(r){var t=o(r.initialCondition),e=t.state,a=t.actions,d=t.sortTiming;return n(i.Provider,{value:d,children:n(u.Provider,{value:e,children:n(c.Provider,{value:a,children:r.children})})})}function d(){return r(r(r({},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(c)}function s(){return e(i)}export{a as SortProvider,m as useSortActionContext,d as useSortContext,s as useSortTimingContext};
3
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
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,3 +1,2 @@
1
- "use client";
2
- 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 g}from"../libs/conditional-formatting.js";import{Editor as u}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 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 H}from"../frame/frame.js";import{ComponentProvider as I,useGenerateSortButton as W}from"./component-provider/provider.js";import{SelectBoxProvider as D}from"../../select-box/provider.js";function P(i){var t,d,l,x;return r(I,{children:r(C,{id:i.id,children:r(S,{initialState: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===(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagenation)||void 0===l?void 0:l.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,children:[r(v,{enableDeprecatedCopy:null===(x=i.deprecatedOptions)||void 0===x?void 0:x.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(D,{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"}),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,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,dataString:c[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(u,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{P 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 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 g}from"../libs/conditional-formatting.js";import{Editor as u}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;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===(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagenation)||void 0===l?void 0:l.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===(x=i.deprecatedOptions)||void 0===x?void 0:x.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:g(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(u,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{T as default};
3
2
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
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={props.initialCondition?.pagenation?.rowCountPerPage}\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","_c","_b","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","deprecatedOptions","_d","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,3 +1,2 @@
1
- "use client";
2
- import{jsx as r,Fragment as o}from"react/jsx-runtime";import{createContext as t,useCallback as n,useContext as e}from"react";import{SortButton as i}from"../../sort/components.js";import"../../sort/provider.js";var u=t((function(){return r(o,{})}));function c(o){var t=n((function(o){return r(i,{columnKey:o})}),[]);return r(u.Provider,{value:t,children:o.children})}function m(){return e(u)}export{c as ComponentProvider,m as useGenerateSortButton};
1
+ "use client";import{jsx as r,Fragment as t}from"react/jsx-runtime";import{createContext as n,useCallback as o,useContext as e}from"react";import{SortButton as i}from"../../sort/components.js";import"../../sort/provider.js";var u=n((function(){return r(t,{})}));function c(t){var n=o((function(t){return r(i,{columnKey:t})}),[]);return r(u.Provider,{value:n,children:t.children})}function m(){return e(u)}export{c as ComponentProvider,m as useGenerateSortButton};
3
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../../src/table/table/component-provider/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useCallback, useContext } from \"react\";\nimport { SortButton } from \"../../sort\";\n\nconst GenerateSortButtonContext = createContext<\n (columnKey: string) => React.JSX.Element\n>(() => <></>);\n\nexport function ComponentProvider(props: { children: React.ReactNode }) {\n const generateSortButton = useCallback((columnKey: string) => {\n return <SortButton columnKey={columnKey} />;\n }, []);\n\n return (\n <GenerateSortButtonContext.Provider value={generateSortButton}>\n {props.children}\n </GenerateSortButtonContext.Provider>\n );\n}\n\nexport function useGenerateSortButton() {\n return useContext(GenerateSortButtonContext);\n}\n"],"names":["GenerateSortButtonContext","createContext","_jsx","_Fragment","ComponentProvider","props","generateSortButton","useCallback","columnKey","SortButton","Provider","value","children","useGenerateSortButton","useContext"],"mappings":"+NAKA,IAAMA,EAA4BC,GAEhC,WAAM,OAAAC,EAAAC,EAAA,CAAA,EAAA,IAEF,SAAUC,EAAkBC,GAChC,IAAMC,EAAqBC,GAAY,SAACC,GACtC,OAAON,EAACO,EAAU,CAACD,UAAWA,GAChC,GAAG,IAEH,OACEN,EAACF,EAA0BU,SAAQ,CAACC,MAAOL,WACxCD,EAAMO,UAGb,UAEgBC,IACd,OAAOC,EAAWd,EACpB"}
@@ -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 a}from"../filter-v2/context.js";function f(f){var p=a().filter,l=e(),d=l.sort,m=l.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 p(f.rows)}),[p,h,f.rows.length]);t((function(){w(C.length)}),[C.length]);var S=r((function(){return f.checkbox?f.rows.filter((function(r){var t;return null===(t=f.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[f.checkbox,f.rows]);t((function(){x({type:"SET",payload:{checkedRecords:S}})}),[S]);var D=r((function(){return d(C)}),[C,h]);t((function(){m()}),[f.rows]);var M=r((function(){return g(D)}),[g,D]),O=r((function(){return M.map((function(r){return r.id}))}),[M]),E=r((function(){return new Set(O)}),[O]),F=r((function(){return f.rows.filter((function(r){return E.has(r.id)})).reduce((function(r,t){var o=Object.keys(t).sort().reduce((function(r,o){return r[o]=t[o],r}),{});return r[t.id]={data:o,stringValue:JSON.stringify(o)},r}),{})}),[f.rows,E]);return t((function(){b(f.cols.length)}),[f.cols.length]),t((function(){R(O.length)}),[O.length]),t((function(){var r=O.map((function(r){return F[r].data}));k(r),j(r)}),[F]),{cols:f.cols,rowMaps:F,pageRowIds:O}}export{f as useTable};
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};
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 const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\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 const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number | Date });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\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","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","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,sBAG9CC,EAAeC,GACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAb,GACN,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,GAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,GAAQ,WACzB,OAAKxB,EAAM6B,SAIJ7B,EAAMyB,KAAKxB,QAAO,SAAC6B,GAAG,IAAA3B,EAAK,eAAAA,EAAAH,EAAM6B,+BAAUE,QAAQD,EAAI,IAHrD,EAIX,GAAG,CAAC9B,EAAM6B,SAAU7B,EAAMyB,OAE1BE,GAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,GACjB,WAAM,OAAAnB,EAAKkB,EAAL,GACN,CAACA,EAAchB,IAGjBoB,GAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,GACf,WAAM,OAAAZ,EAAWuB,EAAX,GACN,CAACvB,EAAYuB,IAGTE,EAAab,GAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAJ,GAAtB,GAA+B,CAACH,IAC3DI,EAAgBhB,GAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAR,GAAqB,CAACA,IAEpDK,EAAUlB,GACd,WACE,OAAAxB,EAAMyB,KACHxB,QAAO,SAAC6B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,GAAtB,IAChBK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCzB,OACAuC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACT,GAAG,CAAA,GAML,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACT,GAAG,CAAA,EAfL,GAgBF,CAAC7C,EAAMyB,KAAMe,IAiBf,OAdAb,GAAU,WACRN,EAAsBrB,EAAMsD,KAAK5B,OACnC,GAAG,CAAC1B,EAAMsD,KAAK5B,SAEfC,GAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,GAAU,WACR,IAAMF,EAAOY,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,IAAZ,IACpCjC,EAAeQ,GACfV,EAAgBU,EAClB,GAAG,CAACiB,IAEG,CACLY,KAAMtD,EAAMsD,KACZZ,QAAOA,EACPL,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 { 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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import * as react from 'react';
2
2
  import react__default from 'react';
3
3
 
4
+ /** Errors reported to `onPasteError` when pasted data cannot be applied. */
5
+ type TPasteError = {
6
+ type: "NOT_ENOUGH_ROWS" | "NOT_ENOUGH_COLUMNS" | "NOT_EDITABLE_COLUMN";
7
+ message: string;
8
+ };
9
+
4
10
  interface Options {
5
11
  /**
6
12
  * The label is the string that will be displayed for the option.
@@ -123,6 +129,7 @@ type TColumnProperty<T extends DataRecord> = {
123
129
  minWidth?: number;
124
130
  };
125
131
  type TTableColumn<T extends DataRecord> = TColumnProperty<T> & TCellEditingCondition<T>;
132
+ type TColumnType = Exclude<TTableColumn<{}>["type"], undefined>;
126
133
  type TCheckboxProperty<T extends DataRecord> = {
127
134
  checkbox?: {
128
135
  checked: (row: DataObject<T>) => boolean;
@@ -156,6 +163,11 @@ type TPropsTable<T extends DataRecord> = {
156
163
  applyRowFormatting?: (row: DataObject<T>) => TailwindCssStyle;
157
164
  conditionalFormattings?: TConditionalFormatting<T>[];
158
165
  errorHandler?: (errors: TErrorValidation[]) => void;
166
+ /**
167
+ * Called when pasted data cannot be applied, e.g. it does not fit in the
168
+ * table or targets a read-only column. Defaults to window.alert.
169
+ */
170
+ onPasteError?: (error: TPasteError) => void;
159
171
  deprecatedOptions?: {
160
172
  enableDeprecatedCopy?: boolean;
161
173
  };
@@ -277,4 +289,4 @@ interface IReturnFileUploader {
277
289
  }
278
290
  declare function useFileUploader(props: IPropsFileUploader): IReturnFileUploader;
279
291
 
280
- export { FileUploader, Table, useFileUploader };
292
+ 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.10.2",
3
+ "version": "2.0.0",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -49,7 +49,6 @@
49
49
  "rollup": "^4.12.0",
50
50
  "rollup-plugin-dts": "^6.1.0",
51
51
  "rollup-plugin-peer-deps-external": "^2.2.4",
52
- "rollup-plugin-preserve-directives": "^0.4.0",
53
52
  "storybook": "^10.6.2",
54
53
  "tailwindcss": "^4.3.3",
55
54
  "tslib": "^2.6.2",
@@ -64,7 +63,6 @@
64
63
  "package.json",
65
64
  "README.md",
66
65
  "LICENSE",
67
- "types",
68
66
  "dist"
69
67
  ],
70
68
  "publishConfig": {