@teppen/react-ui 1.5.4 → 1.5.6

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 (56) hide show
  1. package/dist/cjs/src/table/base.js +1 -1
  2. package/dist/cjs/src/table/cell/ui/cell.js +1 -1
  3. package/dist/cjs/src/table/edit/ui/base-input.js +3 -0
  4. package/dist/cjs/src/table/edit/ui/base-input.js.map +1 -0
  5. package/dist/cjs/src/table/edit/ui/editor.js +2 -0
  6. package/dist/cjs/src/table/edit/ui/editor.js.map +1 -0
  7. package/dist/cjs/src/table/edit/ui/number-input.js +3 -0
  8. package/dist/cjs/src/table/edit/ui/select-input.js +3 -0
  9. package/dist/cjs/src/table/edit/ui/string-input.js +3 -0
  10. package/dist/cjs/src/table/hook.js +1 -1
  11. package/dist/cjs/src/table/hook.js.map +1 -1
  12. package/dist/cjs/src/table/paste/hooks.js +1 -1
  13. package/dist/cjs/src/table/paste/hooks.js.map +1 -1
  14. package/dist/cjs/src/table/sheet/components.js +1 -1
  15. package/dist/cjs/src/table/sheet/components.js.map +1 -1
  16. package/dist/esm/src/table/base.js +1 -1
  17. package/dist/esm/src/table/cell/ui/cell.js +1 -1
  18. package/dist/esm/src/table/edit/ui/base-input.js +3 -0
  19. package/dist/esm/src/table/edit/ui/base-input.js.map +1 -0
  20. package/dist/esm/src/table/edit/ui/editor.js +2 -0
  21. package/dist/esm/src/table/edit/ui/editor.js.map +1 -0
  22. package/dist/esm/src/table/edit/ui/number-input.js +3 -0
  23. package/dist/esm/src/table/edit/ui/select-input.js +3 -0
  24. package/dist/esm/src/table/edit/ui/string-input.js +3 -0
  25. package/dist/esm/src/table/hook.js +1 -1
  26. package/dist/esm/src/table/hook.js.map +1 -1
  27. package/dist/esm/src/table/paste/hooks.js +1 -1
  28. package/dist/esm/src/table/paste/hooks.js.map +1 -1
  29. package/dist/esm/src/table/sheet/components.js +1 -1
  30. package/dist/esm/src/table/sheet/components.js.map +1 -1
  31. package/dist/index.d.ts +3 -2
  32. package/package.json +1 -1
  33. package/dist/cjs/src/table/cell/provider.js +0 -2
  34. package/dist/cjs/src/table/cell/provider.js.map +0 -1
  35. package/dist/cjs/src/table/cell/ui/base-input.js +0 -2
  36. package/dist/cjs/src/table/cell/ui/base-input.js.map +0 -1
  37. package/dist/cjs/src/table/cell/ui/number-input.js +0 -3
  38. package/dist/cjs/src/table/cell/ui/select-input.js +0 -3
  39. package/dist/cjs/src/table/cell/ui/string-input.js +0 -3
  40. package/dist/cjs/src/table/table/components/auto-switch-edit-mode.js +0 -2
  41. package/dist/cjs/src/table/table/components/auto-switch-edit-mode.js.map +0 -1
  42. package/dist/esm/src/table/cell/provider.js +0 -2
  43. package/dist/esm/src/table/cell/provider.js.map +0 -1
  44. package/dist/esm/src/table/cell/ui/base-input.js +0 -2
  45. package/dist/esm/src/table/cell/ui/base-input.js.map +0 -1
  46. package/dist/esm/src/table/cell/ui/number-input.js +0 -3
  47. package/dist/esm/src/table/cell/ui/select-input.js +0 -3
  48. package/dist/esm/src/table/cell/ui/string-input.js +0 -3
  49. package/dist/esm/src/table/table/components/auto-switch-edit-mode.js +0 -2
  50. package/dist/esm/src/table/table/components/auto-switch-edit-mode.js.map +0 -1
  51. /package/dist/cjs/src/table/{cell → edit}/ui/number-input.js.map +0 -0
  52. /package/dist/cjs/src/table/{cell → edit}/ui/select-input.js.map +0 -0
  53. /package/dist/cjs/src/table/{cell → edit}/ui/string-input.js.map +0 -0
  54. /package/dist/esm/src/table/{cell → edit}/ui/number-input.js.map +0 -0
  55. /package/dist/esm/src/table/{cell → edit}/ui/select-input.js.map +0 -0
  56. /package/dist/esm/src/table/{cell → edit}/ui/string-input.js.map +0 -0
@@ -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"),x=require("./checkbox/provider.js"),u=require("./checkbox/components.js"),h=require("./libs/id-generator.js"),j=require("./edit/provider.js"),p=require("./table-property/provider.js"),m=require("./operation/components/keyboard-setting.js"),g=require("./table/components/auto-switch-edit-mode.js"),v=require("./sheet/components.js"),b=require("./paste/provider.js"),w=require("./libs/conditional-formatting.js");function y(e){var t=o.useTable(e),a=t.cols,d=t.rowMaps,c=t.pageRowIds,x=n.useFilterContext().selectedFilterKey;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.jsx("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:r.jsxs("table",{className:"table",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(u.AllCheckbox,{rows:e.rows})}),a.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:h.IdGenerator.getTableColId(o),columnKey:e.key},e.key)}))]})}),r.jsxs("tbody",{children:[!!x&&r.jsx("tr",{children:r.jsx("td",{colSpan:a.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===c.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:a.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),c.map((function(o,i){return r.jsx(v.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:d[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:w.generateFormattingString(d[o].data,a,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(x.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(x.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(d.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(c.FocusProvider,{children:r.jsx(j.EditProvider,{children:r.jsx(p.TablePropertyProvider,{children:r.jsxs(b.PasteProvider,{rows:o.rows,cols:o.cols,colValidators:{},onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.AutoSwitchEditMode,{}),r.jsx(m.KeyboardSetting,{}),r.jsx(y,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"),x=require("./checkbox/provider.js"),u=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");function y(e){var t=o.useTable(e),a=t.cols,d=t.rowMaps,c=t.pageRowIds,x=n.useFilterContext().selectedFilterKey,h=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:d,pageRowIds:c}),r.jsxs("table",{className:"table",onPaste:function(e){e.preventDefault();var r=e.clipboardData.getData("Text");h(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(u.AllCheckbox,{rows:e.rows})}),a.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.IdGenerator.getTableColId(o),columnKey:e.key},e.key)}))]})}),r.jsxs("tbody",{children:[!!x&&r.jsx("tr",{children:r.jsx("td",{colSpan:a.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===c.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:a.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),c.map((function(o,i){return r.jsx(m.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:d[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:b.generateFormattingString(d[o].data,a,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(x.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(x.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,colValidators:{},onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(g.KeyboardSetting,{}),r.jsx(y,e.__assign({},o))]})})})})})})})})})})};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("../../hook.js"),l=require("./edit-button.js"),n=require("./string-input.js"),i=require("./number-input.js"),o=require("./select-input.js"),r=require("react"),s=require("../../libs/id-generator.js"),a=require("../provider.js"),c=require("../../sheet/providers.js"),u=r.memo((function(t){return e.jsx(e.Fragment,{children:"component"===t.type?t.component:e.jsx("div",{onDoubleClick:t.onDoubleClick,children:e.jsx("p",{className:"cell-data text-left whitespace-nowrap",children:t.component})})})})),d=r.memo((function(t){var s=a.useCellContext(),c=r.useRef(null);return e.jsx("td",{id:t.id,onPaste:function(e){null!==c.current&&(c.current.contains(document.activeElement)||(e.preventDefault(),t.isExistOnUpdateRow?t.pasteData(e.clipboardData.getData("text")):alert("ペースト機能が有効化されていません。")))},className:"".concat(t.cellFormatClassName),children:e.jsxs("div",{className:"relative",onClick:t.isExistOnClickRow?void 0:function(e){e.preventDefault(),t.focusAtCell()},onDoubleClick:t.isExistOnClickRow?void 0:t.onDoubleClickCellToEdit,children:[e.jsx("div",{id:"".concat(t.id,"-display"),children:e.jsxs("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),t.focusAtCell()},children:[e.jsx(u,{type:s.type,component:s.component,onDoubleClick:t.onDoubleClickCellToEdit}),t.editable&&e.jsx(l.EditButton,{})]})}),t.editable&&e.jsxs("div",{id:"".concat(t.id,"-editor"),ref:c,className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:t.preventPropagation,style:{opacity:0,pointerEvents:"none"},children:["string"===s.type&&e.jsx(n.StringCellInput,{}),"number"===s.type&&e.jsx(i.NumberCellInput,{}),"select"===s.type&&e.jsx(o.SelectCellInput,{})]})]})})}));exports.TableCell=function(l){var n,i=t.useCell(l.rowIndex,l.colIndex),o=i.focusAtCell,r=i.onDoubleClickCellToEdit,u=i.preventPropagation,p=i.pasteData,C=c.useColumnContext(l.columnKey);return e.jsx(a.CellProvider,{columnKey:l.columnKey,children:e.jsx(d,{id:s.IdGenerator.getTableCellId(l.rowIndex,l.colIndex),editable:null!==(n=C.editable)&&void 0!==n&&n,cellFormatClassName:l.cellFormatClassName,focusAtCell:o,onDoubleClickCellToEdit:r,preventPropagation:u,pasteData:p,isExistOnClickRow:l.isExistOnClickRow,isExistOnUpdateRow:!!l.onUpdateRow})})};
2
+ "use strict";var e=require("react/jsx-runtime"),l=require("../../hook.js"),t=require("./edit-button.js"),i=require("../../libs/id-generator.js");exports.TableCell=function(o){var n=l.useCell(o.rowIndex,o.colIndex),r=n.type,s=n.component,c=n.focusAtCell,a=n.onDoubleClickCellToEdit,d=i.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(t.EditButton,{})]})})})};
3
3
  //# sourceMappingURL=cell.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../cancel-icon.js");exports.CellInput=function(r){var u=t.useRef(null);return t.useEffect((function(){u.current&&u.current.focus()}),[u]),e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[e.jsx("input",{ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:r.value,onChange:r.onChange,onBlur:r.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(r.reset(),r.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){r.reset(),r.endEditing()}),300)},children:e.jsx(n.CancelIcon,{size:16})})]})};
3
+ //# sourceMappingURL=base-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../focus/provider.js"),i=require("../../sheet/providers.js"),n=require("../provider.js"),o=require("./number-input.js"),s=require("./select-input.js"),l=require("./string-input.js"),u=require("../../libs/id-generator.js");exports.Editor=function(d){var c=r.useFocusStateContext(),a=n.useEditStateContext(),p=n.useEditActionContext(),g=i.useColumnsContext();if(t.useEffect((function(){c.isFocus&&!g[c.colIndex].editable&&p.endEditing()}),[a,c]),!a.isEditing)return e.jsx(e.Fragment,{});if(!c.isFocus)return e.jsx(e.Fragment,{});var f=g[c.colIndex],x=d.rowMaps[d.pageRowIds[c.rowIndex]].data;if(!f.editable)return e.jsx(e.Fragment,{});var j=u.IdGenerator.getTableCellId(c.rowIndex,c.colIndex),m=document.getElementById(j),w=null==m?void 0:m.getBoundingClientRect(),h=w?{width:w.width,height:w.height,top:w.top,left:w.left}:void 0;if(!h)return e.jsx(e.Fragment,{});var v=document.getElementById("table-frame");if(!v)return e.jsx(e.Fragment,{});var I=v.getBoundingClientRect();return h.top-=I.top-v.scrollTop-window.scrollY,h.left-=I.left-v.scrollLeft-window.scrollX,e.jsxs("div",{className:"absolute top-0 left-0 grid place-items-center z-10 pr-2",onClick:function(e){e.preventDefault(),e.stopPropagation()},style:{width:h.width,height:h.height,top:h.top-1,left:h.left},children:["string"===f.type&&e.jsx(l.StringCellInput,{col:f,row:x}),"number"===f.type&&e.jsx(o.NumberCellInput,{col:f,row:x}),"select"===f.type&&e.jsx(s.SelectCellInput,{col:f,row:x})]})};
2
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useEditActionContext, useEditStateContext } from \"../provider\";\nimport { NumberCellInput } from \"./number-input\";\nimport { SelectCellInput } from \"./select-input\";\nimport { StringCellInput } from \"./string-input\";\nimport { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../type\";\n\ntype TPropsEditor = {\n pageRowIds: (string | number)[];\n rowMaps: {\n [id: string]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n [id: number]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n };\n};\n\nexport function Editor(props: TPropsEditor) {\n const focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n const cellElement = document.getElementById(id);\n const rect = cellElement?.getBoundingClientRect();\n\n const size = rect\n ? {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n }\n : undefined;\n\n if (!size) return <></>;\n\n const tableElement = document.getElementById(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\n\n return (\n <div\n className=\"absolute top-0 left-0 grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={{\n width: size.width,\n height: size.height,\n top: size.top - 1,\n left: size.left,\n }}\n >\n {col.type === \"string\" && <StringCellInput col={col} row={row} />}\n {col.type === \"number\" && <NumberCellInput col={col} row={row} />}\n {col.type === \"select\" && <SelectCellInput col={col} row={row} />}\n </div>\n );\n}\n"],"names":["props","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"8TAwBM,SAAiBA,GACrB,IAAMC,EAAQC,EAAAA,uBACRC,EAAOC,EAAAA,sBACPC,EAAcC,EAAAA,uBACdC,EAAOC,EAAAA,oBAQb,GANAC,EAAAA,WAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,qBAC5B,IAAKd,EAAMS,QAAS,OAAOK,qBAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,qBAE1B,IAAMO,EAAKC,EAAAA,YAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,EAAcC,SAASC,eAAeL,GACtCM,EAAOH,eAAAA,EAAaI,wBAEpBC,EAAOF,EACT,CACEG,MAAOH,EAAKG,MACZC,OAAQJ,EAAKI,OACbC,IAAKL,EAAKK,IACVC,KAAMN,EAAKM,WAEbC,EAEJ,IAAKL,EAAM,OAAOf,qBAElB,IAAMqB,EAAeV,SAASC,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,qBAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,EAAAA,YACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAAAA,IAACqC,EAAAA,gBAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACsC,EAAAA,gBAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,MAACuC,EAAeA,gBAAA,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),u=require("./base-input.js"),n=require("../provider.js");exports.NumberCellInput=function(a){var i=a.col,o=r.useColumnValidateContext(i.key),l=n.useEditActionContext().endEditing,s=a.row[i.key],g=t.useState(s.toString()),v=g[0],c=g[1];return e.jsx(u.CellInput,{value:v,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?c(e.target.value):isNaN(Number(e.target.value))||c(Number(e.target.value).toString()):c("-0"):c("0")},onBlur:function(e){e.preventDefault(),Number(v)!==s?o(v)?function(e){i.editable&&i.onCellBlur(i.key,Number(e),a.row,l)}(v):setTimeout((function(){e.target.focus()}),100):l()},reset:function(){return c(s.toString())},endEditing:l})};
3
+ //# sourceMappingURL=number-input.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../provider.js"),r=require("../../cancel-icon.js");exports.SelectCellInput=function(l){var o=l.col,u=n.useEditActionContext().endEditing,i=l.row[o.key],a=t.useState(i),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!==i?function(e){o.editable&&o.onCellBlur(o.key,e,l.row,u)}(c):u()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(s(i),u())},children:[o.allowEmpty&&e.jsx("option",{value:"",children:""==i?"-- 未選択 --":"-- 選択解除 --"},"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(i),u()}),300)},children:e.jsx(r.CancelIcon,{size:16})})]}):e.jsx(e.Fragment,{})};
3
+ //# sourceMappingURL=select-input.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../provider.js"),n=require("../../sheet/providers.js"),u=require("./base-input.js");exports.StringCellInput=function(i){var o=i.col,s=n.useColumnValidateContext(o.key),a=r.useEditActionContext().endEditing,l=i.row[o.key],c=t.useState(l),d=c[0],f=c[1];return e.jsx(u.CellInput,{value:d,onChange:function(e){e.preventDefault(),f(e.target.value)},onBlur:function(e){e.preventDefault(),d!==l?s(d)?function(e){o.editable&&o.onCellBlur(o.key,e,i.row,a)}(d):setTimeout((function(){e.target.focus()}),100):a()},reset:function(){return f(l.toString())},endEditing:a})};
3
+ //# sourceMappingURL=string-input.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),t=require("./pagenation/providers.js");require("react/jsx-runtime");var r=require("./filter/provider.js");require("./filter/constants.js"),require("./sheet/providers.js");var n=require("./focus/provider.js"),o=require("./checkbox/provider.js"),u=require("./edit/provider.js"),s=require("./sort/provider.js"),i=require("./table-property/provider.js"),c=require("./paste/provider.js");exports.useCell=function(t,r){var o=n.useFocusActionContext(),s=u.useEditActionContext(),i=c.usePasteActionContext().onPaste,a=e.useCallback((function(){o.move(t,r),o.focus(t,r)}),[o,t,r]),f=e.useCallback((function(e){var n=e.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(e){return e.split(",")}));i(t,r,n)}),[t,r]);return{focusAtCell:a,onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),o.move(t,r),o.focus(t,r),s.startEditing()}),[o,s,t,r]),preventPropagation:e.useCallback((function(e){e.preventDefault(),e.stopPropagation()}),[]),pasteData:f}},exports.useTable=function(n){var u=r.useFilterContext().filter,a=s.useSortActionContext(),f=a.sort,l=a.updatedData,p=s.useSortTimingContext(),d=t.usePageContext(),v=d.setRowCount,C=d.pageFilter,x=o.useCheckboxStatusContext().dispatchCheckboxStatus,g=c.usePasteActionContext().setRows,h=i.useTablePropertyActionContext(),b=h.setMaxDisplayColCount,m=h.setMaxDisplayRowCount,k=e.useMemo((function(){return u(n.rows)}),[u,p,n.rows.length]);e.useEffect((function(){v(k.length)}),[k.length]);var w=e.useMemo((function(){return n.checkbox?n.rows.filter((function(e){var t;return null===(t=n.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[n.checkbox,n.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:w}})}),[w]);var j=e.useMemo((function(){return f(k)}),[k,p]);e.useEffect((function(){l()}),[n.rows]);var q=e.useMemo((function(){return C(j)}),[C,j]),E=e.useMemo((function(){return q.map((function(e){return e.id}))}),[q]),M=e.useMemo((function(){return new Set(E)}),[E]),y=e.useMemo((function(){return n.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[n.rows,M]);return e.useEffect((function(){b(n.cols.length)}),[n.cols.length]),e.useEffect((function(){m(E.length)}),[E.length]),e.useEffect((function(){g(E.map((function(e){return y[e].data})))}),[y]),{cols:n.cols,rowMaps:y,pageRowIds:E}};
1
+ "use strict";var e=require("react"),t=require("./pagenation/providers.js");require("react/jsx-runtime");var r=require("./filter/provider.js");require("./filter/constants.js");var o=require("./sheet/providers.js"),n=require("./focus/provider.js"),u=require("./checkbox/provider.js"),s=require("./edit/provider.js"),i=require("./sort/provider.js"),c=require("./table-property/provider.js"),a=require("./paste/provider.js");exports.useCell=function(t,r){var u,i,c=n.useFocusActionContext(),a=s.useEditActionContext(),l=o.useColumnsContext()[r],f=o.useRowContext(),d=f[l.key],p="select"===l.type?null===(i=null===(u=l.options)||void 0===u?void 0:u.find((function(e){return e.value===d})))||void 0===i?void 0:i.label:d,v=e.useMemo((function(){return l.editable?p:l.render?l.render(d,f):p}),[l.editable,p,d,f]);return{type:!l.editable&&l.render?"component":l.type,component:v,focusAtCell:e.useCallback((function(){c.move(t,r),c.focus(t,r)}),[c,t,r]),onDoubleClickCellToEdit:e.useCallback((function(e){e.preventDefault(),c.move(t,r),c.focus(t,r),a.startEditing()}),[c,a,t,r])}},exports.useTable=function(o){var n=r.useFilterContext().filter,s=i.useSortActionContext(),l=s.sort,f=s.updatedData,d=i.useSortTimingContext(),p=t.usePageContext(),v=p.setRowCount,C=p.pageFilter,x=u.useCheckboxStatusContext().dispatchCheckboxStatus,h=a.usePasteActionContext().setRows,b=c.useTablePropertyActionContext(),m=b.setMaxDisplayColCount,g=b.setMaxDisplayRowCount,w=e.useMemo((function(){return n(o.rows)}),[n,d,o.rows.length]);e.useEffect((function(){v(w.length)}),[w.length]);var k=e.useMemo((function(){return o.checkbox?o.rows.filter((function(e){var t;return null===(t=o.checkbox)||void 0===t?void 0:t.checked(e)})):[]}),[o.checkbox,o.rows]);e.useEffect((function(){x({type:"SET",payload:{checkedRecords:k}})}),[k]);var j=e.useMemo((function(){return l(w)}),[w,d]);e.useEffect((function(){f()}),[o.rows]);var q=e.useMemo((function(){return C(j)}),[C,j]),y=e.useMemo((function(){return q.map((function(e){return e.id}))}),[q]),M=e.useMemo((function(){return new Set(y)}),[y]),E=e.useMemo((function(){return o.rows.filter((function(e){return M.has(e.id)})).reduce((function(e,t){var r=Object.keys(t).sort().reduce((function(e,r){return e[r]=t[r],e}),{});return e[t.id]={data:r,stringValue:JSON.stringify(r)},e}),{})}),[o.rows,M]);return e.useEffect((function(){m(o.cols.length)}),[o.cols.length]),e.useEffect((function(){g(y.length)}),[y.length]),e.useEffect((function(){h(y.map((function(e){return E[e].data})))}),[E]),{cols:o.cols,rowMaps:E,pageRowIds:y}};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","usePasteActionContext","focusAtCell","useCallback","move","pasteData","text","tableData","replace","trim","split","map","row","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext, useRowContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const row = useRowContext();\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","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","row","useRowContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing","props","filter","useFilterContext","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","rows","length","useEffect","checkBoxes","checkbox","checked","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","data","stringValue","JSON","stringify","cols"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),a=require("react"),t=require("../sheet/providers.js"),n=function(a,t){var n;switch(t.type){case"setRows":return e.__assign(e.__assign({},a),{rows:t.payload.rows});case"setCols":return e.__assign(e.__assign({},a),{cols:t.payload.cols});case"setColValidators":return e.__assign(e.__assign({},a),{colValidators:t.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},a),{onUpdateRowFunction:t.payload.onUpdateRowFunction});case"onPaste":var s=t.payload,o=s.rowIndex,r=s.colIndex,l=s.pasteData,u=a.rows,i=a.cols,c=a.colValidators;if(!a.onUpdateRowFunction)return a;var d={arguments:[],timing:a.updateParameters.timing+1},p=l.length,f=Math.max.apply(Math,l.map((function(e){return e.length})));if(0===p||0===f)return a;if(l.length+o>u.length)return alert("貼り付け先の行数が足りません。"),a;for(var g=0;g<f;g++){if(!(y=i[r+g]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(n=y.label)&&void 0!==n?n:y.key)),a}if(f+r>i.length)return alert("貼り付け先の列数が足りません。"),a;for(g=0;g<p;g++)for(var _=l[g],w=0;w<_.length;w++){var y,m=_[w];if(!(0,c[(y=i[r+w]).key])(m))return a}return l.forEach((function(a,t){var n=e.__assign({},u[o+t]),s=!1;a.forEach((function(e,a){var t=i[r+a],o="number"===t.type?Number(e):"select"===t.type?""===e?"":t.options.find((function(a){return a.label===e})).value:e;n[t.key]!==o&&(s=!0,n[t.key]=o)})),s&&d.arguments.push({newRow:n,oldRow:u[o+t]})})),d.arguments.length>0?e.__assign(e.__assign({},a),{updateParameters:d}):a}};exports.usePasteReducer=function(s){var o=a.useReducer(n,e.__assign(e.__assign({},s),{updateParameters:{arguments:[],timing:0}})),r=o[0],l=o[1],u=t.useColumnValidatesContext(),i=a.useCallback((function(e){l({type:"setRows",payload:{rows:e}})}),[]),c=a.useCallback((function(e){l({type:"setCols",payload:{cols:e}})}),[]),d=a.useCallback((function(e){l({type:"setColValidators",payload:{colValidators:e}})}),[]);a.useEffect((function(){d(u)}),[u]);var p=a.useCallback((function(e){l({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),f=a.useCallback((function(e,a,t){l({type:"onPaste",payload:{rowIndex:e,colIndex:a,pasteData:t}})}),[]);return a.useEffect((function(){r.updateParameters.arguments.length>0&&r.updateParameters.arguments.forEach((function(e){var a,t=e.newRow,n=e.oldRow;null===(a=r.onUpdateRowFunction)||void 0===a||a.call(r,t,n)}))}),[r.updateParameters.timing,r.onUpdateRowFunction]),{setRows:i,setCols:c,setColValidators:d,setOnUpdateRowFunction:p,onPaste:f}};
1
+ "use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),a=require("react"),t=require("../sheet/providers.js"),n=require("../focus/provider.js"),s=function(a,t){var n;switch(t.type){case"setRows":return e.__assign(e.__assign({},a),{rows:t.payload.rows});case"setCols":return e.__assign(e.__assign({},a),{cols:t.payload.cols});case"setColValidators":return e.__assign(e.__assign({},a),{colValidators:t.payload.colValidators});case"setOnUpdateRowFunction":return e.__assign(e.__assign({},a),{onUpdateRowFunction:t.payload.onUpdateRowFunction});case"onPaste":if(!a.isFocused)return a;var s=t.payload.pasteData,o=a.rows,r=a.cols,u=a.colValidators,i=a.rowIndex,l=a.colIndex;if(!a.onUpdateRowFunction)return a;var c={arguments:[],timing:a.updateParameters.timing+1},d=s.length,p=Math.max.apply(Math,s.map((function(e){return e.length})));if(0===d||0===p)return a;if(s.length+i>o.length)return alert("貼り付け先の行数が足りません。"),a;for(var f=0;f<p;f++){if(!(w=r[l+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(n=w.label)&&void 0!==n?n:w.key)),a}if(p+l>r.length)return alert("貼り付け先の列数が足りません。"),a;for(f=0;f<d;f++)for(var g=s[f],_=0;_<g.length;_++){var w,y=g[_];if(!(0,u[(w=r[l+_]).key])(y))return a}return s.forEach((function(a,t){var n=e.__assign({},o[i+t]),s=!1;a.forEach((function(e,a){var t=r[l+a],o="number"===t.type?Number(e):"select"===t.type?""===e?"":t.options.find((function(a){return a.label===e})).value:e;n[t.key]!==o&&(s=!0,n[t.key]=o)})),s&&c.arguments.push({newRow:n,oldRow:o[i+t]})})),c.arguments.length>0?e.__assign(e.__assign({},a),{updateParameters:c}):a;case"focus":return e.__assign(e.__assign({},a),{isFocused:!0,rowIndex:t.payload.rowIndex,colIndex:t.payload.colIndex});case"unfocus":return e.__assign(e.__assign({},a),{isFocused:!1})}};exports.usePasteReducer=function(o){var r=a.useReducer(s,e.__assign(e.__assign({},o),{isFocused:!1,updateParameters:{arguments:[],timing:0}})),u=r[0],i=r[1],l=t.useColumnValidatesContext(),c=n.useFocusStateContext();a.useEffect((function(){c.isFocus?i({type:"focus",payload:{rowIndex:c.rowIndex,colIndex:c.colIndex}}):i({type:"unfocus"})}),[c]);var d=a.useCallback((function(e){i({type:"setRows",payload:{rows:e}})}),[]),p=a.useCallback((function(e){i({type:"setCols",payload:{cols:e}})}),[]),f=a.useCallback((function(e){i({type:"setColValidators",payload:{colValidators:e}})}),[]);a.useEffect((function(){f(l)}),[l]);var g=a.useCallback((function(e){i({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:e}})}),[]),_=a.useCallback((function(e){i({type:"onPaste",payload:{pasteData:e}})}),[]);return a.useEffect((function(){u.updateParameters.arguments.length>0&&u.updateParameters.arguments.forEach((function(e){var a,t=e.newRow,n=e.oldRow;null===(a=u.onUpdateRowFunction)||void 0===a||a.call(u,t,n)}))}),[u.updateParameters.timing,u.onUpdateRowFunction]),a.useMemo((function(){return{setRows:d,setCols:p,setColValidators:f,setOnUpdateRowFunction:g,onPaste:_}}),[])};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n const { rowIndex, colIndex, pasteData } = action.payload;\n const { rows, cols, colValidators, onUpdateRowFunction } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n colValidators: { [key: string]: (value: any) => boolean };\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback(\n (rowIndex: number, colIndex: number, pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { rowIndex, colIndex, pasteData } });\n },\n []\n );\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n return {\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n };\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","_b","rowIndex_1","rowIndex","colIndex_1","colIndex","pasteData","rows_1","cols_1","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","initial","useReducer","dispatch","validators","useColumnValidatesContext","setRows","useCallback","setCols","setColValidators","useEffect","setOnUpdateRowFunction","onPaste","call"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useFocusStateContext } from \"../focus/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n colValidators: { [key: string]: (value: any) => boolean };\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const focus = useFocusStateContext();\n\n useEffect(() => {\n if (focus.isFocus) {\n dispatch({\n type: \"focus\",\n payload: { rowIndex: focus.rowIndex, colIndex: focus.colIndex },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [focus]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","initial","useReducer","dispatch","validators","useColumnValidatesContext","focus","useFocusStateContext","useEffect","isFocus","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","useMemo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),o=require("./providers.js"),t=require("../focus/provider.js"),n=require("../checkbox/components.js"),i=require("../cell/ui/cell.js"),a=r.memo((function(r){var a=t.useFocusActionContext().unfocus,c=JSON.parse(r.dataString),l=r.conditionalFormattingString.split(",");return e.jsx(o.RowProvider,{row:c,children:e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(c):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(c),a())},"data-testid":c.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(n.Checkbox,{})}),r.cols.map((function(o,t){return e.jsx(i.TableCell,{rowIndex:r.rowIndex,colIndex:t,columnKey:o.key,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:l[t],onUpdateRow:r.onUpdateRow},o.key)}))]})})}));exports.Row=a;
1
+ "use strict";var e=require("react/jsx-runtime"),r=require("react"),o=require("./providers.js"),t=require("../focus/provider.js"),i=require("../checkbox/components.js"),n=require("../cell/ui/cell.js"),a=r.memo((function(r){var a=t.useFocusActionContext().unfocus,l=JSON.parse(r.dataString),c=r.conditionalFormattingString.split(",");return e.jsx(o.RowProvider,{row:l,children: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),a())},"data-testid":l.id,children:[r.existCheckbox&&e.jsx("td",{children:e.jsx(i.Checkbox,{})}),r.cols.map((function(o,t){var i;return e.jsx(n.TableCell,{rowIndex:r.rowIndex,colIndex:t,columnKey:o.key,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:c[t],isExistOnUpdateRow:!!r.onUpdateRow,editable:null!==(i=o.editable)&&void 0!==i&&i},o.key)}))]})})}));exports.Row=a;
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 { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../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 <RowProvider row={row}>\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 />\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 columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n onUpdateRow={props.onUpdateRow}\n />\n );\n })}\n </tr>\n </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","onUpdateRow"],"mappings":"wMAkBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,MAACC,EAAWA,YAAA,CAACR,IAAKA,WAChBS,EAAAA,KACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,MAAA,KAAA,CAAAW,SACEX,EAAAA,IAACa,EAAQA,eAGZvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,GACpB,OACEjB,MAACkB,EAAAA,UAAS,CAERC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,YAAanC,EAAMmC,aANdT,EAAIM,IASf,QAIR"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../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 <RowProvider row={row}>\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 />\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 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 </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"wMAkBaA,EAAMC,EAAIA,MAAC,SAAiCC,GAC/C,IAAAC,EAAYC,kCACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,MAACC,EAAWA,YAAA,CAACR,IAAKA,WAChBS,EAAAA,KACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,MAAA,KAAA,CAAAW,SACEX,EAAAA,IAACa,EAAQA,eAGZvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEjB,EAAAA,IAACkB,EAAAA,UAEC,CAAAC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,qBAAsBnC,EAAMoC,YAC5BC,SAA0B,QAAhBC,EAAAZ,EAAIW,gBAAY,IAAAC,GAAAA,GAPrBZ,EAAIM,IAUf,QAIR"}
@@ -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 d}from"./pagenation/components.js";import{FilterProvider as a,useFilterContext as s}from"./filter/provider.js";import{TableFilterRemoveButton as c,TableFilterForm as m}from"./filter/components.js";import"./sort/icon.js";import{SortProvider as p}from"./sort/provider.js";import{ColumnsProvider as h}from"./sheet/providers.js";import{FocusProvider as f}from"./focus/provider.js";import{CheckboxProvider as g,CheckboxStatusProvider as u}from"./checkbox/provider.js";import{AllCheckbox as b}from"./checkbox/components.js";import{IdGenerator as v}from"./libs/id-generator.js";import{EditProvider as w}from"./edit/provider.js";import{TablePropertyProvider as x}from"./table-property/provider.js";import{KeyboardSetting as j}from"./operation/components/keyboard-setting.js";import{AutoSwitchEditMode as y}from"./table/components/auto-switch-edit-mode.js";import{Row as k}from"./sheet/components.js";import{PasteProvider as N}from"./paste/provider.js";import{generateFormattingString as C}from"./libs/conditional-formatting.js";function R(t){var i,l,d;return r(a,{children:r(p,{initialCondition:null===(i=t.initialCondition)||void 0===i?void 0:i.sort,children:r(n,{rowCount:t.rows.length,perPage:null===(d=null===(l=t.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===d?void 0:d.rowCountPerPage,children:r(g,{checkbox:t.checkbox,children:r(u,{checkboxCount:t.rows.length,children:r(h,{cols:t.cols,errorHandler:t.errorHandler,children:r(f,{children:r(w,{children:r(x,{children:e(N,{rows:t.rows,cols:t.cols,colValidators:{},onUpdateRowFunction:t.onUpdateRow,children:[r(y,{}),r(j,{}),r(F,o({},t))]})})})})})})})})})})}function F(o){var n=t(o),a=n.cols,p=n.rowMaps,h=n.pageRowIds,f=s().selectedFilterKey;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(c,{children:r("p",{className:"text-xs underline text-gray-500 hover:text-gray-700",children:"全てのフィルタリング条件を解除する"})})}),r("div",{id:"table-frame",className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 rounded-md overflow-auto",children:e("table",{className:"table",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(b,{rows:o.rows})}),a.map((function(o,e){return r(i,{id:v.getTableColId(e),columnKey:o.key},o.key)}))]})}),e("tbody",{children:[!!f&&r("tr",{children:r("td",{colSpan:a.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(m,{})})}),0===h.length&&r("tr",{children:r("td",{colSpan:a.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),h.map((function(e,t){return r(k,{existCheckbox:!!o.checkbox,rowIndex:t,dataString:p[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:C(p[e].data,a,o.conditionalFormattings),onUpdateRow:o.onUpdateRow},e)}))]})]})}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(d,{})})]})]})}export{R as default};
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,useFilterContext as s}from"./filter/provider.js";import{TableFilterRemoveButton as c,TableFilterForm as m}from"./filter/components.js";import"./sort/icon.js";import{SortProvider as p}from"./sort/provider.js";import{ColumnsProvider as h}from"./sheet/providers.js";import{FocusProvider as f}from"./focus/provider.js";import{CheckboxProvider as g,CheckboxStatusProvider as u}from"./checkbox/provider.js";import{AllCheckbox as v}from"./checkbox/components.js";import{IdGenerator as b}from"./libs/id-generator.js";import{EditProvider as w}from"./edit/provider.js";import{TablePropertyProvider as x}from"./table-property/provider.js";import{KeyboardSetting as j}from"./operation/components/keyboard-setting.js";import{Row as y}from"./sheet/components.js";import{PasteProvider as k,usePasteActionContext as N}from"./paste/provider.js";import{generateFormattingString as C}from"./libs/conditional-formatting.js";import{Editor as R}from"./edit/ui/editor.js";function F(t){var i,l,a;return r(d,{children:r(p,{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(g,{checkbox:t.checkbox,children:r(u,{checkboxCount:t.rows.length,children:r(h,{cols:t.cols,errorHandler:t.errorHandler,children:r(f,{children:r(w,{children:r(x,{children:e(k,{rows:t.rows,cols:t.cols,colValidators:{},onUpdateRowFunction:t.onUpdateRow,children:[r(j,{}),r(P,o({},t))]})})})})})})})})})})}function P(o){var n=t(o),d=n.cols,p=n.rowMaps,h=n.pageRowIds,f=s().selectedFilterKey,g=N().onPaste;return e("div",{className:"w-full",children:[r("div",{className:"flex justify-end mb-1 mr-3",children:r(c,{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(R,{rowMaps:p,pageRowIds:h}),e("table",{className:"table",onPaste:function(o){o.preventDefault();var r=o.clipboardData.getData("Text");g(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(v,{rows:o.rows})}),d.map((function(o,e){return r(i,{id:b.getTableColId(e),columnKey:o.key},o.key)}))]})}),e("tbody",{children:[!!f&&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(m,{})})}),0===h.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"})})}),h.map((function(e,t){return r(y,{existCheckbox:!!o.checkbox,rowIndex:t,dataString:p[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:C(p[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};
3
3
  //# sourceMappingURL=base.js.map
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import{useCell as l}from"../../hook.js";import{EditButton as i}from"./edit-button.js";import{StringCellInput as n}from"./string-input.js";import{NumberCellInput as r}from"./number-input.js";import{SelectCellInput as a}from"./select-input.js";import{memo as c,useRef as s}from"react";import{IdGenerator as p}from"../../libs/id-generator.js";import{useCellContext as d,CellProvider as m}from"../provider.js";import{useColumnContext as u}from"../../sheet/providers.js";var f=c((function(o){return e(t,{children:"component"===o.type?o.component:e("div",{onDoubleClick:o.onDoubleClick,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:o.component})})})})),C=c((function(t){var l=d(),c=s(null);return e("td",{id:t.id,onPaste:function(e){null!==c.current&&(c.current.contains(document.activeElement)||(e.preventDefault(),t.isExistOnUpdateRow?t.pasteData(e.clipboardData.getData("text")):alert("ペースト機能が有効化されていません。")))},className:"".concat(t.cellFormatClassName),children:o("div",{className:"relative",onClick:t.isExistOnClickRow?void 0:function(e){e.preventDefault(),t.focusAtCell()},onDoubleClick:t.isExistOnClickRow?void 0:t.onDoubleClickCellToEdit,children:[e("div",{id:"".concat(t.id,"-display"),children:o("div",{className:"flex items-center gap-3 w-fit p-2 cursor-default",onClick:function(e){e.preventDefault(),e.stopPropagation(),t.focusAtCell()},children:[e(f,{type:l.type,component:l.component,onDoubleClick:t.onDoubleClickCellToEdit}),t.editable&&e(i,{})]})}),t.editable&&o("div",{id:"".concat(t.id,"-editor"),ref:c,className:"absolute top-0 left-0 w-full h-full grid place-items-center z-10 pr-2",onClick:t.preventPropagation,style:{opacity:0,pointerEvents:"none"},children:["string"===l.type&&e(n,{}),"number"===l.type&&e(r,{}),"select"===l.type&&e(a,{})]})]})})}));function v(t){var o,i=l(t.rowIndex,t.colIndex),n=i.focusAtCell,r=i.onDoubleClickCellToEdit,a=i.preventPropagation,c=i.pasteData,s=u(t.columnKey);return e(m,{columnKey:t.columnKey,children:e(C,{id:p.getTableCellId(t.rowIndex,t.colIndex),editable:null!==(o=s.editable)&&void 0!==o&&o,cellFormatClassName:t.cellFormatClassName,focusAtCell:n,onDoubleClickCellToEdit:r,preventPropagation:a,pasteData:c,isExistOnClickRow:t.isExistOnClickRow,isExistOnUpdateRow:!!t.onUpdateRow})})}export{v as TableCell};
2
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useCell as t}from"../../hook.js";import{EditButton as l}from"./edit-button.js";import{IdGenerator as i}from"../../libs/id-generator.js";function n(n){var c=t(n.rowIndex,n.colIndex),r=c.type,a=c.component,s=c.focusAtCell,d=c.onDoubleClickCellToEdit,m=i.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"===r?a:e("div",{onDoubleClick:d,children:e("p",{className:"cell-data text-left whitespace-nowrap",children:a})}),n.editable&&e(l,{})]})})})}export{n as TableCell};
3
3
  //# sourceMappingURL=cell.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as n,useEffect as r}from"react";import{CancelIcon as o}from"../../cancel-icon.js";function i(i){var u=n(null);return r((function(){u.current&&u.current.focus()}),[u]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{ref:u,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:i.value,onChange:i.onChange,onBlur:i.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(i.reset(),i.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){i.reset(),i.endEditing()}),300)},children:t(o,{size:16})})]})}export{i as CellInput};
3
+ //# sourceMappingURL=base-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-input.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+ import{jsx as t,Fragment as e,jsxs as r}from"react/jsx-runtime";import{useEffect as o}from"react";import{useFocusStateContext as i}from"../../focus/provider.js";import{useColumnsContext as n}from"../../sheet/providers.js";import{useEditStateContext as l,useEditActionContext as d}from"../provider.js";import{NumberCellInput as p}from"./number-input.js";import{SelectCellInput as s}from"./select-input.js";import{StringCellInput as c}from"./string-input.js";import{IdGenerator as f}from"../../libs/id-generator.js";function m(m){var u=i(),a=l(),g=d(),w=n();if(o((function(){u.isFocus&&!w[u.colIndex].editable&&g.endEditing()}),[a,u]),!a.isEditing)return t(e,{});if(!u.isFocus)return t(e,{});var h=w[u.colIndex],v=m.rowMaps[m.pageRowIds[u.rowIndex]].data;if(!h.editable)return t(e,{});var I=f.getTableCellId(u.rowIndex,u.colIndex),b=document.getElementById(I),j=null==b?void 0:b.getBoundingClientRect(),x=j?{width:j.width,height:j.height,top:j.top,left:j.left}:void 0;if(!x)return t(e,{});var y=document.getElementById("table-frame");if(!y)return t(e,{});var B=y.getBoundingClientRect();return x.top-=B.top-y.scrollTop-window.scrollY,x.left-=B.left-y.scrollLeft-window.scrollX,r("div",{className:"absolute top-0 left-0 grid place-items-center z-10 pr-2",onClick:function(t){t.preventDefault(),t.stopPropagation()},style:{width:x.width,height:x.height,top:x.top-1,left:x.left},children:["string"===h.type&&t(c,{col:h,row:v}),"number"===h.type&&t(p,{col:h,row:v}),"select"===h.type&&t(s,{col:h,row:v})]})}export{m as Editor};
2
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusStateContext } from \"../../focus/provider\";\nimport { useColumnsContext } from \"../../sheet/providers\";\nimport { useEditActionContext, useEditStateContext } from \"../provider\";\nimport { NumberCellInput } from \"./number-input\";\nimport { SelectCellInput } from \"./select-input\";\nimport { StringCellInput } from \"./string-input\";\nimport { IdGenerator } from \"../../libs\";\nimport { DataObject, DataRecord } from \"../../type\";\n\ntype TPropsEditor = {\n pageRowIds: (string | number)[];\n rowMaps: {\n [id: string]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n [id: number]: {\n data: DataObject<DataRecord>;\n stringValue: string;\n };\n };\n};\n\nexport function Editor(props: TPropsEditor) {\n const focus = useFocusStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (focus.isFocus && !cols[focus.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, focus]);\n\n if (!edit.isEditing) return <></>;\n if (!focus.isFocus) return <></>;\n\n const col = cols[focus.colIndex];\n const row = props.rowMaps[props.pageRowIds[focus.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n const cellElement = document.getElementById(id);\n const rect = cellElement?.getBoundingClientRect();\n\n const size = rect\n ? {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n left: rect.left,\n }\n : undefined;\n\n if (!size) return <></>;\n\n const tableElement = document.getElementById(\"table-frame\");\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop - window.scrollY;\n size.left -= rectTable.left - tableElement.scrollLeft - window.scrollX;\n\n return (\n <div\n className=\"absolute top-0 left-0 grid place-items-center z-10 pr-2\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n style={{\n width: size.width,\n height: size.height,\n top: size.top - 1,\n left: size.left,\n }}\n >\n {col.type === \"string\" && <StringCellInput col={col} row={row} />}\n {col.type === \"number\" && <NumberCellInput col={col} row={row} />}\n {col.type === \"select\" && <SelectCellInput col={col} row={row} />}\n </div>\n );\n}\n"],"names":["Editor","props","focus","useFocusStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isFocus","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","IdGenerator","getTableCellId","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","rectTable","scrollTop","window","scrollY","scrollLeft","scrollX","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"kgBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,UAAYH,EAAKN,EAAMU,UAAUC,UACzCP,EAAYQ,YAEhB,GAAG,CAACV,EAAMF,KAELE,EAAKW,UAAW,OAAOC,QAC5B,IAAKd,EAAMS,QAAS,OAAOK,QAE3B,IAAMC,EAAMT,EAAKN,EAAMU,UACjBM,EAAMjB,EAAMkB,QAAQlB,EAAMmB,WAAWlB,EAAMmB,WAAWC,KAE5D,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKC,EAAYC,eAAevB,EAAMmB,SAAUnB,EAAMU,UACtDc,EAAcC,SAASC,eAAeL,GACtCM,EAAOH,eAAAA,EAAaI,wBAEpBC,EAAOF,EACT,CACEG,MAAOH,EAAKG,MACZC,OAAQJ,EAAKI,OACbC,IAAKL,EAAKK,IACVC,KAAMN,EAAKM,WAEbC,EAEJ,IAAKL,EAAM,OAAOf,QAElB,IAAMqB,EAAeV,SAASC,eAAe,eAC7C,IAAKS,EAAc,OAAOrB,QAC1B,IAAMsB,EAAYD,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOI,EAAUJ,IAAMG,EAAaE,UAAYC,OAAOC,QAC5DV,EAAKI,MAAQG,EAAUH,KAAOE,EAAaK,WAAaF,OAAOG,QAG7DC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLlB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZgB,SAAA,CAAa,WAAblC,EAAImC,MAAqBpC,EAACqC,EAAgB,CAAApC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACsC,EAAe,CAACrC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAImC,MAAqBpC,EAACuC,EAAe,CAACtC,IAAKA,EAAKC,IAAKA,MAGhE"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as t}from"react/jsx-runtime";import{useState as e}from"react";import{useColumnValidateContext as r}from"../../sheet/providers.js";import{CellInput as o}from"./base-input.js";import{useEditActionContext as n}from"../provider.js";function u(u){var a=u.col,i=r(a.key),m=n().endEditing,l=u.row[a.key],f=e(l.toString()),g=f[0],v=f[1];return t(o,{value:g,onChange:function(t){t.preventDefault(),""!==t.target.value?"-"!==t.target.value&&"0-"!==t.target.value?t.target.value.match(/^-?[0-9]+\.$/)?v(t.target.value):isNaN(Number(t.target.value))||v(Number(t.target.value).toString()):v("-0"):v("0")},onBlur:function(t){t.preventDefault(),Number(g)!==l?i(g)?function(t){a.editable&&a.onCellBlur(a.key,Number(t),u.row,m)}(g):setTimeout((function(){t.target.focus()}),100):m()},reset:function(){return v(l.toString())},endEditing:m})}export{u as NumberCellInput};
3
+ //# sourceMappingURL=number-input.js.map
@@ -0,0 +1,3 @@
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 l}from"../../cancel-icon.js";function i(i){var a=i.col,u=r().endEditing,c=i.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,i.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(l,{size:16})})]}):e(t,{})}export{i as SelectCellInput};
3
+ //# sourceMappingURL=select-input.js.map
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as t}from"react/jsx-runtime";import{useState as e}from"react";import{useEditActionContext as r}from"../provider.js";import{useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as n}from"./base-input.js";function i(i){var u=i.col,f=o(u.key),a=r().endEditing,m=i.row[u.key],p=e(m),c=p[0],l=p[1];return t(n,{value:c,onChange:function(t){t.preventDefault(),l(t.target.value)},onBlur:function(t){t.preventDefault(),c!==m?f(c)?function(t){u.editable&&u.onCellBlur(u.key,t,i.row,a)}(c):setTimeout((function(){t.target.focus()}),100):a()},reset:function(){return l(m.toString())},endEditing:a})}export{i as StringCellInput};
3
+ //# sourceMappingURL=string-input.js.map
@@ -1,2 +1,2 @@
1
- import{useMemo as t,useEffect as r,useCallback as o}from"react";import{usePageContext as n}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as e}from"./filter/provider.js";import"./filter/constants.js";import"./sheet/providers.js";import{useFocusActionContext as i}from"./focus/provider.js";import{useCheckboxStatusContext as u}from"./checkbox/provider.js";import{useEditActionContext as c}from"./edit/provider.js";import{useSortActionContext as s,useSortTimingContext as a}from"./sort/provider.js";import{useTablePropertyActionContext as p}from"./table-property/provider.js";import{usePasteActionContext as f}from"./paste/provider.js";function l(o){var i=e().filter,c=s(),l=c.sort,d=c.updatedData,m=a(),v=n(),g=v.setRowCount,h=v.pageFilter,w=u().dispatchCheckboxStatus,j=f().setRows,k=p(),x=k.setMaxDisplayColCount,b=k.setMaxDisplayRowCount,C=t((function(){return i(o.rows)}),[i,m,o.rows.length]);r((function(){g(C.length)}),[C.length]);var y=t((function(){return o.checkbox?o.rows.filter((function(t){var r;return null===(r=o.checkbox)||void 0===r?void 0:r.checked(t)})):[]}),[o.checkbox,o.rows]);r((function(){w({type:"SET",payload:{checkedRecords:y}})}),[y]);var D=t((function(){return l(C)}),[C,m]);r((function(){d()}),[o.rows]);var R=t((function(){return h(D)}),[h,D]),S=t((function(){return R.map((function(t){return t.id}))}),[R]),E=t((function(){return new Set(S)}),[S]),M=t((function(){return o.rows.filter((function(t){return E.has(t.id)})).reduce((function(t,r){var o=Object.keys(r).sort().reduce((function(t,o){return t[o]=r[o],t}),{});return t[r.id]={data:o,stringValue:JSON.stringify(o)},t}),{})}),[o.rows,E]);return r((function(){x(o.cols.length)}),[o.cols.length]),r((function(){b(S.length)}),[S.length]),r((function(){j(S.map((function(t){return M[t].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function d(t,r){var n=i(),e=c(),u=f().onPaste,s=o((function(){n.move(t,r),n.focus(t,r)}),[n,t,r]),a=o((function(o){var n=o.replace(/\t/g,",").trim().replace(/\r\n/g,"\n").split("\n").map((function(t){return t.split(",")}));u(t,r,n)}),[t,r]);return{focusAtCell:s,onDoubleClickCellToEdit:o((function(o){o.preventDefault(),n.move(t,r),n.focus(t,r),e.startEditing()}),[n,e,t,r]),preventPropagation:o((function(t){t.preventDefault(),t.stopPropagation()}),[]),pasteData:a}}export{d as useCell,l as useTable};
1
+ import{useMemo as t,useEffect as r,useCallback as o}from"react";import{usePageContext as e}from"./pagenation/providers.js";import"react/jsx-runtime";import{useFilterContext as n}from"./filter/provider.js";import"./filter/constants.js";import{useColumnsContext as i,useRowContext as u}from"./sheet/providers.js";import{useFocusActionContext as c}from"./focus/provider.js";import{useCheckboxStatusContext as s}from"./checkbox/provider.js";import{useEditActionContext as f}from"./edit/provider.js";import{useSortActionContext as p,useSortTimingContext as a}from"./sort/provider.js";import{useTablePropertyActionContext as l}from"./table-property/provider.js";import{usePasteActionContext as d}from"./paste/provider.js";function m(o){var i=n().filter,u=p(),c=u.sort,f=u.updatedData,m=a(),v=e(),h=v.setRowCount,g=v.pageFilter,w=s().dispatchCheckboxStatus,b=d().setRows,j=l(),y=j.setMaxDisplayColCount,k=j.setMaxDisplayRowCount,x=t((function(){return i(o.rows)}),[i,m,o.rows.length]);r((function(){h(x.length)}),[x.length]);var C=t((function(){return o.checkbox?o.rows.filter((function(t){var r;return null===(r=o.checkbox)||void 0===r?void 0:r.checked(t)})):[]}),[o.checkbox,o.rows]);r((function(){w({type:"SET",payload:{checkedRecords:C}})}),[C]);var D=t((function(){return c(x)}),[x,m]);r((function(){f()}),[o.rows]);var R=t((function(){return g(D)}),[g,D]),S=t((function(){return R.map((function(t){return t.id}))}),[R]),E=t((function(){return new Set(S)}),[S]),M=t((function(){return o.rows.filter((function(t){return E.has(t.id)})).reduce((function(t,r){var o=Object.keys(r).sort().reduce((function(t,o){return t[o]=r[o],t}),{});return t[r.id]={data:o,stringValue:JSON.stringify(o)},t}),{})}),[o.rows,E]);return r((function(){y(o.cols.length)}),[o.cols.length]),r((function(){k(S.length)}),[S.length]),r((function(){b(S.map((function(t){return M[t].data})))}),[M]),{cols:o.cols,rowMaps:M,pageRowIds:S}}function v(r,e){var n,s,p=c(),a=f(),l=i()[e],d=u(),m=d[l.key],v="select"===l.type?null===(s=null===(n=l.options)||void 0===n?void 0:n.find((function(t){return t.value===m})))||void 0===s?void 0:s.label:m,h=t((function(){return l.editable?v:l.render?l.render(m,d):v}),[l.editable,v,m,d]);return{type:!l.editable&&l.render?"component":l.type,component:h,focusAtCell:o((function(){p.move(r,e),p.focus(r,e)}),[p,r,e]),onDoubleClickCellToEdit:o((function(t){t.preventDefault(),p.move(r,e),p.focus(r,e),a.startEditing()}),[p,a,r,e])}}export{v as useCell,m as useTable};
2
2
  //# sourceMappingURL=hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const { onPaste } = usePasteActionContext();\n\n const focusAtCell = useCallback(() => {\n focus.move(rowIndex, colIndex);\n focus.focus(rowIndex, colIndex);\n }, [focus, rowIndex, colIndex]);\n\n const pasteData = useCallback(\n (text: string) => {\n const tableData = text\n .replace(/\\t/g, \",\")\n .trim()\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((row) => row.split(\",\"));\n\n onPaste(rowIndex, colIndex, tableData);\n },\n [rowIndex, colIndex]\n );\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 const preventPropagation: React.MouseEventHandler<HTMLDivElement> =\n useCallback((e) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return {\n focusAtCell,\n onDoubleClickCellToEdit,\n preventPropagation,\n pasteData,\n };\n}\n"],"names":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","onPaste","focusAtCell","useCallback","move","pasteData","text","tableData","replace","trim","split","onDoubleClickCellToEdit","e","preventDefault","startEditing","preventPropagation","stopPropagation"],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sources":["../../../../src/table/hook.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TColumnType, TPropsTable } from \"./type\";\nimport { usePageContext } from \"./pagenation/providers\";\nimport { useFilterContext } from \"./filter\";\nimport { useFocusActionContext } from \"./focus/provider\";\nimport { useCheckboxStatusContext } from \"./checkbox/provider\";\nimport { useEditActionContext } from \"./edit/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"./sort/provider\";\nimport { useTablePropertyActionContext } from \"./table-property/provider\";\nimport { usePasteActionContext } from \"./paste/provider\";\nimport { useColumnsContext, useRowContext } from \"./sheet/providers\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterContext();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows } = usePasteActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n setRows(pageRowIds.map((id) => rowMaps[id].data));\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n\nexport function useCell(rowIndex: number, colIndex: number) {\n const focus = useFocusActionContext();\n const editAction = useEditActionContext();\n const col = useColumnsContext()[colIndex];\n const row = useRowContext();\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":["useTable","props","filter","useFilterContext","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRows","usePasteActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols","useCell","rowIndex","colIndex","focus","useFocusActionContext","editAction","useEditActionContext","col","useColumnsContext","useRowContext","value","label","options","find","op","component","editable","render","focusAtCell","useCallback","move","onDoubleClickCellToEdit","e","preventDefault","startEditing"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useCallback as a,useEffect as o}from"react";import{useColumnValidatesContext as n}from"../sheet/providers.js";var r=function(e,a){var o;switch(a.type){case"setRows":return t(t({},e),{rows:a.payload.rows});case"setCols":return t(t({},e),{cols:a.payload.cols});case"setColValidators":return t(t({},e),{colValidators:a.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:a.payload.onUpdateRowFunction});case"onPaste":var n=a.payload,r=n.rowIndex,s=n.colIndex,l=n.pasteData,i=e.rows,u=e.cols,c=e.colValidators;if(!e.onUpdateRowFunction)return e;var d={arguments:[],timing:e.updateParameters.timing+1},p=l.length,f=Math.max.apply(Math,l.map((function(t){return t.length})));if(0===p||0===f)return e;if(l.length+r>i.length)return alert("貼り付け先の行数が足りません。"),e;for(var m=0;m<f;m++){if(!(g=u[s+m]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(o=g.label)&&void 0!==o?o:g.key)),e}if(f+s>u.length)return alert("貼り付け先の列数が足りません。"),e;for(m=0;m<p;m++)for(var w=l[m],y=0;y<w.length;y++){var g,h=w[y];if(!(0,c[(g=u[s+y]).key])(h))return e}return l.forEach((function(e,a){var o=t({},i[r+a]),n=!1;e.forEach((function(t,e){var a=u[s+e],r="number"===a.type?Number(t):"select"===a.type?""===t?"":a.options.find((function(e){return e.label===t})).value:t;o[a.key]!==r&&(n=!0,o[a.key]=r)})),n&&d.arguments.push({newRow:o,oldRow:i[r+a]})})),d.arguments.length>0?t(t({},e),{updateParameters:d}):e}};function s(s){var l=e(r,t(t({},s),{updateParameters:{arguments:[],timing:0}})),i=l[0],u=l[1],c=n(),d=a((function(t){u({type:"setRows",payload:{rows:t}})}),[]),p=a((function(t){u({type:"setCols",payload:{cols:t}})}),[]),f=a((function(t){u({type:"setColValidators",payload:{colValidators:t}})}),[]);o((function(){f(c)}),[c]);var m=a((function(t){u({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),w=a((function(t,e,a){u({type:"onPaste",payload:{rowIndex:t,colIndex:e,pasteData:a}})}),[]);return o((function(){i.updateParameters.arguments.length>0&&i.updateParameters.arguments.forEach((function(t){var e,a=t.newRow,o=t.oldRow;null===(e=i.onUpdateRowFunction)||void 0===e||e.call(i,a,o)}))}),[i.updateParameters.timing,i.onUpdateRowFunction]),{setRows:d,setCols:p,setColValidators:f,setOnUpdateRowFunction:m,onPaste:w}}export{s as usePasteReducer};
1
+ import{__assign as t}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as e,useEffect as o,useCallback as n,useMemo as a}from"react";import{useColumnValidatesContext as r}from"../sheet/providers.js";import{useFocusStateContext as s}from"../focus/provider.js";var u=function(e,o){var n;switch(o.type){case"setRows":return t(t({},e),{rows:o.payload.rows});case"setCols":return t(t({},e),{cols:o.payload.cols});case"setColValidators":return t(t({},e),{colValidators:o.payload.colValidators});case"setOnUpdateRowFunction":return t(t({},e),{onUpdateRowFunction:o.payload.onUpdateRowFunction});case"onPaste":if(!e.isFocused)return e;var a=o.payload.pasteData,r=e.rows,s=e.cols,u=e.colValidators,l=e.rowIndex,i=e.colIndex;if(!e.onUpdateRowFunction)return e;var c={arguments:[],timing:e.updateParameters.timing+1},d=a.length,p=Math.max.apply(Math,a.map((function(t){return t.length})));if(0===d||0===p)return e;if(a.length+l>r.length)return alert("貼り付け先の行数が足りません。"),e;for(var f=0;f<p;f++){if(!(y=s[i+f]).editable)return alert("編集できない列にデータを貼り付けることはできません。\n\n編集不可列: ".concat(null!==(n=y.label)&&void 0!==n?n:y.key)),e}if(p+i>s.length)return alert("貼り付け先の列数が足りません。"),e;for(f=0;f<d;f++)for(var m=a[f],w=0;w<m.length;w++){var y,g=m[w];if(!(0,u[(y=s[i+w]).key])(g))return e}return a.forEach((function(e,o){var n=t({},r[l+o]),a=!1;e.forEach((function(t,e){var o=s[i+e],r="number"===o.type?Number(t):"select"===o.type?""===t?"":o.options.find((function(e){return e.label===t})).value:t;n[o.key]!==r&&(a=!0,n[o.key]=r)})),a&&c.arguments.push({newRow:n,oldRow:r[l+o]})})),c.arguments.length>0?t(t({},e),{updateParameters:c}):e;case"focus":return t(t({},e),{isFocused:!0,rowIndex:o.payload.rowIndex,colIndex:o.payload.colIndex});case"unfocus":return t(t({},e),{isFocused:!1})}};function l(l){var i=e(u,t(t({},l),{isFocused:!1,updateParameters:{arguments:[],timing:0}})),c=i[0],d=i[1],p=r(),f=s();o((function(){f.isFocus?d({type:"focus",payload:{rowIndex:f.rowIndex,colIndex:f.colIndex}}):d({type:"unfocus"})}),[f]);var m=n((function(t){d({type:"setRows",payload:{rows:t}})}),[]),w=n((function(t){d({type:"setCols",payload:{cols:t}})}),[]),y=n((function(t){d({type:"setColValidators",payload:{colValidators:t}})}),[]);o((function(){y(p)}),[p]);var g=n((function(t){d({type:"setOnUpdateRowFunction",payload:{onUpdateRowFunction:t}})}),[]),v=n((function(t){d({type:"onPaste",payload:{pasteData:t}})}),[]);return o((function(){c.updateParameters.arguments.length>0&&c.updateParameters.arguments.forEach((function(t){var e,o=t.newRow,n=t.oldRow;null===(e=c.onUpdateRowFunction)||void 0===e||e.call(c,o,n)}))}),[c.updateParameters.timing,c.onUpdateRowFunction]),a((function(){return{setRows:m,setCols:w,setColValidators:y,setOnUpdateRowFunction:g,onPaste:v}}),[])}export{l as usePasteReducer};
2
2
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n const { rowIndex, colIndex, pasteData } = action.payload;\n const { rows, cols, colValidators, onUpdateRowFunction } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n colValidators: { [key: string]: (value: any) => boolean };\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback(\n (rowIndex: number, colIndex: number, pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { rowIndex, colIndex, pasteData } });\n },\n []\n );\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n return {\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n };\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","_b","rowIndex_1","rowIndex","colIndex_1","colIndex","pasteData","rows_1","cols_1","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","usePasteReducer","initial","useReducer","dispatch","validators","useColumnValidatesContext","setRows","useCallback","setCols","setColValidators","useEffect","setOnUpdateRowFunction","onPaste","call"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../../../src/table/paste/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { TPasteReducer, TPasteReducerReturn } from \"./types\";\nimport { useColumnValidatesContext } from \"../sheet/providers\";\nimport { useFocusStateContext } from \"../focus/provider\";\n\nconst reducer: TPasteReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"setColValidators\":\n return { ...state, colValidators: action.payload.colValidators };\n case \"setOnUpdateRowFunction\":\n return {\n ...state,\n onUpdateRowFunction: action.payload.onUpdateRowFunction,\n };\n case \"onPaste\":\n if (!state.isFocused) {\n return state;\n }\n\n const { pasteData } = action.payload;\n const {\n rows,\n cols,\n colValidators,\n rowIndex,\n colIndex,\n onUpdateRowFunction,\n } = state;\n\n if (!onUpdateRowFunction) {\n return state;\n }\n\n const updateParameters = {\n arguments: [] as { newRow: any; oldRow: any }[],\n timing: state.updateParameters.timing + 1,\n };\n\n const rowLength = pasteData.length;\n const colLength = Math.max(...pasteData.map((row) => row.length));\n\n if (rowLength === 0 || colLength === 0) return state;\n\n if (pasteData.length + rowIndex > rows.length) {\n alert(\"貼り付け先の行数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < colLength; i++) {\n const col = cols[colIndex + i];\n\n if (!col.editable) {\n alert(\n `編集できない列にデータを貼り付けることはできません。\\n\\n編集不可列: ${\n col.label ?? (col.key as string)\n }`\n );\n return state;\n }\n }\n\n if (colLength + colIndex > cols.length) {\n alert(\"貼り付け先の列数が足りません。\");\n return state;\n }\n\n for (let i = 0; i < rowLength; i++) {\n const pasteRow = pasteData[i];\n\n for (let j = 0; j < pasteRow.length; j++) {\n const pasteValue = pasteRow[j];\n const col = cols[colIndex + j];\n const validate = colValidators[col.key as string];\n\n if (!validate(pasteValue)) {\n return state;\n }\n }\n }\n\n pasteData.forEach((pasteRow, i) => {\n const row = { ...rows[rowIndex + i] };\n let checkUpdatedRow = false;\n\n pasteRow.forEach((pasteValue, j) => {\n const col = cols[colIndex + j];\n const value =\n col.type === \"number\"\n ? Number(pasteValue)\n : col.type === \"select\"\n ? pasteValue === \"\"\n ? \"\"\n : col.options.find((option) => option.label === pasteValue)!\n .value\n : pasteValue;\n if (row[col.key] !== value) {\n checkUpdatedRow = true;\n row[col.key] = value;\n }\n });\n\n if (checkUpdatedRow) {\n updateParameters.arguments.push({\n newRow: row,\n oldRow: rows[rowIndex + i],\n });\n }\n });\n\n if (updateParameters.arguments.length > 0) {\n return { ...state, updateParameters };\n } else {\n return state;\n }\n case \"focus\":\n return {\n ...state,\n isFocused: true,\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n };\n case \"unfocus\":\n return { ...state, isFocused: false };\n }\n};\n\nexport function usePasteReducer(initial: {\n rows: any[];\n cols: any[];\n colValidators: { [key: string]: (value: any) => boolean };\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TPasteReducerReturn {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n isFocused: false,\n updateParameters: { arguments: [], timing: 0 },\n });\n const validators = useColumnValidatesContext();\n const focus = useFocusStateContext();\n\n useEffect(() => {\n if (focus.isFocus) {\n dispatch({\n type: \"focus\",\n payload: { rowIndex: focus.rowIndex, colIndex: focus.colIndex },\n });\n } else {\n dispatch({ type: \"unfocus\" });\n }\n }, [focus]);\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const setCols = useCallback((cols: any[]) => {\n dispatch({ type: \"setCols\", payload: { cols } });\n }, []);\n\n const setColValidators = useCallback(\n (colValidators: { [key: string]: (value: any) => boolean }) => {\n dispatch({ type: \"setColValidators\", payload: { colValidators } });\n },\n []\n );\n\n useEffect(() => {\n setColValidators(validators);\n }, [validators]);\n\n const setOnUpdateRowFunction = useCallback(\n (onUpdateRowFunction?: (newRow: any, oldRow: any) => void) => {\n dispatch({\n type: \"setOnUpdateRowFunction\",\n payload: { onUpdateRowFunction },\n });\n },\n []\n );\n\n const onPaste = useCallback((pasteData: string[][]) => {\n dispatch({ type: \"onPaste\", payload: { pasteData } });\n }, []);\n\n useEffect(() => {\n if (state.updateParameters.arguments.length > 0) {\n state.updateParameters.arguments.forEach(({ newRow, oldRow }) => {\n state.onUpdateRowFunction?.(newRow, oldRow);\n });\n }\n }, [state.updateParameters.timing, state.onUpdateRowFunction]);\n\n const actions: TPasteReducerReturn = useMemo(\n () => ({\n setRows,\n setCols,\n setColValidators,\n setOnUpdateRowFunction,\n onPaste,\n }),\n []\n );\n\n return actions;\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","colValidators","onUpdateRowFunction","isFocused","pasteData","rows_1","cols_1","rowIndex_1","rowIndex","colIndex_1","colIndex","updateParameters_1","arguments","timing","updateParameters","rowLength","length","colLength","Math","max","apply","map","row","alert","i","col","editable","concat","_a","label","key","pasteRow","j","pasteValue","validate","forEach","checkUpdatedRow","value","Number","options","find","option","push","newRow","oldRow","usePasteReducer","initial","useReducer","dispatch","validators","useColumnValidatesContext","focus","useFocusStateContext","useEffect","isFocus","setRows","useCallback","setCols","setColValidators","setOnUpdateRowFunction","onPaste","_b","call","useMemo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as o,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{RowProvider as e}from"./providers.js";import{useFocusActionContext as n}from"../focus/provider.js";import{Checkbox as i}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var c=t((function(t){var c=n().unfocus,l=JSON.parse(t.dataString),p=t.conditionalFormattingString.split(",");return o(e,{row:l,children: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(l):""),onClick:function(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(l),c())},"data-testid":l.id,children:[t.existCheckbox&&o("td",{children:o(i,{})}),t.cols.map((function(r,e){return o(a,{rowIndex:t.rowIndex,colIndex:e,columnKey:r.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:p[e],onUpdateRow:t.onUpdateRow},r.key)}))]})})}));export{c as Row};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import{memo as t}from"react";import{RowProvider as e}from"./providers.js";import{useFocusActionContext as i}from"../focus/provider.js";import{Checkbox as n}from"../checkbox/components.js";import{TableCell as a}from"../cell/ui/cell.js";var l=t((function(t){var l=i().unfocus,c=JSON.parse(t.dataString),s=t.conditionalFormattingString.split(",");return o(e,{row:c,children: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(o){o.preventDefault(),t.onClickRow&&(t.onClickRow(c),l())},"data-testid":c.id,children:[t.existCheckbox&&o("td",{children:o(n,{})}),t.cols.map((function(r,e){var i;return o(a,{rowIndex:t.rowIndex,colIndex:e,columnKey:r.key,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:s[e],isExistOnUpdateRow:!!t.onUpdateRow,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 { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../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 <RowProvider row={row}>\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 />\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 columnKey={col.key as string}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n onUpdateRow={props.onUpdateRow}\n />\n );\n })}\n </tr>\n </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","onUpdateRow"],"mappings":"iSAkBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EAACC,EAAW,CAACR,IAAKA,WAChBS,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,EAAA,KAAA,CAAAW,SACEX,EAACa,QAGJvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,GACpB,OACEjB,EAACkB,EAAS,CAERC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,YAAanC,EAAMmC,aANdT,EAAIM,IASf,QAIR"}
1
+ {"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { RowProvider } from \"./providers\";\nimport { useFocusActionContext } from \"../focus/provider\";\nimport { DataRecord, TTableColumn } from \"../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 <RowProvider row={row}>\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 />\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 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 </RowProvider>\n );\n});\n"],"names":["Row","memo","props","unfocus","useFocusActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsx","RowProvider","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","children","existCheckbox","Checkbox","cols","map","col","j","TableCell","rowIndex","colIndex","columnKey","key","isExistOnClickRow","cellFormatClassName","isExistOnUpdateRow","onUpdateRow","editable","_a"],"mappings":"iSAkBaA,EAAMC,GAAK,SAAiCC,GAC/C,IAAAC,EAAYC,YACdC,EAAMC,KAAKC,MAAML,EAAMM,YACvBC,EAAwBP,EAAMQ,4BAA4BC,MAAM,KAEtE,OACEC,EAACC,EAAW,CAACR,IAAKA,WAChBS,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAAE,KAAAD,OAC9Cd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBb,GAAO,IAC/Dc,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWZ,GACjBF,MAEH,cACYE,EAAIiB,GAAEC,SAAA,CAElBrB,EAAMsB,eACLZ,EAAA,KAAA,CAAAW,SACEX,EAACa,QAGJvB,EAAMwB,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEjB,EAACkB,EAEC,CAAAC,SAAU7B,EAAM6B,SAChBC,SAAUH,EACVI,UAAWL,EAAIM,IACfC,oBAAqBjC,EAAMe,WAC3BmB,oBAAqB3B,EAAsBoB,GAC3CQ,qBAAsBnC,EAAMoC,YAC5BC,SAA0B,QAAhBC,EAAAZ,EAAIW,gBAAY,IAAAC,GAAAA,GAPrBZ,EAAIM,IAUf,QAIR"}
package/dist/index.d.ts CHANGED
@@ -75,14 +75,15 @@ type TSelectCellEditingCondition<T extends DataRecord> = ({
75
75
  onCellBlur: (key: keyof T, value: string, current: DataObject<T>, completeEditing: () => void) => void;
76
76
  }));
77
77
  type TCellEditingCondition<T extends DataRecord> = TStringCellEditingCondition<T> | TNumberCellEditingCondition<T> | TSelectCellEditingCondition<T>;
78
- type TTableColumn<T extends DataRecord> = {
78
+ type TColumnProperty<T extends DataRecord> = {
79
79
  key: keyof T;
80
80
  label?: string;
81
81
  disableSort?: boolean;
82
82
  disableFilter?: boolean;
83
83
  initialWidth?: number;
84
84
  minWidth?: number;
85
- } & TCellEditingCondition<T>;
85
+ };
86
+ type TTableColumn<T extends DataRecord> = TColumnProperty<T> & TCellEditingCondition<T>;
86
87
  type TCheckboxProperty<T extends DataRecord> = {
87
88
  checkbox?: {
88
89
  checked: (row: DataObject<T>) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teppen/react-ui",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "description": "React UI Component",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../sheet/providers.js"),r=require("../edit/provider.js"),u=t.createContext({columnKey:"",value:"",label:"",type:"string",updateCellValue:function(){}});exports.CellProvider=function(l){var o,i,d=l.children,a=l.columnKey,c=n.useColumnContext(a),s=n.useRowContext(),p=s[a],v=r.useEditActionContext().endEditing,C="select"===c.type?null===(i=null===(o=c.options)||void 0===o?void 0:o.find((function(e){return e.value===p})))||void 0===i?void 0:i.label:p,m=t.useMemo((function(){return c.editable?C:c.render?c.render(p,s):C}),[c.editable,C,p,s]),b=t.useCallback((function(e){c.editable&&("number"===c.type?c.onCellBlur(a,Number(e),s,v):c.onCellBlur(a,e,s,v))}),[c,a,s]),x=!c.editable&&c.render?"component":c.type,f=t.useMemo((function(){return{columnKey:a,value:p,label:C,component:m,type:x,updateCellValue:b}}),[a,p,C,m,c,b]);return e.jsx(u.Provider,{value:f,children:d})},exports.useCellContext=function(){return t.useContext(u)};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/cell/provider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo } from \"react\";\nimport { TColumnType } from \"../type\";\nimport { useColumnContext, useRowContext } from \"../sheet\";\nimport { useEditActionContext } from \"../edit/provider\";\n\nconst CellContext = createContext<{\n columnKey: string;\n value: any;\n label: any;\n type: TColumnType | \"component\";\n component?: React.ReactNode;\n updateCellValue: (value: string) => void;\n}>({\n columnKey: \"\",\n value: \"\",\n label: \"\",\n type: \"string\",\n updateCellValue: () => {},\n});\n\nexport function CellProvider({\n children,\n columnKey,\n}: {\n children: React.ReactNode;\n columnKey: string;\n}) {\n const col = useColumnContext(columnKey);\n const row = useRowContext();\n const value = row[columnKey];\n const { endEditing } = useEditActionContext();\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 updateCellValue = useCallback(\n (value: string) => {\n if (col.editable) {\n if (col.type === \"number\") {\n col.onCellBlur(columnKey, Number(value), row, endEditing);\n } else {\n col.onCellBlur(columnKey, value, row, endEditing);\n }\n }\n },\n [col, columnKey, row]\n );\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const cellStatus = useMemo(\n () => ({\n columnKey,\n value,\n label,\n component,\n type,\n updateCellValue,\n }),\n [columnKey, value, label, component, col, updateCellValue]\n );\n\n return (\n <CellContext.Provider value={cellStatus}>{children}</CellContext.Provider>\n );\n}\n\nexport function useCellContext() {\n return useContext(CellContext);\n}\n"],"names":["CellContext","createContext","columnKey","value","label","type","updateCellValue","_a","children","col","useColumnContext","row","useRowContext","endEditing","useEditActionContext","_b","options","find","op","_c","component","useMemo","editable","render","useCallback","onCellBlur","Number","cellStatus","_jsx","jsx","Provider","useContext"],"mappings":"uIAKMA,EAAcC,EAAAA,cAOjB,CACDC,UAAW,GACXC,MAAO,GACPC,MAAO,GACPC,KAAM,SACNC,gBAAiB,WAAQ,yBAGrB,SAAuBC,WAC3BC,EAAQD,EAAAC,SACRN,EAASK,EAAAL,UAKHO,EAAMC,mBAAiBR,GACvBS,EAAMC,EAAAA,gBACNT,EAAQQ,EAAIT,GACVW,EAAeC,oCAEjBV,EACS,WAAbK,EAAIJ,KAC6C,UAAlC,QAAXU,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGf,QAAUA,CAAb,WAAmB,IAAAgB,OAAA,EAAAA,EAAEf,MAC/CD,EAEAiB,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACClB,EAEAK,EAAIc,OAASd,EAAIc,OAAOpB,EAAgBQ,GAAOP,CAE1D,GAAG,CAACK,EAAIa,SAAUlB,EAAOD,EAAOQ,IAE1BL,EAAkBkB,eACtB,SAACrB,GACKM,EAAIa,WACW,WAAbb,EAAIJ,KACNI,EAAIgB,WAAWvB,EAAWwB,OAAOvB,GAAQQ,EAAKE,GAE9CJ,EAAIgB,WAAWvB,EAAWC,EAAOQ,EAAKE,GAG3C,GACD,CAACJ,EAAKP,EAAWS,IAGbN,GACHI,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIJ,KAE5CsB,EAAaN,WACjB,WAAM,MAAC,CACLnB,UAASA,EACTC,MAAKA,EACLC,MAAKA,EACLgB,UAASA,EACTf,KAAIA,EACJC,gBAAeA,EACf,GACF,CAACJ,EAAWC,EAAOC,EAAOgB,EAAWX,EAAKH,IAG5C,OACEsB,EAAAC,IAAC7B,EAAY8B,SAAQ,CAAC3B,MAAOwB,EAAUnB,SAAGA,GAE9C,oCAGE,OAAOuB,EAAAA,WAAW/B,EACpB"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("../../cancel-icon.js");exports.CellInput=function(n){return e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[e.jsx("input",{className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:n.value,onChange:n.onChange,onBlur:n.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(n.reset(),n.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){n.reset(),n.endEditing()}),300)},children:e.jsx(t.CancelIcon,{size:16})})]})};
2
- //# sourceMappingURL=base-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-input.js","sources":["../../../../../../src/table/cell/ui/base-input.tsx"],"sourcesContent":["import { CancelIcon } from \"../../cancel-icon\";\n\nexport function CellInput(props: {\n value: string | number;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n reset: () => void;\n endEditing: () => void;\n}) {\n return (\n <div\n className={`flex justify-between gap-1 w-full items-center`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <input\n className=\"w-full py-1 px-2 bg-white text-gray-900\"\n type=\"text\"\n value={props.value}\n onChange={props.onChange}\n onBlur={props.onBlur}\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLInputElement).blur();\n } else if (e.key === \"Escape\") {\n props.reset();\n props.endEditing();\n }\n }}\n />\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n props.reset();\n props.endEditing();\n }, 300);\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n}\n"],"names":["props","_jsxs","className","onClick","e","preventDefault","stopPropagation","children","_jsx","type","value","onChange","onBlur","onKeyUp","key","target","blur","reset","endEditing","onMouseDown","setTimeout","CancelIcon","size"],"mappings":"oGAEM,SAAoBA,GAOxB,OACEC,EAAAA,YACEC,UAAW,iDACXC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACJ,EAEAC,SAAA,CAAAC,EAAAA,IAAA,QAAA,CACEN,UAAU,0CACVO,KAAK,OACLC,MAAOV,EAAMU,MACbC,SAAUX,EAAMW,SAChBC,OAAQZ,EAAMY,OACdC,QAAS,SAACT,GACRA,EAAEC,iBACY,UAAVD,EAAEU,IACHV,EAAEW,OAA4BC,OACZ,WAAVZ,EAAEU,MACXd,EAAMiB,QACNjB,EAAMkB,aAEV,IAEFV,EAAAA,IAAA,SAAA,CACEW,YAAa,SAACf,GACZA,EAAEC,iBACFD,EAAEE,kBACFc,YAAW,WACTpB,EAAMiB,QACNjB,EAAMkB,YACP,GAAE,MACJX,SAEDC,MAACa,EAAAA,WAAW,CAAAC,KAAM,SAI1B"}
@@ -1,3 +0,0 @@
1
- "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),u=require("./base-input.js"),n=require("../provider.js"),a=require("../../edit/provider.js");exports.NumberCellInput=function(){var i=n.useCellContext(),l=r.useColumnContext(i.columnKey),o=r.useColumnValidateContext(i.columnKey),s=a.useEditActionContext().endEditing,v=t.useState(i.value.toString()),c=v[0],g=v[1];if(!l.editable||"number"!==l.type)throw new Error("Invalid condition");return t.useEffect((function(){g(i.value.toString())}),[i.value]),e.jsx(u.CellInput,{value:c,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?g(e.target.value):isNaN(Number(e.target.value))||g(Number(e.target.value).toString()):g("-0"):g("0")},onBlur:function(e){e.preventDefault(),Number(c)!==i.value?o(c)?i.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return g(i.value.toString())},endEditing:s})};
3
- //# sourceMappingURL=number-input.js.map
@@ -1,3 +0,0 @@
1
- "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),u=require("../../sheet/providers.js"),l=require("../../cancel-icon.js"),r=require("../provider.js");exports.SelectCellInput=function(){var i=r.useCellContext(),o=u.useColumnContext(i.columnKey),a=n.useEditActionContext().endEditing,s=t.useState(i.value),c=s[0],p=s[1];if(!o.editable||"select"!==o.type)throw new Error("Invalid condition");return t.useEffect((function(){p(i.value)}),[i.value]),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(),p(e.target.value)},onBlur:function(e){e.preventDefault(),c!==i.value?i.updateCellValue(c):a()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(p(i.value),a())},children:[o.allowEmpty&&e.jsx("option",{value:"",children:""==i.value?"-- 未選択 --":"-- 選択解除 --"},"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(){p(i.value),a()}),300)},children:e.jsx(l.CancelIcon,{size:16})})]})};
3
- //# sourceMappingURL=select-input.js.map
@@ -1,3 +0,0 @@
1
- "use client";
2
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),u=require("../../sheet/providers.js"),r=require("./base-input.js"),i=require("../provider.js"),o=t.memo((function(){var o=i.useCellContext(),l=u.useColumnContext(o.columnKey),a=u.useColumnValidateContext(o.columnKey),s=n.useEditActionContext().endEditing,c=t.useState(o.value),v=c[0],d=c[1];if(!l.editable||"string"!==l.type)throw new Error("Invalid condition");return t.useEffect((function(){d(o.value)}),[o.value]),e.jsx(r.CellInput,{value:v,onChange:function(e){e.preventDefault(),d(e.target.value)},onBlur:function(e){e.preventDefault(),v!==o.value?a(v)?o.updateCellValue(v):setTimeout((function(){e.target.focus()}),100):s()},reset:function(){return d(o.value.toString())},endEditing:s})}));exports.StringCellInput=o;
3
- //# sourceMappingURL=string-input.js.map
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../focus/provider.js"),o=require("../../edit/provider.js"),n=require("../../libs/id-generator.js");exports.AutoSwitchEditMode=function(){var i=r.useFocusContext(),l=o.useEditContext();return t.useEffect((function(){var e,t;if(i.isFocus&&l.isEditing){var r=n.IdGenerator.getTableCellId(i.rowIndex,i.colIndex),o=document.getElementById("".concat(r,"-display")),s=document.getElementById("".concat(r,"-editor"));null==o||o.style.setProperty("opacity","0"),null==s||s.style.setProperty("opacity","1"),null==s||s.style.setProperty("pointer-events","auto"),null===(e=null==s?void 0:s.querySelector("input"))||void 0===e||e.focus(),null===(t=null==s?void 0:s.querySelector("select"))||void 0===t||t.focus()}return function(){if(i.isFocus&&l.isEditing){var e=n.IdGenerator.getTableCellId(i.rowIndex,i.colIndex),t=document.getElementById("".concat(e,"-display")),r=document.getElementById("".concat(e,"-editor"));null==t||t.style.setProperty("opacity","1"),null==r||r.style.setProperty("opacity","0"),null==r||r.style.setProperty("pointer-events","none")}}}),[l.isEditing]),e.jsx(e.Fragment,{})};
2
- //# sourceMappingURL=auto-switch-edit-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-switch-edit-mode.js","sources":["../../../../../../src/table/table/components/auto-switch-edit-mode.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { IdGenerator } from \"../../libs\";\n\nexport function AutoSwitchEditMode() {\n const focus = useFocusContext();\n const edit = useEditContext();\n\n useEffect(() => {\n if (focus.isFocus && edit.isEditing) {\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n\n const cellDisplayElement = document.getElementById(`${id}-display`);\n const cellEditorElement = document.getElementById(`${id}-editor`);\n cellDisplayElement?.style.setProperty(\"opacity\", \"0\");\n cellEditorElement?.style.setProperty(\"opacity\", \"1\");\n cellEditorElement?.style.setProperty(\"pointer-events\", \"auto\");\n cellEditorElement?.querySelector(\"input\")?.focus();\n cellEditorElement?.querySelector(\"select\")?.focus();\n }\n\n return () => {\n if (focus.isFocus && edit.isEditing) {\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n\n const cellDisplayElement = document.getElementById(`${id}-display`);\n const cellEditorElement = document.getElementById(`${id}-editor`);\n cellDisplayElement?.style.setProperty(\"opacity\", \"1\");\n cellEditorElement?.style.setProperty(\"opacity\", \"0\");\n cellEditorElement?.style.setProperty(\"pointer-events\", \"none\");\n }\n };\n }, [edit.isEditing]);\n\n return <></>;\n}\n"],"names":["focus","useFocusContext","edit","useEditContext","useEffect","isFocus","isEditing","id","IdGenerator","getTableCellId","rowIndex","colIndex","cellDisplayElement","document","getElementById","concat","cellEditorElement","style","setProperty","_a","querySelector","_b","_jsx"],"mappings":"0NAME,IAAMA,EAAQC,EAAAA,kBACRC,EAAOC,EAAAA,iBA4Bb,OA1BAC,EAAAA,WAAU,mBACR,GAAIJ,EAAMK,SAAWH,EAAKI,UAAW,CACnC,IAAMC,EAAKC,EAAAA,YAAYC,eAAeT,EAAMU,SAAUV,EAAMW,UAEtDC,EAAqBC,SAASC,eAAe,GAAGC,OAAAR,EAAY,aAC5DS,EAAoBH,SAASC,eAAe,GAAGC,OAAAR,EAAW,YAChEK,SAAAA,EAAoBK,MAAMC,YAAY,UAAW,KACjDF,SAAAA,EAAmBC,MAAMC,YAAY,UAAW,KAChDF,SAAAA,EAAmBC,MAAMC,YAAY,iBAAkB,QACZ,QAA3CC,EAAAH,aAAiB,EAAjBA,EAAmBI,cAAc,gBAAU,IAAAD,GAAAA,EAAAnB,QACC,QAA5CqB,EAAAL,aAAiB,EAAjBA,EAAmBI,cAAc,iBAAW,IAAAC,GAAAA,EAAArB,OAC7C,CAED,OAAO,WACL,GAAIA,EAAMK,SAAWH,EAAKI,UAAW,CACnC,IAAMC,EAAKC,EAAAA,YAAYC,eAAeT,EAAMU,SAAUV,EAAMW,UAEtDC,EAAqBC,SAASC,eAAe,GAAGC,OAAAR,EAAY,aAC5DS,EAAoBH,SAASC,eAAe,GAAGC,OAAAR,EAAW,YAChEK,SAAAA,EAAoBK,MAAMC,YAAY,UAAW,KACjDF,SAAAA,EAAmBC,MAAMC,YAAY,UAAW,KAChDF,SAAAA,EAAmBC,MAAMC,YAAY,iBAAkB,OACxD,CACH,CACF,GAAG,CAAChB,EAAKI,YAEFgB,oBACT"}
@@ -1,2 +0,0 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as r,useContext as n,useMemo as t,useCallback as l}from"react";import{useColumnContext as o,useRowContext as i}from"../sheet/providers.js";import{useEditActionContext as u}from"../edit/provider.js";var d=r({columnKey:"",value:"",label:"",type:"string",updateCellValue:function(){}});function a(r){var n,a,c=r.children,p=r.columnKey,m=o(p),v=i(),f=v[p],b=u().endEditing,s="select"===m.type?null===(a=null===(n=m.options)||void 0===n?void 0:n.find((function(e){return e.value===f})))||void 0===a?void 0:a.label:f,y=t((function(){return m.editable?s:m.render?m.render(f,v):s}),[m.editable,s,f,v]),C=l((function(e){m.editable&&("number"===m.type?m.onCellBlur(p,Number(e),v,b):m.onCellBlur(p,e,v,b))}),[m,p,v]),h=!m.editable&&m.render?"component":m.type,j=t((function(){return{columnKey:p,value:f,label:s,component:y,type:h,updateCellValue:C}}),[p,f,s,y,m,C]);return e(d.Provider,{value:j,children:c})}function c(){return n(d)}export{a as CellProvider,c as useCellContext};
2
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../../src/table/cell/provider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useMemo } from \"react\";\nimport { TColumnType } from \"../type\";\nimport { useColumnContext, useRowContext } from \"../sheet\";\nimport { useEditActionContext } from \"../edit/provider\";\n\nconst CellContext = createContext<{\n columnKey: string;\n value: any;\n label: any;\n type: TColumnType | \"component\";\n component?: React.ReactNode;\n updateCellValue: (value: string) => void;\n}>({\n columnKey: \"\",\n value: \"\",\n label: \"\",\n type: \"string\",\n updateCellValue: () => {},\n});\n\nexport function CellProvider({\n children,\n columnKey,\n}: {\n children: React.ReactNode;\n columnKey: string;\n}) {\n const col = useColumnContext(columnKey);\n const row = useRowContext();\n const value = row[columnKey];\n const { endEditing } = useEditActionContext();\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 updateCellValue = useCallback(\n (value: string) => {\n if (col.editable) {\n if (col.type === \"number\") {\n col.onCellBlur(columnKey, Number(value), row, endEditing);\n } else {\n col.onCellBlur(columnKey, value, row, endEditing);\n }\n }\n },\n [col, columnKey, row]\n );\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const cellStatus = useMemo(\n () => ({\n columnKey,\n value,\n label,\n component,\n type,\n updateCellValue,\n }),\n [columnKey, value, label, component, col, updateCellValue]\n );\n\n return (\n <CellContext.Provider value={cellStatus}>{children}</CellContext.Provider>\n );\n}\n\nexport function useCellContext() {\n return useContext(CellContext);\n}\n"],"names":["CellContext","createContext","columnKey","value","label","type","updateCellValue","CellProvider","_a","children","col","useColumnContext","row","useRowContext","endEditing","useEditActionContext","_b","options","find","op","_c","component","useMemo","editable","render","useCallback","onCellBlur","Number","cellStatus","_jsx","Provider","useCellContext","useContext"],"mappings":"mQAKA,IAAMA,EAAcC,EAOjB,CACDC,UAAW,GACXC,MAAO,GACPC,MAAO,GACPC,KAAM,SACNC,gBAAiB,WAAQ,IAGrB,SAAUC,EAAaC,WAC3BC,EAAQD,EAAAC,SACRP,EAASM,EAAAN,UAKHQ,EAAMC,EAAiBT,GACvBU,EAAMC,IACNV,EAAQS,EAAIV,GACVY,EAAeC,eAEjBX,EACS,WAAbM,EAAIL,KAC6C,UAAlC,QAAXW,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGhB,QAAUA,CAAb,WAAmB,IAAAiB,OAAA,EAAAA,EAAEhB,MAC/CD,EAEAkB,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCnB,EAEAM,EAAIc,OAASd,EAAIc,OAAOrB,EAAgBS,GAAOR,CAE1D,GAAG,CAACM,EAAIa,SAAUnB,EAAOD,EAAOS,IAE1BN,EAAkBmB,GACtB,SAACtB,GACKO,EAAIa,WACW,WAAbb,EAAIL,KACNK,EAAIgB,WAAWxB,EAAWyB,OAAOxB,GAAQS,EAAKE,GAE9CJ,EAAIgB,WAAWxB,EAAWC,EAAOS,EAAKE,GAG3C,GACD,CAACJ,EAAKR,EAAWU,IAGbP,GACHK,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIL,KAE5CuB,EAAaN,GACjB,WAAM,MAAC,CACLpB,UAASA,EACTC,MAAKA,EACLC,MAAKA,EACLiB,UAASA,EACThB,KAAIA,EACJC,gBAAeA,EACf,GACF,CAACJ,EAAWC,EAAOC,EAAOiB,EAAWX,EAAKJ,IAG5C,OACEuB,EAAC7B,EAAY8B,SAAQ,CAAC3B,MAAOyB,EAAUnB,SAAGA,GAE9C,UAEgBsB,IACd,OAAOC,EAAWhC,EACpB"}
@@ -1,2 +0,0 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{CancelIcon as n}from"../../cancel-icon.js";function o(o){return e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:o.value,onChange:o.onChange,onBlur:o.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(o.reset(),o.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){o.reset(),o.endEditing()}),300)},children:t(n,{size:16})})]})}export{o as CellInput};
2
- //# sourceMappingURL=base-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-input.js","sources":["../../../../../../src/table/cell/ui/base-input.tsx"],"sourcesContent":["import { CancelIcon } from \"../../cancel-icon\";\n\nexport function CellInput(props: {\n value: string | number;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n reset: () => void;\n endEditing: () => void;\n}) {\n return (\n <div\n className={`flex justify-between gap-1 w-full items-center`}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <input\n className=\"w-full py-1 px-2 bg-white text-gray-900\"\n type=\"text\"\n value={props.value}\n onChange={props.onChange}\n onBlur={props.onBlur}\n onKeyUp={(e: React.KeyboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n if (e.key === \"Enter\") {\n (e.target as HTMLInputElement).blur();\n } else if (e.key === \"Escape\") {\n props.reset();\n props.endEditing();\n }\n }}\n />\n <button\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n props.reset();\n props.endEditing();\n }, 300);\n }}\n >\n <CancelIcon size={16} />\n </button>\n </div>\n );\n}\n"],"names":["CellInput","props","_jsxs","className","onClick","e","preventDefault","stopPropagation","children","_jsx","type","value","onChange","onBlur","onKeyUp","key","target","blur","reset","endEditing","onMouseDown","setTimeout","CancelIcon","size"],"mappings":"oGAEM,SAAUA,EAAUC,GAOxB,OACEC,SACEC,UAAW,iDACXC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACJ,EAEAC,SAAA,CAAAC,EAAA,QAAA,CACEN,UAAU,0CACVO,KAAK,OACLC,MAAOV,EAAMU,MACbC,SAAUX,EAAMW,SAChBC,OAAQZ,EAAMY,OACdC,QAAS,SAACT,GACRA,EAAEC,iBACY,UAAVD,EAAEU,IACHV,EAAEW,OAA4BC,OACZ,WAAVZ,EAAEU,MACXd,EAAMiB,QACNjB,EAAMkB,aAEV,IAEFV,EAAA,SAAA,CACEW,YAAa,SAACf,GACZA,EAAEC,iBACFD,EAAEE,kBACFc,YAAW,WACTpB,EAAMiB,QACNjB,EAAMkB,YACP,GAAE,MACJX,SAEDC,EAACa,EAAW,CAAAC,KAAM,SAI1B"}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{useState as t,useEffect as r}from"react";import{useColumnContext as n,useColumnValidateContext as o}from"../../sheet/providers.js";import{CellInput as u}from"./base-input.js";import{useCellContext as a}from"../provider.js";import{useEditActionContext as i}from"../../edit/provider.js";function l(){var l=a(),m=n(l.columnKey),v=o(l.columnKey),f=i().endEditing,g=t(l.value.toString()),p=g[0],c=g[1];if(!m.editable||"number"!==m.type)throw new Error("Invalid condition");return r((function(){c(l.value.toString())}),[l.value]),e(u,{value:p,onChange:function(e){e.preventDefault(),""!==e.target.value?"-"!==e.target.value&&"0-"!==e.target.value?e.target.value.match(/^-?[0-9]+\.$/)?c(e.target.value):isNaN(Number(e.target.value))||c(Number(e.target.value).toString()):c("-0"):c("0")},onBlur:function(e){e.preventDefault(),Number(p)!==l.value?v(p)?l.updateCellValue(p):setTimeout((function(){e.target.focus()}),100):f()},reset:function(){return c(l.value.toString())},endEditing:f})}export{l as NumberCellInput};
3
- //# sourceMappingURL=number-input.js.map
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as n,useEffect as o}from"react";import{useEditActionContext as r}from"../../edit/provider.js";import{useColumnContext as l}from"../../sheet/providers.js";import{CancelIcon as i}from"../../cancel-icon.js";import{useCellContext as a}from"../provider.js";function u(){var u=a(),p=l(u.columnKey),c=r().endEditing,f=n(u.value),v=f[0],m=f[1];if(!p.editable||"select"!==p.type)throw new Error("Invalid condition");return o((function(){m(u.value)}),[u.value]),e("div",{className:"flex justify-between gap-1 w-full items-center",children:[e("select",{className:"w-full py-1 px-2 bg-white text-gray-900",value:v,onChange:function(e){e.preventDefault(),m(e.target.value)},onBlur:function(e){e.preventDefault(),v!==u.value?u.updateCellValue(v):c()},onKeyDown:function(e){"Enter"===e.key&&e.preventDefault()},onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(m(u.value),c())},children:[p.allowEmpty&&t("option",{value:"",children:""==u.value?"-- 未選択 --":"-- 選択解除 --"},"TEPPEN/ReactUI Empty Option"),p.options.map((function(e){return t("option",{value:e.value,children:e.label},e.value)}))]}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){m(u.value),c()}),300)},children:t(i,{size:16})})]})}export{u as SelectCellInput};
3
- //# sourceMappingURL=select-input.js.map
@@ -1,3 +0,0 @@
1
- "use client";
2
- import{jsx as e}from"react/jsx-runtime";import{memo as t,useState as r,useEffect as n}from"react";import{useEditActionContext as o}from"../../edit/provider.js";import{useColumnContext as i,useColumnValidateContext as u}from"../../sheet/providers.js";import{CellInput as a}from"./base-input.js";import{useCellContext as l}from"../provider.js";var f=t((function(){var t=l(),f=i(t.columnKey),m=u(t.columnKey),p=o().endEditing,v=r(t.value),c=v[0],d=v[1];if(!f.editable||"string"!==f.type)throw new Error("Invalid condition");return n((function(){d(t.value)}),[t.value]),e(a,{value:c,onChange:function(e){e.preventDefault(),d(e.target.value)},onBlur:function(e){e.preventDefault(),c!==t.value?m(c)?t.updateCellValue(c):setTimeout((function(){e.target.focus()}),100):p()},reset:function(){return d(t.value.toString())},endEditing:p})}));export{f as StringCellInput};
3
- //# sourceMappingURL=string-input.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as o}from"react";import{useFocusContext as r}from"../../focus/provider.js";import{useEditContext as n}from"../../edit/provider.js";import{IdGenerator as l}from"../../libs/id-generator.js";function i(){var i=r(),s=n();return o((function(){var e,t;if(i.isFocus&&s.isEditing){var o=l.getTableCellId(i.rowIndex,i.colIndex),r=document.getElementById("".concat(o,"-display")),n=document.getElementById("".concat(o,"-editor"));null==r||r.style.setProperty("opacity","0"),null==n||n.style.setProperty("opacity","1"),null==n||n.style.setProperty("pointer-events","auto"),null===(e=null==n?void 0:n.querySelector("input"))||void 0===e||e.focus(),null===(t=null==n?void 0:n.querySelector("select"))||void 0===t||t.focus()}return function(){if(i.isFocus&&s.isEditing){var e=l.getTableCellId(i.rowIndex,i.colIndex),t=document.getElementById("".concat(e,"-display")),o=document.getElementById("".concat(e,"-editor"));null==t||t.style.setProperty("opacity","1"),null==o||o.style.setProperty("opacity","0"),null==o||o.style.setProperty("pointer-events","none")}}}),[s.isEditing]),e(t,{})}export{i as AutoSwitchEditMode};
2
- //# sourceMappingURL=auto-switch-edit-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-switch-edit-mode.js","sources":["../../../../../../src/table/table/components/auto-switch-edit-mode.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useFocusContext } from \"../../focus/provider\";\nimport { useEditContext } from \"../../edit/provider\";\nimport { IdGenerator } from \"../../libs\";\n\nexport function AutoSwitchEditMode() {\n const focus = useFocusContext();\n const edit = useEditContext();\n\n useEffect(() => {\n if (focus.isFocus && edit.isEditing) {\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n\n const cellDisplayElement = document.getElementById(`${id}-display`);\n const cellEditorElement = document.getElementById(`${id}-editor`);\n cellDisplayElement?.style.setProperty(\"opacity\", \"0\");\n cellEditorElement?.style.setProperty(\"opacity\", \"1\");\n cellEditorElement?.style.setProperty(\"pointer-events\", \"auto\");\n cellEditorElement?.querySelector(\"input\")?.focus();\n cellEditorElement?.querySelector(\"select\")?.focus();\n }\n\n return () => {\n if (focus.isFocus && edit.isEditing) {\n const id = IdGenerator.getTableCellId(focus.rowIndex, focus.colIndex);\n\n const cellDisplayElement = document.getElementById(`${id}-display`);\n const cellEditorElement = document.getElementById(`${id}-editor`);\n cellDisplayElement?.style.setProperty(\"opacity\", \"1\");\n cellEditorElement?.style.setProperty(\"opacity\", \"0\");\n cellEditorElement?.style.setProperty(\"pointer-events\", \"none\");\n }\n };\n }, [edit.isEditing]);\n\n return <></>;\n}\n"],"names":["AutoSwitchEditMode","focus","useFocusContext","edit","useEditContext","useEffect","isFocus","isEditing","id","IdGenerator","getTableCellId","rowIndex","colIndex","cellDisplayElement","document","getElementById","concat","cellEditorElement","style","setProperty","_a","querySelector","_b","_jsx"],"mappings":"4QAKgBA,IACd,IAAMC,EAAQC,IACRC,EAAOC,IA4Bb,OA1BAC,GAAU,mBACR,GAAIJ,EAAMK,SAAWH,EAAKI,UAAW,CACnC,IAAMC,EAAKC,EAAYC,eAAeT,EAAMU,SAAUV,EAAMW,UAEtDC,EAAqBC,SAASC,eAAe,GAAGC,OAAAR,EAAY,aAC5DS,EAAoBH,SAASC,eAAe,GAAGC,OAAAR,EAAW,YAChEK,SAAAA,EAAoBK,MAAMC,YAAY,UAAW,KACjDF,SAAAA,EAAmBC,MAAMC,YAAY,UAAW,KAChDF,SAAAA,EAAmBC,MAAMC,YAAY,iBAAkB,QACZ,QAA3CC,EAAAH,aAAiB,EAAjBA,EAAmBI,cAAc,gBAAU,IAAAD,GAAAA,EAAAnB,QACC,QAA5CqB,EAAAL,aAAiB,EAAjBA,EAAmBI,cAAc,iBAAW,IAAAC,GAAAA,EAAArB,OAC7C,CAED,OAAO,WACL,GAAIA,EAAMK,SAAWH,EAAKI,UAAW,CACnC,IAAMC,EAAKC,EAAYC,eAAeT,EAAMU,SAAUV,EAAMW,UAEtDC,EAAqBC,SAASC,eAAe,GAAGC,OAAAR,EAAY,aAC5DS,EAAoBH,SAASC,eAAe,GAAGC,OAAAR,EAAW,YAChEK,SAAAA,EAAoBK,MAAMC,YAAY,UAAW,KACjDF,SAAAA,EAAmBC,MAAMC,YAAY,UAAW,KAChDF,SAAAA,EAAmBC,MAAMC,YAAY,iBAAkB,OACxD,CACH,CACF,GAAG,CAAChB,EAAKI,YAEFgB,OACT"}