@teppen/react-ui 1.10.2 → 2.0.1

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 (190) hide show
  1. package/README.md +73 -6
  2. package/dist/cjs/node_modules/react-icons/bi/index.js.map +1 -1
  3. package/dist/cjs/node_modules/react-icons/lib/iconBase.js.map +1 -1
  4. package/dist/cjs/node_modules/react-icons/lib/iconContext.js.map +1 -1
  5. package/dist/cjs/node_modules/react-icons/lu/index.js.map +1 -1
  6. package/dist/cjs/node_modules/react-icons/md/index.js.map +1 -1
  7. package/dist/cjs/node_modules/react-icons/ti/index.js.map +1 -1
  8. package/dist/cjs/node_modules/tslib/tslib.es6.js +1 -1
  9. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +1 -1
  10. package/dist/cjs/src/file-uploader/hook.js +1 -1
  11. package/dist/cjs/src/file-uploader/hook.js.map +1 -1
  12. package/dist/cjs/src/search-bar/condition-search-bar/base.js +1 -2
  13. package/dist/cjs/src/search-bar/condition-search-bar/base.js.map +1 -1
  14. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js +1 -2
  15. package/dist/cjs/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
  16. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -2
  17. package/dist/cjs/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  18. package/dist/cjs/src/search-bar/id-generator/provider.js +1 -2
  19. package/dist/cjs/src/search-bar/id-generator/provider.js.map +1 -1
  20. package/dist/cjs/src/select-box/index.js +1 -2
  21. package/dist/cjs/src/select-box/index.js.map +1 -1
  22. package/dist/cjs/src/select-box/options-window/component.js +1 -1
  23. package/dist/cjs/src/select-box/options-window/component.js.map +1 -1
  24. package/dist/cjs/src/select-box/parts/input-area.js +1 -2
  25. package/dist/cjs/src/select-box/parts/input-area.js.map +1 -1
  26. package/dist/cjs/src/select-box/provider.js +1 -2
  27. package/dist/cjs/src/select-box/provider.js.map +1 -1
  28. package/dist/cjs/src/table/cell/ui/cell.js +1 -2
  29. package/dist/cjs/src/table/cell/ui/cell.js.map +1 -1
  30. package/dist/cjs/src/table/checkbox/components.js +1 -2
  31. package/dist/cjs/src/table/checkbox/components.js.map +1 -1
  32. package/dist/cjs/src/table/copy/format.js +2 -0
  33. package/dist/cjs/src/table/copy/format.js.map +1 -0
  34. package/dist/cjs/src/table/copy/hooks.js +1 -1
  35. package/dist/cjs/src/table/copy/hooks.js.map +1 -1
  36. package/dist/cjs/src/table/edit/provider.js +1 -2
  37. package/dist/cjs/src/table/edit/provider.js.map +1 -1
  38. package/dist/cjs/src/table/edit/ui/base-input.js +1 -2
  39. package/dist/cjs/src/table/edit/ui/base-input.js.map +1 -1
  40. package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
  41. package/dist/cjs/src/table/edit/ui/number-input.js +1 -2
  42. package/dist/cjs/src/table/edit/ui/number-input.js.map +1 -1
  43. package/dist/cjs/src/table/edit/ui/select-input.js +1 -2
  44. package/dist/cjs/src/table/edit/ui/select-input.js.map +1 -1
  45. package/dist/cjs/src/table/edit/ui/string-input.js +1 -2
  46. package/dist/cjs/src/table/edit/ui/string-input.js.map +1 -1
  47. package/dist/cjs/src/table/filter-v2/hook.js +1 -1
  48. package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
  49. package/dist/cjs/src/table/frame/frame.js +1 -2
  50. package/dist/cjs/src/table/frame/frame.js.map +1 -1
  51. package/dist/cjs/src/table/header/columns-width/provider.js +1 -2
  52. package/dist/cjs/src/table/header/columns-width/provider.js.map +1 -1
  53. package/dist/cjs/src/table/header/columns-width/reducer.js +1 -1
  54. package/dist/cjs/src/table/header/columns-width/reducer.js.map +1 -1
  55. package/dist/cjs/src/table/header/header-v2-hook.js +1 -1
  56. package/dist/cjs/src/table/header/header-v2-hook.js.map +1 -1
  57. package/dist/cjs/src/table/header/header-v2.js +1 -1
  58. package/dist/cjs/src/table/header/header-v2.js.map +1 -1
  59. package/dist/cjs/src/table/header/header.js +1 -2
  60. package/dist/cjs/src/table/header/header.js.map +1 -1
  61. package/dist/cjs/src/table/id/provider.js +1 -1
  62. package/dist/cjs/src/table/id/provider.js.map +1 -1
  63. package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -2
  64. package/dist/cjs/src/table/operation/components/keyboard-setting.js.map +1 -1
  65. package/dist/cjs/src/table/operation/event-target.js +2 -0
  66. package/dist/cjs/src/table/operation/event-target.js.map +1 -0
  67. package/dist/cjs/src/table/pagenation/components.js +1 -2
  68. package/dist/cjs/src/table/pagenation/components.js.map +1 -1
  69. package/dist/cjs/src/table/pagenation/hooks.js +1 -1
  70. package/dist/cjs/src/table/pagenation/hooks.js.map +1 -1
  71. package/dist/cjs/src/table/pagenation/providers.js +1 -2
  72. package/dist/cjs/src/table/pagenation/providers.js.map +1 -1
  73. package/dist/cjs/src/table/paste/hooks.js +1 -1
  74. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  75. package/dist/cjs/src/table/paste/logic.js +1 -1
  76. package/dist/cjs/src/table/paste/logic.js.map +1 -1
  77. package/dist/cjs/src/table/paste/parse.js +2 -0
  78. package/dist/cjs/src/table/paste/parse.js.map +1 -0
  79. package/dist/cjs/src/table/paste/provider.js +1 -1
  80. package/dist/cjs/src/table/paste/provider.js.map +1 -1
  81. package/dist/cjs/src/table/sheet/components.js +1 -1
  82. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  83. package/dist/cjs/src/table/sheet/providers.js +1 -2
  84. package/dist/cjs/src/table/sheet/providers.js.map +1 -1
  85. package/dist/cjs/src/table/sort/components.js +1 -2
  86. package/dist/cjs/src/table/sort/components.js.map +1 -1
  87. package/dist/cjs/src/table/sort/provider.js +1 -2
  88. package/dist/cjs/src/table/sort/provider.js.map +1 -1
  89. package/dist/cjs/src/table/table/base.js +1 -2
  90. package/dist/cjs/src/table/table/base.js.map +1 -1
  91. package/dist/cjs/src/table/table/component-provider/provider.js +1 -2
  92. package/dist/cjs/src/table/table/component-provider/provider.js.map +1 -1
  93. package/dist/cjs/src/table/table/hook.js +1 -1
  94. package/dist/cjs/src/table/table/hook.js.map +1 -1
  95. package/dist/esm/node_modules/react-icons/bi/index.js.map +1 -1
  96. package/dist/esm/node_modules/react-icons/lib/iconBase.js.map +1 -1
  97. package/dist/esm/node_modules/react-icons/lib/iconContext.js.map +1 -1
  98. package/dist/esm/node_modules/react-icons/lu/index.js.map +1 -1
  99. package/dist/esm/node_modules/react-icons/md/index.js.map +1 -1
  100. package/dist/esm/node_modules/react-icons/ti/index.js.map +1 -1
  101. package/dist/esm/node_modules/tslib/tslib.es6.js +1 -1
  102. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -1
  103. package/dist/esm/package.json +3 -0
  104. package/dist/esm/src/file-uploader/hook.js +1 -1
  105. package/dist/esm/src/file-uploader/hook.js.map +1 -1
  106. package/dist/esm/src/search-bar/condition-search-bar/base.js +1 -2
  107. package/dist/esm/src/search-bar/condition-search-bar/base.js.map +1 -1
  108. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js +1 -2
  109. package/dist/esm/src/search-bar/condition-search-bar/condition-list.js.map +1 -1
  110. package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -2
  111. package/dist/esm/src/search-bar/condition-search-bar/input-form.js.map +1 -1
  112. package/dist/esm/src/search-bar/id-generator/provider.js +1 -2
  113. package/dist/esm/src/search-bar/id-generator/provider.js.map +1 -1
  114. package/dist/esm/src/select-box/index.js +1 -2
  115. package/dist/esm/src/select-box/index.js.map +1 -1
  116. package/dist/esm/src/select-box/options-window/component.js +1 -1
  117. package/dist/esm/src/select-box/options-window/component.js.map +1 -1
  118. package/dist/esm/src/select-box/parts/input-area.js +1 -2
  119. package/dist/esm/src/select-box/parts/input-area.js.map +1 -1
  120. package/dist/esm/src/select-box/provider.js +1 -2
  121. package/dist/esm/src/select-box/provider.js.map +1 -1
  122. package/dist/esm/src/table/cell/ui/cell.js +1 -2
  123. package/dist/esm/src/table/cell/ui/cell.js.map +1 -1
  124. package/dist/esm/src/table/checkbox/components.js +1 -2
  125. package/dist/esm/src/table/checkbox/components.js.map +1 -1
  126. package/dist/esm/src/table/copy/format.js +2 -0
  127. package/dist/esm/src/table/copy/format.js.map +1 -0
  128. package/dist/esm/src/table/copy/hooks.js +1 -1
  129. package/dist/esm/src/table/copy/hooks.js.map +1 -1
  130. package/dist/esm/src/table/edit/provider.js +1 -2
  131. package/dist/esm/src/table/edit/provider.js.map +1 -1
  132. package/dist/esm/src/table/edit/ui/base-input.js +1 -2
  133. package/dist/esm/src/table/edit/ui/base-input.js.map +1 -1
  134. package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
  135. package/dist/esm/src/table/edit/ui/number-input.js +1 -2
  136. package/dist/esm/src/table/edit/ui/number-input.js.map +1 -1
  137. package/dist/esm/src/table/edit/ui/select-input.js +1 -2
  138. package/dist/esm/src/table/edit/ui/select-input.js.map +1 -1
  139. package/dist/esm/src/table/edit/ui/string-input.js +1 -2
  140. package/dist/esm/src/table/edit/ui/string-input.js.map +1 -1
  141. package/dist/esm/src/table/filter-v2/hook.js +1 -1
  142. package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
  143. package/dist/esm/src/table/frame/frame.js +1 -2
  144. package/dist/esm/src/table/frame/frame.js.map +1 -1
  145. package/dist/esm/src/table/header/columns-width/provider.js +1 -2
  146. package/dist/esm/src/table/header/columns-width/provider.js.map +1 -1
  147. package/dist/esm/src/table/header/columns-width/reducer.js +1 -1
  148. package/dist/esm/src/table/header/columns-width/reducer.js.map +1 -1
  149. package/dist/esm/src/table/header/header-v2-hook.js +1 -1
  150. package/dist/esm/src/table/header/header-v2-hook.js.map +1 -1
  151. package/dist/esm/src/table/header/header-v2.js +1 -1
  152. package/dist/esm/src/table/header/header-v2.js.map +1 -1
  153. package/dist/esm/src/table/header/header.js +1 -2
  154. package/dist/esm/src/table/header/header.js.map +1 -1
  155. package/dist/esm/src/table/id/provider.js +1 -1
  156. package/dist/esm/src/table/id/provider.js.map +1 -1
  157. package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -2
  158. package/dist/esm/src/table/operation/components/keyboard-setting.js.map +1 -1
  159. package/dist/esm/src/table/operation/event-target.js +2 -0
  160. package/dist/esm/src/table/operation/event-target.js.map +1 -0
  161. package/dist/esm/src/table/pagenation/components.js +1 -2
  162. package/dist/esm/src/table/pagenation/components.js.map +1 -1
  163. package/dist/esm/src/table/pagenation/hooks.js +1 -1
  164. package/dist/esm/src/table/pagenation/hooks.js.map +1 -1
  165. package/dist/esm/src/table/pagenation/providers.js +1 -2
  166. package/dist/esm/src/table/pagenation/providers.js.map +1 -1
  167. package/dist/esm/src/table/paste/hooks.js +1 -1
  168. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  169. package/dist/esm/src/table/paste/logic.js +1 -1
  170. package/dist/esm/src/table/paste/logic.js.map +1 -1
  171. package/dist/esm/src/table/paste/parse.js +2 -0
  172. package/dist/esm/src/table/paste/parse.js.map +1 -0
  173. package/dist/esm/src/table/paste/provider.js +1 -1
  174. package/dist/esm/src/table/paste/provider.js.map +1 -1
  175. package/dist/esm/src/table/sheet/components.js +1 -1
  176. package/dist/esm/src/table/sheet/components.js.map +1 -1
  177. package/dist/esm/src/table/sheet/providers.js +1 -2
  178. package/dist/esm/src/table/sheet/providers.js.map +1 -1
  179. package/dist/esm/src/table/sort/components.js +1 -2
  180. package/dist/esm/src/table/sort/components.js.map +1 -1
  181. package/dist/esm/src/table/sort/provider.js +1 -2
  182. package/dist/esm/src/table/sort/provider.js.map +1 -1
  183. package/dist/esm/src/table/table/base.js +1 -2
  184. package/dist/esm/src/table/table/base.js.map +1 -1
  185. package/dist/esm/src/table/table/component-provider/provider.js +1 -2
  186. package/dist/esm/src/table/table/component-provider/provider.js.map +1 -1
  187. package/dist/esm/src/table/table/hook.js +1 -1
  188. package/dist/esm/src/table/table/hook.js.map +1 -1
  189. package/dist/index.d.ts +13 -1
  190. package/package.json +1 -3
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as r}from"react";import{useEditContext as n}from"../../edit/provider.js";import{useColumnsContext as o}from"../../sheet/providers.js";import{useRangeContext as i}from"../../range/provider.js";import{useCopyActionContext as d}from"../../copy/provider.js";import{useTableIdGenerator as p}from"../../id/provider.js";var a=function(e,t){var r,n=document.getElementById(t);if(n){var o=null===(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===r?void 0:r.set;o&&o.call(n,e);var i=new Event("input",{bubbles:!0});n.dispatchEvent(i)}};function s(s){var y=p(),f=n(),v=i(),c=d().copy,l=o()[v.isSelecting?v.start.colIndex:0];return r((function(){var e=function(e){f.isEditing?"Escape"===e.key&&(e.preventDefault(),f.endEditing()):v.isSelecting&&("Enter"===e.key?(e.preventDefault(),v.moveDown()):"Escape"===e.key?(e.preventDefault(),v.reset()):"ArrowRight"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?v.extendRightEnd():e.ctrlKey?v.moveRightEnd():e.shiftKey?v.extendRight():v.moveRight()):"ArrowLeft"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?v.extendLeftEnd():e.ctrlKey?v.moveLeftEnd():e.shiftKey?v.extendLeft():v.moveLeft()):"ArrowUp"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?v.extendTop():e.ctrlKey?v.moveTop():e.shiftKey?v.extendUp():v.moveUp()):"ArrowDown"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?v.extendBottom():e.ctrlKey?v.moveBottom():e.shiftKey?v.extendDown():v.moveDown()):"F2"===e.key?(e.preventDefault(),f.startEditing()):e.ctrlKey&&"c"===e.key.toLowerCase()?(e.preventDefault(),c({enableDeprecatedCopy:null==s?void 0:s.enableDeprecatedCopy})):e.altKey||e.ctrlKey||!/^[a-zA-Z0-9]$/.test(e.key)?"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),f.startEditing(),setTimeout((function(){a("",y.getEditorId())}),10)):(e.preventDefault(),e.stopPropagation(),f.startEditing(),setTimeout((function(){a(e.key,y.getEditorId())}),10)))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[v,f.isEditing]),r((function(){f.isEditing&&!l.editable&&f.endEditing()}),[f,l]),e(t,{})}export{s as KeyboardSetting};
1
+ "use client";import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as r}from"react";import{useEditContext as n}from"../../edit/provider.js";import{useColumnsContext as o}from"../../sheet/providers.js";import{useRangeContext as i}from"../../range/provider.js";import{useCopyActionContext as d}from"../../copy/provider.js";import{useTableIdGenerator as p}from"../../id/provider.js";import{isComposingKey as a,isTextEntryTarget as s}from"../event-target.js";var y=function(e,t){var r,n=document.getElementById(t);if(n){var o=null===(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===r?void 0:r.set;o&&o.call(n,e);var i=new Event("input",{bubbles:!0});n.dispatchEvent(i)}};function f(f){var v=p(),c=n(),l=i(),m=d().copy,u=o()[l.isSelecting?l.start.colIndex:0];return r((function(){var e=function(e){a(e)||(c.isEditing?"Escape"===e.key&&(e.preventDefault(),c.endEditing()):l.isSelecting&&!s(e.target)&&("Enter"===e.key?(e.preventDefault(),l.moveDown()):"Escape"===e.key?(e.preventDefault(),l.reset()):"ArrowRight"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?l.extendRightEnd():e.ctrlKey?l.moveRightEnd():e.shiftKey?l.extendRight():l.moveRight()):"ArrowLeft"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?l.extendLeftEnd():e.ctrlKey?l.moveLeftEnd():e.shiftKey?l.extendLeft():l.moveLeft()):"ArrowUp"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?l.extendTop():e.ctrlKey?l.moveTop():e.shiftKey?l.extendUp():l.moveUp()):"ArrowDown"===e.key?(e.preventDefault(),e.ctrlKey&&e.shiftKey?l.extendBottom():e.ctrlKey?l.moveBottom():e.shiftKey?l.extendDown():l.moveDown()):"F2"===e.key?(e.preventDefault(),c.startEditing()):(e.ctrlKey||e.metaKey)&&"c"===e.key.toLowerCase()?(e.preventDefault(),m({enableDeprecatedCopy:null==f?void 0:f.enableDeprecatedCopy})):e.altKey||e.ctrlKey||e.metaKey||!/^[a-zA-Z0-9]$/.test(e.key)?"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),c.startEditing(),setTimeout((function(){y("",v.getEditorId())}),10)):(e.preventDefault(),e.stopPropagation(),c.startEditing(),setTimeout((function(){y(e.key,v.getEditorId())}),10))))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[l,c.isEditing]),r((function(){c.isEditing&&!u.editable&&c.endEditing()}),[c,u]),e(t,{})}export{f as KeyboardSetting};
3
2
  //# sourceMappingURL=keyboard-setting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard-setting.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"keyboard-setting.js","sources":["../../../../../../src/table/operation/components/keyboard-setting.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useRangeContext } from \"../../range/provider\";\nimport { useCopyActionContext } from \"../../copy/provider\";\nimport { useTableIdGenerator } from \"../../id\";\nimport { isComposingKey, isTextEntryTarget } from \"../event-target\";\n\nconst setInitialValueToInputForm = (key: string, id: string) => {\n const inputElement = document.getElementById(id);\n if (inputElement) {\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\"\n )?.set;\n\n if (nativeInputValueSetter) {\n nativeInputValueSetter.call(inputElement, key);\n }\n\n const ev = new Event(\"input\", { bubbles: true });\n inputElement.dispatchEvent(ev);\n }\n};\n\nexport function KeyboardSetting(options?: { enableDeprecatedCopy?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const edit = useEditContext();\n const range = useRangeContext();\n const { copy } = useCopyActionContext();\n const col = useColumnsContext()[range.isSelecting ? range.start.colIndex : 0];\n\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n if (isComposingKey(e)) {\n return;\n }\n\n if (edit.isEditing) {\n if (e.key === \"Escape\") {\n e.preventDefault();\n edit.endEditing();\n }\n } else if (range.isSelecting && !isTextEntryTarget(e.target)) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n range.moveDown();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n range.reset();\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendRightEnd();\n } else if (e.ctrlKey) {\n range.moveRightEnd();\n } else if (e.shiftKey) {\n range.extendRight();\n } else {\n range.moveRight();\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendLeftEnd();\n } else if (e.ctrlKey) {\n range.moveLeftEnd();\n } else if (e.shiftKey) {\n range.extendLeft();\n } else {\n range.moveLeft();\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendTop();\n } else if (e.ctrlKey) {\n range.moveTop();\n } else if (e.shiftKey) {\n range.extendUp();\n } else {\n range.moveUp();\n }\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n\n if (e.ctrlKey && e.shiftKey) {\n range.extendBottom();\n } else if (e.ctrlKey) {\n range.moveBottom();\n } else if (e.shiftKey) {\n range.extendDown();\n } else {\n range.moveDown();\n }\n } else if (e.key === \"F2\") {\n e.preventDefault();\n edit.startEditing();\n } else if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === \"c\") {\n e.preventDefault();\n copy({ enableDeprecatedCopy: options?.enableDeprecatedCopy });\n } else if (\n !e.altKey &&\n !e.ctrlKey &&\n !e.metaKey &&\n /^[a-zA-Z0-9]$/.test(e.key)\n ) {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(e.key, IdGenerator.getEditorId());\n }, 10);\n } else if (e.key === \"Backspace\" || e.key === \"Delete\") {\n e.preventDefault();\n e.stopPropagation();\n edit.startEditing();\n\n setTimeout(() => {\n setInitialValueToInputForm(\"\", IdGenerator.getEditorId());\n }, 10);\n }\n }\n };\n\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n }, [range, edit.isEditing]);\n\n useEffect(() => {\n if (edit.isEditing && !col.editable) {\n edit.endEditing();\n }\n }, [edit, col]);\n\n return <></>;\n}\n"],"names":["setInitialValueToInputForm","key","id","inputElement","document","getElementById","nativeInputValueSetter","_a","Object","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","set","call","ev","Event","bubbles","dispatchEvent","KeyboardSetting","options","IdGenerator","useTableIdGenerator","edit","useEditContext","range","useRangeContext","copy","useCopyActionContext","col","useColumnsContext","isSelecting","start","colIndex","useEffect","listener","e","isComposingKey","isEditing","preventDefault","endEditing","isTextEntryTarget","target","moveDown","reset","ctrlKey","shiftKey","extendRightEnd","moveRightEnd","extendRight","moveRight","extendLeftEnd","moveLeftEnd","extendLeft","moveLeft","extendTop","moveTop","extendUp","moveUp","extendBottom","moveBottom","extendDown","startEditing","metaKey","toLowerCase","enableDeprecatedCopy","altKey","test","stopPropagation","setTimeout","getEditorId","addEventListener","removeEventListener","editable","_jsx"],"mappings":"wdAUA,IAAMA,EAA6B,SAACC,EAAaC,SACzCC,EAAeC,SAASC,eAAeH,GAC7C,GAAIC,EAAc,CAChB,IAAMG,EAGL,QAH8BC,EAAAC,OAAOC,yBACpCC,OAAOC,iBAAiBC,UACxB,gBACD,IAAAL,OAAA,EAAAA,EAAEM,IAECP,GACFA,EAAuBQ,KAAKX,EAAcF,GAG5C,IAAMc,EAAK,IAAIC,MAAM,QAAS,CAAEC,SAAS,IACzCd,EAAae,cAAcH,EAC7B,CACF,EAEM,SAAUI,EAAgBC,GAC9B,IAAMC,EAAcC,IACdC,EAAOC,IACPC,EAAQC,IACNC,EAASC,SACXC,EAAMC,IAAoBL,EAAMM,YAAcN,EAAMO,MAAMC,SAAW,GAgH3E,OA9GAC,GAAU,WACR,IAAMC,EAAW,SAACC,GACZC,EAAeD,KAIfb,EAAKe,UACO,WAAVF,EAAEnC,MACJmC,EAAEG,iBACFhB,EAAKiB,cAEEf,EAAMM,cAAgBU,EAAkBL,EAAEM,UACrC,UAAVN,EAAEnC,KACJmC,EAAEG,iBACFd,EAAMkB,YACa,WAAVP,EAAEnC,KACXmC,EAAEG,iBACFd,EAAMmB,SACa,eAAVR,EAAEnC,KACXmC,EAAEG,iBAEEH,EAAES,SAAWT,EAAEU,SACjBrB,EAAMsB,iBACGX,EAAES,QACXpB,EAAMuB,eACGZ,EAAEU,SACXrB,EAAMwB,cAENxB,EAAMyB,aAEW,cAAVd,EAAEnC,KACXmC,EAAEG,iBAEEH,EAAES,SAAWT,EAAEU,SACjBrB,EAAM0B,gBACGf,EAAES,QACXpB,EAAM2B,cACGhB,EAAEU,SACXrB,EAAM4B,aAEN5B,EAAM6B,YAEW,YAAVlB,EAAEnC,KACXmC,EAAEG,iBAEEH,EAAES,SAAWT,EAAEU,SACjBrB,EAAM8B,YACGnB,EAAES,QACXpB,EAAM+B,UACGpB,EAAEU,SACXrB,EAAMgC,WAENhC,EAAMiC,UAEW,cAAVtB,EAAEnC,KACXmC,EAAEG,iBAEEH,EAAES,SAAWT,EAAEU,SACjBrB,EAAMkC,eACGvB,EAAES,QACXpB,EAAMmC,aACGxB,EAAEU,SACXrB,EAAMoC,aAENpC,EAAMkB,YAEW,OAAVP,EAAEnC,KACXmC,EAAEG,iBACFhB,EAAKuC,iBACK1B,EAAES,SAAWT,EAAE2B,UAAoC,MAAxB3B,EAAEnC,IAAI+D,eAC3C5B,EAAEG,iBACFZ,EAAK,CAAEsC,qBAAsB7C,aAAO,EAAPA,EAAS6C,wBAErC7B,EAAE8B,QACF9B,EAAES,SACFT,EAAE2B,UACH,gBAAgBI,KAAK/B,EAAEnC,KASJ,cAAVmC,EAAEnC,KAAiC,WAAVmC,EAAEnC,MACpCmC,EAAEG,iBACFH,EAAEgC,kBACF7C,EAAKuC,eAELO,YAAW,WACTrE,EAA2B,GAAIqB,EAAYiD,cAC7C,GAAG,MAdHlC,EAAEG,iBACFH,EAAEgC,kBACF7C,EAAKuC,eAELO,YAAW,WACTrE,EAA2BoC,EAAEnC,IAAKoB,EAAYiD,cAChD,GAAG,MAWT,EAIA,OAFAlE,SAASmE,iBAAiB,UAAWpC,GAE9B,WACL/B,SAASoE,oBAAoB,UAAWrC,EAC1C,CACF,GAAG,CAACV,EAAOF,EAAKe,YAEhBJ,GAAU,WACJX,EAAKe,YAAcT,EAAI4C,UACzBlD,EAAKiB,YAET,GAAG,CAACjB,EAAMM,IAEH6C,OACT"}
@@ -0,0 +1,2 @@
1
+ function e(e){return e instanceof HTMLElement&&(!!e.isContentEditable||(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement))}function n(e){return e.isComposing||229===e.keyCode}export{n as isComposingKey,e as isTextEntryTarget};
2
+ //# sourceMappingURL=event-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-target.js","sources":["../../../../../src/table/operation/event-target.ts"],"sourcesContent":["/**\n * Returns true when the event comes from an element where the user types\n * text (input, textarea, select or contenteditable). The table must not take\n * over keys or pastes aimed at such elements.\n */\nexport function isTextEntryTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n if (target.isContentEditable) {\n return true;\n }\n\n return (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n );\n}\n\n/** True while an IME (e.g. Japanese input) is composing text. */\nexport function isComposingKey(e: KeyboardEvent): boolean {\n return e.isComposing || e.keyCode === 229;\n}\n"],"names":["isTextEntryTarget","target","HTMLElement","isContentEditable","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","isComposingKey","e","isComposing","keyCode"],"mappings":"AAKM,SAAUA,EAAkBC,GAChC,OAAMA,aAAkBC,gBAIpBD,EAAOE,oBAKTF,aAAkBG,kBAClBH,aAAkBI,qBAClBJ,aAAkBK,mBAEtB,CAGM,SAAUC,EAAeC,GAC7B,OAAOA,EAAEC,aAA6B,MAAdD,EAAEE,OAC5B"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as r,Fragment as t,jsxs as e}from"react/jsx-runtime";import{usePageContext as n}from"./providers.js";function o(){var o=n(),u=o.enable,c=o.current,i=o.pageCount,s=o.jump,a=o.prev,l=o.next;return u?e("div",{className:"flex justify-center gap-2",children:[r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(1)},disabled:1===c,children:"≪"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return a()},disabled:1===c,children:"<"}),Array.from({length:i},(function(r,t){return t+1})).filter((function(r){return c-2<=r&&r<=c+2})).map((function(t){return r("button",{className:"text-sm cursor-pointer disabled:cursor-default ".concat(c===t?"text-blue-600":""),onClick:function(){return s(t)},children:t},t)})),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return l()},disabled:c===i,children:">"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(i)},disabled:c===i,children:"≫"})]}):r(t,{})}function u(){var o=n(),u=o.enable,c=o.from,i=o.to,s=o.rowCount;return u?e("p",{className:"text-center text-sm text-gray-600",children:[c+1," - ",i<s?i:s," of ",s]}):r(t,{})}export{u as DisplayRange,o as Pagenation};
1
+ "use client";import{jsx as r,Fragment as t,jsxs as e}from"react/jsx-runtime";import{usePageContext as n}from"./providers.js";function o(){var o=n(),u=o.enable,c=o.current,i=o.pageCount,s=o.jump,l=o.prev,a=o.next;return u?e("div",{className:"flex justify-center gap-2",children:[r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(1)},disabled:1===c,children:"≪"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return l()},disabled:1===c,children:"<"}),Array.from({length:i},(function(r,t){return t+1})).filter((function(r){return c-2<=r&&r<=c+2})).map((function(t){return r("button",{className:"text-sm cursor-pointer disabled:cursor-default ".concat(c===t?"text-blue-600":""),onClick:function(){return s(t)},children:t},t)})),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return a()},disabled:c>=i,children:">"}),r("button",{className:"text-sm cursor-pointer disabled:cursor-default",onClick:function(){return s(i)},disabled:c>=i,children:"≫"})]}):r(t,{})}function u(){var o=n(),u=o.enable,c=o.from,i=o.to,s=o.rowCount;return u?e("p",{className:"text-center text-sm text-gray-600",children:[0===s?0:c+1," - ",i<s?i:s," of"," ",s]}):r(t,{})}export{u as DisplayRange,o as Pagenation};
3
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/pagenation/components.tsx"],"sourcesContent":["\"use client\";\n\nimport { usePageContext } from \"./providers\";\n\nexport function Pagenation() {\n const { enable, current, pageCount, jump, prev, next } = usePageContext();\n\n if (!enable) {\n return <></>;\n }\n\n return (\n <div className=\"flex justify-center gap-2\">\n <button\n className=\"text-sm cursor-pointer disabled:cursor-default\"\n onClick={() => jump(1)}\n disabled={current === 1}\n >\n &#x226A;\n </button>\n <button\n className=\"text-sm cursor-pointer disabled:cursor-default\"\n onClick={() => prev()}\n disabled={current === 1}\n >\n &lt;\n </button>\n {Array.from({ length: pageCount }, (_, i) => i + 1)\n .filter((i) => current - 2 <= i && i <= current + 2)\n .map((i) => (\n <button\n key={i}\n className={`text-sm cursor-pointer disabled:cursor-default ${current === i ? \"text-blue-600\" : \"\"}`}\n onClick={() => jump(i)}\n >\n {i}\n </button>\n ))}\n <button\n className=\"text-sm cursor-pointer disabled:cursor-default\"\n onClick={() => next()}\n disabled={current >= pageCount}\n >\n &gt;\n </button>\n <button\n className=\"text-sm cursor-pointer disabled:cursor-default\"\n onClick={() => jump(pageCount)}\n disabled={current >= pageCount}\n >\n &#x226B;\n </button>\n </div>\n );\n}\n\nexport function DisplayRange() {\n const { enable, from, to, rowCount } = usePageContext();\n\n if (!enable) {\n return <></>;\n }\n\n return (\n <p className=\"text-center text-sm text-gray-600\">\n {rowCount === 0 ? 0 : from + 1} - {to < rowCount ? to : rowCount} of{\" \"}\n {rowCount}\n </p>\n );\n}\n"],"names":["Pagenation","_a","usePageContext","enable","current","pageCount","jump","prev","next","_jsxs","className","children","_jsx","onClick","disabled","Array","from","length","_","i","filter","map","DisplayRange","to","rowCount"],"mappings":"sIAIgBA,IACR,IAAAC,EAAmDC,IAAjDC,EAAMF,EAAAE,OAAEC,EAAOH,EAAAG,QAAEC,EAASJ,EAAAI,UAAEC,EAAIL,EAAAK,KAAEC,EAAIN,EAAAM,KAAEC,EAAIP,EAAAO,KAEpD,OAAKL,EAKHM,EAAA,MAAA,CAAKC,UAAU,4BAA2BC,SAAA,CACxCC,EAAA,SAAA,CACEF,UAAU,iDACVG,QAAS,WAAM,OAAAP,EAAK,EAAL,EACfQ,SAAsB,IAAZV,iBAIZQ,EAAA,SAAA,CACEF,UAAU,iDACVG,QAAS,WAAM,OAAAN,GAAA,EACfO,SAAsB,IAAZV,EAAaO,SAAA,MAIxBI,MAAMC,KAAK,CAAEC,OAAQZ,IAAa,SAACa,EAAGC,GAAM,OAAAA,EAAI,CAAJ,IAC1CC,QAAO,SAACD,GAAM,OAAAf,EAAU,GAAKe,GAAKA,GAAKf,EAAU,CAAnC,IACdiB,KAAI,SAACF,GAAM,OACVP,YAEEF,UAAW,yDAAkDN,IAAYe,EAAI,gBAAkB,IAC/FN,QAAS,WAAM,OAAAP,EAAKa,EAAL,EAAOR,SAErBQ,GAJIA,EAFG,IASdP,EAAA,SAAA,CACEF,UAAU,iDACVG,QAAS,WAAM,OAAAL,GAAA,EACfM,SAAUV,GAAWC,EAASM,SAAA,MAIhCC,YACEF,UAAU,iDACVG,QAAS,WAAM,OAAAP,EAAKD,EAAL,EACfS,SAAUV,GAAWC,EAASM,SAAA,SAxC3BC,OA8CX,UAEgBU,IACR,IAAArB,EAAiCC,IAA/BC,EAAMF,EAAAE,OAAEa,EAAIf,EAAAe,KAAEO,EAAEtB,EAAAsB,GAAEC,aAE1B,OAAKrB,EAKHM,EAAA,IAAA,CAAGC,UAAU,8CACG,IAAbc,EAAiB,EAAIR,EAAO,EAAC,MAAKO,EAAKC,EAAWD,EAAKC,EAAQ,MAAK,IACpEA,KANIZ,OASX"}
@@ -1,2 +1,2 @@
1
- import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as r,useCallback as n,useMemo as t}from"react";import{INITIAL_PAGE_STATE as a}from"./constants.js";function o(r,n){switch(n.type){case"setRowCount":return r.enable?e(e({},r),{currentPage:1,rowCount:n.payload.rowCount}):e(e({},r),{rowCount:n.payload.rowCount});case"setPerPage":return"all"===n.payload.perPage?{rowCount:r.rowCount,enable:!1}:r.enable?e(e({},r),{currentPage:1,perPage:n.payload.perPage}):{rowCount:r.rowCount,enable:!0,currentPage:1,perPage:n.payload.perPage};case"next":return r.enable?r.currentPage===Math.ceil(r.rowCount/r.perPage)?r:e(e({},r),{currentPage:r.currentPage+1}):r;case"prev":return r.enable?1===r.currentPage?r:e(e({},r),{currentPage:r.currentPage-1}):r;case"jump":return r.enable?n.payload.pageNumber<1||n.payload.pageNumber>Math.ceil(r.rowCount/r.perPage)||r.currentPage===n.payload.pageNumber?r:e(e({},r),{currentPage:n.payload.pageNumber}):r;default:return r}}function u(e){var u=r(o,null!=e?e:a),p=u[0],l=u[1],c=n((function(){return l({type:"next"})}),[l]),g=n((function(){return l({type:"prev"})}),[l]),P=n((function(e){return l({type:"jump",payload:{pageNumber:e}})}),[l]),b=n((function(e){return l({type:"setRowCount",payload:{rowCount:e}})}),[l]),i=t((function(){return p.enable?(p.currentPage-1)*p.perPage:0}),[p]),w=t((function(){return p.enable?p.currentPage*p.perPage:p.rowCount}),[p]),C=n((function(e){return e.slice(i,w)}),[i,w]);return{enable:p.enable,perPage:p.enable?p.perPage:p.rowCount,current:p.enable?p.currentPage:1,rowCount:p.rowCount,pageCount:p.enable?Math.ceil(p.rowCount/p.perPage):1,from:i,to:w,next:c,prev:g,jump:P,setRowCount:b,pageFilter:C}}export{u as usePageReducer};
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as r,useCallback as n,useMemo as t}from"react";import{INITIAL_PAGE_STATE as a}from"./constants.js";function o(r,n){switch(n.type){case"setRowCount":return r.enable?e(e({},r),{currentPage:1,rowCount:n.payload.rowCount}):e(e({},r),{rowCount:n.payload.rowCount});case"setPerPage":return"all"===n.payload.perPage?{rowCount:r.rowCount,enable:!1}:r.enable?e(e({},r),{currentPage:1,perPage:n.payload.perPage}):{rowCount:r.rowCount,enable:!0,currentPage:1,perPage:n.payload.perPage};case"next":return r.enable?r.currentPage>=Math.ceil(r.rowCount/r.perPage)?r:e(e({},r),{currentPage:r.currentPage+1}):r;case"prev":return r.enable?1===r.currentPage?r:e(e({},r),{currentPage:r.currentPage-1}):r;case"jump":return r.enable?n.payload.pageNumber<1||n.payload.pageNumber>Math.ceil(r.rowCount/r.perPage)||r.currentPage===n.payload.pageNumber?r:e(e({},r),{currentPage:n.payload.pageNumber}):r;default:return r}}function u(e){var u=r(o,null!=e?e:a),p=u[0],l=u[1],c=n((function(){return l({type:"next"})}),[l]),g=n((function(){return l({type:"prev"})}),[l]),P=n((function(e){return l({type:"jump",payload:{pageNumber:e}})}),[l]),b=n((function(e){return l({type:"setRowCount",payload:{rowCount:e}})}),[l]),i=t((function(){return p.enable?(p.currentPage-1)*p.perPage:0}),[p]),w=t((function(){return p.enable?p.currentPage*p.perPage:p.rowCount}),[p]),C=n((function(e){return e.slice(i,w)}),[i,w]);return{enable:p.enable,perPage:p.enable?p.perPage:p.rowCount,current:p.enable?p.currentPage:1,rowCount:p.rowCount,pageCount:p.enable?Math.ceil(p.rowCount/p.perPage):1,from:i,to:w,next:c,prev:g,jump:P,setRowCount:b,pageFilter:C}}export{u as usePageReducer};
2
2
  //# sourceMappingURL=hooks.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","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,EAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbG,QAASP,EAAOM,QAAQC,UAXjB,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,EACRE,YAAa,EACbG,QAASP,EAAOM,QAAQC,SAS9B,IAAK,OACH,OAAKR,EAAMG,OAIPH,EAAMK,cAAgBI,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAClDR,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAKTF,EAAOM,QAAQI,WAAa,GAC5BV,EAAOM,QAAQI,WAAaF,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,UAC7DR,EAAMK,cAAgBJ,EAAOM,QAAQI,WAE9BX,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,CAEM,SAAUY,EAAeC,GACvB,IAAAC,EAAoBC,EACxBhB,EACAc,QAAAA,EAAgBG,GAFXhB,OAAOiB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEf,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEf,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WACnB,OAAKxB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEyB,EAAKD,GAAQ,WACjB,OAAKxB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEE0B,EAAaP,GACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLtB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CuB,QAAS7B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBwB,UAAW9B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEe,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/pagenation/hooks.ts"],"sourcesContent":["import { useCallback, useMemo, useReducer } from \"react\";\nimport { TPageAction, TPageState } from \"./types\";\nimport { INITIAL_PAGE_STATE } from \"./constants\";\nimport { DataObject, DataRecord } from \"../table/type\";\n\nfunction pagenationReducer(state: TPageState, action: TPageAction): TPageState {\n switch (action.type) {\n case \"setRowCount\":\n if (!state.enable) {\n return {\n ...state,\n rowCount: action.payload.rowCount,\n };\n }\n return {\n ...state,\n currentPage: 1,\n rowCount: action.payload.rowCount,\n };\n case \"setPerPage\":\n if (action.payload.perPage === \"all\") {\n return {\n rowCount: state.rowCount,\n enable: false,\n };\n }\n\n if (!state.enable) {\n return {\n rowCount: state.rowCount,\n enable: true,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n }\n\n return {\n ...state,\n currentPage: 1,\n perPage: action.payload.perPage,\n };\n case \"next\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage >= Math.ceil(state.rowCount / state.perPage)) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage + 1,\n };\n case \"prev\":\n if (!state.enable) {\n return state;\n }\n\n if (state.currentPage === 1) {\n return state;\n }\n\n return {\n ...state,\n currentPage: state.currentPage - 1,\n };\n case \"jump\":\n if (!state.enable) {\n return state;\n }\n\n if (\n action.payload.pageNumber < 1 ||\n action.payload.pageNumber > Math.ceil(state.rowCount / state.perPage) ||\n state.currentPage === action.payload.pageNumber\n ) {\n return state;\n }\n\n return {\n ...state,\n currentPage: action.payload.pageNumber,\n };\n default:\n return state;\n }\n}\n\nexport function usePageReducer(initialState?: TPageState) {\n const [state, dispatch] = useReducer(\n pagenationReducer,\n initialState ?? INITIAL_PAGE_STATE\n );\n\n const next = useCallback(() => dispatch({ type: \"next\" }), [dispatch]);\n const prev = useCallback(() => dispatch({ type: \"prev\" }), [dispatch]);\n const jump = useCallback(\n (pageNumber: number) => dispatch({ type: \"jump\", payload: { pageNumber } }),\n [dispatch]\n );\n\n const setRowCount = useCallback(\n (rowCount: number) =>\n dispatch({ type: \"setRowCount\", payload: { rowCount } }),\n [dispatch]\n );\n\n const from = useMemo(() => {\n if (!state.enable) {\n return 0;\n }\n return (state.currentPage - 1) * state.perPage;\n }, [state]);\n\n const to = useMemo(() => {\n if (!state.enable) {\n return state.rowCount;\n }\n return state.currentPage * state.perPage;\n }, [state]);\n\n const pageFilter = useCallback(\n <U extends DataRecord>(data: DataObject<U>[]): DataObject<U>[] => {\n return data.slice(from, to);\n },\n [from, to]\n );\n\n return {\n enable: state.enable,\n perPage: state.enable ? state.perPage : state.rowCount,\n current: state.enable ? state.currentPage : 1,\n rowCount: state.rowCount,\n pageCount: state.enable ? Math.ceil(state.rowCount / state.perPage) : 1,\n from,\n to,\n next,\n prev,\n jump,\n setRowCount,\n pageFilter,\n };\n}\n"],"names":["pagenationReducer","state","action","type","enable","__assign","currentPage","rowCount","payload","perPage","Math","ceil","pageNumber","usePageReducer","initialState","_a","useReducer","INITIAL_PAGE_STATE","dispatch","next","useCallback","prev","jump","setRowCount","from","useMemo","to","pageFilter","data","slice","current","pageCount"],"mappings":"yLAKA,SAASA,EAAkBC,EAAmBC,GAC5C,OAAQA,EAAOC,MACb,IAAK,cACH,OAAKF,EAAMG,OAMXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbC,SAAUL,EAAOM,QAAQD,WARzBF,EAAAA,EAAA,CAAA,EACKJ,IACHM,SAAUL,EAAOM,QAAQD,WAQ/B,IAAK,aACH,MAA+B,QAA3BL,EAAOM,QAAQC,QACV,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,GAIPH,EAAMG,OASXC,EAAAA,EAAA,CAAA,EACKJ,GAAK,CACRK,YAAa,EACbG,QAASP,EAAOM,QAAQC,UAXjB,CACLF,SAAUN,EAAMM,SAChBH,QAAQ,EACRE,YAAa,EACbG,QAASP,EAAOM,QAAQC,SAS9B,IAAK,OACH,OAAKR,EAAMG,OAIPH,EAAMK,aAAeI,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SACjDR,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAIe,IAAtBH,EAAMK,YACDL,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaL,EAAMK,YAAc,IAT1BL,EAWX,IAAK,OACH,OAAKA,EAAMG,OAKTF,EAAOM,QAAQI,WAAa,GAC5BV,EAAOM,QAAQI,WAAaF,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,UAC7DR,EAAMK,cAAgBJ,EAAOM,QAAQI,WAE9BX,EAGTI,EAAAA,EAAA,CAAA,EACKJ,IACHK,YAAaJ,EAAOM,QAAQI,aAbrBX,EAeX,QACE,OAAOA,EAEb,CAEM,SAAUY,EAAeC,GACvB,IAAAC,EAAoBC,EACxBhB,EACAc,QAAAA,EAAgBG,GAFXhB,OAAOiB,OAKRC,EAAOC,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDG,EAAOD,GAAY,WAAM,OAAAF,EAAS,CAAEf,KAAM,QAAjB,GAA4B,CAACe,IACtDI,EAAOF,GACX,SAACR,GAAuB,OAAAM,EAAS,CAAEf,KAAM,OAAQK,QAAS,CAAEI,WAAUA,IAA9C,GACxB,CAACM,IAGGK,EAAcH,GAClB,SAACb,GACC,OAAAW,EAAS,CAAEf,KAAM,cAAeK,QAAS,CAAED,SAAQA,IAAnD,GACF,CAACW,IAGGM,EAAOC,GAAQ,WACnB,OAAKxB,EAAMG,QAGHH,EAAMK,YAAc,GAAKL,EAAMQ,QAF9B,CAGX,GAAG,CAACR,IAEEyB,EAAKD,GAAQ,WACjB,OAAKxB,EAAMG,OAGJH,EAAMK,YAAcL,EAAMQ,QAFxBR,EAAMM,QAGjB,GAAG,CAACN,IAEE0B,EAAaP,GACjB,SAAuBQ,GACrB,OAAOA,EAAKC,MAAML,EAAME,EAC1B,GACA,CAACF,EAAME,IAGT,MAAO,CACLtB,OAAQH,EAAMG,OACdK,QAASR,EAAMG,OAASH,EAAMQ,QAAUR,EAAMM,SAC9CuB,QAAS7B,EAAMG,OAASH,EAAMK,YAAc,EAC5CC,SAAUN,EAAMM,SAChBwB,UAAW9B,EAAMG,OAASM,KAAKC,KAAKV,EAAMM,SAAWN,EAAMQ,SAAW,EACtEe,KAAIA,EACJE,GAAEA,EACFP,KAAIA,EACJE,KAAIA,EACJC,KAAIA,EACJC,YAAWA,EACXI,WAAUA,EAEd"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as e}from"react";import{usePageReducer as o}from"./hooks.js";var t=r({enable:!0,perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){return[]}});function u(r){var e,u,i="all"===r.perPage?{enable:!1,rowCount:r.rowCount}:{enable:!0,rowCount:r.rowCount,perPage:null!==(e=r.perPage)&&void 0!==e?e:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1};return n(t.Provider,{value:o(i),children:r.children})}function i(){return e(t)}export{u as PagenationProvider,i as usePageContext};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{createContext as r,useContext as e}from"react";import{usePageReducer as o}from"./hooks.js";var t=r({enable:!0,perPage:0,current:0,pageCount:0,from:0,to:0,rowCount:0,next:function(){throw new Error("Function not implemented.")},prev:function(){throw new Error("Function not implemented.")},jump:function(){throw new Error("Function not implemented.")},setRowCount:function(){throw new Error("Function not implemented.")},pageFilter:function(){return[]}});function u(r){var e,u,i="all"===r.perPage?{enable:!1,rowCount:r.rowCount}:{enable:!0,rowCount:r.rowCount,perPage:null!==(e=r.perPage)&&void 0!==e?e:50,currentPage:null!==(u=r.currentPage)&&void 0!==u?u:1};return n(t.Provider,{value:o(i),children:r.children})}function i(){return e(t)}export{u as PagenationProvider,i as usePageContext};
3
2
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"providers.js","sources":["../../../../../src/table/pagenation/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport { TPageContext, TPageState } from \"./types\";\nimport { usePageReducer } from \"./hooks\";\n\nconst PageContext = createContext<TPageContext>({\n enable: true,\n perPage: 0,\n current: 0,\n pageCount: 0,\n from: 0,\n to: 0,\n rowCount: 0,\n next: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n prev: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n jump: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n setRowCount: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n pageFilter: () => [],\n});\n\nexport function PagenationProvider(props: {\n children: React.ReactNode;\n rowCount: number;\n perPage?: number | \"all\";\n currentPage?: number;\n}) {\n const pagenationParams: TPageState =\n props.perPage === \"all\"\n ? { enable: false, rowCount: props.rowCount }\n : {\n enable: true,\n rowCount: props.rowCount,\n perPage: props.perPage ?? 50,\n currentPage: props.currentPage ?? 1,\n };\n\n return (\n <PageContext.Provider value={usePageReducer(pagenationParams)}>\n {props.children}\n </PageContext.Provider>\n );\n}\n\nexport function usePageContext() {\n return useContext(PageContext);\n}\n"],"names":["PageContext","createContext","enable","perPage","current","pageCount","from","to","rowCount","next","Error","prev","jump","setRowCount","pageFilter","PagenationProvider","props","pagenationParams","_a","currentPage","_b","_jsx","Provider","value","usePageReducer","children","usePageContext","useContext"],"mappings":"uJAMA,IAAMA,EAAcC,EAA4B,CAC9CC,QAAQ,EACRC,QAAS,EACTC,QAAS,EACTC,UAAW,EACXC,KAAM,EACNC,GAAI,EACJC,SAAU,EACVC,KAAM,WACJ,MAAM,IAAIC,MAAM,4BAClB,EACAC,KAAM,WACJ,MAAM,IAAID,MAAM,4BAClB,EACAE,KAAM,WACJ,MAAM,IAAIF,MAAM,4BAClB,EACAG,YAAa,WACX,MAAM,IAAIH,MAAM,4BAClB,EACAI,WAAY,WAAM,MAAA,EAAA,IAGd,SAAUC,EAAmBC,WAM3BC,EACc,QAAlBD,EAAMb,QACF,CAAED,QAAQ,EAAOM,SAAUQ,EAAMR,UACjC,CACEN,QAAQ,EACRM,SAAUQ,EAAMR,SAChBL,gBAASe,EAAAF,EAAMb,uBAAW,GAC1BgB,oBAAaC,EAAAJ,EAAMG,2BAAe,GAG1C,OACEE,EAACrB,EAAYsB,SAAQ,CAACC,MAAOC,EAAeP,GAAiBQ,SAC1DT,EAAMS,UAGb,UAEgBC,IACd,OAAOC,EAAW3B,EACpB"}
@@ -1,2 +1,2 @@
1
- import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as a,useCallback as o,useMemo as n}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as c}from"./logic.js";var d=function(e,a){switch(a.type){case"setRows":return t(t({},e),{rows:a.payload.rows});case"setCols":return t(t({},e),{cols:a.payload.cols});case"setColValidators":return t(t({},e),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var o=a.payload.pasteData,n=e.rows,r=e.cols,s=e.colValidators,i=e.start,d=e.end;if(!e.onUpdateRowFunction)return e;var u=c({pasteData:o,pasteArea:{start:i,end:d},currentRows:n,currentCols:r,validators:s,tableArea:{end:{rowIndex:n.length-1,colIndex:r.length-1}}});return u.isError?("ValidationError"!==u.type&&"NoPasteData"!==u.type&&alert(u.message),e):t(t({},e),{updateParameters:{arguments:u.updateArgument,pastedRange:u.pasteRange,timing:e.updateParameters.timing+1}});case"focus":return t(t({},e),{isFocused:!0,start:a.payload.start,end:a.payload.end});case"unfocus":return t(t({},e),{isFocused:!1})}};function u(c){var u=s().setRange,l=e(d,t(t({},c),{colValidators:{},isFocused:!1,updateParameters:{arguments:[],timing:0}})),p=l[0],m=l[1],f=r(),g=i();a((function(){m({type:"setCols",payload:{cols:c.cols}})}),[c.cols]),a((function(){g.isSelecting?m({type:"focus",payload:{start:g.start,end:g.end}}):m({type:"unfocus"})}),[g]);var y=o((function(t){m({type:"setRows",payload:{rows:t}})}),[]),w=o((function(t){m({type:"setCols",payload:{cols:t}})}),[]),R=o((function(t){m({type:"setColValidators",payload:{colValidators:t}})}),[]);a((function(){R(f)}),[f]);var v=o((function(t){m({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),F=o((function(t){m({type:"onPaste",payload:{pasteData:t}})}),[]);return a((function(){p.updateParameters.arguments.length>0&&p.updateParameters.arguments.forEach((function(t){var e,a=t.newRow,o=t.oldRow;null===(e=p.onUpdateRowFunction)||void 0===e||e.call(p,a,o)})),p.updateParameters.pastedRange&&u(p.updateParameters.pastedRange)}),[p.updateParameters.timing,p.onUpdateRowFunction]),a((function(){var t=function(t){if(g.isSelecting&&t.clipboardData){t.preventDefault();var e=t.clipboardData.getData("Text");F(e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")})))}};return document.addEventListener("paste",t),function(){document.removeEventListener("paste",t)}}),[g.isSelecting]),n((function(){return{setRows:y,setCols:w,setColValidators:R,setOnUpdateRowFunction:v,onPaste:F}}),[])}export{u as usePasteReducer};
1
+ import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{useRef as t,useEffect as e,useCallback as a,useMemo as o}from"react";import{useColumnValidatesContext as n}from"../sheet/providers.js";import{useRangeActionContext as s,useRangeStateContext as i}from"../range/provider.js";import{paste as c}from"./logic.js";import{parseClipboardText as u}from"./parse.js";import{isTextEntryTarget as p}from"../operation/event-target.js";function m(m){var d=s().setRange,f=n(),l=i(),v=t(m.rows),g=t(r(r({},m),{validators:f,range:l}));e((function(){g.current=r(r({},m),{validators:f,range:l})}));var w=a((function(r){v.current=r}),[]),R=a((function(r){var t=g.current,e=t.cols,a=t.validators,o=t.range,n=t.onUpdateRowFunction,s=t.onPasteError;if(o.isSelecting&&n){var i=c({pasteData:r,pasteArea:{start:o.start,end:o.end},currentRows:v.current,currentCols:e,validators:a});if(i.isError){if("ValidationError"===i.type||"NoPasteData"===i.type)return;var u={type:i.type,message:i.message};s?s(u):alert(u.message)}else i.updateArgument.forEach((function(r){var t=r.newRow,e=r.oldRow;n(t,e)})),d(i.pasteRange)}}),[d]);return e((function(){var r=function(r){var t=g.current,e=t.range,a=t.onUpdateRowFunction;e.isSelecting&&a&&(p(r.target)||r.clipboardData&&(r.preventDefault(),R(u(r.clipboardData.getData("Text")))))};return document.addEventListener("paste",r),function(){document.removeEventListener("paste",r)}}),[R]),o((function(){return{setRows:w,onPaste:R}}),[w,R])}export{m as usePasteReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeActionContext, useRangeStateContext } from \"../range/provider\";\nimport { paste } from \"./logic\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const { rows, cols, colValidators, start, end, onUpdateRowFunction } =\n state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const res = paste({\n pasteData,\n pasteArea: { start, end },\n currentRows: rows,\n currentCols: cols,\n validators: colValidators,\n tableArea: {\n start: {\n rowIndex: 0,\n colIndex: 0,\n },\n end: {\n rowIndex: rows.length - 1,\n colIndex: cols.length - 1,\n },\n },\n });\n\n if (res.isError) {\n if (res.type !== \"ValidationError\" && res.type !== \"NoPasteData\") {\n alert(res.message);\n }\n return state;\n }\n\n return {\n ...state,\n updateParameters: {\n arguments: res.updateArgument,\n pastedRange: res.pasteRange,\n timing: state.updateParameters.timing + 1,\n },\n };\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n start: action.payload.start,\n end: action.payload.end,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const { setRange } = useRangeActionContext();\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n colValidators: {},\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n\n useEffect(() => {\n dispatch({ type: \"setCols\", payload: { cols: initial.cols } });\n }, [initial.cols]);\n\n useEffect(() => {\n if (range.isSelecting) {\n dispatch({\n type: \"focus\",\n payload: {\n start: range.start,\n end: range.end,\n },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [range]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n\n if (state.updateParameters.pastedRange) {\n setRange(state.updateParameters.pastedRange);\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n useEffect(() => {\n const paste = (e: ClipboardEvent) => {\n if (!range.isSelecting) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n const pastedData = e.clipboardData.getData(\"Text\");\n\n onPaste(\n pastedData\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"))\n );\n }\n };\n\n document.addEventListener(\"paste\", paste);\n\n return () => {\n document.removeEventListener(\"paste\", paste);\n };\n }, [range.isSelecting]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","start","end","res","paste","pasteArea","currentRows","currentCols","validators","tableArea","rowIndex","length","colIndex","isError","alert","message","updateParameters","arguments","updateArgument","pastedRange","pasteRange","timing","usePasteReducer","initial","setRange","useRangeActionContext","_a","useReducer","dispatch","useColumnValidatesContext","range","useRangeStateContext","useEffect","isSelecting","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","forEach","newRow","oldRow","_b","call","e","clipboardData","preventDefault","pastedData","getData","replace","trim","split","map","row","document","addEventListener","removeEventListener","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { TPasteHookArguments, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useRangeActionContext, useRangeStateContext } from \"../range/provider\";\nimport { paste } from \"./logic\";\nimport { parseClipboardText } from \"./parse\";\nimport { isTextEntryTarget } from \"../operation/event-target\";\n\nexport function usePasteReducer(args: TPasteHookArguments): TPasteReducerReturn {\n const { setRange } = useRangeActionContext();\n const validators = useColumnValidatesContext();\n const range = useRangeStateContext();\n const rowsRef = useRef(args.rows);\n\n // Read the latest props when a paste happens, so callbacks passed in later\n // renders are the ones that get called.\n const latest = useRef({ ...args, validators, range });\n useEffect(() => {\n latest.current = { ...args, validators, range };\n });\n\n const setRows = useCallback((rows: any[]) => {\n rowsRef.current = rows;\n }, []);\n\n const onPaste = useCallback(\n (pasteData: string[][]) => {\n const { cols, validators, range, onUpdateRowFunction, onPasteError } =\n latest.current;\n\n if (!range.isSelecting || !onUpdateRowFunction) {\n return;\n }\n\n const res = paste({\n pasteData,\n pasteArea: { start: range.start, end: range.end },\n currentRows: rowsRef.current,\n currentCols: cols,\n validators,\n });\n\n if (res.isError) {\n // Validation errors are already reported by the column validators.\n if (res.type === \"ValidationError\" || res.type === \"NoPasteData\") {\n return;\n }\n\n const error = { type: res.type, message: res.message };\n if (onPasteError) {\n onPasteError(error);\n } else {\n alert(error.message);\n }\n return;\n }\n\n res.updateArgument.forEach(({ newRow, oldRow }) => {\n onUpdateRowFunction(newRow, oldRow);\n });\n setRange(res.pasteRange);\n },\n [setRange]\n );\n\n useEffect(() => {\n const listener = (e: ClipboardEvent) => {\n const { range, onUpdateRowFunction } = latest.current;\n\n if (!range.isSelecting || !onUpdateRowFunction) {\n return;\n }\n\n // Leave pastes into text fields (including the cell editor) to them.\n if (isTextEntryTarget(e.target)) {\n return;\n }\n\n if (e.clipboardData) {\n e.preventDefault();\n onPaste(parseClipboardText(e.clipboardData.getData(\"Text\")));\n }\n };\n\n document.addEventListener(\"paste\", listener);\n\n return () => {\n document.removeEventListener(\"paste\", listener);\n };\n }, [onPaste]);\n\n return useMemo(() => ({ setRows, onPaste }), [setRows, onPaste]);\n}\n"],"names":["usePasteReducer","args","setRange","useRangeActionContext","validators","useColumnValidatesContext","range","useRangeStateContext","rowsRef","useRef","rows","latest","__assign","useEffect","current","setRows","useCallback","onPaste","pasteData","_a","cols","onUpdateRowFunction","onPasteError","isSelecting","res","paste","pasteArea","start","end","currentRows","currentCols","isError","type","error","message","alert","updateArgument","forEach","newRow","oldRow","pasteRange","listener","e","isTextEntryTarget","target","clipboardData","preventDefault","parseClipboardText","getData","document","addEventListener","removeEventListener","useMemo"],"mappings":"6bAQM,SAAUA,EAAgBC,GACtB,IAAAC,EAAaC,aACfC,EAAaC,IACbC,EAAQC,IACRC,EAAUC,EAAOR,EAAKS,MAItBC,EAASF,EAAMG,EAAAA,EAAA,CAAA,EAAMX,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,KAClDO,GAAU,WACRF,EAAOG,QAAOF,EAAAA,EAAA,CAAA,EAAQX,GAAI,CAAEG,WAAUA,EAAEE,MAAKA,GAC/C,IAEA,IAAMS,EAAUC,GAAY,SAACN,GAC3BF,EAAQM,QAAUJ,CACpB,GAAG,IAEGO,EAAUD,GACd,SAACE,GACO,IAAAC,EACJR,EAAOG,QADDM,SAAMhB,eAAYE,UAAOe,wBAAqBC,iBAGtD,GAAKhB,EAAMiB,aAAgBF,EAA3B,CAIA,IAAMG,EAAMC,EAAM,CAChBP,UAASA,EACTQ,UAAW,CAAEC,MAAOrB,EAAMqB,MAAOC,IAAKtB,EAAMsB,KAC5CC,YAAarB,EAAQM,QACrBgB,YAAaV,EACbhB,WAAUA,IAGZ,GAAIoB,EAAIO,QAAR,CAEE,GAAiB,oBAAbP,EAAIQ,MAA2C,gBAAbR,EAAIQ,KACxC,OAGF,IAAMC,EAAQ,CAAED,KAAMR,EAAIQ,KAAME,QAASV,EAAIU,SACzCZ,EACFA,EAAaW,GAEbE,MAAMF,EAAMC,QAGhB,MAEAV,EAAIY,eAAeC,SAAQ,SAAClB,OAAEmB,EAAMnB,EAAAmB,OAAEC,EAAMpB,EAAAoB,OAC1ClB,EAAoBiB,EAAQC,EAC9B,IACArC,EAASsB,EAAIgB,WA5Bb,CA6BF,GACA,CAACtC,IA6BH,OA1BAW,GAAU,WACR,IAAM4B,EAAW,SAACC,GACV,IAAAvB,EAAiCR,EAAOG,QAAtCR,EAAKa,EAAAb,MAAEe,EAAmBF,EAAAE,oBAE7Bf,EAAMiB,aAAgBF,IAKvBsB,EAAkBD,EAAEE,SAIpBF,EAAEG,gBACJH,EAAEI,iBACF7B,EAAQ8B,EAAmBL,EAAEG,cAAcG,QAAQ,WAEvD,EAIA,OAFAC,SAASC,iBAAiB,QAAST,GAE5B,WACLQ,SAASE,oBAAoB,QAASV,EACxC,CACF,GAAG,CAACxB,IAEGmC,GAAQ,WAAM,OAAGrC,QAAOA,EAAEE,QAAOA,EAAnB,GAAwB,CAACF,EAASE,GACzD"}
@@ -1,2 +1,2 @@
1
- import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";function e(e){var t,a=e.pasteData.length,s=Math.max.apply(Math,e.pasteData.map((function(r){return r.length})));if(0===a||0===s)return{isError:!0,type:"NoPasteData",message:"ペーストデータがありません。"};var n=e.pasteArea.end.rowIndex-e.pasteArea.start.rowIndex+1,o=e.pasteArea.end.colIndex-e.pasteArea.start.colIndex+1,l=n<a?a:n,p=o<s?s:o;if(l+e.pasteArea.start.rowIndex>e.currentRows.length)return{isError:!0,type:"OtherError",message:"貼り付け先の行数が足りません。"};if(p+e.pasteArea.start.colIndex>e.currentCols.length)return{isError:!0,type:"OtherError",message:"貼り付け先の列数が足りません。"};for(var d=0;d<p;d++){if(!(I=e.currentCols[e.pasteArea.start.colIndex+d]).editable)return{isError:!0,type:"OtherError",message:"編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(t=I.label)&&void 0!==t?t:I.key)}}for(d=0;d<a;d++)for(var u=e.pasteData[d],c=0;c<p;c++){var i=c%u.length,x=u[i],I=e.currentCols[e.pasteArea.start.colIndex+c];if(!(0,e.validators[I.key])(x))return{isError:!0,type:"ValidationError",message:"バリデーションエラー: ".concat(x)}}var f=[];for(d=0;d<l;d++){u=e.pasteData[d%a];var A=r({},e.currentRows[e.pasteArea.start.rowIndex+d]),w=!1,g=function(r){var t=u[r%u.length],a=e.currentCols[e.pasteArea.start.colIndex+r],s="number"===a.type?Number(t):"select"===a.type?""===t?"":a.options.find((function(r){return r.label===t})).value:t;A[a.key]!==s&&(w=!0,A[a.key]=s)};for(c=0;c<p;c++)g(c);w&&f.push({newRow:A,oldRow:e.currentRows[e.pasteArea.start.rowIndex+d]})}return{isError:!1,updateArgument:f,pasteRange:{start:{rowIndex:e.pasteArea.start.rowIndex,colIndex:e.pasteArea.start.colIndex},end:{rowIndex:e.pasteArea.start.rowIndex+l-1,colIndex:e.pasteArea.start.colIndex+p-1}}}}export{e as paste};
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";var r=/^-?\d{1,3}(,\d{3})+(\.\d+)?$/;function t(e,t){if("number"!==e.type)return t;var a=t.trim();return r.test(a)?a.replace(/,/g,""):a}function a(r){var a,n=r.pasteData.length,s=Math.max.apply(Math,r.pasteData.map((function(e){return e.length})));if(0===n||0===s)return{isError:!0,type:"NoPasteData",message:"ペーストデータがありません。"};var o=r.pasteArea.end.rowIndex-r.pasteArea.start.rowIndex+1,l=r.pasteArea.end.colIndex-r.pasteArea.start.colIndex+1,p=o<n?n:o,d=l<s?s:l;if(p+r.pasteArea.start.rowIndex>r.currentRows.length)return{isError:!0,type:"NOT_ENOUGH_ROWS",message:"貼り付け先の行数が足りません。"};if(d+r.pasteArea.start.colIndex>r.currentCols.length)return{isError:!0,type:"NOT_ENOUGH_COLUMNS",message:"貼り付け先の列数が足りません。"};for(var u=0;u<d;u++){if(!(x=r.currentCols[r.pasteArea.start.colIndex+u]).editable)return{isError:!0,type:"NOT_EDITABLE_COLUMN",message:"編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(a=x.label)&&void 0!==a?a:x.key)}}for(u=0;u<n;u++)for(var c=r.pasteData[u],i=0;i<d;i++){var x,I=i%c.length,f=t(x=r.currentCols[r.pasteArea.start.colIndex+i],c[I]);if(!(0,r.validators[x.key])(f))return{isError:!0,type:"ValidationError",message:"バリデーションエラー: ".concat(f)}}var A=[];for(u=0;u<p;u++){c=r.pasteData[u%n];var m=e({},r.currentRows[r.pasteArea.start.rowIndex+u]),w=!1,g=function(e){var a=r.currentCols[r.pasteArea.start.colIndex+e],n=t(a,c[e%c.length]),s="number"===a.type?Number(n):"select"===a.type?""===n?"":a.options.find((function(e){return e.label===n})).value:n;m[a.key]!==s&&(w=!0,m[a.key]=s)};for(i=0;i<d;i++)g(i);w&&A.push({newRow:m,oldRow:r.currentRows[r.pasteArea.start.rowIndex+u]})}return{isError:!1,updateArgument:A,pasteRange:{start:{rowIndex:r.pasteArea.start.rowIndex,colIndex:r.pasteArea.start.colIndex},end:{rowIndex:r.pasteArea.start.rowIndex+p-1,colIndex:r.pasteArea.start.colIndex+d-1}}}}export{a as paste};
2
2
  //# sourceMappingURL=logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type: \"ValidationError\" | \"NoPasteData\" | \"OtherError\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\nexport function paste(args: TPasteArgument): TPasteResult {\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message: \"ペーストデータがありません。\",\n };\n }\n\n // Rangeの種類を取得\n const rangeRowLength =\n args.pasteArea.end.rowIndex - args.pasteArea.start.rowIndex + 1;\n const rangeColLength =\n args.pasteArea.end.colIndex - args.pasteArea.start.colIndex + 1;\n\n const pasteRowLength =\n rangeRowLength < pasteDataRowLength ? pasteDataRowLength : rangeRowLength;\n const pasteColLength =\n rangeColLength < pasteDataColLength ? pasteDataColLength : rangeColLength;\n\n // ペースト先の行数が足りない場合はエラー\n if (\n pasteRowLength + args.pasteArea.start.rowIndex >\n args.currentRows.length\n ) {\n return {\n isError: true,\n type: \"OtherError\",\n message: \"貼り付け先の行数が足りません。\",\n };\n }\n // ペースト先の列数が足りない場合はエラー\n if (\n pasteColLength + args.pasteArea.start.colIndex >\n args.currentCols.length\n ) {\n return {\n isError: true,\n type: \"OtherError\",\n message: \"貼り付け先の列数が足りません。\",\n };\n }\n\n // ペースト先の列に編集不可列が含まれている場合はエラー\n for (let i = 0; i < pasteColLength; i++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + i];\n\n if (!col.editable) {\n return {\n isError: true,\n type: \"OtherError\",\n message: `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`,\n };\n }\n }\n\n // ペーストデータのバリデーション\n for (let i = 0; i < pasteDataRowLength; i++) {\n const pasteRow = args.pasteData[i];\n\n for (let j = 0; j < pasteColLength; j++) {\n const colIndexForData = j % pasteRow.length;\n const pasteValue = pasteRow[colIndexForData];\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const validate = args.validators[col.key as string];\n\n if (!validate(pasteValue)) {\n return {\n isError: true,\n type: \"ValidationError\",\n message: `バリデーションエラー: ${pasteValue}`,\n };\n }\n }\n }\n\n const updateArguments: { newRow: any; oldRow: any }[] = [];\n\n // ペーストデータを反映\n for (let i = 0; i < pasteRowLength; i++) {\n const pasteRow = args.pasteData[i % pasteDataRowLength];\n const newRow = { ...args.currentRows[args.pasteArea.start.rowIndex + i] };\n let checkUpdatedRow = false;\n\n for (let j = 0; j < pasteColLength; j++) {\n const pasteValue = pasteRow[j % pasteRow.length];\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!.value\n : pasteValue;\n if (newRow[col.key] !== value) {\n checkUpdatedRow = true;\n newRow[col.key] = value;\n }\n }\n\n if (checkUpdatedRow) {\n updateArguments.push({\n newRow,\n oldRow: args.currentRows[args.pasteArea.start.rowIndex + i],\n });\n }\n }\n\n return {\n isError: false,\n updateArgument: updateArguments,\n pasteRange: {\n start: {\n rowIndex: args.pasteArea.start.rowIndex,\n colIndex: args.pasteArea.start.colIndex,\n },\n end: {\n rowIndex: args.pasteArea.start.rowIndex + pasteRowLength - 1,\n colIndex: args.pasteArea.start.colIndex + pasteColLength - 1,\n },\n },\n };\n}\n"],"names":["paste","args","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","type","message","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","currentCols","i","col","editable","concat","_a","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","updateArguments","newRow","__assign","checkUpdatedRow","value","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"oEAuDM,SAAUA,EAAMC,SAEdC,EAAqBD,EAAKE,UAAUC,OACpCC,EAAqBC,KAAKC,UAALD,KACtBL,EAAKE,UAAUK,KAAI,SAACC,GAAQ,OAAAA,EAAIL,MAAJ,KAIjC,GAA2B,IAAvBF,GAAmD,IAAvBG,EAC9B,MAAO,CACLK,SAAS,EACTC,KAAM,cACNC,QAAS,kBAKb,IAAMC,EACJZ,EAAKa,UAAUC,IAAIC,SAAWf,EAAKa,UAAUG,MAAMD,SAAW,EAC1DE,EACJjB,EAAKa,UAAUC,IAAII,SAAWlB,EAAKa,UAAUG,MAAME,SAAW,EAE1DC,EACJP,EAAiBX,EAAqBA,EAAqBW,EACvDQ,EACJH,EAAiBb,EAAqBA,EAAqBa,EAG7D,GACEE,EAAiBnB,EAAKa,UAAUG,MAAMD,SACtCf,EAAKqB,YAAYlB,OAEjB,MAAO,CACLM,SAAS,EACTC,KAAM,aACNC,QAAS,mBAIb,GACES,EAAiBpB,EAAKa,UAAUG,MAAME,SACtClB,EAAKsB,YAAYnB,OAEjB,MAAO,CACLM,SAAS,EACTC,KAAM,aACNC,QAAS,mBAKb,IAAK,IAAIY,EAAI,EAAGA,EAAIH,EAAgBG,IAAK,CAGvC,KAFMC,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWK,IAEpDE,SACP,MAAO,CACLhB,SAAS,EACTC,KAAM,aACNC,QAAS,wCAAAe,OACE,QAATC,EAAAH,EAAII,aAAK,IAAAD,EAAAA,EAAKH,EAAIK,KAI1B,CAGA,IAASN,EAAI,EAAGA,EAAItB,EAAoBsB,IAGtC,IAFA,IAAMO,EAAW9B,EAAKE,UAAUqB,GAEvBQ,EAAI,EAAGA,EAAIX,EAAgBW,IAAK,CACvC,IAAMC,EAAkBD,EAAID,EAAS3B,OAC/B8B,EAAaH,EAASE,GACtBR,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWa,GAG7D,KAAKG,EAFYlC,EAAKmC,WAAWX,EAAIK,MAEvBI,GACZ,MAAO,CACLxB,SAAS,EACTC,KAAM,kBACNC,QAAS,eAAAe,OAAeO,GAG9B,CAGF,IAAMG,EAAkD,GAGxD,IAASb,EAAI,EAAGA,EAAIJ,EAAgBI,IAAK,CACjCO,EAAW9B,EAAKE,UAAUqB,EAAItB,GAApC,IACMoC,EAAMC,EAAA,CAAA,EAAQtC,EAAKqB,YAAYrB,EAAKa,UAAUG,MAAMD,SAAWQ,IACjEgB,GAAkB,aAEbR,GACP,IAAME,EAAaH,EAASC,EAAID,EAAS3B,QACnCqB,EAAMxB,EAAKsB,YAAYtB,EAAKa,UAAUG,MAAME,SAAWa,GACvDS,EACS,WAAbhB,EAAId,KACA+B,OAAOR,GACM,WAAbT,EAAId,KACW,KAAfuB,EACE,GACAT,EAAIkB,QAAQC,MAAK,SAACC,GAAW,OAAAA,EAAOhB,QAAUK,CAAjB,IAA8BO,MAC7DP,EACFI,EAAOb,EAAIK,OAASW,IACtBD,GAAkB,EAClBF,EAAOb,EAAIK,KAAOW,IAbtB,IAAST,EAAI,EAAGA,EAAIX,EAAgBW,MAA3BA,GAiBLQ,GACFH,EAAgBS,KAAK,CACnBR,OAAMA,EACNS,OAAQ9C,EAAKqB,YAAYrB,EAAKa,UAAUG,MAAMD,SAAWQ,IAG/D,CAEA,MAAO,CACLd,SAAS,EACTsC,eAAgBX,EAChBY,WAAY,CACVhC,MAAO,CACLD,SAAUf,EAAKa,UAAUG,MAAMD,SAC/BG,SAAUlB,EAAKa,UAAUG,MAAME,UAEjCJ,IAAK,CACHC,SAAUf,EAAKa,UAAUG,MAAMD,SAAWI,EAAiB,EAC3DD,SAAUlB,EAAKa,UAAUG,MAAME,SAAWE,EAAiB,IAInE"}
1
+ {"version":3,"file":"logic.js","sources":["../../../../../src/table/paste/logic.ts"],"sourcesContent":["import { TTableColumn } from \"../table/type\";\n\ntype TPasteArgument = {\n pasteData: string[][];\n currentRows: any[];\n currentCols: TTableColumn<any>[];\n tableArea?: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n pasteArea: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n validators: {\n [key: string]: (value: any) => boolean;\n };\n};\n\ntype TPasteResult =\n | {\n isError: true;\n type:\n | \"ValidationError\"\n | \"NoPasteData\"\n | \"NOT_ENOUGH_ROWS\"\n | \"NOT_ENOUGH_COLUMNS\"\n | \"NOT_EDITABLE_COLUMN\";\n message: string;\n }\n | {\n isError: false;\n updateArgument: {\n newRow: any;\n oldRow: any;\n }[];\n pasteRange: {\n start: {\n rowIndex: number;\n colIndex: number;\n };\n end: {\n rowIndex: number;\n colIndex: number;\n };\n };\n };\n\n// A number with thousands separators, as Excel copies formatted numbers.\nconst GROUPED_NUMBER = /^-?\\d{1,3}(,\\d{3})+(\\.\\d+)?$/;\n\n/**\n * Turns pasted text into the form the column's validator expects. For number\n * columns, surrounding spaces and thousands separators (\"1,000\") are removed.\n */\nfunction normalizePastedValue(col: TTableColumn<any>, value: string): string {\n if (col.type !== \"number\") {\n return value;\n }\n\n const trimmed = value.trim();\n return GROUPED_NUMBER.test(trimmed) ? trimmed.replace(/,/g, \"\") : trimmed;\n}\n\nexport function paste(args: TPasteArgument): TPasteResult {\n // ペーストデータの行数と列数を取得\n const pasteDataRowLength = args.pasteData.length;\n const pasteDataColLength = Math.max(\n ...args.pasteData.map((row) => row.length)\n );\n\n // ペーストデータが空の場合は何もしない\n if (pasteDataRowLength === 0 || pasteDataColLength === 0) {\n return {\n isError: true,\n type: \"NoPasteData\",\n message: \"ペーストデータがありません。\",\n };\n }\n\n // Rangeの種類を取得\n const rangeRowLength =\n args.pasteArea.end.rowIndex - args.pasteArea.start.rowIndex + 1;\n const rangeColLength =\n args.pasteArea.end.colIndex - args.pasteArea.start.colIndex + 1;\n\n const pasteRowLength =\n rangeRowLength < pasteDataRowLength ? pasteDataRowLength : rangeRowLength;\n const pasteColLength =\n rangeColLength < pasteDataColLength ? pasteDataColLength : rangeColLength;\n\n // ペースト先の行数が足りない場合はエラー\n if (\n pasteRowLength + args.pasteArea.start.rowIndex >\n args.currentRows.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_ROWS\",\n message: \"貼り付け先の行数が足りません。\",\n };\n }\n // ペースト先の列数が足りない場合はエラー\n if (\n pasteColLength + args.pasteArea.start.colIndex >\n args.currentCols.length\n ) {\n return {\n isError: true,\n type: \"NOT_ENOUGH_COLUMNS\",\n message: \"貼り付け先の列数が足りません。\",\n };\n }\n\n // ペースト先の列に編集不可列が含まれている場合はエラー\n for (let i = 0; i < pasteColLength; i++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + i];\n\n if (!col.editable) {\n return {\n isError: true,\n type: \"NOT_EDITABLE_COLUMN\",\n message: `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`,\n };\n }\n }\n\n // ペーストデータのバリデーション\n for (let i = 0; i < pasteDataRowLength; i++) {\n const pasteRow = args.pasteData[i];\n\n for (let j = 0; j < pasteColLength; j++) {\n const colIndexForData = j % pasteRow.length;\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[colIndexForData]);\n const validate = args.validators[col.key as string];\n\n if (!validate(pasteValue)) {\n return {\n isError: true,\n type: \"ValidationError\",\n message: `バリデーションエラー: ${pasteValue}`,\n };\n }\n }\n }\n\n const updateArguments: { newRow: any; oldRow: any }[] = [];\n\n // ペーストデータを反映\n for (let i = 0; i < pasteRowLength; i++) {\n const pasteRow = args.pasteData[i % pasteDataRowLength];\n const newRow = { ...args.currentRows[args.pasteArea.start.rowIndex + i] };\n let checkUpdatedRow = false;\n\n for (let j = 0; j < pasteColLength; j++) {\n const col = args.currentCols[args.pasteArea.start.colIndex + j];\n const pasteValue = normalizePastedValue(col, pasteRow[j % pasteRow.length]);\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!.value\n : pasteValue;\n if (newRow[col.key] !== value) {\n checkUpdatedRow = true;\n newRow[col.key] = value;\n }\n }\n\n if (checkUpdatedRow) {\n updateArguments.push({\n newRow,\n oldRow: args.currentRows[args.pasteArea.start.rowIndex + i],\n });\n }\n }\n\n return {\n isError: false,\n updateArgument: updateArguments,\n pasteRange: {\n start: {\n rowIndex: args.pasteArea.start.rowIndex,\n colIndex: args.pasteArea.start.colIndex,\n },\n end: {\n rowIndex: args.pasteArea.start.rowIndex + pasteRowLength - 1,\n colIndex: args.pasteArea.start.colIndex + pasteColLength - 1,\n },\n },\n };\n}\n"],"names":["GROUPED_NUMBER","normalizePastedValue","col","value","type","trimmed","trim","test","replace","paste","args","pasteDataRowLength","pasteData","length","pasteDataColLength","Math","max","map","row","isError","message","rangeRowLength","pasteArea","end","rowIndex","start","rangeColLength","colIndex","pasteRowLength","pasteColLength","currentRows","currentCols","i","editable","concat","_a","label","key","pasteRow","j","colIndexForData","pasteValue","validate","validators","updateArguments","newRow","__assign","checkUpdatedRow","Number","options","find","option","push","oldRow","updateArgument","pasteRange"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ function n(n){var e=n.replace(/\r\n?/g,"\n").replace(/\n$/,"");if(""===e)return[];for(var l=[],t=[],u=0;;){var i='"'===e[u]?r(e,u):null,a=void 0;if(i)a=i.value,u=i.next;else{for(var f=u;f<e.length&&"\t"!==e[f]&&"\n"!==e[f];)f++;a=e.slice(u,f),u=f}if(t.push(a),u>=e.length)return l.push(t),l;"\n"===e[u]&&(l.push(t),t=[]),u++}}function r(n,r){for(var e="",l=r+1;l<n.length;){if('"'===n[l]){if('"'===n[l+1]){e+='"',l+=2;continue}var t=n[l+1];return void 0===t||"\t"===t||"\n"===t?{value:e,next:l+1}:null}e+=n[l],l++}return null}export{n as parseClipboardText};
2
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sources":["../../../../../src/table/paste/parse.ts"],"sourcesContent":["/**\n * Parses clipboard text copied from a spreadsheet (Excel, Google Sheets)\n * into rows of cells.\n *\n * - Cells are separated by tabs and rows by line breaks.\n * - A cell wrapped in double quotes may contain tabs and line breaks, and\n * `\"\"` inside it stands for one `\"` (this is how Excel copies such cells).\n * - Commas are kept as part of the value, so \"1,000\" stays one cell.\n * - Only the final line break is dropped; empty cells are kept.\n */\nexport function parseClipboardText(text: string): string[][] {\n const source = text.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\");\n\n if (source === \"\") {\n return [];\n }\n\n const rows: string[][] = [];\n let row: string[] = [];\n let i = 0;\n\n while (true) {\n const quoted = source[i] === '\"' ? readQuotedCell(source, i) : null;\n let cell: string;\n\n if (quoted) {\n cell = quoted.value;\n i = quoted.next;\n } else {\n let end = i;\n while (end < source.length && source[end] !== \"\\t\" && source[end] !== \"\\n\") {\n end++;\n }\n cell = source.slice(i, end);\n i = end;\n }\n\n row.push(cell);\n\n if (i >= source.length) {\n rows.push(row);\n return rows;\n }\n\n if (source[i] === \"\\n\") {\n rows.push(row);\n row = [];\n }\n i++;\n }\n}\n\n/**\n * Reads a quoted cell starting at `start`. Returns null if the text is not a\n * properly closed quoted cell, in which case it is read as plain text.\n */\nfunction readQuotedCell(\n source: string,\n start: number\n): { value: string; next: number } | null {\n let value = \"\";\n let i = start + 1;\n\n while (i < source.length) {\n if (source[i] === '\"') {\n if (source[i + 1] === '\"') {\n value += '\"';\n i += 2;\n continue;\n }\n\n const after = source[i + 1];\n if (after === undefined || after === \"\\t\" || after === \"\\n\") {\n return { value, next: i + 1 };\n }\n return null;\n }\n\n value += source[i];\n i++;\n }\n\n return null;\n}\n"],"names":["parseClipboardText","text","source","replace","rows","row","i","quoted","readQuotedCell","cell","value","next","end","length","slice","push","start","after","undefined"],"mappings":"AAUM,SAAUA,EAAmBC,GACjC,IAAMC,EAASD,EAAKE,QAAQ,SAAU,MAAMA,QAAQ,MAAO,IAE3D,GAAe,KAAXD,EACF,MAAO,GAOT,IAJA,IAAME,EAAmB,GACrBC,EAAgB,GAChBC,EAAI,IAEK,CACX,IAAMC,EAAuB,MAAdL,EAAOI,GAAaE,EAAeN,EAAQI,GAAK,KAC3DG,SAEJ,GAAIF,EACFE,EAAOF,EAAOG,MACdJ,EAAIC,EAAOI,SACN,CAEL,IADA,IAAIC,EAAMN,EACHM,EAAMV,EAAOW,QAA0B,OAAhBX,EAAOU,IAAiC,OAAhBV,EAAOU,IAC3DA,IAEFH,EAAOP,EAAOY,MAAMR,EAAGM,GACvBN,EAAIM,CACN,CAIA,GAFAP,EAAIU,KAAKN,GAELH,GAAKJ,EAAOW,OAEd,OADAT,EAAKW,KAAKV,GACHD,EAGS,OAAdF,EAAOI,KACTF,EAAKW,KAAKV,GACVA,EAAM,IAERC,GACF,CACF,CAMA,SAASE,EACPN,EACAc,GAKA,IAHA,IAAIN,EAAQ,GACRJ,EAAIU,EAAQ,EAETV,EAAIJ,EAAOW,QAAQ,CACxB,GAAkB,MAAdX,EAAOI,GAAY,CACrB,GAAsB,MAAlBJ,EAAOI,EAAI,GAAY,CACzBI,GAAS,IACTJ,GAAK,EACL,QACF,CAEA,IAAMW,EAAQf,EAAOI,EAAI,GACzB,YAAcY,IAAVD,GAAiC,OAAVA,GAA4B,OAAVA,EACpC,CAAEP,MAAKA,EAAEC,KAAML,EAAI,GAErB,IACT,CAEAI,GAASR,EAAOI,GAChBA,GACF,CAEA,OAAO,IACT"}
@@ -1,2 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import{createContext as n,useContext as t}from"react";import{usePasteReducer as r}from"./hooks.js";var i=n({setRows:function(){},setCols:function(){},setColValidators:function(){},setOnUpdateRowFunction:function(){},onPaste:function(){}});function e(n){var t=n.children,e=n.rows,c=n.cols,s=n.onUpdateRowFunction,u=void 0===s?function(){}:s;return o(i.Provider,{value:r({rows:e,cols:c,onUpdateRowFunction:u}),children:t})}function c(){return t(i)}export{e as PasteProvider,c as usePasteActionContext};
1
+ import{__rest as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as o}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{usePasteReducer as n}from"./hooks.js";var i=t({setRows:function(){},onPaste:function(){}});function s(t){var e=t.children,s=r(t,["children"]);return o(i.Provider,{value:n(s),children:e})}function m(){return e(i)}export{s as PasteProvider,m as usePasteActionContext};
2
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n setCols: () => {},\n setColValidators: () => {},\n setOnUpdateRowFunction: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n rows,\n cols,\n onUpdateRowFunction = () => {},\n}: {\n children: React.JSX.Element | React.JSX.Element[];\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}) {\n return (\n <PasteContext.Provider\n value={usePasteReducer({\n rows,\n cols,\n onUpdateRowFunction,\n })}\n >\n {children}\n </PasteContext.Provider>\n );\n}\n\nexport function usePasteActionContext() {\n return useContext(PasteContext);\n}\n"],"names":["PasteContext","createContext","setRows","setCols","setColValidators","setOnUpdateRowFunction","onPaste","PasteProvider","_a","children","rows","cols","_b","onUpdateRowFunction","_jsx","Provider","value","usePasteReducer","usePasteActionContext","useContext"],"mappings":"2IAIA,IAAMA,EAAeC,EAAmC,CACtDC,QAAS,WAAO,EAChBC,QAAS,WAAO,EAChBC,iBAAkB,WAAO,EACzBC,uBAAwB,WAAO,EAC/BC,QAAS,WAAO,IAGZ,SAAUC,EAAcC,GAC5B,IAAAC,EAAQD,EAAAC,SACRC,EAAIF,EAAAE,KACJC,EAAIH,EAAAG,KACJC,EAAAJ,EAAAK,oBAAAA,OAAmB,IAAAD,EAAG,WAAO,EAACA,EAO9B,OACEE,EAACd,EAAae,SAAQ,CACpBC,MAAOC,EAAgB,CACrBP,KAAIA,EACJC,KAAIA,EACJE,oBAAmBA,IACnBJ,SAEDA,GAGP,UAEgBS,IACd,OAAOC,EAAWnB,EACpB"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/paste/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TPasteHookArguments, TPasteReducerReturn } from \"./types\";\nimport { usePasteReducer } from \"./hooks\";\n\nconst PasteContext = createContext<TPasteReducerReturn>({\n setRows: () => {},\n onPaste: () => {},\n});\n\nexport function PasteProvider({\n children,\n ...args\n}: TPasteHookArguments & {\n children: React.JSX.Element | React.JSX.Element[];\n}) {\n return (\n <PasteContext.Provider value={usePasteReducer(args)}>\n {children}\n </PasteContext.Provider>\n );\n}\n\nexport function usePasteActionContext() {\n return useContext(PasteContext);\n}\n"],"names":["PasteContext","createContext","setRows","onPaste","PasteProvider","_a","children","args","__rest","_jsx","Provider","value","usePasteReducer","usePasteActionContext","useContext"],"mappings":"6MAIA,IAAMA,EAAeC,EAAmC,CACtDC,QAAS,WAAO,EAChBC,QAAS,WAAO,IAGZ,SAAUC,EAAcC,GAC5B,IAAAC,EAAQD,EAAAC,SACLC,EAAIC,EAAAH,EAFqB,cAM5B,OACEI,EAACT,EAAaU,UAASC,MAAOC,EAAgBL,GAAKD,SAChDA,GAGP,UAEgBO,IACd,OAAOC,EAAWd,EACpB"}
@@ -1,2 +1,2 @@
1
- import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{Checkbox as e}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{useRangeActionContext as a}from"../range/provider.js";import{useTableIdGenerator as n}from"../id/provider.js";var l=t((function(t){var l=n(),c=a().reset,p=JSON.parse(t.dataString),s=t.conditionalFormattingString.split(",");return r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(p):""),onClick:function(r){r.preventDefault(),t.onClickRow&&(t.onClickRow(p),c())},"data-testid":p.id,children:[t.existCheckbox&&o("td",{className:"w-8 h-full p-px",onClick:function(r){r.stopPropagation()},children:o(e,{row:p})}),t.cols.map((function(r,e){var a;return o(i,{id:l.getTableCellId({rowIndex:t.rowIndex,columnIndex:e}),row:p,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],editable:null!==(a=r.editable)&&void 0!==a&&a},r.key)}))]})}));export{l as Row};
1
+ import{jsxs as o,jsx as r}from"react/jsx-runtime";import{memo as e}from"react";import{Checkbox as t}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as a}from"../id/provider.js";var l=e((function(e){var l=a(),c=n().reset,p=e.row,m=e.conditionalFormattingString.split(",");return o("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ".concat(e.onClickRow?"hover:cursor-pointer":""," ").concat(e.applyRowFormatting?e.applyRowFormatting(p):""),onClick:function(o){o.preventDefault(),e.onClickRow&&(e.onClickRow(p),c())},"data-testid":p.id,children:[e.existCheckbox&&r("td",{className:"w-8 h-full p-px",onClick:function(o){o.stopPropagation()},children:r(t,{row:p})}),e.cols.map((function(o,t){var n;return r(i,{id:l.getTableCellId({rowIndex:e.rowIndex,columnIndex:t}),row:p,isExistOnClickRow:!!e.onClickRow,cellFormatClassName:m[t],editable:null!==(n=o.editable)&&void 0!==n&&n},o.key)}))]})}));export{l as Row};
2
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n className=\"w-8 h-full p-px\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","stopPropagation","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"4SAiBaA,EAAMC,GAAK,SAAiCC,GACvD,IAAMC,EAAcC,IACZC,EAAUC,UACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,EAAA,KAAA,CACEC,UAAW,0JAAAC,OACPd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWV,GACjBF,IAEJ,gBACaE,EAAIe,GAAEC,SAAA,CAElBrB,EAAMsB,eACLC,EAAA,KAAA,CACEV,UAAU,kBACVI,QAAS,SAACC,GACRA,EAAEM,iBACJ,EAACH,SAEDE,EAACE,EAAQ,CAACpB,IAAKA,MAGlBL,EAAM0B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAACO,EAAS,CAERV,GAAInB,EAAY8B,eAAe,CAC7BC,SAAUhC,EAAMgC,SAChBC,YAAaJ,IAEfxB,IAAKA,EACL6B,oBAAqBlC,EAAMe,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,QAAZC,EAAAT,EAAIQ,gBAAQ,IAAAC,GAAAA,GARjBT,EAAIU,IAWf,MAGN"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataObject, DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n row: DataObject<DataRecord>;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = props.row;\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none hover:after:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n className=\"w-8 h-full p-px\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","stopPropagation","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"4SAiBaA,EAAMC,GAAK,SAAiCC,GACvD,IAAMC,EAAcC,IACZC,EAAUC,UACZC,EAAML,EAAMK,IACZC,EAAwBN,EAAMO,4BAA4BC,MAAM,KAEtE,OACEC,EAAA,KAAA,CACEC,UAAW,0JAAAC,OACPX,EAAMY,WAAa,uBAAyB,GAAE,KAAAD,OAC9CX,EAAMa,mBAAqBb,EAAMa,mBAAmBR,GAAO,IAC/DS,QAAS,SAACC,GACRA,EAAEC,iBAEIhB,EAAMY,aACVZ,EAAMY,WAAWP,GACjBF,IAEJ,gBACaE,EAAIY,GAAEC,SAAA,CAElBlB,EAAMmB,eACLC,EAAA,KAAA,CACEV,UAAU,kBACVI,QAAS,SAACC,GACRA,EAAEM,iBACJ,EAACH,SAEDE,EAACE,EAAQ,CAACjB,IAAKA,MAGlBL,EAAMuB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAACO,EAAS,CAERV,GAAIhB,EAAY2B,eAAe,CAC7BC,SAAU7B,EAAM6B,SAChBC,YAAaJ,IAEfrB,IAAKA,EACL0B,oBAAqB/B,EAAMY,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,QAAZC,EAAAT,EAAIQ,gBAAQ,IAAAC,GAAAA,GARjBT,EAAIU,IAWf,MAGN"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as n,useMemo as t}from"react";import{generateValidateFunction as i}from"../libs/generate-validate-function.js";var o=e({cols:[],validates:{}});function u(e){var n=e.children,u=e.cols,a=e.errorHandler,c=t((function(){return u.reduce((function(r,e){return r[e.key]=i(e,a),r}),{})}),[u]),l=t((function(){return{cols:u,validates:c}}),[u]);return r(o.Provider,{value:l,children:n})}function a(){return n(o).cols}function c(r){return n(o).validates[r]}function l(){return n(o).validates}export{u as ColumnsProvider,c as useColumnValidateContext,l as useColumnValidatesContext,a as useColumnsContext};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as n,useMemo as t}from"react";import{generateValidateFunction as i}from"../libs/generate-validate-function.js";var o=e({cols:[],validates:{}});function u(e){var n=e.children,u=e.cols,c=e.errorHandler,a=t((function(){return u.reduce((function(r,e){return r[e.key]=i(e,c),r}),{})}),[u]),l=t((function(){return{cols:u,validates:a}}),[u]);return r(o.Provider,{value:l,children:n})}function c(){return n(o).cols}function a(r){return n(o).validates[r]}function l(){return n(o).validates}export{u as ColumnsProvider,a as useColumnValidateContext,l as useColumnValidatesContext,c as useColumnsContext};
3
2
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"providers.js","sources":["../../../../../src/table/sheet/providers.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport {\n generateValidateFunction,\n TErrorValidation,\n} from \"../libs/generate-validate-function\";\n\nconst ColsContext = createContext<{\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n}>({\n cols: [],\n validates: {},\n});\n\nexport function ColumnsProvider<T extends DataRecord>({\n children,\n cols,\n errorHandler,\n}: {\n children: React.ReactNode;\n cols: TTableColumn<T>[];\n errorHandler?: (errors: TErrorValidation[]) => void;\n}) {\n const validates = useMemo(\n () =>\n cols.reduce((acc, col) => {\n const { key } = col;\n\n acc[key] = generateValidateFunction(col as any, errorHandler);\n\n return acc;\n }, {} as { [key in keyof T]: (value: any) => boolean }),\n [cols]\n );\n\n const state = useMemo(() => ({ cols, validates }), [cols]);\n\n return (\n <ColsContext.Provider\n value={\n state as {\n cols: TTableColumn<DataRecord>[];\n validates: { [key: string]: (value: any) => boolean };\n }\n }\n >\n {children}\n </ColsContext.Provider>\n );\n}\n\nexport function useColumnsContext() {\n return useContext(ColsContext).cols;\n}\n\nexport function useColumnValidateContext(key: string) {\n return useContext(ColsContext).validates[key];\n}\n\nexport function useColumnValidatesContext() {\n return useContext(ColsContext).validates;\n}\n"],"names":["ColsContext","createContext","cols","validates","ColumnsProvider","_a","children","errorHandler","useMemo","reduce","acc","col","key","generateValidateFunction","state","_jsx","Provider","value","useColumnsContext","useContext","useColumnValidateContext","useColumnValidatesContext"],"mappings":"yMASA,IAAMA,EAAcC,EAGjB,CACDC,KAAM,GACNC,UAAW,CAAA,IAGP,SAAUC,EAAsCC,GACpD,IAAAC,aACAJ,EAAIG,EAAAH,KACJK,EAAYF,EAAAE,aAMNJ,EAAYK,GAChB,WACE,OAAAN,EAAKO,QAAO,SAACC,EAAKC,GAKhB,OAFAD,EAFgBC,EAAGC,KAERC,EAAyBF,EAAYJ,GAEzCG,CACT,GAAG,CAAA,EANH,GAOF,CAACR,IAGGY,EAAQN,GAAQ,WAAM,MAAA,CAAGN,KAAIA,EAAEC,UAASA,EAAlB,GAAuB,CAACD,IAEpD,OACEa,EAACf,EAAYgB,SAAQ,CACnBC,MACEH,EAGCR,SAGFA,GAGP,UAEgBY,IACd,OAAOC,EAAWnB,GAAaE,IACjC,CAEM,SAAUkB,EAAyBR,GACvC,OAAOO,EAAWnB,GAAaG,UAAUS,EAC3C,UAEgBS,IACd,OAAOF,EAAWnB,GAAaG,SACjC"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function n(n){var t=o(),c=t.key,i=t.asc,m=t.changeKey,s=t.changeOrder,a=c===n.columnKey;return r("div",{onClick:function(r){r.preventDefault(),a?s():m(n.columnKey)},className:"cursor-pointer",children:r(e,{sortOrder:a?i?"ASC":"DESC":"ASC",isSortActive:a})})}export{n as SortButton};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{SortIcon as e}from"./icon.js";import{useSortContext as o}from"./provider.js";function n(n){var t=o(),c=t.key,i=t.asc,m=t.changeKey,s=t.changeOrder,u=c===n.columnKey;return r("div",{onClick:function(r){r.preventDefault(),u?s():m(n.columnKey)},className:"cursor-pointer",children:r(e,{sortOrder:u?i?"ASC":"DESC":"ASC",isSortActive:u})})}export{n as SortButton};
3
2
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sort/components.tsx"],"sourcesContent":["\"use client\";\n\nimport { SortIcon } from \"./icon\";\nimport { useSortContext } from \"./provider\";\n\ntype TPropsSort = {\n columnKey: string;\n};\n\nexport function SortButton(props: TPropsSort) {\n const { key, asc, changeKey, changeOrder } = useSortContext();\n\n const isActive = key === props.columnKey;\n\n return (\n <div\n onClick={(e) => {\n e.preventDefault();\n if (isActive) {\n changeOrder();\n } else {\n changeKey(props.columnKey);\n }\n }}\n className=\"cursor-pointer\"\n >\n <SortIcon\n sortOrder={isActive ? (asc ? \"ASC\" : \"DESC\") : \"ASC\"}\n isSortActive={isActive}\n />\n </div>\n );\n}\n"],"names":["SortButton","props","_a","useSortContext","key","asc","changeKey","changeOrder","isActive","columnKey","_jsx","onClick","e","preventDefault","className","children","SortIcon","sortOrder","isSortActive"],"mappings":"yIASM,SAAUA,EAAWC,GACnB,IAAAC,EAAuCC,IAArCC,EAAGF,EAAAE,IAAEC,EAAGH,EAAAG,IAAEC,EAASJ,EAAAI,UAAEC,gBAEvBC,EAAWJ,IAAQH,EAAMQ,UAE/B,OACEC,EAAA,MAAA,CACEC,QAAS,SAACC,GACRA,EAAEC,iBACEL,EACFD,IAEAD,EAAUL,EAAMQ,UAEpB,EACAK,UAAU,iBAAgBC,SAE1BL,EAACM,EAAQ,CACPC,UAAWT,EAAYH,EAAM,MAAQ,OAAU,MAC/Ca,aAAcV,KAItB"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{useSortReducer as o}from"./hooks.js";var i=t(0),u=t({key:"",asc:!1,isUpdatedData:!1}),c=t({changeKey:function(){throw new Error("Function not implemented.")},changeOrder:function(){throw new Error("Function not implemented.")},sort:function(){return[]},updatedData:function(){throw new Error("Function not implemented.")}});function a(r){var t=o(r.initialCondition),e=t.state,a=t.actions,d=t.sortTiming;return n(i.Provider,{value:d,children:n(u.Provider,{value:e,children:n(c.Provider,{value:a,children:r.children})})})}function d(){return r(r(r({},e(u)),e(c)),{sortTiming:e(i)})}function m(){return e(c)}function s(){return e(i)}export{a as SortProvider,m as useSortActionContext,d as useSortContext,s as useSortTimingContext};
1
+ "use client";import{__assign as n}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r}from"react/jsx-runtime";import{createContext as t,useContext as e}from"react";import{useSortReducer as o}from"./hooks.js";var i=t(0),u=t({key:"",asc:!1,isUpdatedData:!1}),c=t({changeKey:function(){throw new Error("Function not implemented.")},changeOrder:function(){throw new Error("Function not implemented.")},sort:function(){return[]},updatedData:function(){throw new Error("Function not implemented.")}});function a(n){var t=o(n.initialCondition),e=t.state,a=t.actions,d=t.sortTiming;return r(i.Provider,{value:d,children:r(u.Provider,{value:e,children:r(c.Provider,{value:a,children:n.children})})})}function d(){return n(n(n({},e(u)),e(c)),{sortTiming:e(i)})}function m(){return e(c)}function s(){return e(i)}export{a as SortProvider,m as useSortActionContext,d as useSortContext,s as useSortTimingContext};
3
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/sort/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport { TReturnSortReducer } from \"./types\";\nimport { useSortReducer } from \"./hooks\";\nimport { DataRecord } from \"../table/type\";\n\nconst SortTimingContext = createContext<number>(0);\n\nconst SortStateContext = createContext<TReturnSortReducer<DataRecord>[\"state\"]>(\n {\n key: \"\",\n asc: false,\n isUpdatedData: false,\n }\n);\n\nconst SortActionContext = createContext<\n TReturnSortReducer<DataRecord>[\"actions\"]\n>({\n changeKey: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n changeOrder: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n sort: () => [],\n updatedData: function (): void {\n throw new Error(\"Function not implemented.\");\n },\n});\n\nexport function SortProvider(props: {\n children: React.ReactNode;\n initialCondition?: { key: string; asc?: boolean };\n}) {\n const { state, actions, sortTiming } = useSortReducer(props.initialCondition);\n return (\n <SortTimingContext.Provider value={sortTiming}>\n <SortStateContext.Provider value={state}>\n <SortActionContext.Provider value={actions}>\n {props.children}\n </SortActionContext.Provider>\n </SortStateContext.Provider>\n </SortTimingContext.Provider>\n );\n}\n\nexport function useSortContext() {\n return {\n ...useContext(SortStateContext),\n ...useContext(SortActionContext),\n sortTiming: useContext(SortTimingContext),\n };\n}\n\nexport function useSortStateContext() {\n return useContext(SortStateContext);\n}\n\nexport function useSortActionContext() {\n return useContext(SortActionContext);\n}\n\nexport function useSortTimingContext() {\n return useContext(SortTimingContext);\n}\n"],"names":["SortTimingContext","createContext","SortStateContext","key","asc","isUpdatedData","SortActionContext","changeKey","Error","changeOrder","sort","updatedData","SortProvider","props","_a","useSortReducer","initialCondition","state","actions","sortTiming","_jsx","Provider","value","children","useSortContext","__assign","useContext","useSortActionContext","useSortTimingContext"],"mappings":"2NAOA,IAAMA,EAAoBC,EAAsB,GAE1CC,EAAmBD,EACvB,CACEE,IAAK,GACLC,KAAK,EACLC,eAAe,IAIbC,EAAoBL,EAExB,CACAM,UAAW,WACT,MAAM,IAAIC,MAAM,4BAClB,EACAC,YAAa,WACX,MAAM,IAAID,MAAM,4BAClB,EACAE,KAAM,WAAM,MAAA,EAAA,EACZC,YAAa,WACX,MAAM,IAAIH,MAAM,4BAClB,IAGI,SAAUI,EAAaC,GAIrB,IAAAC,EAAiCC,EAAeF,EAAMG,kBAApDC,EAAKH,EAAAG,MAAEC,EAAOJ,EAAAI,QAAEC,eACxB,OACEC,EAACpB,EAAkBqB,SAAQ,CAACC,MAAOH,WACjCC,EAAClB,EAAiBmB,UAASC,MAAOL,EAAKM,SACrCH,EAACd,EAAkBe,SAAQ,CAACC,MAAOJ,EAAOK,SACvCV,EAAMU,cAKjB,UAEgBC,IACd,OAAAC,EAAAA,EAAAA,EAAA,CAAA,EACKC,EAAWxB,IACXwB,EAAWpB,IAAkB,CAChCa,WAAYO,EAAW1B,IAE3B,UAMgB2B,IACd,OAAOD,EAAWpB,EACpB,UAEgBsB,IACd,OAAOF,EAAW1B,EACpB"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as d,Pagenation as l}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as s}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as c}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as j}from"../paste/provider.js";import{generateFormattingString as g}from"../libs/conditional-formatting.js";import{Editor as u}from"../edit/ui/editor.js";import{RangeProvider as w,TestRange as b}from"../range/provider.js";import{CopyProvider as k}from"../copy/provider.js";import{CopiedMessage as y}from"../copy/components.js";import{TableIdGeneratorProvider as C,useTableIdGenerator as N}from"../id/provider.js";import{TableHeader as R}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as S}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as F}from"../header/x-scroll-position/provider.js";import{Frame as H}from"../frame/frame.js";import{ComponentProvider as I,useGenerateSortButton as W}from"./component-provider/provider.js";import{SelectBoxProvider as D}from"../../select-box/provider.js";function P(i){var t,d,l,x;return r(I,{children:r(C,{id:i.id,children:r(S,{initialState:i.cols,children:r(s,{initialConditions:[],children:r(c,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(w,{children:e(k,{rows:i.rows,cols:i.cols,children:[r(y,{}),e(j,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,children:[r(v,{enableDeprecatedCopy:null===(x=i.deprecatedOptions)||void 0===x?void 0:x.enableDeprecatedCopy}),r(F,{children:r(A,o({},i))})]})]})})})})})})})})})})})})})}function A(o){var n=i(o),s=n.cols,c=n.rowMaps,a=n.pageRowIds,m=N(),p=W();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(R,{cols:s,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(D,{children:e(H,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),s.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:s.length,className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,dataString:c[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(u,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{P as default};
1
+ "use client";import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as d,Pagenation as l}from"../pagenation/components.js";import"../filter-v2/context.js";import{FilterProvider as s}from"../filter-v2/provider.js";import"../sort/icon.js";import{SortProvider as c}from"../sort/provider.js";import{ColumnsProvider as a}from"../sheet/providers.js";import{CheckboxProvider as m,CheckboxStatusProvider as p}from"../checkbox/provider.js";import{EditProvider as h}from"../edit/provider.js";import{TablePropertyProvider as f}from"../table-property/provider.js";import{KeyboardSetting as v}from"../operation/components/keyboard-setting.js";import{Row as x}from"../sheet/components.js";import{PasteProvider as j}from"../paste/provider.js";import{generateFormattingString as g}from"../libs/conditional-formatting.js";import{Editor as u}from"../edit/ui/editor.js";import{RangeProvider as w,TestRange as b}from"../range/provider.js";import{CopyProvider as k}from"../copy/provider.js";import{CopiedMessage as y}from"../copy/components.js";import{TableIdGeneratorProvider as C,useTableIdGenerator as N}from"../id/provider.js";import{TableHeader as R}from"../header/header-v2.js";import"../header/columns-width/context.js";import{ColumnsWidthProvider as I,ColumnsWidthStyle as S}from"../header/columns-width/provider.js";import"../header/x-scroll-position/context.js";import{ScrollXPositionProvider as F}from"../header/x-scroll-position/provider.js";import{Frame as P}from"../frame/frame.js";import{ComponentProvider as H,useGenerateSortButton as W}from"./component-provider/provider.js";import{SelectBoxProvider as D}from"../../select-box/provider.js";function T(i){var t,d,l,x;return r(H,{children:r(C,{id:i.id,children:r(I,{cols:i.cols,children:r(s,{initialConditions:[],children:r(c,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(l=null===(d=i.initialCondition)||void 0===d?void 0:d.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r(m,{checkbox:i.checkbox,children:r(p,{checkboxCount:i.rows.length,children:r(a,{cols:i.cols,errorHandler:i.errorHandler,children:r(h,{children:r(f,{children:r(w,{children:e(k,{rows:i.rows,cols:i.cols,children:[r(y,{}),e(j,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,onPasteError:i.onPasteError,children:[r(v,{enableDeprecatedCopy:null===(x=i.deprecatedOptions)||void 0===x?void 0:x.enableDeprecatedCopy}),r(F,{children:r(A,o({},i))})]})]})})})})})})})})})})})})})}function A(o){var n=i(o),s=n.cols,c=n.rowMaps,a=n.pageRowIds,m=N(),p=W();return e("div",{className:"w-full max-w-full max-h-full",children:[e("div",{children:[r(R,{cols:s,checkbox:!!o.checkbox,rows:o.rows,maxWidth:o.maxWidth,generateSortButton:p}),r(S,{scopeId:m.getTableId()}),r(D,{children:e(P,{id:m.getTableId(),maxHeight:o.maxHeight,maxWidth:o.maxWidth,displayScroll:!1,children:[e("table",{className:"table",children:[r("thead",{children:e("tr",{children:[o.checkbox&&r("th",{className:"p-px"}),s.map((function(o){return r(t,{keyname:o.key.toString()},o.key.toString())}))]})}),e("tbody",{children:[0===a.length&&r("tr",{children:r("td",{colSpan:s.length+(o.checkbox?1:0),className:"px-px py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(e,i){return r(x,{existCheckbox:!!o.checkbox,rowIndex:i,row:c[e].data,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:g(c[e].data,s,o.conditionalFormattings)},e)}))]})]}),r(b,{}),r(u,{rowMaps:c,pageRowIds:a})]})})]}),e("div",{className:"mt-1",children:[r(d,{}),r("div",{className:"mt-2",children:r(l,{})})]})]})}export{T as default};
3
2
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"base.js","sources":["../../../../../src/table/table/base.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTable } from \"./hook\";\nimport { TableHeaderElement } from \"../header/header\";\nimport {\n DataRecord,\n TConditionalFormatting,\n TPropsTable,\n TTableColumn,\n} from \"./type\";\nimport { PagenationProvider, DisplayRange, Pagenation } from \"../pagenation\";\nimport { FilterProvider } from \"../filter-v2\";\nimport { SortProvider } from \"../sort\";\nimport { ColumnsProvider } from \"../sheet/providers\";\nimport { CheckboxProvider, CheckboxStatusProvider } from \"../checkbox/provider\";\nimport { EditProvider } from \"../edit/provider\";\nimport { TablePropertyProvider } from \"../table-property/provider\";\nimport { KeyboardSetting } from \"../operation/components/keyboard-setting\";\nimport { Row } from \"../sheet/components\";\nimport { PasteProvider } from \"../paste/provider\";\nimport { generateFormattingString } from \"../libs/conditional-formatting\";\nimport { Editor } from \"../edit/ui/editor\";\nimport { RangeProvider, TestRange } from \"../range/provider\";\nimport { CopyProvider } from \"../copy/provider\";\nimport { CopiedMessage } from \"../copy/components\";\nimport { TableIdGeneratorProvider, useTableIdGenerator } from \"../id\";\nimport { TableHeader } from \"../header/header-v2\";\nimport {\n ColumnsWidthProvider,\n ColumnsWidthStyle,\n ScrollXPositionProvider,\n} from \"../header\";\nimport { Frame } from \"../frame\";\nimport { ComponentProvider } from \"./component-provider\";\nimport { useGenerateSortButton } from \"./component-provider/provider\";\nimport { SelectBoxProvider } from \"../../select-box/provider\";\n\nexport default function Table<T extends DataRecord>(props: TPropsTable<T>) {\n return (\n <ComponentProvider>\n <TableIdGeneratorProvider id={props.id}>\n <ColumnsWidthProvider cols={props.cols as TTableColumn<DataRecord>[]}>\n <FilterProvider initialConditions={[]}>\n <SortProvider initialCondition={props.initialCondition?.sort}>\n <PagenationProvider\n rowCount={props.rows.length}\n perPage={props.initialCondition?.pagenation?.rowCountPerPage}\n >\n <CheckboxProvider checkbox={props.checkbox}>\n <CheckboxStatusProvider checkboxCount={props.rows.length}>\n <ColumnsProvider\n cols={props.cols}\n errorHandler={props.errorHandler}\n >\n <EditProvider>\n <TablePropertyProvider>\n <RangeProvider>\n <CopyProvider rows={props.rows} cols={props.cols}>\n <CopiedMessage />\n <PasteProvider\n rows={props.rows}\n cols={props.cols}\n onUpdateRowFunction={props.onUpdateRow}\n onPasteError={props.onPasteError}\n >\n <KeyboardSetting\n enableDeprecatedCopy={\n props.deprecatedOptions\n ?.enableDeprecatedCopy\n }\n />\n <ScrollXPositionProvider>\n <BaseTable {...props} />\n </ScrollXPositionProvider>\n </PasteProvider>\n </CopyProvider>\n </RangeProvider>\n </TablePropertyProvider>\n </EditProvider>\n </ColumnsProvider>\n </CheckboxStatusProvider>\n </CheckboxProvider>\n </PagenationProvider>\n </SortProvider>\n </FilterProvider>\n </ColumnsWidthProvider>\n </TableIdGeneratorProvider>\n </ComponentProvider>\n );\n}\n\nfunction BaseTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { cols, rowMaps, pageRowIds } = useTable<T>(props);\n const IdGenerator = useTableIdGenerator();\n const generateSortButton = useGenerateSortButton();\n\n return (\n <div className=\"w-full max-w-full max-h-full\">\n <div>\n <TableHeader\n cols={cols}\n checkbox={!!props.checkbox}\n rows={props.rows}\n maxWidth={props.maxWidth}\n generateSortButton={generateSortButton}\n />\n\n <ColumnsWidthStyle scopeId={IdGenerator.getTableId()} />\n <SelectBoxProvider>\n <Frame\n id={IdGenerator.getTableId()}\n maxHeight={props.maxHeight}\n maxWidth={props.maxWidth}\n displayScroll={false}\n >\n <table className={`table`}>\n <thead>\n <tr>\n {props.checkbox && <th className=\"p-px\"></th>}\n {cols.map((col) => (\n <TableHeaderElement\n key={col.key.toString()}\n keyname={col.key.toString()}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {pageRowIds.length === 0 && (\n <tr>\n <td\n colSpan={cols.length + (props.checkbox ? 1 : 0)}\n className=\"px-px py-5\"\n >\n <p className=\"text-center font-bold text-lg\">NO DATA</p>\n </td>\n </tr>\n )}\n {pageRowIds.map((rowId, i) => (\n <Row\n key={rowId}\n existCheckbox={!!props.checkbox}\n rowIndex={i}\n row={rowMaps[rowId].data}\n cols={props.cols as TTableColumn<DataRecord>[]}\n onClickRow={props.onClickRow}\n applyRowFormatting={props.applyRowFormatting}\n conditionalFormattingString={generateFormattingString(\n rowMaps[rowId].data,\n cols as TTableColumn<DataRecord>[],\n props.conditionalFormattings as TConditionalFormatting<DataRecord>[]\n )}\n />\n ))}\n </tbody>\n </table>\n <TestRange />\n <Editor rowMaps={rowMaps} pageRowIds={pageRowIds} />\n </Frame>\n </SelectBoxProvider>\n </div>\n <div className=\"mt-1\">\n <DisplayRange />\n <div className=\"mt-2\">\n <Pagenation />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Table","props","_jsx","ComponentProvider","children","TableIdGeneratorProvider","id","ColumnsWidthProvider","cols","FilterProvider","initialConditions","SortProvider","initialCondition","_a","sort","PagenationProvider","rowCount","rows","length","perPage","_c","_b","pagenation","rowCountPerPage","CheckboxProvider","checkbox","CheckboxStatusProvider","checkboxCount","ColumnsProvider","errorHandler","EditProvider","TablePropertyProvider","RangeProvider","_jsxs","CopyProvider","CopiedMessage","PasteProvider","onUpdateRowFunction","onUpdateRow","onPasteError","KeyboardSetting","enableDeprecatedCopy","deprecatedOptions","_d","ScrollXPositionProvider","BaseTable","__assign","useTable","rowMaps","pageRowIds","IdGenerator","useTableIdGenerator","generateSortButton","useGenerateSortButton","className","TableHeader","maxWidth","ColumnsWidthStyle","scopeId","getTableId","SelectBoxProvider","Frame","maxHeight","displayScroll","map","col","TableHeaderElement","keyname","key","toString","colSpan","rowId","i","Row","existCheckbox","rowIndex","row","data","onClickRow","applyRowFormatting","conditionalFormattingString","generateFormattingString","conditionalFormattings","TestRange","Editor","DisplayRange","Pagenation"],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- "use client";
2
- import{jsx as r,Fragment as o}from"react/jsx-runtime";import{createContext as t,useCallback as n,useContext as e}from"react";import{SortButton as i}from"../../sort/components.js";import"../../sort/provider.js";var u=t((function(){return r(o,{})}));function c(o){var t=n((function(o){return r(i,{columnKey:o})}),[]);return r(u.Provider,{value:t,children:o.children})}function m(){return e(u)}export{c as ComponentProvider,m as useGenerateSortButton};
1
+ "use client";import{jsx as r,Fragment as t}from"react/jsx-runtime";import{createContext as n,useCallback as o,useContext as e}from"react";import{SortButton as i}from"../../sort/components.js";import"../../sort/provider.js";var u=n((function(){return r(t,{})}));function c(t){var n=o((function(t){return r(i,{columnKey:t})}),[]);return r(u.Provider,{value:n,children:t.children})}function m(){return e(u)}export{c as ComponentProvider,m as useGenerateSortButton};
3
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../../src/table/table/component-provider/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useCallback, useContext } from \"react\";\nimport { SortButton } from \"../../sort\";\n\nconst GenerateSortButtonContext = createContext<\n (columnKey: string) => React.JSX.Element\n>(() => <></>);\n\nexport function ComponentProvider(props: { children: React.ReactNode }) {\n const generateSortButton = useCallback((columnKey: string) => {\n return <SortButton columnKey={columnKey} />;\n }, []);\n\n return (\n <GenerateSortButtonContext.Provider value={generateSortButton}>\n {props.children}\n </GenerateSortButtonContext.Provider>\n );\n}\n\nexport function useGenerateSortButton() {\n return useContext(GenerateSortButtonContext);\n}\n"],"names":["GenerateSortButtonContext","createContext","_jsx","_Fragment","ComponentProvider","props","generateSortButton","useCallback","columnKey","SortButton","Provider","value","children","useGenerateSortButton","useContext"],"mappings":"+NAKA,IAAMA,EAA4BC,GAEhC,WAAM,OAAAC,EAAAC,EAAA,CAAA,EAAA,IAEF,SAAUC,EAAkBC,GAChC,IAAMC,EAAqBC,GAAY,SAACC,GACtC,OAAON,EAACO,EAAU,CAACD,UAAWA,GAChC,GAAG,IAEH,OACEN,EAACF,EAA0BU,SAAQ,CAACC,MAAOL,WACxCD,EAAMO,UAGb,UAEgBC,IACd,OAAOC,EAAWd,EACpB"}
@@ -1,2 +1,2 @@
1
- import{useMemo as r,useEffect as t}from"react";import{usePageContext as o}from"../pagenation/providers.js";import{useCheckboxStatusContext as n}from"../checkbox/provider.js";import{useSortActionContext as e,useSortTimingContext as i}from"../sort/provider.js";import{useTablePropertyActionContext as c}from"../table-property/provider.js";import{usePasteActionContext as u}from"../paste/provider.js";import{useCopyActionContext as s}from"../copy/provider.js";import{useFilterFunctions as a}from"../filter-v2/context.js";function f(f){var p=a().filter,l=e(),d=l.sort,m=l.updatedData,h=i(),v=o(),w=v.setRowCount,g=v.pageFilter,x=n().dispatchCheckboxStatus,j=u().setRows,k=s().setRows,y=c(),b=y.setMaxDisplayColCount,R=y.setMaxDisplayRowCount,C=r((function(){return p(f.rows)}),[p,h,f.rows.length]);t((function(){w(C.length)}),[C.length]);var S=r((function(){return f.checkbox?f.rows.filter((function(r){var t;return null===(t=f.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[f.checkbox,f.rows]);t((function(){x({type:"SET",payload:{checkedRecords:S}})}),[S]);var D=r((function(){return d(C)}),[C,h]);t((function(){m()}),[f.rows]);var M=r((function(){return g(D)}),[g,D]),O=r((function(){return M.map((function(r){return r.id}))}),[M]),E=r((function(){return new Set(O)}),[O]),F=r((function(){return f.rows.filter((function(r){return E.has(r.id)})).reduce((function(r,t){var o=Object.keys(t).sort().reduce((function(r,o){return r[o]=t[o],r}),{});return r[t.id]={data:o,stringValue:JSON.stringify(o)},r}),{})}),[f.rows,E]);return t((function(){b(f.cols.length)}),[f.cols.length]),t((function(){R(O.length)}),[O.length]),t((function(){var r=O.map((function(r){return F[r].data}));k(r),j(r)}),[F]),{cols:f.cols,rowMaps:F,pageRowIds:O}}export{f as useTable};
1
+ import{useMemo as r,useEffect as t}from"react";import{usePageContext as o}from"../pagenation/providers.js";import{useCheckboxStatusContext as n}from"../checkbox/provider.js";import{useSortActionContext as e,useSortTimingContext as i}from"../sort/provider.js";import{useTablePropertyActionContext as c}from"../table-property/provider.js";import{usePasteActionContext as u}from"../paste/provider.js";import{useCopyActionContext as s}from"../copy/provider.js";import{useFilterFunctions as f}from"../filter-v2/context.js";function a(a){var p=f().filter,d=e(),l=d.sort,m=d.updatedData,h=i(),v=o(),w=v.setRowCount,g=v.pageFilter,x=n().dispatchCheckboxStatus,j=u().setRows,k=s().setRows,y=c(),b=y.setMaxDisplayColCount,R=y.setMaxDisplayRowCount,C=r((function(){return JSON.stringify(a.rows.map((function(r){return r.id})))}),[a.rows]),S=r((function(){return p(a.rows)}),[p,h,C]);t((function(){w(S.length)}),[S.length]);var D=r((function(){return a.checkbox?a.rows.filter((function(r){var t;return null===(t=a.checkbox)||void 0===t?void 0:t.checked(r)})):[]}),[a.checkbox,a.rows]);t((function(){x({type:"SET",payload:{checkedRecords:D}})}),[D]);var M=r((function(){return l(S)}),[S,h]);t((function(){m()}),[a.rows]);var E=r((function(){return g(M)}),[g,M]),F=r((function(){return E.map((function(r){return r.id}))}),[E]),I=r((function(){return new Set(F)}),[F]),J=r((function(){return a.rows.filter((function(r){return I.has(r.id)})).reduce((function(r,t){return r[t.id]={data:t},r}),{})}),[a.rows,I]);return t((function(){b(a.cols.length)}),[a.cols.length]),t((function(){R(F.length)}),[F.length]),t((function(){var r=F.map((function(r){return J[r].data}));k(r),j(r)}),[J]),{cols:a.cols,rowMaps:J,pageRowIds:F}}export{a as useTable};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\nimport { useCopyActionContext } from \"../copy/provider\";\nimport { useFilterFunctions } from \"../filter-v2/context\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterFunctions();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows: setRowsForPaste } = usePasteActionContext();\n const { setRows: setRowsForCopy } = useCopyActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number | Date });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n const rows = pageRowIds.map((id) => rowMaps[id].data);\n setRowsForCopy(rows);\n setRowsForPaste(rows);\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["useTable","props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRowsForPaste","usePasteActionContext","setRowsForCopy","useCopyActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"sgBAUM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACbC,EAAwBC,IAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,IACbC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,2BAClBC,EAAoBC,YACpBC,EAAmBC,YAC9BC,EACJC,IADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,GACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAb,GACN,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,GAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,GAAQ,WACzB,OAAKxB,EAAM6B,SAIJ7B,EAAMyB,KAAKxB,QAAO,SAAC6B,GAAG,IAAA3B,EAAK,eAAAA,EAAAH,EAAM6B,+BAAUE,QAAQD,EAAI,IAHrD,EAIX,GAAG,CAAC9B,EAAM6B,SAAU7B,EAAMyB,OAE1BE,GAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,GACjB,WAAM,OAAAnB,EAAKkB,EAAL,GACN,CAACA,EAAchB,IAGjBoB,GAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,GACf,WAAM,OAAAZ,EAAWuB,EAAX,GACN,CAACvB,EAAYuB,IAGTE,EAAab,GAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAJ,GAAtB,GAA+B,CAACH,IAC3DI,EAAgBhB,GAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAR,GAAqB,CAACA,IAEpDK,EAAUlB,GACd,WACE,OAAAxB,EAAMyB,KACHxB,QAAO,SAAC6B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,GAAtB,IAChBK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCzB,OACAuC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACT,GAAG,CAAA,GAML,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACT,GAAG,CAAA,EAfL,GAgBF,CAAC7C,EAAMyB,KAAMe,IAiBf,OAdAb,GAAU,WACRN,EAAsBrB,EAAMsD,KAAK5B,OACnC,GAAG,CAAC1B,EAAMsD,KAAK5B,SAEfC,GAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,GAAU,WACR,IAAMF,EAAOY,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,IAAZ,IACpCjC,EAAeQ,GACfV,EAAgBU,EAClB,GAAG,CAACiB,IAEG,CACLY,KAAMtD,EAAMsD,KACZZ,QAAOA,EACPL,WAAUA,EAEd"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\nimport { useCopyActionContext } from \"../copy/provider\";\nimport { useFilterFunctions } from \"../filter-v2/context\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterFunctions();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows: setRowsForPaste } = usePasteActionContext();\n const { setRows: setRowsForCopy } = useCopyActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n // Re-run filter/sort only when the set of rows changes (rows added, removed\n // or replaced). Edits that keep the same ids keep the current order.\n const rowIdsKey = useMemo(\n () => JSON.stringify(props.rows.map((row) => row.id)),\n [props.rows]\n );\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, rowIdsKey]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n // Rows on the current page by id. `data` is the row object passed in\n // through props, so callbacks receive it unchanged (Date values stay Date).\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n acc[row.id] = { data: row };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any> } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n const rows = pageRowIds.map((id) => rowMaps[id].data);\n setRowsForCopy(rows);\n setRowsForPaste(rows);\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["useTable","props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRowsForPaste","usePasteActionContext","setRowsForCopy","useCopyActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","rowIdsKey","useMemo","JSON","stringify","rows","map","row","id","filteredRows","useEffect","length","checkBoxes","checkbox","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","pageRowIdSets","Set","rowMaps","has","reduce","acc","data","cols"],"mappings":"sgBAUM,SAAUA,EAA+BC,GACrC,IAAAC,EAAWC,WACbC,EAAwBC,IAAtBC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,IACbC,EAA8BC,IAA5BC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,2BAClBC,EAAoBC,YACpBC,EAAmBC,YAC9BC,EACJC,IADMC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAK9CC,EAAYC,GAChB,WAAM,OAAAC,KAAKC,UAAU1B,EAAM2B,KAAKC,KAAI,SAACC,GAAQ,OAAAA,EAAIC,EAAJ,IAAvC,GACN,CAAC9B,EAAM2B,OAGHI,EAAeP,GACnB,WAAM,OAAAvB,EAAOD,EAAM2B,KAAb,GACN,CAAC1B,EAAQM,EAAYgB,IAGvBS,GAAU,WACRrB,EAAYoB,EAAaE,OAC3B,GAAG,CAACF,EAAaE,SAEjB,IAAMC,EAAaV,GAAQ,WACzB,OAAKxB,EAAMmC,SAIJnC,EAAM2B,KAAK1B,QAAO,SAAC4B,GAAG,IAAA1B,EAAK,eAAAA,EAAAH,EAAMmC,+BAAUC,QAAQP,EAAI,IAHrD,EAIX,GAAG,CAAC7B,EAAMmC,SAAUnC,EAAM2B,OAE1BK,GAAU,WACRnB,EAAuB,CACrBwB,KAAM,MACNC,QAAS,CAAEC,eAAgBL,IAE/B,GAAG,CAACA,IAEJ,IAAMM,EAAahB,GACjB,WAAM,OAAAnB,EAAK0B,EAAL,GACN,CAACA,EAAcxB,IAGjByB,GAAU,WACR1B,GACF,GAAG,CAACN,EAAM2B,OAEV,IAAMc,EAAWjB,GACf,WAAM,OAAAZ,EAAW4B,EAAX,GACN,CAAC5B,EAAY4B,IAGTE,EAAalB,GAAQ,WAAM,OAAAiB,EAASb,KAAI,SAACC,GAAQ,OAAAA,EAAIC,EAAJ,GAAtB,GAA+B,CAACW,IAC3DE,EAAgBnB,GAAQ,WAAM,OAAA,IAAIoB,IAAIF,EAAR,GAAqB,CAACA,IAIpDG,EAAUrB,GACd,WACE,OAAAxB,EAAM2B,KACH1B,QAAO,SAAC4B,GAAQ,OAAAc,EAAcG,IAAIjB,EAAIC,GAAtB,IAChBiB,QAAO,SAACC,EAAKnB,GAEZ,OADAmB,EAAInB,EAAIC,IAAM,CAAEmB,KAAMpB,GACfmB,CACT,GAAG,CAAA,EALL,GAMF,CAAChD,EAAM2B,KAAMgB,IAiBf,OAdAX,GAAU,WACRX,EAAsBrB,EAAMkD,KAAKjB,OACnC,GAAG,CAACjC,EAAMkD,KAAKjB,SAEfD,GAAU,WACRV,EAAsBoB,EAAWT,OACnC,GAAG,CAACS,EAAWT,SAEfD,GAAU,WACR,IAAML,EAAOe,EAAWd,KAAI,SAACE,GAAO,OAAAe,EAAQf,GAAImB,IAAZ,IACpChC,EAAeU,GACfZ,EAAgBY,EAClB,GAAG,CAACkB,IAEG,CACLK,KAAMlD,EAAMkD,KACZL,QAAOA,EACPH,WAAUA,EAEd"}