@teppen/react-ui 1.5.8 → 1.5.10

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 (29) hide show
  1. package/dist/cjs/src/table/cell/hooks.js +1 -1
  2. package/dist/cjs/src/table/cell/hooks.js.map +1 -1
  3. package/dist/cjs/src/table/cell/ui/cell.js +1 -1
  4. package/dist/cjs/src/table/cell/ui/edit-button.js +1 -1
  5. package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
  6. package/dist/cjs/src/table/focus/hooks.js +1 -1
  7. package/dist/cjs/src/table/focus/hooks.js.map +1 -1
  8. package/dist/cjs/src/table/focus/provider.js +1 -1
  9. package/dist/cjs/src/table/focus/provider.js.map +1 -1
  10. package/dist/cjs/src/table/libs/id-generator.js +1 -1
  11. package/dist/cjs/src/table/libs/id-generator.js.map +1 -1
  12. package/dist/cjs/src/table/sheet/components.js +1 -1
  13. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  14. package/dist/cjs/src/table/table/base.js +1 -1
  15. package/dist/esm/src/table/cell/hooks.js +1 -1
  16. package/dist/esm/src/table/cell/hooks.js.map +1 -1
  17. package/dist/esm/src/table/cell/ui/cell.js +1 -1
  18. package/dist/esm/src/table/cell/ui/edit-button.js +1 -1
  19. package/dist/esm/src/table/edit/ui/select-input.js +1 -1
  20. package/dist/esm/src/table/focus/hooks.js +1 -1
  21. package/dist/esm/src/table/focus/hooks.js.map +1 -1
  22. package/dist/esm/src/table/focus/provider.js +1 -1
  23. package/dist/esm/src/table/focus/provider.js.map +1 -1
  24. package/dist/esm/src/table/libs/id-generator.js +1 -1
  25. package/dist/esm/src/table/libs/id-generator.js.map +1 -1
  26. package/dist/esm/src/table/sheet/components.js +1 -1
  27. package/dist/esm/src/table/sheet/components.js.map +1 -1
  28. package/dist/esm/src/table/table/base.js +1 -1
  29. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),t=require("../edit/provider.js"),o=require("../focus/provider.js"),n=require("../sheet/providers.js");exports.useCell=function(r,u,i){var l,s,c=o.useFocusActionContext(),d=t.useEditActionContext(),a=n.useColumnsContext()[u],v=i[a.key],f="select"===a.type?null===(s=null===(l=a.options)||void 0===l?void 0:l.find((function(e){return e.value===v})))||void 0===s?void 0:s.label:v,p=e.useMemo((function(){return a.editable?f:a.render?a.render(v,i):f}),[a.editable,f,v,i]);return{type:!a.editable&&a.render?"component":a.type,component:p,focusAtCell:e.useCallback((function(){c.move(r,u),c.focus(r,u)}),[c,r,u]),onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),c.move(r,u),c.focus(r,u),d.startEditing()}),[c,d,r,u])}};
1
+ "use strict";var e=require("react"),t=require("../edit/provider.js"),r=require("../focus/provider.js"),n=require("../sheet/providers.js"),o=require("../libs/id-generator.js");exports.useCell=function(i,u){var l,s,d=r.useFocusActionContext(),c=d.move,a=d.focus,p=t.useEditActionContext().startEditing,v=o.IdGenerator.getCellIndex(i),f=v[0],C=v[1],b=n.useColumnsContext()[C],m=u[b.key],q="select"===b.type?null===(s=null===(l=b.options)||void 0===l?void 0:l.find((function(e){return e.value===m})))||void 0===s?void 0:s.label:m,x=e.useMemo((function(){return b.editable?q:b.render?b.render(m,u):q}),[b.editable,q,m,u]);return{type:!b.editable&&b.render?"component":b.type,component:x,onClickCell:function(e){e.preventDefault(),e.stopPropagation(),a(f,C),c(f,C)},onDoubleClick:function(e){e.preventDefault(),a(f,C),c(f,C),p()}}};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\n\nexport function useCell(\n rowIndex: number,\n colIndex: number,\n row: DataObject<DataRecord>\n) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["rowIndex","colIndex","row","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"mKAOEA,EACAC,EACAC,WAEMC,EAAQC,EAAAA,wBACRC,EAAaC,EAAAA,uBACbC,EAAMC,EAAAA,oBAAoBP,GAC1BQ,EAAQP,EAAIK,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBP,GAAOS,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOP,IAqBhC,MAAO,CACLU,MAnBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAoBhDM,UAASA,EACTI,YAnBkBC,EAAAA,aAAY,WAC9BpB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,EACvB,GAAE,CAACE,EAAOH,EAAUC,IAiBnBwB,wBAdAF,eACE,SAACG,GACCA,EAAEC,iBACFxB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,GACtBI,EAAWuB,cACZ,GACD,CAACzB,EAAOE,EAAYL,EAAUC,IASpC"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { IdGenerator } from \"../libs\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const { move, focus } = useFocusActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.getCellIndex(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n startEditing();\n };\n\n const onClickCell: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n };\n\n return {\n type,\n component,\n onClickCell,\n onDoubleClick,\n };\n}\n"],"names":["id","row","_c","useFocusActionContext","move","focus","startEditing","useEditActionContext","_d","IdGenerator","getCellIndex","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onClickCell","e","preventDefault","stopPropagation","onDoubleClick"],"mappings":"+LAOgB,SAAQA,EAAYC,WAC5BC,EAAkBC,EAAqBA,wBAArCC,EAAIF,EAAAE,KAAEC,EAAKH,EAAAG,MACXC,EAAiBC,sCACnBC,EAAuBC,EAAAA,YAAYC,aAAaV,GAA/CW,EAAQH,EAAA,GAAEI,OACXC,EAAMC,EAAAA,oBAAoBF,GAC1BG,EAAQd,EAAIY,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBd,GAAOgB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOd,IAmBhC,MAAO,CACLiB,MAjBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAkBhDM,UAASA,EACTI,YAV2D,SAACC,GAC5DA,EAAEC,iBACFD,EAAEE,kBACF1B,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,EACjB,EAMEoB,cAlB6D,SAACH,GAC9DA,EAAEC,iBACFzB,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,GACfN,GACF,EAeF"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),l=require("./edit-button.js"),t=require("../../libs/id-generator.js"),i=require("../hooks.js");exports.TableCell=function(o){var n=i.useCell(o.rowIndex,o.colIndex,o.row),r=n.type,s=n.component,c=n.focusAtCell,a=n.onDoubleClickCellToEdit,d=t.IdGenerator.getTableCellId(o.rowIndex,o.colIndex);return e.jsx("td",{id:d,className:"".concat(o.cellFormatClassName),children:e.jsx("div",{className:"relative",onClick:o.isExistOnClickRow?void 0:function(e){e.preventDefault(),c()},onDoubleClick:o.isExistOnClickRow?void 0:a,children:e.jsxs("div",{className:"flex items-center gap-3 w-f-displayit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),c()},children:["component"===r?s:e.jsx("div",{onDoubleClick:a,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:s})}),o.editable&&e.jsx(l.EditButton,{})]})})})};
2
+ "use strict";var e=require("react/jsx-runtime"),l=require("react"),i=require("../hooks.js");function r(e){return Object.freeze({__proto__:null,default:e})}var t=l.lazy((function(){return Promise.resolve().then((function(){return r(require("./edit-button.js"))}))}));exports.TableCell=function(r){var n=i.useCell(r.id,r.row),c=n.type,o=n.component,s=n.onClickCell,a=n.onDoubleClick;return e.jsx("td",{id:r.id,className:"".concat(r.cellFormatClassName),onClick:r.isExistOnClickRow?void 0:s,onDoubleClick:r.isExistOnClickRow?void 0:a,children:e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:s,children:["component"===c?o:e.jsx("div",{onDoubleClick:a,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:o})}),e.jsx(l.Suspense,{fallback:null,children:r.editable&&e.jsx(t,{})})]})})};
3
3
  //# sourceMappingURL=cell.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var t=require("react/jsx-runtime"),e=require("react"),r=require("../../edit/provider.js"),i=require("../../../icon/edit-icon.js"),n=e.memo((function(){var e=r.useEditActionContext().startEditing;return t.jsx("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(t){t.preventDefault(),e()},children:t.jsx(i.EditIcon,{size:12})})}));exports.EditButton=n;
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../edit/provider.js"),i=require("../../../icon/edit-icon.js"),n=t.memo((function(){var t=r.useEditActionContext().startEditing;return e.jsx("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(e){e.preventDefault(),t()},children:e.jsx(i.EditIcon,{size:12})})}));module.exports=n;
3
3
  //# sourceMappingURL=edit-button.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../provider.js"),r=require("../../../icon/cancel-icon.js");exports.SelectCellInput=function(l){var o=l.col,i=n.useEditActionContext().endEditing,u=l.row[o.key],a=t.useState(u),c=a[0],s=a[1];return o.editable?e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:c,onChange:function(e){e.preventDefault(),s(e.target.value)},onBlur:function(e){e.preventDefault(),c!==u?function(e){o.editable&&o.onCellBlur(o.key,e,l.row,i)}(c):i()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(s(u),i())},children:[o.allowEmpty&&e.jsx("option",{value:"",children:""==u?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),o.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){s(u),i()}),300)},children:e.jsx(r.CancelIcon,{size:16})})]}):e.jsx(e.Fragment,{})};
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../provider.js"),r=require("../../../icon/cancel-icon.js");exports.SelectCellInput=function(u){var l=u.col,o=n.useEditActionContext().endEditing,i=u.row[l.key],a=t.useState(i),c=a[0],s=a[1],f=t.useRef(null);return t.useEffect((function(){f.current&&f.current.focus()}),[f]),l.editable?e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",children:[e.jsxs("select",{ref:f,className:"w-full py-1 px-2 bg-white text-gray-900",value:c,onChange:function(e){e.preventDefault(),s(e.target.value)},onBlur:function(e){e.preventDefault(),c!==i?function(e){l.editable&&l.onCellBlur(l.key,e,u.row,o)}(c):o()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(s(i),o())},children:[l.allowEmpty&&e.jsx("option",{value:"",children:""==i?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),l.options.map((function(t){return e.jsx("option",{value:t.value,children:t.label},t.value)}))]}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){s(i),o()}),300)},children:e.jsx(r.CancelIcon,{size:16})})]}):e.jsx(e.Fragment,{})};
3
3
  //# sourceMappingURL=select-input.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react"),n=require("../libs/id-generator.js"),s=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex+1}):o}};exports.useFocusReducer=function(){var e=o.useReducer(s,{isFocus:!1}),t=e[0],c=e[1],u=o.useCallback((function(e,o){c({type:"focus",payload:{rowIndex:e,colIndex:o}})}),[]),l=o.useCallback((function(){c({type:"unfocus"})}),[]),r=o.useCallback((function(e,o){c({type:"move",payload:{rowIndex:e,colIndex:o}})}),[]),i=o.useCallback((function(){c({type:"moveLeft"})}),[]),a=o.useCallback((function(){c({type:"moveRight"})}),[]),d=o.useCallback((function(){c({type:"moveUp"})}),[]),f=o.useCallback((function(){c({type:"moveDown"})}),[]);return o.useEffect((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||l()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),o.useEffect((function(){if(t.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(t.rowIndex,t.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(t.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(t.rowIndex,t.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[t]),t.isFocus?{isFocus:!0,rowIndex:t.rowIndex,colIndex:t.colIndex,focus:u,unfocus:l,move:r,moveLeft:i,moveRight:a,moveUp:d,moveDown:f}:{isFocus:!1,focus:u,unfocus:l,move:r,moveLeft:i,moveRight:a,moveUp:d,moveDown:f}};
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react"),n=require("../libs/id-generator.js"),t=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e.__assign(e.__assign({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e.__assign(e.__assign({},o),{rowIndex:o.rowIndex+1}):o}};exports.useFocusReducer=function(){var e=o.useReducer(t,{isFocus:!1}),s=e[0],u=e[1],c=o.useMemo((function(){return{focus:function(e,o){u({type:"focus",payload:{rowIndex:e,colIndex:o}})},unfocus:function(){u({type:"unfocus"})},move:function(e,o){u({type:"move",payload:{rowIndex:e,colIndex:o}})},moveLeft:function(){u({type:"moveLeft"})},moveRight:function(){u({type:"moveRight"})},moveUp:function(){u({type:"moveUp"})},moveDown:function(){u({type:"moveDown"})}}}),[]);return o.useEffect((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||c.unfocus()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),o.useEffect((function(){if(s.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(s.rowIndex,s.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(s.isFocus){var e=document.getElementById(n.IdGenerator.getTableCellId(s.rowIndex,s.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[s]),{state:s,actions:c}};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const focus = useCallback((rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n }, []);\n\n const unfocus = useCallback(() => {\n dispatch({ type: \"unfocus\" });\n }, []);\n\n const move = useCallback((rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n }, []);\n\n const moveLeft = useCallback(() => {\n dispatch({ type: \"moveLeft\" });\n }, []);\n\n const moveRight = useCallback(() => {\n dispatch({ type: \"moveRight\" });\n }, []);\n\n const moveUp = useCallback(() => {\n dispatch({ type: \"moveUp\" });\n }, []);\n\n const moveDown = useCallback(() => {\n dispatch({ type: \"moveDown\" });\n }, []);\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n if (state.isFocus) {\n return {\n isFocus: true,\n rowIndex: state.rowIndex,\n colIndex: state.colIndex,\n focus,\n unfocus,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n };\n } else {\n return {\n isFocus: false,\n focus,\n unfocus,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n };\n }\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","_a","useReducer","dispatch","focus","useCallback","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"+HAIMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,qCAGQ,IAAAQ,EAAoBC,EAAUA,WAACV,EAAS,CAC5CI,SAAS,IADJH,EAAKQ,EAAA,GAAEE,OAIRC,EAAQC,EAAAA,aAAY,SAACR,EAAkBE,GAC3CI,EAAS,CAAER,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,GAAE,IAEGO,EAAUD,EAAAA,aAAY,WAC1BF,EAAS,CAAER,KAAM,WAClB,GAAE,IAEGY,EAAOF,EAAAA,aAAY,SAACR,EAAkBE,GAC1CI,EAAS,CAAER,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,GAAE,IAEGS,EAAWH,EAAAA,aAAY,WAC3BF,EAAS,CAAER,KAAM,YAClB,GAAE,IAEGc,EAAYJ,EAAAA,aAAY,WAC5BF,EAAS,CAAER,KAAM,aAClB,GAAE,IAEGe,EAASL,EAAAA,aAAY,WACzBF,EAAS,CAAER,KAAM,UAClB,GAAE,IAEGgB,EAAWN,EAAAA,aAAY,WAC3BF,EAAS,CAAER,KAAM,YAClB,GAAE,IA6CH,OA3CAiB,EAAAA,WAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7CZ,GACF,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,EAAAA,WAAU,WACR,GAAInB,EAAMG,QAAS,CACjB,IAAMmB,EAAUC,SAASC,eACvBO,cAAYC,eAAehC,EAAMI,SAAUJ,EAAMM,WAEnDgB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASX,OACV,CAED,OAAO,WACL,GAAIX,EAAMG,QAAS,CACjB,IAAMmB,EAAUC,SAASC,eACvBO,cAAYC,eAAehC,EAAMI,SAAUJ,EAAMM,WAEnDgB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAAClC,IAEAA,EAAMG,QACD,CACLA,SAAS,EACTC,SAAUJ,EAAMI,SAChBE,SAAUN,EAAMM,SAChBK,MAAKA,EACLE,QAAOA,EACPC,KAAIA,EACJC,SAAQA,EACRC,UAASA,EACTC,OAAMA,EACNC,SAAQA,GAGH,CACLf,SAAS,EACTQ,MAAKA,EACLE,QAAOA,EACPC,KAAIA,EACJC,SAAQA,EACRC,UAASA,EACTC,OAAMA,EACNC,SAAQA,EAGd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const actions = useMemo(\n () => ({\n focus: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n },\n unfocus: () => {\n dispatch({ type: \"unfocus\" });\n },\n move: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n actions.unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n return {\n state,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","_a","useReducer","dispatch","actions","useMemo","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"+HAIMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,WAAAA,EAAAA,SAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,qCAGQ,IAAAQ,EAAoBC,EAAUA,WAACV,EAAS,CAC5CI,SAAS,IADJH,EAAKQ,EAAA,GAAEE,OAIRC,EAAUC,WACd,WAAM,MAAC,CACLC,MAAO,SAACT,EAAkBE,GACxBI,EAAS,CAAER,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,EACDQ,QAAS,WACPJ,EAAS,CAAER,KAAM,WAClB,EACDa,KAAM,SAACX,EAAkBE,GACvBI,EAAS,CAAER,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,EACDU,SAAU,WACRN,EAAS,CAAER,KAAM,YAClB,EACDe,UAAW,WACTP,EAAS,CAAER,KAAM,aAClB,EACDgB,OAAQ,WACNR,EAAS,CAAER,KAAM,UAClB,EACDiB,SAAU,WACRT,EAAS,CAAER,KAAM,YAClB,EArBG,GAuBN,IA8CF,OA3CAkB,EAAAA,WAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7Cf,EAAQG,SACV,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,EAAAA,WAAU,WACR,GAAIpB,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,cAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASV,OACV,CAED,OAAO,WACL,GAAIb,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,cAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAACnC,IAEG,CACLA,MAAKA,EACLW,QAAOA,EAEX"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),o=require("react/jsx-runtime"),n=require("react"),t=require("./hooks.js"),u=n.createContext({isFocus:!1}),s=n.createContext({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function r(){return n.useContext(u)}function c(){return n.useContext(s)}exports.FocusProvider=function(e){var r=t.useFocusReducer(),c=r.isFocus?{isFocus:!0,rowIndex:r.rowIndex,colIndex:r.colIndex}:{isFocus:!1},i=n.useMemo((function(){return{focus:r.focus,unfocus:r.unfocus,move:r.move,moveLeft:r.moveLeft,moveRight:r.moveRight,moveUp:r.moveUp,moveDown:r.moveDown}}),[]);return o.jsx(u.Provider,{value:c,children:o.jsx(s.Provider,{value:i,children:e.children})})},exports.useFocusActionContext=c,exports.useFocusContext=function(){return e.__assign(e.__assign({},r()),c())},exports.useFocusStateContext=r;
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),o=require("react"),n=require("./hooks.js"),u=o.createContext({isFocus:!1}),r=o.createContext({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function s(){return o.useContext(u)}function i(){return o.useContext(r)}exports.FocusProvider=function(e){var o=n.useFocusReducer(),s=o.state,i=o.actions;return t.jsx(u.Provider,{value:s,children:t.jsx(r.Provider,{value:i,children:e.children})})},exports.useFocusActionContext=i,exports.useFocusContext=function(){return e.__assign(e.__assign({},s()),i())},exports.useFocusStateContext=s;
2
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport { TFocusState, TReturnFocusReducer } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusState>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<\n Omit<TReturnFocusReducer, \"isFocus\" | \"rowIndex\" | \"colIndex\">\n>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const focus = useFocusReducer();\n\n const state: TFocusState = focus.isFocus\n ? {\n isFocus: true,\n rowIndex: focus.rowIndex,\n colIndex: focus.colIndex,\n }\n : {\n isFocus: false,\n };\n\n const action: Omit<TReturnFocusReducer, \"isFocus\" | \"rowIndex\" | \"colIndex\"> =\n useMemo(() => {\n return {\n focus: focus.focus,\n unfocus: focus.unfocus,\n move: focus.move,\n moveLeft: focus.moveLeft,\n moveRight: focus.moveRight,\n moveUp: focus.moveUp,\n moveDown: focus.moveDown,\n };\n }, []);\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={action}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useFocusStateContext","useContext","useFocusActionContext","props","useFocusReducer","state","rowIndex","colIndex","action","useMemo","_jsx","Provider","value","children","__assign"],"mappings":"iJAIMA,EAAoBC,EAAAA,cAA2B,CACnDC,SAAS,IAGLC,EAAqBF,EAAAA,cAEzB,CACAG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,aAsCJC,IACd,OAAOC,EAAAA,WAAWZ,EACpB,UAEgBa,IACd,OAAOD,EAAAA,WAAWT,EACpB,uBAzCM,SAAwBW,GAC5B,IAAMV,EAAQW,EAAAA,kBAERC,EAAqBZ,EAAMF,QAC7B,CACEA,SAAS,EACTe,SAAUb,EAAMa,SAChBC,SAAUd,EAAMc,UAElB,CACEhB,SAAS,GAGTiB,EACJC,EAAAA,SAAQ,WACN,MAAO,CACLhB,MAAOA,EAAMA,MACbC,QAASD,EAAMC,QACfC,KAAMF,EAAME,KACZC,SAAUH,EAAMG,SAChBC,UAAWJ,EAAMI,UACjBC,OAAQL,EAAMK,OACdC,SAAUN,EAAMM,SAEnB,GAAE,IAEL,OACEW,EAAAA,IAACrB,EAAkBsB,UAASC,MAAOP,EAAKQ,SACtCH,MAAClB,EAAmBmB,SAAQ,CAACC,MAAOJ,EAAMK,SACvCV,EAAMU,YAIf,qEAWE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYd,KAA2BE,IACzC"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TFocusActionContext, TFocusStateContext } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusStateContext>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<TFocusActionContext>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const { state, actions } = useFocusReducer();\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={actions}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useFocusStateContext","useContext","useFocusActionContext","props","_a","useFocusReducer","state","actions","_jsx","Provider","value","children","__assign"],"mappings":"iJAIMA,EAAoBC,EAAAA,cAAkC,CAC1DC,SAAS,IAGLC,EAAqBF,EAAAA,cAAmC,CAC5DG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,aAeJC,IACd,OAAOC,EAAAA,WAAWZ,EACpB,UAEgBa,IACd,OAAOD,EAAAA,WAAWT,EACpB,uBAlBM,SAAwBW,GACtB,IAAAC,EAAqBC,EAAeA,kBAAlCC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEC,EAAAA,IAACnB,EAAkBoB,UAASC,MAAOJ,EAAKK,SACtCH,MAAChB,EAAmBiB,SAAQ,CAACC,MAAOH,EAAOI,SACxCR,EAAMQ,YAIf,qEAWE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYZ,KAA2BE,IACzC"}
@@ -1,2 +1,2 @@
1
- "use strict";exports.IdGenerator={getTableCellId:function(t,e){return"table-cell-".concat(t,"-").concat(e)},getTableColId:function(t){return"table-col-".concat(t)}};
1
+ "use strict";var e={getTableCellId:function(e,t){return"table-cell-".concat(e,"-").concat(t)},getCellIndex:function(e){var t=e.split("-");t[0],t[1];var r=t[2],n=t[3];return[Number(r),Number(n)]},getTableColId:function(e){return"table-col-".concat(e)}};exports.IdGenerator=e;
2
2
  //# sourceMappingURL=id-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["getTableCellId","rowIndex","columnIndex","concat","getTableColId"],"mappings":"iCAA2B,CACzBA,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,cAAe,SAACF,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
1
+ {"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getCellIndex","id","_a","split","Number","getTableColId"],"mappings":"aAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,aAAc,SAACC,GACP,IAAAC,EAAkCD,EAAGE,MAAM,eAAlC,IAAAN,OAAUC,OACzB,MAAO,CAACM,OAAOP,GAAWO,OAAON,GAClC,EACDO,cAAe,SAACP,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),o=require("../focus/provider.js"),t=require("../checkbox/components.js"),n=require("../cell/ui/cell.js"),i=r.memo((function(r){var i=o.useFocusActionContext().unfocus,a=JSON.parse(r.dataString),l=r.conditionalFormattingString.split(",");return e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(a):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(a),i())},"data-testid":a.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(t.Checkbox,{row:a})}),r.cols.map((function(o,t){var i;return e.jsx(n.TableCell,{rowIndex:r.rowIndex,colIndex:t,row:a,columnKey:o.key,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:l[t],isExistOnUpdateRow:!!r.onUpdateRow,editable:null!==(i=o.editable)&&void 0!==i&&i},o.key)}))]})}));exports.Row=i;
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../focus/provider.js"),o=require("../checkbox/components.js"),i=require("../cell/ui/cell.js"),a=require("../libs/id-generator.js"),n=r.memo((function(r){var n=t.useFocusActionContext().unfocus,l=JSON.parse(r.dataString),c=r.conditionalFormattingString.split(",");return e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(l):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(l),n())},"data-testid":l.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(o.Checkbox,{row:l})}),r.cols.map((function(t,o){var n;return e.jsx(i.TableCell,{id:a.IdGenerator.getTableCellId(r.rowIndex,o),row:l,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:c[o],editable:null!==(n=t.editable)&&void 0!==n&&n},t.key)}))]})}));exports.Row=n;
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 { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\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 onUpdateRow?: (newRow: any, oldRow: any) => void;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n rowIndex={props.rowIndex}\n colIndex={j}\n row={row}\n columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n isExistOnUpdateRow={!!props.onUpdateRow}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","jsx","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"4KAiBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,OACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACEC,IAAA,KAAA,CAAAH,SAAAE,EAAAA,IAACE,EAAQA,SAAC,CAAApB,IAAKA,MAGlBH,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAAAA,IAACO,EAAAA,UAAS,CAERC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVxB,IAAKA,EACL4B,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMa,WAC3BqB,oBAAqB3B,EAAsBoB,GAC3CQ,qBAAsBnC,EAAMoC,YAC5BC,SAAsB,QAAZC,EAAAZ,EAAIW,gBAAQ,IAAAC,GAAAA,GARjBZ,EAAIM,UAcrB"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { IdGenerator } from \"../libs\";\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 { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\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(props.rowIndex, j)}\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","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","jsx","Checkbox","cols","map","col","j","TableCell","IdGenerator","getTableCellId","rowIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"iNAiBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,OACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACEC,IAAA,KAAA,CAAAH,SAAAE,EAAAA,IAACE,EAAQA,SAAC,CAAApB,IAAKA,MAGlBH,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEN,EAAAA,IAACO,EAAAA,UAAS,CAERV,GAAIW,EAAWA,YAACC,eAAe9B,EAAM+B,SAAUJ,GAC/CxB,IAAKA,EACL6B,oBAAqBhC,EAAMa,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAAsB,UAAZR,EAAIQ,gBAAQ,IAAAC,GAAAA,GALjBT,EAAIU,UAWrB"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),t=require("../pagenation/providers.js"),s=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var a=require("../sort/provider.js"),d=require("../sheet/providers.js"),c=require("../focus/provider.js"),u=require("../checkbox/provider.js"),x=require("../checkbox/components.js"),j=require("../libs/id-generator.js"),h=require("../edit/provider.js"),p=require("../table-property/provider.js"),g=require("../operation/components/keyboard-setting.js"),m=require("../sheet/components.js"),v=require("../paste/provider.js"),b=require("../libs/conditional-formatting.js"),w=require("../edit/ui/editor.js"),f=require("../filter/hooks/selectedFilteringColumn/provider.js");function q(e){var t=o.useTable(e),n=t.cols,a=t.rowMaps,d=t.pageRowIds,c=f.useFilteringColumnStateContext(),u=v.usePasteActionContext().onPaste;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(w.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");u(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))},children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(m.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:b.generateFormattingString(a[o].data,n,e.conditionalFormattings),onUpdateRow:e.onUpdateRow},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(s.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(s.Pagenation,{})})]})]})}module.exports=function(o){var i,s,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(t.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(s=o.initialCondition)||void 0===s?void 0:s.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(u.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(u.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.FocusProvider,{children:r.jsx(h.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.KeyboardSetting,{}),r.jsx(q,e.__assign({},o))]})})})})})})})})})})};
2
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),o=require("./hook.js"),i=require("../header/header.js"),t=require("../pagenation/providers.js"),s=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var a=require("../sort/provider.js"),d=require("../sheet/providers.js"),c=require("../focus/provider.js"),u=require("../checkbox/provider.js"),x=require("../checkbox/components.js"),j=require("../libs/id-generator.js"),h=require("../edit/provider.js"),p=require("../table-property/provider.js"),g=require("../operation/components/keyboard-setting.js"),m=require("../sheet/components.js"),v=require("../paste/provider.js"),b=require("../libs/conditional-formatting.js"),w=require("../edit/ui/editor.js"),f=require("../filter/hooks/selectedFilteringColumn/provider.js");function q(e){var t=o.useTable(e),n=t.cols,a=t.rowMaps,d=t.pageRowIds,c=f.useFilteringColumnStateContext(),u=v.usePasteActionContext().onPaste;return r.jsxs("div",{className:"w-full",children:[r.jsx("div",{className:"flex justify-end mb-1 mr-3",children:r.jsx(l.TableFilterRemoveButton,{children:r.jsx("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r.jsxs("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r.jsx(w.Editor,{rowMaps:a,pageRowIds:d}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");u(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")})))},children:[r.jsx("thead",{children:r.jsxs("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.IdGenerator.getTableColId(o),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===d.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),d.map((function(o,i){return r.jsx(m.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:a[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:b.generateFormattingString(a[o].data,n,e.conditionalFormattings)},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(s.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(s.Pagenation,{})})]})]})}module.exports=function(o){var i,s,l;return r.jsx(n.FilterProvider,{children:r.jsx(a.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(t.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(s=o.initialCondition)||void 0===s?void 0:s.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(u.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(u.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.FocusProvider,{children:r.jsx(h.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsxs(v.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.KeyboardSetting,{}),r.jsx(q,e.__assign({},o))]})})})})})})})})})})};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo as e,useCallback as o}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useFocusActionContext as r}from"../focus/provider.js";import{useColumnsContext as n}from"../sheet/providers.js";function i(i,l,d){var u,f,p=r(),c=t(),m=n()[l],s=d[m.key],v="select"===m.type?null===(f=null===(u=m.options)||void 0===u?void 0:u.find((function(e){return e.value===s})))||void 0===f?void 0:f.label:s,a=e((function(){return m.editable?v:m.render?m.render(s,d):v}),[m.editable,v,s,d]);return{type:!m.editable&&m.render?"component":m.type,component:a,focusAtCell:o((function(){p.move(i,l),p.focus(i,l)}),[p,i,l]),onDoubleClickCellToEdit:o((function(e){e.preventDefault(),p.move(i,l),p.focus(i,l),c.startEditing()}),[p,c,i,l])}}export{i as useCell};
1
+ import{useMemo as e}from"react";import{useEditActionContext as o}from"../edit/provider.js";import{useFocusActionContext as t}from"../focus/provider.js";import{useColumnsContext as r}from"../sheet/providers.js";import{IdGenerator as n}from"../libs/id-generator.js";function i(i,l){var p,d,u=t(),f=u.move,a=u.focus,c=o().startEditing,m=n.getCellIndex(i),s=m[0],v=m[1],b=r()[v],g=l[b.key],j="select"===b.type?null===(d=null===(p=b.options)||void 0===p?void 0:p.find((function(e){return e.value===g})))||void 0===d?void 0:d.label:g,y=e((function(){return b.editable?j:b.render?b.render(g,l):j}),[b.editable,j,g,l]);return{type:!b.editable&&b.render?"component":b.type,component:y,onClickCell:function(e){e.preventDefault(),e.stopPropagation(),a(s,v),f(s,v)},onDoubleClick:function(e){e.preventDefault(),a(s,v),f(s,v),c()}}}export{i as useCell};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\n\nexport function useCell(\n rowIndex: number,\n colIndex: number,\n row: DataObject<DataRecord>\n) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const onDoubleClickCellToEdit: React.MouseEventHandler<HTMLDivElement> =\n useCallback(\n (e) => {\n e.preventDefault();\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n editAction.startEditing();\n },\n [focus, editAction, rowIndex, colIndex]\n );\n\n return {\n type,\n component,\n focusAtCell,\n onDoubleClickCellToEdit,\n };\n}\n"],"names":["useCell","rowIndex","colIndex","row","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"4OAMgBA,EACdC,EACAC,EACAC,WAEMC,EAAQC,IACRC,EAAaC,IACbC,EAAMC,IAAoBP,GAC1BQ,EAAQP,EAAIK,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBP,GAAOS,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOP,IAqBhC,MAAO,CACLU,MAnBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAoBhDM,UAASA,EACTI,YAnBkBC,GAAY,WAC9BpB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,EACvB,GAAE,CAACE,EAAOH,EAAUC,IAiBnBwB,wBAdAF,GACE,SAACG,GACCA,EAAEC,iBACFxB,EAAMqB,KAAKxB,EAAUC,GACrBE,EAAMA,MAAMH,EAAUC,GACtBI,EAAWuB,cACZ,GACD,CAACzB,EAAOE,EAAYL,EAAUC,IASpC"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { IdGenerator } from \"../libs\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const { move, focus } = useFocusActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.getCellIndex(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n startEditing();\n };\n\n const onClickCell: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n focus(rowIndex, colIndex);\n move(rowIndex, colIndex);\n };\n\n return {\n type,\n component,\n onClickCell,\n onDoubleClick,\n };\n}\n"],"names":["useCell","id","row","_c","useFocusActionContext","move","focus","startEditing","useEditActionContext","_d","IdGenerator","getCellIndex","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onClickCell","e","preventDefault","stopPropagation","onDoubleClick"],"mappings":"wQAOgB,SAAAA,EAAQC,EAAYC,WAC5BC,EAAkBC,IAAhBC,EAAIF,EAAAE,KAAEC,EAAKH,EAAAG,MACXC,EAAiBC,iBACnBC,EAAuBC,EAAYC,aAAaV,GAA/CW,EAAQH,EAAA,GAAEI,OACXC,EAAMC,IAAoBF,GAC1BG,EAAQd,EAAIY,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBd,GAAOgB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOd,IAmBhC,MAAO,CACLiB,MAjBCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAkBhDM,UAASA,EACTI,YAV2D,SAACC,GAC5DA,EAAEC,iBACFD,EAAEE,kBACF1B,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,EACjB,EAMEoB,cAlB6D,SAACH,GAC9DA,EAAEC,iBACFzB,EAAMM,EAAUC,GAChBR,EAAKO,EAAUC,GACfN,GACF,EAeF"}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import{EditButton as t}from"./edit-button.js";import{IdGenerator as l}from"../../libs/id-generator.js";import{useCell as i}from"../hooks.js";function n(n){var r=i(n.rowIndex,n.colIndex,n.row),c=r.type,a=r.component,s=r.focusAtCell,d=r.onDoubleClickCellToEdit,m=l.getTableCellId(n.rowIndex,n.colIndex);return e("td",{id:m,className:"".concat(n.cellFormatClassName),children:e("div",{className:"relative",onClick:n.isExistOnClickRow?void 0:function(e){e.preventDefault(),s()},onDoubleClick:n.isExistOnClickRow?void 0:d,children:o("div",{className:"flex items-center gap-3 w-f-displayit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),s()},children:["component"===c?a:e("div",{onDoubleClick:d,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:a})}),n.editable&&e(t,{})]})})})}export{n as TableCell};
2
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{lazy as o,Suspense as l}from"react";import{useCell as t}from"../hooks.js";var c=o((function(){return import("./edit-button.js")}));function n(o){var n=t(o.id,o.row),r=n.type,a=n.component,s=n.onClickCell,d=n.onDoubleClick;return e("td",{id:o.id,className:"".concat(o.cellFormatClassName),onClick:o.isExistOnClickRow?void 0:s,onDoubleClick:o.isExistOnClickRow?void 0:d,children:i("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:s,children:["component"===r?a:e("div",{onDoubleClick:d,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:a})}),e(l,{fallback:null,children:o.editable&&e(c,{})})]})})}export{n as TableCell};
3
3
  //# sourceMappingURL=cell.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useEditActionContext as i}from"../../edit/provider.js";import{EditIcon as o}from"../../../icon/edit-icon.js";var e=t((function(){var t=i().startEditing;return r("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(r){r.preventDefault(),t()},children:r(o,{size:12})})}));export{e as EditButton};
2
+ import{jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useEditActionContext as i}from"../../edit/provider.js";import{EditIcon as e}from"../../../icon/edit-icon.js";var o=t((function(){var t=i().startEditing;return r("button",{className:"w-fit h-fit p-1 rounded-full text-gray-500 hover:bg-gray-200",onClick:function(r){r.preventDefault(),t()},children:r(e,{size:12})})}));export{o as default};
3
3
  //# sourceMappingURL=edit-button.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{useState as o}from"react";import{useEditActionContext as r}from"../provider.js";import{CancelIcon as i}from"../../../icon/cancel-icon.js";function l(l){var a=l.col,u=r().endEditing,c=l.row[a.key],p=o(c),f=p[0],m=p[1];return a.editable?n("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:f,onChange:function(e){e.preventDefault(),m(e.target.value)},onBlur:function(e){e.preventDefault(),f!==c?function(e){a.editable&&a.onCellBlur(a.key,e,l.row,u)}(f):u()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(m(c),u())},children:[a.allowEmpty&&e("option",{value:"",children:""==c?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),a.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]}),e("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){m(c),u()}),300)},children:e(i,{size:16})})]}):e(t,{})}export{l as SelectCellInput};
2
+ import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import{useState as o,useRef as r,useEffect as l}from"react";import{useEditActionContext as i}from"../provider.js";import{CancelIcon as u}from"../../../icon/cancel-icon.js";function a(a){var c=a.col,f=i().endEditing,p=a.row[c.key],s=o(p),m=s[0],v=s[1],y=r(null);l((function(){y.current&&y.current.focus()}),[y]);return c.editable?n("div",{className:"flex justify-between gap-1 w-full items-center",children:[n("select",{ref:y,className:"w-full py-1 px-2 bg-white text-gray-900",value:m,onChange:function(e){e.preventDefault(),v(e.target.value)},onBlur:function(e){e.preventDefault(),m!==p?function(e){c.editable&&c.onCellBlur(c.key,e,a.row,f)}(m):f()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(v(p),f())},children:[c.allowEmpty&&e("option",{value:"",children:""==p?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),c.options.map((function(t){return e("option",{value:t.value,children:t.label},t.value)}))]}),e("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){v(p),f()}),300)},children:e(u,{size:16})})]}):e(t,{})}export{a as SelectCellInput};
3
3
  //# sourceMappingURL=select-input.js.map
@@ -1,2 +1,2 @@
1
- import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as o,useCallback as n,useEffect as t}from"react";import{IdGenerator as s}from"../libs/id-generator.js";var c=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e(e({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e(e({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex+1}):o}};function u(){var e=o(c,{isFocus:!1}),u=e[0],l=e[1],r=n((function(e,o){l({type:"focus",payload:{rowIndex:e,colIndex:o}})}),[]),i=n((function(){l({type:"unfocus"})}),[]),d=n((function(e,o){l({type:"move",payload:{rowIndex:e,colIndex:o}})}),[]),a=n((function(){l({type:"moveLeft"})}),[]),m=n((function(){l({type:"moveRight"})}),[]),f=n((function(){l({type:"moveUp"})}),[]),I=n((function(){l({type:"moveDown"})}),[]);return t((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||i()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),t((function(){if(u.isFocus){var e=document.getElementById(s.getTableCellId(u.rowIndex,u.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(u.isFocus){var e=document.getElementById(s.getTableCellId(u.rowIndex,u.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[u]),u.isFocus?{isFocus:!0,rowIndex:u.rowIndex,colIndex:u.colIndex,focus:r,unfocus:i,move:d,moveLeft:a,moveRight:m,moveUp:f,moveDown:I}:{isFocus:!1,focus:r,unfocus:i,move:d,moveLeft:a,moveRight:m,moveUp:f,moveDown:I}}export{u as useFocusReducer};
1
+ import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as o,useMemo as n,useEffect as t}from"react";import{IdGenerator as c}from"../libs/id-generator.js";var s=function(o,n){switch(n.type){case"focus":return o.isFocus?o:{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex};case"unfocus":return o.isFocus?{isFocus:!1}:o;case"move":return o.isFocus?{isFocus:!0,rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex}:o;case"moveLeft":return o.isFocus?e(e({},o),{colIndex:o.colIndex-1}):o;case"moveRight":return o.isFocus?e(e({},o),{colIndex:o.colIndex+1}):o;case"moveUp":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex-1}):o;case"moveDown":return o.isFocus?e(e({},o),{rowIndex:o.rowIndex+1}):o}};function r(){var e=o(s,{isFocus:!1}),r=e[0],u=e[1],l=n((function(){return{focus:function(e,o){u({type:"focus",payload:{rowIndex:e,colIndex:o}})},unfocus:function(){u({type:"unfocus"})},move:function(e,o){u({type:"move",payload:{rowIndex:e,colIndex:o}})},moveLeft:function(){u({type:"moveLeft"})},moveRight:function(){u({type:"moveRight"})},moveUp:function(){u({type:"moveUp"})},moveDown:function(){u({type:"moveDown"})}}}),[]);return t((function(){var e=function(e){var o=document.getElementById("table-frame"),n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||l.unfocus()};return document.addEventListener("click",e),function(){document.removeEventListener("click",e)}}),[]),t((function(){if(r.isFocus){var e=document.getElementById(c.getTableCellId(r.rowIndex,r.colIndex));null==e||e.style.setProperty("outline-style","solid"),null==e||e.style.setProperty("outline-width","1px"),null==e||e.style.setProperty("outline-offset","-1px"),null==e||e.style.setProperty("outline-color","#9ca3af"),null==e||e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),null==e||e.focus()}return function(){if(r.isFocus){var e=document.getElementById(c.getTableCellId(r.rowIndex,r.colIndex));null==e||e.style.setProperty("outline-style","none")}}}),[r]),{state:r,actions:l}}export{r as useFocusReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const focus = useCallback((rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n }, []);\n\n const unfocus = useCallback(() => {\n dispatch({ type: \"unfocus\" });\n }, []);\n\n const move = useCallback((rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n }, []);\n\n const moveLeft = useCallback(() => {\n dispatch({ type: \"moveLeft\" });\n }, []);\n\n const moveRight = useCallback(() => {\n dispatch({ type: \"moveRight\" });\n }, []);\n\n const moveUp = useCallback(() => {\n dispatch({ type: \"moveUp\" });\n }, []);\n\n const moveDown = useCallback(() => {\n dispatch({ type: \"moveDown\" });\n }, []);\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n if (state.isFocus) {\n return {\n isFocus: true,\n rowIndex: state.rowIndex,\n colIndex: state.colIndex,\n focus,\n unfocus,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n };\n } else {\n return {\n isFocus: false,\n focus,\n unfocus,\n move,\n moveLeft,\n moveRight,\n moveUp,\n moveDown,\n };\n }\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","useFocusReducer","_a","useReducer","dispatch","focus","useCallback","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"6LAIA,IAAMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,WAEgBQ,IACR,IAAAC,EAAoBC,EAAWX,EAAS,CAC5CI,SAAS,IADJH,EAAKS,EAAA,GAAEE,OAIRC,EAAQC,GAAY,SAACT,EAAkBE,GAC3CK,EAAS,CAAET,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,GAAE,IAEGQ,EAAUD,GAAY,WAC1BF,EAAS,CAAET,KAAM,WAClB,GAAE,IAEGa,EAAOF,GAAY,SAACT,EAAkBE,GAC1CK,EAAS,CAAET,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,GAAE,IAEGU,EAAWH,GAAY,WAC3BF,EAAS,CAAET,KAAM,YAClB,GAAE,IAEGe,EAAYJ,GAAY,WAC5BF,EAAS,CAAET,KAAM,aAClB,GAAE,IAEGgB,EAASL,GAAY,WACzBF,EAAS,CAAET,KAAM,UAClB,GAAE,IAEGiB,EAAWN,GAAY,WAC3BF,EAAS,CAAET,KAAM,YAClB,GAAE,IA6CH,OA3CAkB,GAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7CZ,GACF,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,GAAU,WACR,GAAIpB,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,EAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASX,OACV,CAED,OAAO,WACL,GAAIZ,EAAMG,QAAS,CACjB,IAAMoB,EAAUC,SAASC,eACvBO,EAAYC,eAAejC,EAAMI,SAAUJ,EAAMM,WAEnDiB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAACnC,IAEAA,EAAMG,QACD,CACLA,SAAS,EACTC,SAAUJ,EAAMI,SAChBE,SAAUN,EAAMM,SAChBM,MAAKA,EACLE,QAAOA,EACPC,KAAIA,EACJC,SAAQA,EACRC,UAASA,EACTC,OAAMA,EACNC,SAAQA,GAGH,CACLhB,SAAS,EACTS,MAAKA,EACLE,QAAOA,EACPC,KAAIA,EACJC,SAAQA,EACRC,UAASA,EACTC,OAAMA,EACNC,SAAQA,EAGd"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/focus/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport { TFocusReducer, TReturnFocusReducer } from \"./types\";\nimport { IdGenerator } from \"../libs\";\n\nconst reducer: TFocusReducer = (state, action) => {\n switch (action.type) {\n case \"focus\":\n if (state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: false,\n };\n case \"move\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n isFocus: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"moveLeft\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex - 1,\n };\n case \"moveRight\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n colIndex: state.colIndex + 1,\n };\n case \"moveUp\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex - 1,\n };\n case \"moveDown\":\n if (!state.isFocus) {\n return state;\n }\n\n return {\n ...state,\n rowIndex: state.rowIndex + 1,\n };\n }\n};\n\nexport function useFocusReducer(): TReturnFocusReducer {\n const [state, dispatch] = useReducer(reducer, {\n isFocus: false,\n });\n\n const actions = useMemo(\n () => ({\n focus: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"focus\", payload: { rowIndex, colIndex } });\n },\n unfocus: () => {\n dispatch({ type: \"unfocus\" });\n },\n move: (rowIndex: number, colIndex: number) => {\n dispatch({ type: \"move\", payload: { rowIndex, colIndex } });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(\"table-frame\");\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n actions.unfocus();\n };\n\n document.addEventListener(\"click\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"click\", onClickOutOfTable);\n };\n }, []);\n\n useEffect(() => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"solid\");\n element?.style.setProperty(\"outline-width\", \"1px\");\n element?.style.setProperty(\"outline-offset\", \"-1px\");\n element?.style.setProperty(\"outline-color\", \"#9ca3af\");\n\n element?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n element?.focus();\n }\n\n return () => {\n if (state.isFocus) {\n const element = document.getElementById(\n IdGenerator.getTableCellId(state.rowIndex, state.colIndex)\n );\n element?.style.setProperty(\"outline-style\", \"none\");\n }\n };\n }, [state]);\n\n return {\n state,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","isFocus","rowIndex","payload","colIndex","__assign","useFocusReducer","_a","useReducer","dispatch","actions","useMemo","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","useEffect","onClickOutOfTable","e","element","document","getElementById","ele","target","Node","contains","addEventListener","removeEventListener","IdGenerator","getTableCellId","style","setProperty","scrollIntoView","behavior","block","inline"],"mappings":"yLAIA,IAAMA,EAAyB,SAACC,EAAOC,GACrC,OAAQA,EAAOC,MACb,IAAK,QACH,OAAIF,EAAMG,QACDH,EAGF,CACLG,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UAE7B,IAAK,UACH,OAAKN,EAAMG,QAIJ,CACLA,SAAS,GAJFH,EAMX,IAAK,OACH,OAAKA,EAAMG,QAIJ,CACLA,SAAS,EACTC,SAAUH,EAAOI,QAAQD,SACzBE,SAAUL,EAAOI,QAAQC,UANlBN,EAQX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,YACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHM,SAAUN,EAAMM,SAAW,IALpBN,EAOX,IAAK,SACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAOX,IAAK,WACH,OAAKA,EAAMG,QAKNI,EAAAA,EAAA,CAAA,EAAAP,IACHI,SAAUJ,EAAMI,SAAW,IALpBJ,EAQf,WAEgBQ,IACR,IAAAC,EAAoBC,EAAWX,EAAS,CAC5CI,SAAS,IADJH,EAAKS,EAAA,GAAEE,OAIRC,EAAUC,GACd,WAAM,MAAC,CACLC,MAAO,SAACV,EAAkBE,GACxBK,EAAS,CAAET,KAAM,QAASG,QAAS,CAAED,WAAUE,aAChD,EACDS,QAAS,WACPJ,EAAS,CAAET,KAAM,WAClB,EACDc,KAAM,SAACZ,EAAkBE,GACvBK,EAAS,CAAET,KAAM,OAAQG,QAAS,CAAED,WAAUE,aAC/C,EACDW,SAAU,WACRN,EAAS,CAAET,KAAM,YAClB,EACDgB,UAAW,WACTP,EAAS,CAAET,KAAM,aAClB,EACDiB,OAAQ,WACNR,EAAS,CAAET,KAAM,UAClB,EACDkB,SAAU,WACRT,EAAS,CAAET,KAAM,YAClB,EArBG,GAuBN,IA8CF,OA3CAmB,GAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAe,eAClCC,EAAMJ,EAAEK,OACVD,aAAeE,OAAQL,aAAA,EAAAA,EAASM,SAASH,KAC7Cf,EAAQG,SACV,EAIA,OAFAU,SAASM,iBAAiB,QAAST,GAE5B,WACLG,SAASO,oBAAoB,QAASV,EACxC,CACD,GAAE,IAEHD,GAAU,WACR,GAAIrB,EAAMG,QAAS,CACjB,IAAMqB,EAAUC,SAASC,eACvBO,EAAYC,eAAelC,EAAMI,SAAUJ,EAAMM,WAEnDkB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,SAC5CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC5CZ,SAAAA,EAASW,MAAMC,YAAY,iBAAkB,QAC7CZ,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,WAE5CZ,SAAAA,EAASa,eAAe,CACtBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVhB,SAAAA,EAASV,OACV,CAED,OAAO,WACL,GAAId,EAAMG,QAAS,CACjB,IAAMqB,EAAUC,SAASC,eACvBO,EAAYC,eAAelC,EAAMI,SAAUJ,EAAMM,WAEnDkB,SAAAA,EAASW,MAAMC,YAAY,gBAAiB,OAC7C,CACH,CACF,GAAG,CAACpC,IAEG,CACLA,MAAKA,EACLY,QAAOA,EAEX"}
@@ -1,2 +1,2 @@
1
- import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as e,useMemo as u,useContext as r}from"react";import{useFocusReducer as t}from"./hooks.js";var i=e({isFocus:!1}),c=e({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function f(o){var e=t(),r=e.isFocus?{isFocus:!0,rowIndex:e.rowIndex,colIndex:e.colIndex}:{isFocus:!1},f=u((function(){return{focus:e.focus,unfocus:e.unfocus,move:e.move,moveLeft:e.moveLeft,moveRight:e.moveRight,moveUp:e.moveUp,moveDown:e.moveDown}}),[]);return n(i.Provider,{value:r,children:n(c.Provider,{value:f,children:o.children})})}function m(){return r(i)}function s(){return r(c)}function v(){return o(o({},m()),s())}export{f as FocusProvider,s as useFocusActionContext,v as useFocusContext,m as useFocusStateContext};
1
+ import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as n}from"react/jsx-runtime";import{createContext as t,useContext as r}from"react";import{useFocusReducer as i}from"./hooks.js";var e=t({isFocus:!1}),u=t({focus:function(){},unfocus:function(){},move:function(){},moveLeft:function(){},moveRight:function(){},moveUp:function(){},moveDown:function(){}});function c(o){var t=i(),r=t.state,c=t.actions;return n(e.Provider,{value:r,children:n(u.Provider,{value:c,children:o.children})})}function f(){return r(e)}function m(){return r(u)}function s(){return o(o({},f()),m())}export{c as FocusProvider,m as useFocusActionContext,s as useFocusContext,f as useFocusStateContext};
2
2
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport { TFocusState, TReturnFocusReducer } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusState>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<\n Omit<TReturnFocusReducer, \"isFocus\" | \"rowIndex\" | \"colIndex\">\n>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const focus = useFocusReducer();\n\n const state: TFocusState = focus.isFocus\n ? {\n isFocus: true,\n rowIndex: focus.rowIndex,\n colIndex: focus.colIndex,\n }\n : {\n isFocus: false,\n };\n\n const action: Omit<TReturnFocusReducer, \"isFocus\" | \"rowIndex\" | \"colIndex\"> =\n useMemo(() => {\n return {\n focus: focus.focus,\n unfocus: focus.unfocus,\n move: focus.move,\n moveLeft: focus.moveLeft,\n moveRight: focus.moveRight,\n moveUp: focus.moveUp,\n moveDown: focus.moveDown,\n };\n }, []);\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={action}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","FocusProvider","props","useFocusReducer","state","rowIndex","colIndex","action","useMemo","_jsx","Provider","value","children","useFocusStateContext","useContext","useFocusActionContext","useFocusContext","__assign"],"mappings":"4NAIA,IAAMA,EAAoBC,EAA2B,CACnDC,SAAS,IAGLC,EAAqBF,EAEzB,CACAG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,IAGd,SAAUC,EAAcC,GAC5B,IAAMR,EAAQS,IAERC,EAAqBV,EAAMF,QAC7B,CACEA,SAAS,EACTa,SAAUX,EAAMW,SAChBC,SAAUZ,EAAMY,UAElB,CACEd,SAAS,GAGTe,EACJC,GAAQ,WACN,MAAO,CACLd,MAAOA,EAAMA,MACbC,QAASD,EAAMC,QACfC,KAAMF,EAAME,KACZC,SAAUH,EAAMG,SAChBC,UAAWJ,EAAMI,UACjBC,OAAQL,EAAMK,OACdC,SAAUN,EAAMM,SAEnB,GAAE,IAEL,OACES,EAACnB,EAAkBoB,UAASC,MAAOP,EAAKQ,SACtCH,EAAChB,EAAmBiB,SAAQ,CAACC,MAAOJ,EAAMK,SACvCV,EAAMU,YAIf,UAEgBC,IACd,OAAOC,EAAWxB,EACpB,UAEgByB,IACd,OAAOD,EAAWrB,EACpB,UAEgBuB,IACd,OAAAC,EAAAA,EAAA,CAAA,EAAYJ,KAA2BE,IACzC"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../../src/table/focus/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { TFocusActionContext, TFocusStateContext } from \"./types\";\nimport { useFocusReducer } from \"./hooks\";\n\nconst FocusStateContext = createContext<TFocusStateContext>({\n isFocus: false,\n});\n\nconst FocusActionContext = createContext<TFocusActionContext>({\n focus: () => {},\n unfocus: () => {},\n move: () => {},\n moveLeft: () => {},\n moveRight: () => {},\n moveUp: () => {},\n moveDown: () => {},\n});\n\nexport function FocusProvider(props: { children: React.ReactNode }) {\n const { state, actions } = useFocusReducer();\n\n return (\n <FocusStateContext.Provider value={state}>\n <FocusActionContext.Provider value={actions}>\n {props.children}\n </FocusActionContext.Provider>\n </FocusStateContext.Provider>\n );\n}\n\nexport function useFocusStateContext() {\n return useContext(FocusStateContext);\n}\n\nexport function useFocusActionContext() {\n return useContext(FocusActionContext);\n}\n\nexport function useFocusContext() {\n return { ...useFocusStateContext(), ...useFocusActionContext() };\n}\n"],"names":["FocusStateContext","createContext","isFocus","FocusActionContext","focus","unfocus","move","moveLeft","moveRight","moveUp","moveDown","FocusProvider","props","_a","useFocusReducer","state","actions","_jsx","Provider","value","children","useFocusStateContext","useContext","useFocusActionContext","useFocusContext","__assign"],"mappings":"+MAIA,IAAMA,EAAoBC,EAAkC,CAC1DC,SAAS,IAGLC,EAAqBF,EAAmC,CAC5DG,MAAO,WAAQ,EACfC,QAAS,WAAQ,EACjBC,KAAM,WAAQ,EACdC,SAAU,WAAQ,EAClBC,UAAW,WAAQ,EACnBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,IAGd,SAAUC,EAAcC,GACtB,IAAAC,EAAqBC,IAAnBC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEC,EAACjB,EAAkBkB,UAASC,MAAOJ,EAAKK,SACtCH,EAACd,EAAmBe,SAAQ,CAACC,MAAOH,EAAOI,SACxCR,EAAMQ,YAIf,UAEgBC,IACd,OAAOC,EAAWtB,EACpB,UAEgBuB,IACd,OAAOD,EAAWnB,EACpB,UAEgBqB,IACd,OAAAC,EAAAA,EAAA,CAAA,EAAYJ,KAA2BE,IACzC"}
@@ -1,2 +1,2 @@
1
- var t={getTableCellId:function(t,e){return"table-cell-".concat(t,"-").concat(e)},getTableColId:function(t){return"table-col-".concat(t)}};export{t as IdGenerator};
1
+ var e={getTableCellId:function(e,t){return"table-cell-".concat(e,"-").concat(t)},getCellIndex:function(e){var t=e.split("-");t[0],t[1];var l=t[2],n=t[3];return[Number(l),Number(n)]},getTableColId:function(e){return"table-col-".concat(e)}};export{e as IdGenerator};
2
2
  //# sourceMappingURL=id-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getTableColId"],"mappings":"AAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,cAAe,SAACF,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
1
+ {"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableCellId","rowIndex","columnIndex","concat","getCellIndex","id","_a","split","Number","getTableColId"],"mappings":"AAAa,IAAAA,EAAc,CACzBC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcC,OAAAF,EAAY,KAAAE,OAAAD,EAAa,EACzCE,aAAc,SAACC,GACP,IAAAC,EAAkCD,EAAGE,MAAM,eAAlC,IAAAN,OAAUC,OACzB,MAAO,CAACM,OAAOP,GAAWO,OAAON,GAClC,EACDO,cAAe,SAACP,GAAwB,MAAA,aAAaC,OAAAD,EAAa"}
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as r}from"react/jsx-runtime";import{memo as t}from"react";import{useFocusActionContext as e}from"../focus/provider.js";import{Checkbox as n}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var i=t((function(t){var i=e().unfocus,l=JSON.parse(t.dataString),c=t.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 after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(l):""),onClick:function(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(l),i())},"data-testid":l.id,children:[t.existCheckbox&&r("td",{children:r(n,{row:l})}),t.cols.map((function(o,e){var n;return r(a,{rowIndex:t.rowIndex,colIndex:e,row:l,columnKey:o.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:c[e],isExistOnUpdateRow:!!t.onUpdateRow,editable:null!==(n=o.editable)&&void 0!==n&&n},o.key)}))]})}));export{i as Row};
1
+ import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{useFocusActionContext as e}from"../focus/provider.js";import{Checkbox as i}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";import{IdGenerator as n}from"../libs/id-generator.js";var l=t((function(t){var l=e().unfocus,c=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 after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(c):""),onClick:function(r){r.preventDefault(),t.onClickRow&&(t.onClickRow(c),l())},"data-testid":c.id,children:[t.existCheckbox&&o("td",{children:o(i,{row:c})}),t.cols.map((function(r,e){var i;return o(a,{id:n.getTableCellId(t.rowIndex,e),row:c,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],editable:null!==(i=r.editable)&&void 0!==i&&i},r.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 { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\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 onUpdateRow?: (newRow: any, oldRow: any) => void;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n rowIndex={props.rowIndex}\n colIndex={j}\n row={row}\n columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n isExistOnUpdateRow={!!props.onUpdateRow}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"oPAiBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACE,KAAA,CAAAF,SAAAE,EAACC,EAAS,CAAAnB,IAAKA,MAGlBH,EAAMuB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEL,EAACM,EAAS,CAERC,SAAU5B,EAAM4B,SAChBC,SAAUH,EACVvB,IAAKA,EACL2B,UAAWL,EAAIM,IACfC,oBAAqBhC,EAAMa,WAC3BoB,oBAAqB1B,EAAsBmB,GAC3CQ,qBAAsBlC,EAAMmC,YAC5BC,SAAsB,QAAZC,EAAAZ,EAAIW,gBAAQ,IAAAC,GAAAA,GARjBZ,EAAIM,UAcrB"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { IdGenerator } from \"../libs\";\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 { unfocus } = useFocusActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n unfocus();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td>\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(props.rowIndex, j)}\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","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","_jsx","Checkbox","cols","map","col","j","TableCell","IdGenerator","getTableCellId","rowIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"0SAiBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEZ,EAAMa,WAAa,uBAAyB,GAC5C,KAAAD,OAAAZ,EAAMc,mBAAqBd,EAAMc,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEIjB,EAAMa,aACVb,EAAMa,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,GAEhBC,SAAA,CAAAnB,EAAMoB,eACLC,EACE,KAAA,CAAAF,SAAAE,EAACC,EAAS,CAAAnB,IAAKA,MAGlBH,EAAMuB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEL,EAACM,EAAS,CAERT,GAAIU,EAAYC,eAAe7B,EAAM8B,SAAUJ,GAC/CvB,IAAKA,EACL4B,oBAAqB/B,EAAMa,WAC3BmB,oBAAqBzB,EAAsBmB,GAC3CO,SAAsB,UAAZR,EAAIQ,gBAAQ,IAAAC,GAAAA,GALjBT,EAAIU,UAWrB"}
@@ -1,3 +1,3 @@
1
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 t}from"./hook.js";import{TableHeaderElement as i}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as a}from"../pagenation/components.js";import{FilterProvider as d}from"../filter/provider.js";import{TableFilterRemoveButton as s,TableFilterForm as c}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{FocusProvider as h}from"../focus/provider.js";import{CheckboxProvider as f,CheckboxStatusProvider as g}from"../checkbox/provider.js";import{AllCheckbox as u}from"../checkbox/components.js";import{IdGenerator as v}from"../libs/id-generator.js";import{EditProvider as b}from"../edit/provider.js";import{TablePropertyProvider as w}from"../table-property/provider.js";import{KeyboardSetting as x}from"../operation/components/keyboard-setting.js";import{Row as j}from"../sheet/components.js";import{PasteProvider as y,usePasteActionContext as k}from"../paste/provider.js";import{generateFormattingString as N}from"../libs/conditional-formatting.js";import{Editor as C}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as R}from"../filter/hooks/selectedFilteringColumn/provider.js";function F(t){var i,l,a;return r(d,{children:r(m,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:r(n,{rowCount:t.rows.length,perPage:null===(a=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===a?void 0:a.rowCountPerPage,children:r(f,{checkbox:t.checkbox,children:r(g,{checkboxCount:t.rows.length,children:r(p,{cols:t.cols,errorHandler:t.errorHandler,children:r(h,{children:r(b,{children:r(w,{children:e(y,{rows:t.rows,cols:t.cols,onUpdateRowFunction:t.onUpdateRow,children:[r(x,{}),r(P,o({},t))]})})})})})})})})})})}function P(o){var n=t(o),d=n.cols,m=n.rowMaps,p=n.pageRowIds,h=R(),f=k().onPaste;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(s,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[r(C,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",onPaste:function(o){o.preventDefault();var r=o.clipboardData.getData("Text");f(r.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(o){return o.split(",")})))},children:[r("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[o.checkbox&&r("th",{children:r(u,{rows:o.rows})}),d.map((function(o,e){return r(i,{id:v.getTableColId(e),col:o},o.key.toString())}))]})}),e("tbody",{children:[!!h&&r("tr",{children:r("td",{colSpan:d.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(c,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:d.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,t){return r(j,{existCheckbox:!!o.checkbox,rowIndex:t,dataString:m[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:N(m[e].data,d,o.conditionalFormattings),onUpdateRow:o.onUpdateRow},e)}))]})]})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(a,{})})]})]})}export{F as default};
2
+ import{__assign as r}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useTable as t}from"./hook.js";import{TableHeaderElement as i}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as a}from"../pagenation/components.js";import{FilterProvider as s}from"../filter/provider.js";import{TableFilterRemoveButton as d,TableFilterForm as c}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{FocusProvider as h}from"../focus/provider.js";import{CheckboxProvider as f,CheckboxStatusProvider as g}from"../checkbox/provider.js";import{AllCheckbox as u}from"../checkbox/components.js";import{IdGenerator as v}from"../libs/id-generator.js";import{EditProvider as b}from"../edit/provider.js";import{TablePropertyProvider as w}from"../table-property/provider.js";import{KeyboardSetting as x}from"../operation/components/keyboard-setting.js";import{Row as j}from"../sheet/components.js";import{PasteProvider as y,usePasteActionContext as k}from"../paste/provider.js";import{generateFormattingString as N}from"../libs/conditional-formatting.js";import{Editor as C}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as R}from"../filter/hooks/selectedFilteringColumn/provider.js";function F(t){var i,l,a;return o(s,{children:o(m,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:o(n,{rowCount:t.rows.length,perPage:null===(a=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===a?void 0:a.rowCountPerPage,children:o(f,{checkbox:t.checkbox,children:o(g,{checkboxCount:t.rows.length,children:o(p,{cols:t.cols,errorHandler:t.errorHandler,children:o(h,{children:o(b,{children:o(w,{children:e(y,{rows:t.rows,cols:t.cols,onUpdateRowFunction:t.onUpdateRow,children:[o(x,{}),o(P,r({},t))]})})})})})})})})})})}function P(r){var n=t(r),s=n.cols,m=n.rowMaps,p=n.pageRowIds,h=R(),f=k().onPaste;return e("div",{className:"w-full",children:[o("div",{className:"flex justify-end mb-1 mr-3",children:o(d,{children:o("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),e("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:[o(C,{rowMaps:m,pageRowIds:p}),e("table",{className:"table",onPaste:function(r){r.preventDefault();var o=r.clipboardData.getData("Text");f(o.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(r){return r.split(",")})))},children:[o("thead",{children:e("tr",{className:"sticky top-0 border-gray-200 z-20 bg-gray-200 text-gray-600 h-[32px]",children:[r.checkbox&&o("th",{children:o(u,{rows:r.rows})}),s.map((function(r,e){return o(i,{id:v.getTableColId(e),col:r},r.key.toString())}))]})}),e("tbody",{children:[!!h&&o("tr",{children:o("td",{colSpan:s.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:o(c,{})})}),0===p.length&&o("tr",{children:o("td",{colSpan:s.length,className:"py-5",children:o("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,t){return o(j,{existCheckbox:!!r.checkbox,rowIndex:t,dataString:m[e].stringValue,cols:r.cols,onClickRow:r.onClickRow,applyRowFormatting:r.applyRowFormatting,conditionalFormattingString:N(m[e].data,s,r.conditionalFormattings)},e)}))]})]})]}),e("div",{className:"mt-1",children:[o(l,{}),o("div",{className:"mt-2",children:o(a,{})})]})]})}export{F as default};
3
3
  //# sourceMappingURL=base.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.5.8",
3
+ "version": "1.5.10",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",