@teppen/react-ui 1.8.15 → 1.10.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 (151) hide show
  1. package/README.md +16 -3
  2. package/dist/cjs/node_modules/react-icons/bi/index.js +1 -1
  3. package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -1
  4. package/dist/cjs/node_modules/react-icons/lib/iconBase.js +1 -1
  5. package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -1
  6. package/dist/cjs/node_modules/react-icons/lu/index.js +1 -1
  7. package/dist/cjs/node_modules/react-icons/lu/index.js.map +1 -1
  8. package/dist/cjs/node_modules/react-icons/md/index.js +1 -1
  9. package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -1
  10. package/dist/cjs/node_modules/react-icons/ti/index.js +1 -1
  11. package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -1
  12. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
  13. package/dist/cjs/src/file-uploader/component.js.map +1 -1
  14. package/dist/cjs/src/file-uploader/hook.js.map +1 -1
  15. package/dist/cjs/src/icon/cancel-icon.js.map +1 -1
  16. package/dist/cjs/src/lib/errors.js.map +1 -1
  17. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/context.js.map +1 -1
  18. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -1
  19. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/provider.js.map +1 -1
  20. package/dist/cjs/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -1
  21. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -1
  22. package/dist/cjs/src/search-bar/id-generator/context.js.map +1 -1
  23. package/dist/cjs/src/select-box/id/provider.js.map +1 -1
  24. package/dist/cjs/src/select-box/lib/id-generator.js.map +1 -1
  25. package/dist/cjs/src/select-box/options-window/component.js.map +1 -1
  26. package/dist/cjs/src/select-box/options-window/context.js.map +1 -1
  27. package/dist/cjs/src/select-box/options-window/hook.js.map +1 -1
  28. package/dist/cjs/src/select-box/options-window/provider.js.map +1 -1
  29. package/dist/cjs/src/select-box/options-window/reducer.js.map +1 -1
  30. package/dist/cjs/src/select-box/parts/frame.js.map +1 -1
  31. package/dist/cjs/src/select-box/parts/input-area.js +1 -1
  32. package/dist/cjs/src/table/cell/hooks.js.map +1 -1
  33. package/dist/cjs/src/table/cell/ui/cell.js +1 -1
  34. package/dist/cjs/src/table/checkbox/hooks.js.map +1 -1
  35. package/dist/cjs/src/table/checkbox/provider.js.map +1 -1
  36. package/dist/cjs/src/table/copy/components.js.map +1 -1
  37. package/dist/cjs/src/table/copy/hooks.js.map +1 -1
  38. package/dist/cjs/src/table/copy/provider.js.map +1 -1
  39. package/dist/cjs/src/table/edit/hooks.js.map +1 -1
  40. package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
  41. package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
  42. package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
  43. package/dist/cjs/src/table/filter-v2/context.js.map +1 -1
  44. package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
  45. package/dist/cjs/src/table/filter-v2/provider.js.map +1 -1
  46. package/dist/cjs/src/table/filter-v2/reducer.js.map +1 -1
  47. package/dist/cjs/src/table/header/columns-width/context.js.map +1 -1
  48. package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -1
  49. package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -1
  50. package/dist/cjs/src/table/header/header-v2.js +1 -1
  51. package/dist/cjs/src/table/header/header-v2.js.map +1 -1
  52. package/dist/cjs/src/table/header/header.js +1 -1
  53. package/dist/cjs/src/table/header/x-scroll-position/context.js.map +1 -1
  54. package/dist/cjs/src/table/header/x-scroll-position/provider.js.map +1 -1
  55. package/dist/cjs/src/table/header/x-scroll-position/reducer.js.map +1 -1
  56. package/dist/cjs/src/table/id/id-generator.js.map +1 -1
  57. package/dist/cjs/src/table/id/provider.js.map +1 -1
  58. package/dist/cjs/src/table/lib/errors.js.map +1 -1
  59. package/dist/cjs/src/table/libs/conditional-formatting.js.map +1 -1
  60. package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
  61. package/dist/cjs/src/table/pagenation/components.js +1 -1
  62. package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
  63. package/dist/cjs/src/table/paste/hooks.js +1 -1
  64. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  65. package/dist/cjs/src/table/paste/logic.js.map +1 -1
  66. package/dist/cjs/src/table/paste/provider.js.map +1 -1
  67. package/dist/cjs/src/table/range/hooks.js.map +1 -1
  68. package/dist/cjs/src/table/range/provider.js +1 -1
  69. package/dist/cjs/src/table/range/provider.js.map +1 -1
  70. package/dist/cjs/src/table/sheet/components.js +1 -1
  71. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  72. package/dist/cjs/src/table/sort/hooks.js.map +1 -1
  73. package/dist/cjs/src/table/sort/icon.js.map +1 -1
  74. package/dist/cjs/src/table/table/base.js +1 -1
  75. package/dist/cjs/src/table/table/hook.js.map +1 -1
  76. package/dist/cjs/src/table/table-property/hook.js.map +1 -1
  77. package/dist/cjs/src/table/table-property/provider.js.map +1 -1
  78. package/dist/esm/node_modules/react-icons/bi/index.js +1 -1
  79. package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -1
  80. package/dist/esm/node_modules/react-icons/lib/iconBase.js +1 -1
  81. package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -1
  82. package/dist/esm/node_modules/react-icons/lu/index.js +1 -1
  83. package/dist/esm/node_modules/react-icons/lu/index.js.map +1 -1
  84. package/dist/esm/node_modules/react-icons/md/index.js +1 -1
  85. package/dist/esm/node_modules/react-icons/md/index.js.map +1 -1
  86. package/dist/esm/node_modules/react-icons/ti/index.js +1 -1
  87. package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -1
  88. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  89. package/dist/esm/src/file-uploader/component.js +1 -1
  90. package/dist/esm/src/file-uploader/component.js.map +1 -1
  91. package/dist/esm/src/file-uploader/hook.js.map +1 -1
  92. package/dist/esm/src/icon/cancel-icon.js.map +1 -1
  93. package/dist/esm/src/lib/errors.js.map +1 -1
  94. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/hook.js.map +1 -1
  95. package/dist/esm/src/search-bar/condition-search-bar/condition-input-management/reducer.js.map +1 -1
  96. package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -1
  97. package/dist/esm/src/select-box/lib/id-generator.js.map +1 -1
  98. package/dist/esm/src/select-box/options-window/component.js.map +1 -1
  99. package/dist/esm/src/select-box/options-window/hook.js.map +1 -1
  100. package/dist/esm/src/select-box/options-window/reducer.js.map +1 -1
  101. package/dist/esm/src/select-box/parts/frame.js.map +1 -1
  102. package/dist/esm/src/select-box/parts/input-area.js +1 -1
  103. package/dist/esm/src/table/cell/hooks.js.map +1 -1
  104. package/dist/esm/src/table/cell/ui/cell.js +1 -1
  105. package/dist/esm/src/table/checkbox/provider.js.map +1 -1
  106. package/dist/esm/src/table/copy/components.js.map +1 -1
  107. package/dist/esm/src/table/copy/hooks.js.map +1 -1
  108. package/dist/esm/src/table/copy/provider.js.map +1 -1
  109. package/dist/esm/src/table/edit/hooks.js.map +1 -1
  110. package/dist/esm/src/table/edit/provider.js +1 -1
  111. package/dist/esm/src/table/edit/ui/base-input.js +1 -1
  112. package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
  113. package/dist/esm/src/table/edit/ui/select-input.js +1 -1
  114. package/dist/esm/src/table/filter-v2/context.js.map +1 -1
  115. package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
  116. package/dist/esm/src/table/filter-v2/provider.js.map +1 -1
  117. package/dist/esm/src/table/filter-v2/reducer.js.map +1 -1
  118. package/dist/esm/src/table/header/columns-width/provider.js +1 -1
  119. package/dist/esm/src/table/header/columns-width/reducer.js +1 -1
  120. package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -1
  121. package/dist/esm/src/table/header/header-v2-hook.js.map +1 -1
  122. package/dist/esm/src/table/header/header-v2.js +1 -1
  123. package/dist/esm/src/table/header/header-v2.js.map +1 -1
  124. package/dist/esm/src/table/header/header.js +1 -1
  125. package/dist/esm/src/table/header/x-scroll-position/reducer.js.map +1 -1
  126. package/dist/esm/src/table/id/id-generator.js.map +1 -1
  127. package/dist/esm/src/table/id/provider.js.map +1 -1
  128. package/dist/esm/src/table/lib/errors.js.map +1 -1
  129. package/dist/esm/src/table/libs/conditional-formatting.js.map +1 -1
  130. package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
  131. package/dist/esm/src/table/pagenation/components.js +1 -1
  132. package/dist/esm/src/table/pagenation/constants.js.map +1 -1
  133. package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
  134. package/dist/esm/src/table/paste/hooks.js +1 -1
  135. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  136. package/dist/esm/src/table/paste/logic.js.map +1 -1
  137. package/dist/esm/src/table/paste/provider.js.map +1 -1
  138. package/dist/esm/src/table/range/hooks.js.map +1 -1
  139. package/dist/esm/src/table/range/provider.js +1 -1
  140. package/dist/esm/src/table/range/provider.js.map +1 -1
  141. package/dist/esm/src/table/sheet/components.js +1 -1
  142. package/dist/esm/src/table/sheet/components.js.map +1 -1
  143. package/dist/esm/src/table/sheet/providers.js +1 -1
  144. package/dist/esm/src/table/sort/hooks.js.map +1 -1
  145. package/dist/esm/src/table/sort/icon.js.map +1 -1
  146. package/dist/esm/src/table/table/base.js +1 -1
  147. package/dist/esm/src/table/table/hook.js.map +1 -1
  148. package/dist/esm/src/table/table-property/hook.js.map +1 -1
  149. package/dist/esm/src/table/table-property/provider.js.map +1 -1
  150. package/dist/index.d.ts +11 -10
  151. package/package.json +33 -25
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("./providers.js");exports.DisplayRange=function(){var n=t.usePageContext(),r=n.enable,s=n.from,a=n.to,u=n.rowCount;return r?e.jsxs("p",{className:"text-center text-sm text-gray-600",children:[s+1," - ",a<u?a:u," of ",u]}):e.jsx(e.Fragment,{})},exports.Pagenation=function(){var n=t.usePageContext(),r=n.enable,s=n.current,a=n.pageCount,u=n.jump,c=n.prev,i=n.next;return r?e.jsxs("div",{className:"flex justify-center gap-2",children:[e.jsx("button",{className:"text-sm",onClick:function(){return u(1)},disabled:1===s,children:"≪"}),e.jsx("button",{className:"text-sm",onClick:function(){return c()},disabled:1===s,children:"<"}),Array.from({length:a},(function(e,t){return t+1})).filter((function(e){return s-2<=e&&e<=s+2})).map((function(t){return e.jsx("button",{className:"text-sm ".concat(s===t?"text-blue-600":""),onClick:function(){return u(t)},children:t},t)})),e.jsx("button",{className:"text-sm",onClick:function(){return i()},disabled:s===a,children:">"}),e.jsx("button",{className:"text-sm",onClick:function(){return u(a)},disabled:s===a,children:"≫"})]}):e.jsx(e.Fragment,{})};
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("./providers.js");exports.DisplayRange=function(){var r=t.usePageContext(),n=r.enable,s=r.from,u=r.to,o=r.rowCount;return n?e.jsxs("p",{className:"text-center text-sm text-gray-600",children:[s+1," - ",u<o?u:o," of ",o]}):e.jsx(e.Fragment,{})},exports.Pagenation=function(){var r=t.usePageContext(),n=r.enable,s=r.current,u=r.pageCount,o=r.jump,a=r.prev,c=r.next;return n?e.jsxs("div",{className:"flex justify-center gap-2",children:[e.jsx("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return o(1)},disabled:1===s,children:"≪"}),e.jsx("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return a()},disabled:1===s,children:"<"}),Array.from({length:u},(function(e,t){return t+1})).filter((function(e){return s-2<=e&&e<=s+2})).map((function(t){return e.jsx("button",{className:"text-sm cursor-pointer disabled:cursor-default ".concat(s===t?"text-blue-600":""),onClick:function(){return o(t)},children:t},t)})),e.jsx("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return c()},disabled:s===u,children:">"}),e.jsx("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return o(u)},disabled:s===u,children:"≫"})]}):e.jsx(e.Fragment,{})};
3
3
  //# sourceMappingURL=components.js.map
@@ -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","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WAPpBF,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,SAAAA,EAAAA,SAAA,GACKJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,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,EAIJI,WAAAA,EAAAA,SAAA,CAAA,EAAAJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,wBAEM,SAAyBY,GACvB,IAAAC,EAAoBC,EAAAA,WACxBf,EACAa,QAAAA,EAAgBG,EAAAA,oBAFXf,OAAOgB,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEd,KAAM,OAAQK,QAAS,CAAEI,WAAUA,OACtE,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEd,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAAA,SAAQ,WACnB,OAAKvB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEwB,EAAKD,EAAAA,SAAQ,WACjB,OAAKvB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEEyB,EAAaP,eACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLrB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CsB,QAAS5B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBuB,UAAW7B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEc,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","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"sHAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,WAAAA,EAAAA,SAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,SAAAA,WAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,WAAAA,EAAAA,SAAA,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,SAAAA,WAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,SAAAA,WAAA,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,SAAAA,WAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,wBAEM,SAAyBY,GACvB,IAAAC,EAAoBC,EAAAA,WACxBf,EACAa,QAAAA,EAAgBG,EAAAA,oBAFXf,OAAOgB,OAKRC,EAAOC,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDG,EAAOD,EAAAA,aAAY,WAAM,OAAAF,EAAS,CAAEd,KAAM,QAAjB,GAA4B,CAACc,IACtDI,EAAOF,EAAAA,aACX,SAACP,GAAuB,OAAAK,EAAS,CAAEd,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACK,IAGGK,EAAcH,eAClB,SAACZ,GACC,OAAAU,EAAS,CAAEd,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACU,IAGGM,EAAOC,EAAAA,SAAQ,WACnB,OAAKvB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEwB,EAAKD,EAAAA,SAAQ,WACjB,OAAKvB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEEyB,EAAaP,eACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLrB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CsB,QAAS5B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBuB,UAAW7B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEc,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),a=require("../sheet/providers.js"),s=require("../range/provider.js"),n=require("./logic.js"),o=function(t,a){switch(a.type){case"setRows":return e.__assign(e.__assign({},t),{rows:a.payload.rows});case"setCols":return e.__assign(e.__assign({},t),{cols:a.payload.cols});case"setColValidators":return e.__assign(e.__assign({},t),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},t),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!t.isFocused)return t;var s=a.payload.pasteData,o=t.rows,r=t.cols,i=t.colValidators,u=t.start,c=t.end;if(!t.onUpdateRowFunction)return t;var l=n.paste({pasteData:s,pasteArea:{start:u,end:c},currentRows:o,currentCols:r,validators:i,tableArea:{start:{rowIndex:0,colIndex:0},end:{rowIndex:o.length-1,colIndex:r.length-1}}});return l.isError?("ValidationError"!==l.type&&"NoPasteData"!==l.type&&alert(l.message),t):e.__assign(e.__assign({},t),{updateParameters:{arguments:l.updateArgument,pastedRange:l.pasteRange,timing:t.updateParameters.timing+1}});case"focus":return e.__assign(e.__assign({},t),{isFocused:!0,start:a.payload.start,end:a.payload.end});case"unfocus":return e.__assign(e.__assign({},t),{isFocused:!1})}};exports.usePasteReducer=function(n){var r=s.useRangeActionContext().setRange,i=t.useReducer(o,e.__assign(e.__assign({},n),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),u=i[0],c=i[1],l=a.useColumnValidatesContext(),d=s.useRangeStateContext();t.useEffect((function(){c({type:"setCols",payload:{cols:n.cols}})}),[n.cols]),t.useEffect((function(){d.isSelecting?c({type:"focus",payload:{start:d.start,end:d.end}}):c({type:"unfocus"})}),[d]);var p=t.useCallback((function(e){c({type:"setRows",payload:{rows:e}})}),[]),g=t.useCallback((function(e){c({type:"setCols",payload:{cols:e}})}),[]),f=t.useCallback((function(e){c({type:"setColValidators",payload:{colValidators:e}})}),[]);t.useEffect((function(){f(l)}),[l]);var _=t.useCallback((function(e){c({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),m=t.useCallback((function(e){c({type:"onPaste",payload:{pasteData:e}})}),[]);return t.useEffect((function(){u.updateParameters.arguments.length>0&&u.updateParameters.arguments.forEach((function(e){var t,a=e.newRow,s=e.oldRow;null===(t=u.onUpdateRowFunction)||void 0===t||t.call(u,a,s)})),u.updateParameters.pastedRange&&r(u.updateParameters.pastedRange)}),[u.updateParameters.timing,u.onUpdateRowFunction]),t.useEffect((function(){var e=function(e){if(d.isSelecting&&e.clipboardData){e.preventDefault();var t=e.clipboardData.getData("Text");m(t.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))}};return document.addEventListener("paste",e),function(){document.removeEventListener("paste",e)}}),[d.isSelecting]),t.useMemo((function(){return{setRows:p,setCols:g,setColValidators:f,setOnUpdateRowFunction:_,onPaste:m}}),[])};
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),a=require("../sheet/providers.js"),s=require("../range/provider.js"),n=require("./logic.js"),o=function(t,a){switch(a.type){case"setRows":return e.__assign(e.__assign({},t),{rows:a.payload.rows});case"setCols":return e.__assign(e.__assign({},t),{cols:a.payload.cols});case"setColValidators":return e.__assign(e.__assign({},t),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},t),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!t.isFocused)return t;var s=a.payload.pasteData,o=t.rows,r=t.cols,i=t.colValidators,u=t.start,c=t.end;if(!t.onUpdateRowFunction)return t;var l=n.paste({pasteData:s,pasteArea:{start:u,end:c},currentRows:o,currentCols:r,validators:i,tableArea:{end:{rowIndex:o.length-1,colIndex:r.length-1}}});return l.isError?("ValidationError"!==l.type&&"NoPasteData"!==l.type&&alert(l.message),t):e.__assign(e.__assign({},t),{updateParameters:{arguments:l.updateArgument,pastedRange:l.pasteRange,timing:t.updateParameters.timing+1}});case"focus":return e.__assign(e.__assign({},t),{isFocused:!0,start:a.payload.start,end:a.payload.end});case"unfocus":return e.__assign(e.__assign({},t),{isFocused:!1})}};exports.usePasteReducer=function(n){var r=s.useRangeActionContext().setRange,i=t.useReducer(o,e.__assign(e.__assign({},n),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),u=i[0],c=i[1],l=a.useColumnValidatesContext(),d=s.useRangeStateContext();t.useEffect((function(){c({type:"setCols",payload:{cols:n.cols}})}),[n.cols]),t.useEffect((function(){d.isSelecting?c({type:"focus",payload:{start:d.start,end:d.end}}):c({type:"unfocus"})}),[d]);var p=t.useCallback((function(e){c({type:"setRows",payload:{rows:e}})}),[]),g=t.useCallback((function(e){c({type:"setCols",payload:{cols:e}})}),[]),f=t.useCallback((function(e){c({type:"setColValidators",payload:{colValidators:e}})}),[]);t.useEffect((function(){f(l)}),[l]);var _=t.useCallback((function(e){c({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),m=t.useCallback((function(e){c({type:"onPaste",payload:{pasteData:e}})}),[]);return t.useEffect((function(){u.updateParameters.arguments.length>0&&u.updateParameters.arguments.forEach((function(e){var t,a=e.newRow,s=e.oldRow;null===(t=u.onUpdateRowFunction)||void 0===t||t.call(u,a,s)})),u.updateParameters.pastedRange&&r(u.updateParameters.pastedRange)}),[u.updateParameters.timing,u.onUpdateRowFunction]),t.useEffect((function(){var e=function(e){if(d.isSelecting&&e.clipboardData){e.preventDefault();var t=e.clipboardData.getData("Text");m(t.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))}};return document.addEventListener("paste",e),function(){document.removeEventListener("paste",e)}}),[d.isSelecting]),t.useMemo((function(){return{setRows:p,setCols:g,setColValidators:f,setOnUpdateRowFunction:_,onPaste:m}}),[])};
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","colIndex","length","isError","alert","message","updateParameters","arguments","updateArgument","pastedRange","pasteRange","timing","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, 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","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 +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":["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":"qFAuDM,SAAgBA,SAEdC,EAAqBD,EAAKE,UAAUC,OACpCC,EAAqBC,KAAKC,UAALD,KACtBL,EAAKE,UAAUK,KAAI,SAACC,GAAQ,OAAAA,EAAIL,MAAM,KAI3C,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,wCACPe,OAAc,QAAdC,EAAAH,EAAII,aAAU,IAAAD,EAAAA,EAAAH,EAAIK,KAIzB,CAGD,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,eAAee,OAAAO,GAG7B,CAGH,IAAMG,EAAkD,GAGxD,IAASb,EAAI,EAAGA,EAAIJ,EAAgBI,IAAK,CACjCO,EAAW9B,EAAKE,UAAUqB,EAAItB,GAApC,IACMoC,EAAcC,EAAAA,SAAA,CAAA,EAAAtC,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,CAAU,IAAGO,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,IAG9D,CAED,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: \"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":["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":"qFAuDM,SAAgBA,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,EAAAA,SAAA,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 +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: JSX.Element | 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","_a","children","rows","cols","_b","onUpdateRowFunction","_jsx","Provider","value","usePasteReducer","useContext"],"mappings":"2FAIMA,EAAeC,EAAAA,cAAmC,CACtDC,QAAS,WAAQ,EACjBC,QAAS,WAAQ,EACjBC,iBAAkB,WAAQ,EAC1BC,uBAAwB,WAAQ,EAChCC,QAAS,WAAQ,0BAGb,SAAwBC,GAC5B,IAAAC,EAAQD,EAAAC,SACRC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KACJC,EAAAJ,EAAAK,oBAAAA,OAAsB,IAAAD,EAAA,WAAQ,EAAAA,EAO9B,OACEE,MAACb,EAAac,SACZ,CAAAC,MAAOC,EAAAA,gBAAgB,CACrBP,KAAIA,EACJC,KAAIA,EACJE,oBAAmBA,IAGpBJ,SAAAA,GAGP,2CAGE,OAAOS,EAAAA,WAAWjB,EACpB"}
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","_a","children","rows","cols","_b","onUpdateRowFunction","_jsx","Provider","value","usePasteReducer","useContext"],"mappings":"2FAIMA,EAAeC,EAAAA,cAAmC,CACtDC,QAAS,WAAO,EAChBC,QAAS,WAAO,EAChBC,iBAAkB,WAAO,EACzBC,uBAAwB,WAAO,EAC/BC,QAAS,WAAO,0BAGZ,SAAwBC,GAC5B,IAAAC,EAAQD,EAAAC,SACRC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KACJC,EAAAJ,EAAAK,oBAAAA,OAAmB,IAAAD,EAAG,WAAO,EAACA,EAO9B,OACEE,EAAAA,IAACb,EAAac,SAAQ,CACpBC,MAAOC,EAAAA,gBAAgB,CACrBP,KAAIA,EACJC,KAAIA,EACJE,oBAAmBA,IACnBJ,SAEDA,GAGP,2CAGE,OAAOS,EAAAA,WAAWjB,EACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { useTableIdGenerator } from \"../id\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveTop\"の場合の説明:\n * - Actionのtypeが\"moveTop\"の場合、選択範囲を一番上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番上に設定します。\n */\n case \"moveTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: 0,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveBottom\"の場合の説明:\n * - Actionのtypeが\"moveBottom\"の場合、選択範囲を一番下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番下に設定します。\n */\n case \"moveBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendTop\"の場合の説明:\n * - Actionのtypeが\"extendTop\"の場合、選択範囲を一番上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番上に拡張します。\n */\n case \"extendTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: 0,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendBottom\"の場合の説明:\n * - Actionのtypeが\"extendBottom\"の場合、選択範囲を一番下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番下に拡張します。\n */\n case \"extendBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const IdGenerator = useTableIdGenerator();\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveTop: () => {\n dispatch({ type: \"moveTop\" });\n },\n moveBottom: () => {\n dispatch({ type: \"moveBottom\" });\n },\n moveRightEnd: () => {\n dispatch({ type: \"moveRightEnd\" });\n },\n moveLeftEnd: () => {\n dispatch({ type: \"moveLeftEnd\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n extendTop: () => {\n dispatch({ type: \"extendTop\" });\n },\n extendBottom: () => {\n dispatch({ type: \"extendBottom\" });\n },\n extendRightEnd: () => {\n dispatch({ type: \"extendRightEnd\" });\n },\n extendLeftEnd: () => {\n dispatch({ type: \"extendLeftEnd\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.start.rowIndex,\n columnIndex: state.start.colIndex,\n })\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop,\n x: rectTable.left - tableElement.scrollLeft,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","IdGenerator","useTableIdGenerator","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","columnIndex","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","left","scrollLeft","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { useTableIdGenerator } from \"../id\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveTop\"の場合の説明:\n * - Actionのtypeが\"moveTop\"の場合、選択範囲を一番上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番上に設定します。\n */\n case \"moveTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: 0,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveBottom\"の場合の説明:\n * - Actionのtypeが\"moveBottom\"の場合、選択範囲を一番下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番下に設定します。\n */\n case \"moveBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendTop\"の場合の説明:\n * - Actionのtypeが\"extendTop\"の場合、選択範囲を一番上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番上に拡張します。\n */\n case \"extendTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: 0,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendBottom\"の場合の説明:\n * - Actionのtypeが\"extendBottom\"の場合、選択範囲を一番下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番下に拡張します。\n */\n case \"extendBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const IdGenerator = useTableIdGenerator();\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveTop: () => {\n dispatch({ type: \"moveTop\" });\n },\n moveBottom: () => {\n dispatch({ type: \"moveBottom\" });\n },\n moveRightEnd: () => {\n dispatch({ type: \"moveRightEnd\" });\n },\n moveLeftEnd: () => {\n dispatch({ type: \"moveLeftEnd\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n extendTop: () => {\n dispatch({ type: \"extendTop\" });\n },\n extendBottom: () => {\n dispatch({ type: \"extendBottom\" });\n },\n extendRightEnd: () => {\n dispatch({ type: \"extendRightEnd\" });\n },\n extendLeftEnd: () => {\n dispatch({ type: \"extendLeftEnd\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.start.rowIndex,\n columnIndex: state.start.colIndex,\n })\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop,\n x: rectTable.left - tableElement.scrollLeft,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","IdGenerator","useTableIdGenerator","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","columnIndex","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","left","scrollLeft","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react/jsx-runtime"),t=require("react"),o=require("../lib/errors.js"),r=require("./hooks.js"),i=require("../table-property/provider.js"),m=require("../id/provider.js"),s=t.createContext({isSelecting:!1}),u=t.createContext({setMax:o.NoImplementeFunction,startSelectRange:o.NoImplementeFunction,moveSelectRange:o.NoImplementeFunction,endSelectRange:o.NoImplementeFunction,moveUp:o.NoImplementeFunction,moveDown:o.NoImplementeFunction,moveLeft:o.NoImplementeFunction,moveRight:o.NoImplementeFunction,moveTop:o.NoImplementeFunction,moveBottom:o.NoImplementeFunction,moveRightEnd:o.NoImplementeFunction,moveLeftEnd:o.NoImplementeFunction,extendUp:o.NoImplementeFunction,extendDown:o.NoImplementeFunction,extendLeft:o.NoImplementeFunction,extendRight:o.NoImplementeFunction,extendTop:o.NoImplementeFunction,extendBottom:o.NoImplementeFunction,extendRightEnd:o.NoImplementeFunction,extendLeftEnd:o.NoImplementeFunction,reset:o.NoImplementeFunction,setRange:o.NoImplementeFunction});function l(){return t.useContext(s)}function c(){return t.useContext(u)}function a(){var e=c().setMax,o=i.useTablePropertyStateContext(),r=o.maxDisplayRowCount,m=o.maxDisplayColCount;return t.useEffect((function(){e({maxRowIndex:r-1,maxColIndex:m-1})}),[r,m]),n.jsx(n.Fragment,{})}exports.RangeProvider=function(e){var t=e.children,o=r.useRangeReducer(),i=o.state,m=o.actions;return n.jsx(s.Provider,{value:i,children:n.jsxs(u.Provider,{value:m,children:[n.jsx(a,{}),t]})})},exports.TestRange=function(e){var o=m.useTableIdGenerator(),r=l();if(t.useEffect((function(){if(r.isSelecting){var e=document.getElementById(o.getTableCellId({rowIndex:r.end.rowIndex,columnIndex:r.end.colIndex}));e&&(e.scrollIntoView({behavior:"instant",block:"nearest",inline:"nearest"}),e.focus())}}),[r]),!r.isSelecting)return n.jsx(n.Fragment,{});var i=r.rangeBox,s=r.start,u=r.end;return s.xEnd<u.xEnd?u.xEnd:s.xEnd,s.yEnd<u.yEnd?u.yEnd:s.yEnd,n.jsx(n.Fragment,{children:n.jsx("div",{className:"absolute border border-gray-500 bg-gray-500 bg-opacity-10 ".concat(e.isCopied?"border-dashed":"border-solid"),style:{top:i.top,left:i.left,width:i.width,height:i.height,pointerEvents:"none"}})})},exports.useRangeActionContext=c,exports.useRangeContext=function(){return e.__assign(e.__assign({},l()),c())},exports.useRangeStateContext=l;
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react/jsx-runtime"),t=require("react"),o=require("../lib/errors.js"),r=require("./hooks.js"),i=require("../table-property/provider.js"),m=require("../id/provider.js"),s=t.createContext({isSelecting:!1}),u=t.createContext({setMax:o.NoImplementeFunction,startSelectRange:o.NoImplementeFunction,moveSelectRange:o.NoImplementeFunction,endSelectRange:o.NoImplementeFunction,moveUp:o.NoImplementeFunction,moveDown:o.NoImplementeFunction,moveLeft:o.NoImplementeFunction,moveRight:o.NoImplementeFunction,moveTop:o.NoImplementeFunction,moveBottom:o.NoImplementeFunction,moveRightEnd:o.NoImplementeFunction,moveLeftEnd:o.NoImplementeFunction,extendUp:o.NoImplementeFunction,extendDown:o.NoImplementeFunction,extendLeft:o.NoImplementeFunction,extendRight:o.NoImplementeFunction,extendTop:o.NoImplementeFunction,extendBottom:o.NoImplementeFunction,extendRightEnd:o.NoImplementeFunction,extendLeftEnd:o.NoImplementeFunction,reset:o.NoImplementeFunction,setRange:o.NoImplementeFunction});function l(){return t.useContext(s)}function c(){return t.useContext(u)}function a(){var e=c().setMax,o=i.useTablePropertyStateContext(),r=o.maxDisplayRowCount,m=o.maxDisplayColCount;return t.useEffect((function(){e({maxRowIndex:r-1,maxColIndex:m-1})}),[r,m]),n.jsx(n.Fragment,{})}exports.RangeProvider=function(e){var t=e.children,o=r.useRangeReducer(),i=o.state,m=o.actions;return n.jsx(s.Provider,{value:i,children:n.jsxs(u.Provider,{value:m,children:[n.jsx(a,{}),t]})})},exports.TestRange=function(e){var o=m.useTableIdGenerator(),r=l();if(t.useEffect((function(){if(r.isSelecting){var e=document.getElementById(o.getTableCellId({rowIndex:r.end.rowIndex,columnIndex:r.end.colIndex}));e&&(e.scrollIntoView({behavior:"instant",block:"nearest",inline:"nearest"}),e.focus())}}),[r]),!r.isSelecting)return n.jsx(n.Fragment,{});var i=r.rangeBox,s=r.start,u=r.end;return s.xEnd<u.xEnd?u.xEnd:s.xEnd,s.yEnd<u.yEnd?u.yEnd:s.yEnd,n.jsx(n.Fragment,{children:n.jsx("div",{className:"absolute border border-gray-500 bg-gray-500/10 ".concat(e.isCopied?"border-dashed":"border-solid"),style:{top:i.top,left:i.left,width:i.width,height:i.height,pointerEvents:"none"}})})},exports.useRangeActionContext=c,exports.useRangeContext=function(){return e.__assign(e.__assign({},l()),c())},exports.useRangeStateContext=l;
2
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n moveTop: NoImplementeFunction,\n moveBottom: NoImplementeFunction,\n moveRightEnd: NoImplementeFunction,\n moveLeftEnd: NoImplementeFunction,\n extendUp: NoImplementeFunction,\n extendDown: NoImplementeFunction,\n extendLeft: NoImplementeFunction,\n extendRight: NoImplementeFunction,\n extendTop: NoImplementeFunction,\n extendBottom: NoImplementeFunction,\n extendRightEnd: NoImplementeFunction,\n extendLeftEnd: NoImplementeFunction,\n reset: NoImplementeFunction,\n setRange: NoImplementeFunction,\n});\n\nexport function useRangeStateContext() {\n return useContext(RangeStateContext);\n}\n\nexport function useRangeActionContext() {\n return useContext(RangeActionContext);\n}\n\nexport function useRangeContext() {\n return { ...useRangeStateContext(), ...useRangeActionContext() };\n}\n\nfunction EffectSetMax() {\n const { setMax } = useRangeActionContext();\n const { maxDisplayRowCount, maxDisplayColCount } =\n useTablePropertyStateContext();\n\n useEffect(() => {\n setMax({\n maxRowIndex: maxDisplayRowCount - 1,\n maxColIndex: maxDisplayColCount - 1,\n });\n }, [maxDisplayRowCount, maxDisplayColCount]);\n\n return <></>;\n}\n\nexport function TestRange(props: { isCopied?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const state = useRangeStateContext();\n\n useEffect(() => {\n if (state.isSelecting) {\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n\n if (endElement) {\n endElement.scrollIntoView({\n behavior: \"instant\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500 bg-opacity-10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useRangeStateContext","useContext","useRangeActionContext","EffectSetMax","_a","useTablePropertyStateContext","maxDisplayRowCount","maxDisplayColCount","useEffect","maxRowIndex","maxColIndex","_jsx","children","_b","useRangeReducer","state","actions","jsx","Provider","value","_jsxs","props","IdGenerator","useTableIdGenerator","endElement","document","getElementById","getTableCellId","rowIndex","end","columnIndex","colIndex","scrollIntoView","behavior","block","inline","focus","rangeBox","start","xEnd","yEnd","className","concat","isCopied","style","top","left","width","height","pointerEvents","__assign"],"mappings":"yPAOMA,EAAoBC,EAAAA,cAAkC,CAC1DC,aAAa,IAGTC,EAAqBF,EAAAA,cAAmC,CAC5DG,OAAQC,EAAoBA,qBAC5BC,iBAAkBD,EAAoBA,qBACtCE,gBAAiBF,EAAoBA,qBACrCG,eAAgBH,EAAoBA,qBACpCI,OAAQJ,EAAoBA,qBAC5BK,SAAUL,EAAoBA,qBAC9BM,SAAUN,EAAoBA,qBAC9BO,UAAWP,EAAoBA,qBAC/BQ,QAASR,EAAoBA,qBAC7BS,WAAYT,EAAoBA,qBAChCU,aAAcV,EAAoBA,qBAClCW,YAAaX,EAAoBA,qBACjCY,SAAUZ,EAAoBA,qBAC9Ba,WAAYb,EAAoBA,qBAChCc,WAAYd,EAAoBA,qBAChCe,YAAaf,EAAoBA,qBACjCgB,UAAWhB,EAAoBA,qBAC/BiB,aAAcjB,EAAoBA,qBAClCkB,eAAgBlB,EAAoBA,qBACpCmB,cAAenB,EAAoBA,qBACnCoB,MAAOpB,EAAoBA,qBAC3BqB,SAAUrB,EAAoBA,gCAGhBsB,IACd,OAAOC,EAAAA,WAAW5B,EACpB,UAEgB6B,IACd,OAAOD,EAAAA,WAAWzB,EACpB,CAMA,SAAS2B,IACC,IAAA1B,EAAWyB,WACbE,EACJC,EAA4BA,+BADtBC,EAAkBF,EAAAE,mBAAEC,EAAkBH,EAAAG,mBAU9C,OAPAC,EAAAA,WAAU,WACR/B,EAAO,CACLgC,YAAaH,EAAqB,EAClCI,YAAaH,EAAqB,GAEtC,GAAG,CAACD,EAAoBC,IAEjBI,oBACT,uBAiEM,SAAwBP,GAC5B,IAAAQ,EAAQR,EAAAQ,SAIFC,EAAqBC,EAAeA,kBAAlCC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEL,EAACM,IAAA5C,EAAkB6C,SAAS,CAAAC,MAAOJ,EACjCH,SAAAQ,OAAC5C,EAAmB0C,SAAQ,CAACC,MAAOH,EAAOJ,SAAA,CACzCD,MAACR,EAAe,CAAA,GACfS,MAIT,oBA9EM,SAAoBS,GACxB,IAAMC,EAAcC,EAAAA,sBACdR,EAAQf,IAsBd,GApBAQ,EAAAA,WAAU,WACR,GAAIO,EAAMxC,YAAa,CACrB,IAAMiD,EAAaC,SAASC,eAC1BJ,EAAYK,eAAe,CACzBC,SAAUb,EAAMc,IAAID,SACpBE,YAAaf,EAAMc,IAAIE,YAIvBP,IACFA,EAAWQ,eAAe,CACxBC,SAAU,UACVC,MAAO,UACPC,OAAQ,YAEVX,EAAWY,QAEd,CACH,GAAG,CAACrB,KAECA,EAAMxC,YACT,OAAOoC,qBAGD,IAAA0B,EAAyBtB,EAAKsB,SAApBC,EAAevB,EAAKuB,MAAbT,EAAQd,MAOjC,OAJKuB,EAAMC,KAAOV,EAAIU,KAAOV,EAAIU,KAAOD,EAAMC,KACzCD,EAAME,KAAOX,EAAIW,KAAOX,EAAIW,KAAOF,EAAME,KAI5C7B,EAAAA,yBACEA,EACEM,IAAA,MAAA,CAAAwB,UAAW,6DACTC,OAAArB,EAAMsB,SAAW,gBAAkB,gBAErCC,MAAO,CACLC,IAAKR,EAASQ,IACdC,KAAMT,EAASS,KACfC,MAAOV,EAASU,MAChBC,OAAQX,EAASW,OACjBC,cAAe,WAezB,qEA/EE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYlD,KAA2BE,IACzC"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n moveTop: NoImplementeFunction,\n moveBottom: NoImplementeFunction,\n moveRightEnd: NoImplementeFunction,\n moveLeftEnd: NoImplementeFunction,\n extendUp: NoImplementeFunction,\n extendDown: NoImplementeFunction,\n extendLeft: NoImplementeFunction,\n extendRight: NoImplementeFunction,\n extendTop: NoImplementeFunction,\n extendBottom: NoImplementeFunction,\n extendRightEnd: NoImplementeFunction,\n extendLeftEnd: NoImplementeFunction,\n reset: NoImplementeFunction,\n setRange: NoImplementeFunction,\n});\n\nexport function useRangeStateContext() {\n return useContext(RangeStateContext);\n}\n\nexport function useRangeActionContext() {\n return useContext(RangeActionContext);\n}\n\nexport function useRangeContext() {\n return { ...useRangeStateContext(), ...useRangeActionContext() };\n}\n\nfunction EffectSetMax() {\n const { setMax } = useRangeActionContext();\n const { maxDisplayRowCount, maxDisplayColCount } =\n useTablePropertyStateContext();\n\n useEffect(() => {\n setMax({\n maxRowIndex: maxDisplayRowCount - 1,\n maxColIndex: maxDisplayColCount - 1,\n });\n }, [maxDisplayRowCount, maxDisplayColCount]);\n\n return <></>;\n}\n\nexport function TestRange(props: { isCopied?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const state = useRangeStateContext();\n\n useEffect(() => {\n if (state.isSelecting) {\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n\n if (endElement) {\n endElement.scrollIntoView({\n behavior: \"instant\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500/10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: React.JSX.Element | React.JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useRangeStateContext","useContext","useRangeActionContext","EffectSetMax","_a","useTablePropertyStateContext","maxDisplayRowCount","maxDisplayColCount","useEffect","maxRowIndex","maxColIndex","_jsx","children","_b","useRangeReducer","state","actions","Provider","value","_jsxs","props","IdGenerator","useTableIdGenerator","endElement","document","getElementById","getTableCellId","rowIndex","end","columnIndex","colIndex","scrollIntoView","behavior","block","inline","focus","rangeBox","start","xEnd","yEnd","className","concat","isCopied","style","top","left","width","height","pointerEvents","__assign"],"mappings":"yPAOMA,EAAoBC,EAAAA,cAAkC,CAC1DC,aAAa,IAGTC,EAAqBF,EAAAA,cAAmC,CAC5DG,OAAQC,EAAAA,qBACRC,iBAAkBD,EAAAA,qBAClBE,gBAAiBF,EAAAA,qBACjBG,eAAgBH,EAAAA,qBAChBI,OAAQJ,EAAAA,qBACRK,SAAUL,EAAAA,qBACVM,SAAUN,EAAAA,qBACVO,UAAWP,EAAAA,qBACXQ,QAASR,EAAAA,qBACTS,WAAYT,EAAAA,qBACZU,aAAcV,EAAAA,qBACdW,YAAaX,EAAAA,qBACbY,SAAUZ,EAAAA,qBACVa,WAAYb,EAAAA,qBACZc,WAAYd,EAAAA,qBACZe,YAAaf,EAAAA,qBACbgB,UAAWhB,EAAAA,qBACXiB,aAAcjB,EAAAA,qBACdkB,eAAgBlB,EAAAA,qBAChBmB,cAAenB,EAAAA,qBACfoB,MAAOpB,EAAAA,qBACPqB,SAAUrB,EAAAA,gCAGIsB,IACd,OAAOC,EAAAA,WAAW5B,EACpB,UAEgB6B,IACd,OAAOD,EAAAA,WAAWzB,EACpB,CAMA,SAAS2B,IACC,IAAA1B,EAAWyB,WACbE,EACJC,EAAAA,+BADMC,EAAkBF,EAAAE,mBAAEC,EAAkBH,EAAAG,mBAU9C,OAPAC,EAAAA,WAAU,WACR/B,EAAO,CACLgC,YAAaH,EAAqB,EAClCI,YAAaH,EAAqB,GAEtC,GAAG,CAACD,EAAoBC,IAEjBI,EAAAA,kBACT,uBAiEM,SAAwBP,GAC5B,IAAAQ,EAAQR,EAAAQ,SAIFC,EAAqBC,EAAAA,kBAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEL,EAAAA,IAACtC,EAAkB4C,SAAQ,CAACC,MAAOH,EAAKH,SACtCO,OAAC3C,EAAmByC,SAAQ,CAACC,MAAOF,EAAOJ,SAAA,CACzCD,MAACR,EAAY,CAAA,GACZS,MAIT,oBA9EM,SAAoBQ,GACxB,IAAMC,EAAcC,EAAAA,sBACdP,EAAQf,IAsBd,GApBAQ,EAAAA,WAAU,WACR,GAAIO,EAAMxC,YAAa,CACrB,IAAMgD,EAAaC,SAASC,eAC1BJ,EAAYK,eAAe,CACzBC,SAAUZ,EAAMa,IAAID,SACpBE,YAAad,EAAMa,IAAIE,YAIvBP,IACFA,EAAWQ,eAAe,CACxBC,SAAU,UACVC,MAAO,UACPC,OAAQ,YAEVX,EAAWY,QAEf,CACF,GAAG,CAACpB,KAECA,EAAMxC,YACT,OAAOoC,EAAAA,mBAGD,IAAAyB,EAAyBrB,EAAKqB,SAApBC,EAAetB,EAAKsB,MAAbT,EAAQb,MAOjC,OAJKsB,EAAMC,KAAOV,EAAIU,KAAOV,EAAIU,KAAOD,EAAMC,KACzCD,EAAME,KAAOX,EAAIW,KAAOX,EAAIW,KAAOF,EAAME,KAI5C5B,EAAAA,yBACEA,EAAAA,IAAA,MAAA,CACE6B,UAAW,kDAAAC,OACTrB,EAAMsB,SAAW,gBAAkB,gBAErCC,MAAO,CACLC,IAAKR,EAASQ,IACdC,KAAMT,EAASS,KACfC,MAAOV,EAASU,MAChBC,OAAQX,EAASW,OACjBC,cAAe,WAezB,qEA/EE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYjD,KAA2BE,IACzC"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../checkbox/components.js"),o=require("../cell/ui/cell.js"),a=require("../range/provider.js"),n=require("../id/provider.js"),i=r.memo((function(r){var i=n.useTableIdGenerator(),l=a.useRangeActionContext().reset,c=JSON.parse(r.dataString),s=r.conditionalFormattingString.split(",");return e.jsxs("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 after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(c):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(c),l())},"data-testid":c.id,children:[r.existCheckbox&&e.jsx("td",{className:"w-8 h-full",onClick:function(e){e.stopPropagation()},children:e.jsx(t.Checkbox,{row:c})}),r.cols.map((function(t,a){var n;return e.jsx(o.TableCell,{id:i.getTableCellId({rowIndex:r.rowIndex,columnIndex:a}),row:c,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:s[a],editable:null!==(n=t.editable)&&void 0!==n&&n},t.key)}))]})}));exports.Row=i;
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../checkbox/components.js"),o=require("../cell/ui/cell.js"),a=require("../range/provider.js"),n=require("../id/provider.js"),i=r.memo((function(r){var i=n.useTableIdGenerator(),l=a.useRangeActionContext().reset,c=JSON.parse(r.dataString),s=r.conditionalFormattingString.split(",");return e.jsxs("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(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(c):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(c),l())},"data-testid":c.id,children:[r.existCheckbox&&e.jsx("td",{className:"w-8 h-full p-px",onClick:function(e){e.stopPropagation()},children:e.jsx(t.Checkbox,{row:c})}),r.cols.map((function(t,a){var n;return e.jsx(o.TableCell,{id:i.getTableCellId({rowIndex:r.rowIndex,columnIndex:a}),row:c,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:s[a],editable:null!==(n=t.editable)&&void 0!==n&&n},t.key)}))]})}));exports.Row=i;
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 after:hover: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\"\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":"2MAiBaA,EAAMC,EAAIA,MAAC,SAAiCC,GACvD,IAAMC,EAAcC,EAAAA,sBACZC,EAAUC,gCACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,OACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAC5C,KAAAD,OAAAd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWV,GACjBF,IAEH,gBACYE,EAAIe,GAEhBC,SAAA,CAAArB,EAAMsB,eACLC,EAAAA,IAAA,KAAA,CACEV,UAAU,aACVI,QAAS,SAACC,GACRA,EAAEM,iBACH,EAAAH,SAEDE,MAACE,EAAQA,SAAA,CAACpB,IAAKA,MAGlBL,EAAM0B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,MAACO,EAASA,UAAA,CAERV,GAAInB,EAAY8B,eAAe,CAC7BC,SAAUhC,EAAMgC,SAChBC,YAAaJ,IAEfxB,IAAKA,EACL6B,oBAAqBlC,EAAMe,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAA0B,QAAhBC,EAAAT,EAAIQ,gBAAY,IAAAC,GAAAA,GARrBT,EAAIU,UAcrB"}
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":"2MAiBaA,EAAMC,EAAAA,MAAK,SAAiCC,GACvD,IAAMC,EAAcC,EAAAA,sBACZC,EAAUC,EAAAA,8BACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,OAAA,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,EAAAA,IAAA,KAAA,CACEV,UAAU,kBACVI,QAAS,SAACC,GACRA,EAAEM,iBACJ,EAACH,SAEDE,EAAAA,IAACE,EAAAA,SAAQ,CAACpB,IAAKA,MAGlBL,EAAM0B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAAAA,IAACO,EAAAA,UAAS,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 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] === \"\" && b[state.key] === \"\") {\n return 0;\n } else if (a[state.key] === \"\") {\n return 1;\n } else if (b[state.key] === \"\") {\n return -1;\n }\n\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,EAAAA,SAAAA,EAAAA,SAAA,GACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAO,CAAAK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,GAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAUA,WAACZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAM,GAAAF,MAAK,SAACI,EAAGC,GACjB,MAAqB,KAAjBD,EAAEtB,EAAMG,MAAgC,KAAjBoB,EAAEvB,EAAMG,KAC1B,EACmB,KAAjBmB,EAAEtB,EAAMG,KACV,EACmB,KAAjBoB,EAAEvB,EAAMG,MACT,EAGNmB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,KAAO,EAAI,EAEtBiB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,IAAM,GAAK,EAEnB,CACT,GAAE,GACJ,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BwB,WAC7B,WAAM,MAAC,CACLrB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cACrB,GACF,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BmB,QAPcD,EAAAA,SACd,WAAM,MAAC,CAAET,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAAG,GACrD,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/sort/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TReturnSortReducer, TSortReducer } from \"./types\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nconst reducer: TSortReducer = (state, action) => {\n switch (action.type) {\n case \"changeKey\":\n return {\n key: action.payload.key,\n asc: true,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n case \"changeOrder\":\n if (state.isUpdatedData) {\n return {\n ...state,\n isUpdatedData: false,\n sortTiming: state.sortTiming + 1,\n };\n } else {\n return { ...state, asc: !state.asc, sortTiming: state.sortTiming + 1 };\n }\n case \"updateData\":\n return { ...state, isUpdatedData: true };\n }\n};\n\nexport function useSortReducer<T extends DataRecord>(initial?: {\n key: string;\n asc?: boolean;\n}): TReturnSortReducer<T> {\n const [state, dispatch] = useReducer(reducer, {\n key: initial?.key ?? \"id\",\n asc: initial?.asc ?? true,\n isUpdatedData: false,\n sortTiming: 0,\n });\n\n const changeKey = (key: string) => {\n dispatch({ type: \"changeKey\", payload: { key } });\n };\n\n const changeOrder = () => {\n dispatch({ type: \"changeOrder\" });\n };\n\n const updatedData = () => {\n dispatch({ type: \"updateData\" });\n };\n\n const sort = useCallback(\n <U extends DataRecord>(rows: DataObject<U>[]) =>\n [...rows].sort((a, b) => {\n if (a[state.key] === \"\" && b[state.key] === \"\") {\n return 0;\n } else if (a[state.key] === \"\") {\n return 1;\n } else if (b[state.key] === \"\") {\n return -1;\n }\n\n if (a[state.key] < b[state.key]) {\n return state.asc ? -1 : 1;\n }\n if (a[state.key] > b[state.key]) {\n return state.asc ? 1 : -1;\n }\n return 0;\n }),\n [state.key, state.asc]\n );\n\n const stateExcludeSortTiming = useMemo(\n () => ({\n key: state.key,\n asc: state.asc,\n isUpdatedData: state.isUpdatedData,\n }),\n [state.key, state.asc, state.isUpdatedData]\n );\n\n const actions = useMemo(\n () => ({ changeKey, changeOrder, updatedData, sort }),\n [sort]\n );\n\n return {\n state: stateExcludeSortTiming,\n actions,\n sortTiming: state.sortTiming,\n };\n}\n"],"names":["reducer","state","action","type","key","payload","asc","isUpdatedData","sortTiming","__assign","initial","_c","useReducer","_a","_b","dispatch","changeKey","changeOrder","updatedData","sort","useCallback","rows","__spreadArray","a","b","useMemo","actions"],"mappings":"0FAIMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,YACH,MAAO,CACLC,IAAKF,EAAOG,QAAQD,IACpBE,KAAK,EACLC,eAAe,EACfC,WAAYP,EAAMO,WAAa,GAEnC,IAAK,cACH,OAAIP,EAAMM,cACRE,WAAAA,EAAAA,SAAA,CAAA,EACKR,GAAK,CACRM,eAAe,EACfC,WAAYP,EAAMO,WAAa,IAGjCC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAK,CAAEK,KAAML,EAAMK,IAAKE,WAAYP,EAAMO,WAAa,IAEvE,IAAK,aACH,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYR,GAAK,CAAEM,eAAe,IAExC,yBAEM,SAA+CG,WAI7CC,EAAoBC,EAAAA,WAAWZ,EAAS,CAC5CI,IAAiB,QAAZS,EAAAH,eAAAA,EAASN,WAAG,IAAAS,EAAAA,EAAI,KACrBP,IAAiB,QAAZQ,EAAAJ,eAAAA,EAASJ,WAAG,IAAAQ,GAAAA,EACjBP,eAAe,EACfC,WAAY,IAJPP,EAAKU,EAAA,GAAEI,OAORC,EAAY,SAACZ,GACjBW,EAAS,CAAEZ,KAAM,YAAaE,QAAS,CAAED,IAAGA,IAC9C,EAEMa,EAAc,WAClBF,EAAS,CAAEZ,KAAM,eACnB,EAEMe,EAAc,WAClBH,EAAS,CAAEZ,KAAM,cACnB,EAEMgB,EAAOC,eACX,SAAuBC,GACrB,OAAAC,EAAAA,cAAA,GAAID,GAAI,GAAEF,MAAK,SAACI,EAAGC,GACjB,MAAqB,KAAjBD,EAAEtB,EAAMG,MAAgC,KAAjBoB,EAAEvB,EAAMG,KAC1B,EACmB,KAAjBmB,EAAEtB,EAAMG,KACV,EACmB,KAAjBoB,EAAEvB,EAAMG,MACV,EAGLmB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,KAAM,EAAK,EAEtBiB,EAAEtB,EAAMG,KAAOoB,EAAEvB,EAAMG,KAClBH,EAAMK,IAAM,GAAI,EAElB,CACT,GAhBA,GAiBF,CAACL,EAAMG,IAAKH,EAAMK,MAiBpB,MAAO,CACLL,MAf6BwB,WAC7B,WAAM,MAAA,CACJrB,IAAKH,EAAMG,IACXE,IAAKL,EAAMK,IACXC,cAAeN,EAAMM,cAHjB,GAKN,CAACN,EAAMG,IAAKH,EAAMK,IAAKL,EAAMM,gBAU7BmB,QAPcD,EAAAA,SACd,WAAM,MAAA,CAAGT,UAASA,EAAEC,YAAWA,EAAEC,YAAWA,EAAEC,KAAIA,EAA5C,GACN,CAACA,IAMDX,WAAYP,EAAMO,WAEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sources":["../../../../../src/table/sort/icon.tsx"],"sourcesContent":["import { memo } from \"react\";\n\ntype TPropsSortIcon = {\n sortOrder?: \"ASC\" | \"DESC\";\n isSortActive?: boolean;\n size?: number;\n};\n\nconst SortIcon = memo(function SI(props: TPropsSortIcon) {\n const size = props.size || 16;\n const order = props.sortOrder || \"ASC\";\n\n return (\n <div\n className=\"relative\"\n style={{ width: `${size}px`, height: `${size}px` }}\n >\n <div\n className={`absolute top-1/2 right-0 w-[40%] h-[20%] duration-300 ${\n order === \"ASC\" ? \"-translate-y-[250%]\" : \"translate-y-[150%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-[70%] h-[20%] duration-300 -translate-y-1/2 ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-full h-[20%] duration-300 ${\n order === \"ASC\" ? \"translate-y-[150%]\" : \"-translate-y-[250%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n </div>\n );\n});\n\nexport { SortIcon };\n"],"names":["SortIcon","memo","props","size","order","sortOrder","_jsxs","className","style","width","height","children","_jsx","concat","isSortActive"],"mappings":"gDAQMA,mBAAeC,MAAC,SAAYC,GAChC,IAAMC,EAAOD,EAAMC,MAAQ,GACrBC,EAAQF,EAAMG,WAAa,MAEjC,OACEC,EAAAA,KACE,MAAA,CAAAC,UAAU,WACVC,MAAO,CAAEC,MAAO,UAAGN,EAAI,MAAMO,OAAQ,UAAGP,EAAI,OAAMQ,SAAA,CAElDC,EAAAA,WACEL,UAAW,gEACC,QAAVH,EAAkB,sBAAwB,qBAE1C,KAAAS,OAAAX,EAAMY,aACF,cACA,wCAGRF,EAAAA,IACE,MAAA,CAAAL,UAAW,2EAAAM,OACTX,EAAMY,aACF,cACA,wCAGRF,EAAAA,IACE,MAAA,CAAAL,UAAW,wDAAAM,OACC,QAAVT,EAAkB,qBAAuB,sBAAqB,MAAAS,OAE9DX,EAAMY,aACF,cACA,0CAKd"}
1
+ {"version":3,"file":"icon.js","sources":["../../../../../src/table/sort/icon.tsx"],"sourcesContent":["import { memo } from \"react\";\n\ntype TPropsSortIcon = {\n sortOrder?: \"ASC\" | \"DESC\";\n isSortActive?: boolean;\n size?: number;\n};\n\nconst SortIcon = memo(function SI(props: TPropsSortIcon) {\n const size = props.size || 16;\n const order = props.sortOrder || \"ASC\";\n\n return (\n <div\n className=\"relative\"\n style={{ width: `${size}px`, height: `${size}px` }}\n >\n <div\n className={`absolute top-1/2 right-0 w-[40%] h-[20%] duration-300 ${\n order === \"ASC\" ? \"-translate-y-[250%]\" : \"translate-y-[150%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-[70%] h-[20%] duration-300 -translate-y-1/2 ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n <div\n className={`absolute top-1/2 right-0 w-full h-[20%] duration-300 ${\n order === \"ASC\" ? \"translate-y-[150%]\" : \"-translate-y-[250%]\"\n } ${\n props.isSortActive\n ? \"bg-gray-700\"\n : \"bg-gray-200 border border-gray-500\"\n }`}\n ></div>\n </div>\n );\n});\n\nexport { SortIcon };\n"],"names":["SortIcon","memo","props","size","order","sortOrder","_jsxs","className","style","width","height","children","_jsx","concat","isSortActive"],"mappings":"gDAQMA,mBAAWC,MAAK,SAAYC,GAChC,IAAMC,EAAOD,EAAMC,MAAQ,GACrBC,EAAQF,EAAMG,WAAa,MAEjC,OACEC,EAAAA,KAAA,MAAA,CACEC,UAAU,WACVC,MAAO,CAAEC,MAAO,UAAGN,EAAI,MAAMO,OAAQ,UAAGP,EAAI,OAAMQ,SAAA,CAElDC,EAAAA,WACEL,UAAW,gEACC,QAAVH,EAAkB,sBAAwB,qBAAoB,KAAAS,OAE9DX,EAAMY,aACF,cACA,wCAGRF,MAAA,MAAA,CACEL,UAAW,2EAAAM,OACTX,EAAMY,aACF,cACA,wCAGRF,EAAAA,IAAA,MAAA,CACEL,UAAW,wDAAAM,OACC,QAAVT,EAAkB,qBAAuB,sBAAqB,MAAAS,OAE9DX,EAAMY,aACF,cACA,0CAKd"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),i=require("./hook.js"),o=require("../header/header.js"),s=require("../pagenation/providers.js"),t=require("../pagenation/components.js");require("../filter-v2/context.js");var n=require("../filter-v2/provider.js");require("../sort/icon.js");var d=require("../sort/provider.js"),a=require("../sheet/providers.js"),l=require("../checkbox/provider.js"),c=require("../edit/provider.js"),x=require("../table-property/provider.js"),j=require("../operation/components/keyboard-setting.js"),h=require("../sheet/components.js"),u=require("../paste/provider.js"),p=require("../libs/conditional-formatting.js"),v=require("../edit/ui/editor.js"),m=require("../range/provider.js"),g=require("../copy/provider.js"),b=require("../copy/components.js"),q=require("../id/provider.js"),w=require("../header/header-v2.js");require("../header/columns-width/context.js");var P=require("../header/columns-width/provider.js");require("../header/x-scroll-position/context.js");var C=require("../header/x-scroll-position/provider.js"),k=require("../frame/frame.js"),y=require("./component-provider/provider.js"),S=require("../../select-box/provider.js");function f(e){var s=i.useTable(e),n=s.cols,d=s.rowMaps,a=s.pageRowIds,l=q.useTableIdGenerator(),c=y.useGenerateSortButton();return r.jsxs("div",{className:"w-full max-w-full max-h-full",children:[r.jsxs("div",{children:[r.jsx(w.TableHeader,{cols:n,checkbox:!!e.checkbox,rows:e.rows,maxWidth:e.maxWidth,generateSortButton:c}),r.jsx(S.SelectBoxProvider,{children:r.jsxs(k.Frame,{id:l.getTableId(),maxHeight:e.maxHeight,maxWidth:e.maxWidth,displayScroll:!1,children:[r.jsxs("table",{className:"table",children:[r.jsx("thead",{children:r.jsxs("tr",{children:[e.checkbox&&r.jsx("th",{}),n.map((function(e){return r.jsx(o.TableHeaderElement,{keyname:e.key.toString()},e.key.toString())}))]})}),r.jsxs("tbody",{children:[0===a.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(i,o){return r.jsx(h.Row,{existCheckbox:!!e.checkbox,rowIndex:o,dataString:d[i].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:p.generateFormattingString(d[i].data,n,e.conditionalFormattings)},i)}))]})]}),r.jsx(m.TestRange,{}),r.jsx(v.Editor,{rowMaps:d,pageRowIds:a})]})})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(t.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(t.Pagenation,{})})]})]})}module.exports=function(i){var o,t,h,p;return r.jsx(y.ComponentProvider,{children:r.jsx(q.TableIdGeneratorProvider,{id:i.id,children:r.jsx(P.ColumnsWidthProvider,{initialState:i.cols,children:r.jsx(n.FilterProvider,{initialConditions:[],children:r.jsx(d.SortProvider,{initialCondition:null===(o=i.initialCondition)||void 0===o?void 0:o.sort,children:r.jsx(s.PagenationProvider,{rowCount:i.rows.length,perPage:null===(h=null===(t=i.initialCondition)||void 0===t?void 0:t.pagenation)||void 0===h?void 0:h.rowCountPerPage,children:r.jsx(l.CheckboxProvider,{checkbox:i.checkbox,children:r.jsx(l.CheckboxStatusProvider,{checkboxCount:i.rows.length,children:r.jsx(a.ColumnsProvider,{cols:i.cols,errorHandler:i.errorHandler,children:r.jsx(c.EditProvider,{children:r.jsx(x.TablePropertyProvider,{children:r.jsx(m.RangeProvider,{children:r.jsxs(g.CopyProvider,{rows:i.rows,cols:i.cols,children:[r.jsx(b.CopiedMessage,{}),r.jsxs(u.PasteProvider,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,children:[r.jsx(j.KeyboardSetting,{enableDeprecatedCopy:null===(p=i.deprecatedOptions)||void 0===p?void 0:p.enableDeprecatedCopy}),r.jsx(C.ScrollXPositionProvider,{children:r.jsx(f,e.__assign({},i))})]})]})})})})})})})})})})})})})};
2
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),i=require("./hook.js"),o=require("../header/header.js"),s=require("../pagenation/providers.js"),t=require("../pagenation/components.js");require("../filter-v2/context.js");var n=require("../filter-v2/provider.js");require("../sort/icon.js");var d=require("../sort/provider.js"),a=require("../sheet/providers.js"),l=require("../checkbox/provider.js"),c=require("../edit/provider.js"),x=require("../table-property/provider.js"),j=require("../operation/components/keyboard-setting.js"),h=require("../sheet/components.js"),u=require("../paste/provider.js"),p=require("../libs/conditional-formatting.js"),v=require("../edit/ui/editor.js"),m=require("../range/provider.js"),g=require("../copy/provider.js"),b=require("../copy/components.js"),q=require("../id/provider.js"),w=require("../header/header-v2.js");require("../header/columns-width/context.js");var P=require("../header/columns-width/provider.js");require("../header/x-scroll-position/context.js");var C=require("../header/x-scroll-position/provider.js"),k=require("../frame/frame.js"),y=require("./component-provider/provider.js"),S=require("../../select-box/provider.js");function f(e){var s=i.useTable(e),n=s.cols,d=s.rowMaps,a=s.pageRowIds,l=q.useTableIdGenerator(),c=y.useGenerateSortButton();return r.jsxs("div",{className:"w-full max-w-full max-h-full",children:[r.jsxs("div",{children:[r.jsx(w.TableHeader,{cols:n,checkbox:!!e.checkbox,rows:e.rows,maxWidth:e.maxWidth,generateSortButton:c}),r.jsx(S.SelectBoxProvider,{children:r.jsxs(k.Frame,{id:l.getTableId(),maxHeight:e.maxHeight,maxWidth:e.maxWidth,displayScroll:!1,children:[r.jsxs("table",{className:"table",children:[r.jsx("thead",{children:r.jsxs("tr",{children:[e.checkbox&&r.jsx("th",{className:"p-px"}),n.map((function(e){return r.jsx(o.TableHeaderElement,{keyname:e.key.toString()},e.key.toString())}))]})}),r.jsxs("tbody",{children:[0===a.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"px-px py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(i,o){return r.jsx(h.Row,{existCheckbox:!!e.checkbox,rowIndex:o,dataString:d[i].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:p.generateFormattingString(d[i].data,n,e.conditionalFormattings)},i)}))]})]}),r.jsx(m.TestRange,{}),r.jsx(v.Editor,{rowMaps:d,pageRowIds:a})]})})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(t.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(t.Pagenation,{})})]})]})}module.exports=function(i){var o,t,h,p;return r.jsx(y.ComponentProvider,{children:r.jsx(q.TableIdGeneratorProvider,{id:i.id,children:r.jsx(P.ColumnsWidthProvider,{initialState:i.cols,children:r.jsx(n.FilterProvider,{initialConditions:[],children:r.jsx(d.SortProvider,{initialCondition:null===(o=i.initialCondition)||void 0===o?void 0:o.sort,children:r.jsx(s.PagenationProvider,{rowCount:i.rows.length,perPage:null===(h=null===(t=i.initialCondition)||void 0===t?void 0:t.pagenation)||void 0===h?void 0:h.rowCountPerPage,children:r.jsx(l.CheckboxProvider,{checkbox:i.checkbox,children:r.jsx(l.CheckboxStatusProvider,{checkboxCount:i.rows.length,children:r.jsx(a.ColumnsProvider,{cols:i.cols,errorHandler:i.errorHandler,children:r.jsx(c.EditProvider,{children:r.jsx(x.TablePropertyProvider,{children:r.jsx(m.RangeProvider,{children:r.jsxs(g.CopyProvider,{rows:i.rows,cols:i.cols,children:[r.jsx(b.CopiedMessage,{}),r.jsxs(u.PasteProvider,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,children:[r.jsx(j.KeyboardSetting,{enableDeprecatedCopy:null===(p=i.deprecatedOptions)||void 0===p?void 0:p.enableDeprecatedCopy}),r.jsx(C.ScrollXPositionProvider,{children:r.jsx(f,e.__assign({},i))})]})]})})})})})})})})})})})})})};
3
3
  //# sourceMappingURL=base.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":["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":"sTAUM,SAAyCA,GACrC,IAAAC,EAAWC,8BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAClBC,EAAoBC,kCACpBC,EAAmBC,iCAC9BC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAK,GACxB,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,EAAAA,WAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKxB,EAAM6B,SAIJ7B,EAAMyB,KAAKxB,QAAO,SAAC6B,GAAG,IAAA3B,EAAK,eAAAA,EAAAH,EAAM6B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC9B,EAAM6B,SAAU7B,EAAMyB,OAE1BE,EAAAA,WAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAnB,EAAKkB,KACX,CAACA,EAAchB,IAGjBoB,EAAAA,WAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAZ,EAAWuB,KACjB,CAACvB,EAAYuB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,WACE,OAAAxB,EAAMyB,KACHxB,QAAO,SAAC6B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCzB,OACAuC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAA+C,GAMpD,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC7C,EAAMyB,KAAMe,IAiBf,OAdAb,EAAAA,WAAU,WACRN,EAAsBrB,EAAMsD,KAAK5B,OAClC,GAAE,CAAC1B,EAAMsD,KAAK5B,SAEfC,EAAAA,WAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,EAAAA,WAAU,WACR,IAAMF,EAAOY,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,IAAI,IACpDjC,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 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":["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":"sTAUM,SAAyCA,GACrC,IAAAC,EAAWC,EAAAA,4BACbC,EAAwBC,EAAAA,uBAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAAA,iBAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,EAAAA,kDAClBC,EAAoBC,EAAAA,gCACpBC,EAAmBC,EAAAA,+BAC9BC,EACJC,EAAAA,gCADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAb,GACN,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,EAAAA,WAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,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,EAAAA,WAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAnB,EAAKkB,EAAL,GACN,CAACA,EAAchB,IAGjBoB,EAAAA,WAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAZ,EAAWuB,EAAX,GACN,CAACvB,EAAYuB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAJ,GAAtB,GAA+B,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAR,GAAqB,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,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,EAAAA,WAAU,WACRN,EAAsBrB,EAAMsD,KAAK5B,OACnC,GAAG,CAAC1B,EAAMsD,KAAK5B,SAEfC,EAAAA,WAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,EAAAA,WAAU,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 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../../src/table/table-property/hook.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnTablePropertyReducer, TTablePropertyReducer } from \"./type\";\n\nconst reducer: TTablePropertyReducer = (state, action) => {\n switch (action.type) {\n case \"setMaxDisplayRowCount\":\n if (state.maxDisplayRowCount === action.payload.maxDisplayRowCount) {\n return state;\n }\n\n return {\n ...state,\n maxDisplayRowCount: action.payload.maxDisplayRowCount,\n };\n\n case \"setMaxDisplayColCount\":\n if (state.maxDisplayColCount === action.payload.maxDisplayColCount) {\n return state;\n }\n\n return {\n ...state,\n maxDisplayColCount: action.payload.maxDisplayColCount,\n };\n }\n};\n\nexport function useTablePropertyReducer(): TReturnTablePropertyReducer {\n const [state, dispatch] = useReducer(reducer, {\n maxDisplayRowCount: 0,\n maxDisplayColCount: 0,\n });\n\n const setMaxDisplayRowCount = useCallback((maxDisplayRowCount: number) => {\n dispatch({\n type: \"setMaxDisplayRowCount\",\n payload: { maxDisplayRowCount },\n });\n }, []);\n\n const setMaxDisplayColCount = useCallback((maxDisplayColCount: number) => {\n dispatch({\n type: \"setMaxDisplayColCount\",\n payload: { maxDisplayColCount },\n });\n }, []);\n\n return {\n state,\n setMaxDisplayRowCount,\n setMaxDisplayColCount,\n };\n}\n"],"names":["reducer","state","action","type","maxDisplayRowCount","payload","__assign","maxDisplayColCount","_a","useReducer","dispatch","setMaxDisplayRowCount","useCallback","setMaxDisplayColCount"],"mappings":"0FAGMA,EAAiC,SAACC,EAAOC,GAC7C,OAAQA,EAAOC,MACb,IAAK,wBACH,OAAIF,EAAMG,qBAAuBF,EAAOG,QAAQD,mBACvCH,EAIJK,WAAAA,EAAAA,SAAA,CAAA,EAAAL,IACHG,mBAAoBF,EAAOG,QAAQD,qBAGvC,IAAK,wBACH,OAAIH,EAAMM,qBAAuBL,EAAOG,QAAQE,mBACvCN,EAIJK,WAAAA,EAAAA,SAAA,CAAA,EAAAL,IACHM,mBAAoBL,EAAOG,QAAQE,qBAG3C,6CAGQ,IAAAC,EAAoBC,EAAUA,WAACT,EAAS,CAC5CI,mBAAoB,EACpBG,mBAAoB,IAFfN,EAAKO,EAAA,GAAEE,OAmBd,MAAO,CACLT,MAAKA,EACLU,sBAhB4BC,eAAY,SAACR,GACzCM,EAAS,CACPP,KAAM,wBACNE,QAAS,CAAED,mBAAkBA,IAEhC,GAAE,IAYDS,sBAV4BD,eAAY,SAACL,GACzCG,EAAS,CACPP,KAAM,wBACNE,QAAS,CAAEE,mBAAkBA,IAEhC,GAAE,IAOL"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../../src/table/table-property/hook.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\nimport { TReturnTablePropertyReducer, TTablePropertyReducer } from \"./type\";\n\nconst reducer: TTablePropertyReducer = (state, action) => {\n switch (action.type) {\n case \"setMaxDisplayRowCount\":\n if (state.maxDisplayRowCount === action.payload.maxDisplayRowCount) {\n return state;\n }\n\n return {\n ...state,\n maxDisplayRowCount: action.payload.maxDisplayRowCount,\n };\n\n case \"setMaxDisplayColCount\":\n if (state.maxDisplayColCount === action.payload.maxDisplayColCount) {\n return state;\n }\n\n return {\n ...state,\n maxDisplayColCount: action.payload.maxDisplayColCount,\n };\n }\n};\n\nexport function useTablePropertyReducer(): TReturnTablePropertyReducer {\n const [state, dispatch] = useReducer(reducer, {\n maxDisplayRowCount: 0,\n maxDisplayColCount: 0,\n });\n\n const setMaxDisplayRowCount = useCallback((maxDisplayRowCount: number) => {\n dispatch({\n type: \"setMaxDisplayRowCount\",\n payload: { maxDisplayRowCount },\n });\n }, []);\n\n const setMaxDisplayColCount = useCallback((maxDisplayColCount: number) => {\n dispatch({\n type: \"setMaxDisplayColCount\",\n payload: { maxDisplayColCount },\n });\n }, []);\n\n return {\n state,\n setMaxDisplayRowCount,\n setMaxDisplayColCount,\n };\n}\n"],"names":["reducer","state","action","type","maxDisplayRowCount","payload","__assign","maxDisplayColCount","_a","useReducer","dispatch","setMaxDisplayRowCount","useCallback","setMaxDisplayColCount"],"mappings":"0FAGMA,EAAiC,SAACC,EAAOC,GAC7C,OAAQA,EAAOC,MACb,IAAK,wBACH,OAAIF,EAAMG,qBAAuBF,EAAOG,QAAQD,mBACvCH,EAGTK,EAAAA,SAAAA,WAAA,CAAA,EACKL,IACHG,mBAAoBF,EAAOG,QAAQD,qBAGvC,IAAK,wBACH,OAAIH,EAAMM,qBAAuBL,EAAOG,QAAQE,mBACvCN,EAGTK,EAAAA,SAAAA,WAAA,CAAA,EACKL,IACHM,mBAAoBL,EAAOG,QAAQE,qBAG3C,6CAGQ,IAAAC,EAAoBC,EAAAA,WAAWT,EAAS,CAC5CI,mBAAoB,EACpBG,mBAAoB,IAFfN,EAAKO,EAAA,GAAEE,OAmBd,MAAO,CACLT,MAAKA,EACLU,sBAhB4BC,eAAY,SAACR,GACzCM,EAAS,CACPP,KAAM,wBACNE,QAAS,CAAED,mBAAkBA,IAEjC,GAAG,IAYDS,sBAV4BD,eAAY,SAACL,GACzCG,EAAS,CACPP,KAAM,wBACNE,QAAS,CAAEE,mBAAkBA,IAEjC,GAAG,IAOL"}