@teppen/react-ui 1.7.3 → 1.7.4
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.
- package/dist/cjs/src/table/cell/hooks.js +1 -1
- package/dist/cjs/src/table/cell/hooks.js.map +1 -1
- package/dist/cjs/src/table/copy/components.js +1 -1
- package/dist/cjs/src/table/copy/components.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
- package/dist/cjs/src/table/edit/ui/editor.js +1 -1
- package/dist/cjs/src/table/edit/ui/editor.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/select-input.js +1 -1
- package/dist/cjs/src/table/id/id-generator.js +2 -0
- package/dist/cjs/src/table/id/id-generator.js.map +1 -0
- package/dist/cjs/src/table/id/provider.js +2 -0
- package/dist/cjs/src/table/id/provider.js.map +1 -0
- package/dist/cjs/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/cjs/src/table/range/hooks.js +1 -1
- package/dist/cjs/src/table/range/hooks.js.map +1 -1
- package/dist/cjs/src/table/range/provider.js +1 -1
- package/dist/cjs/src/table/range/provider.js.map +1 -1
- package/dist/cjs/src/table/sheet/components.js +1 -1
- package/dist/cjs/src/table/sheet/components.js.map +1 -1
- package/dist/cjs/src/table/table/base.js +1 -1
- package/dist/esm/src/table/cell/hooks.js +1 -1
- package/dist/esm/src/table/cell/hooks.js.map +1 -1
- package/dist/esm/src/table/copy/components.js +1 -1
- package/dist/esm/src/table/copy/components.js.map +1 -1
- package/dist/esm/src/table/edit/ui/base-input.js +1 -1
- package/dist/esm/src/table/edit/ui/editor.js +1 -1
- package/dist/esm/src/table/edit/ui/editor.js.map +1 -1
- package/dist/esm/src/table/edit/ui/select-input.js +1 -1
- package/dist/esm/src/table/id/id-generator.js +2 -0
- package/dist/esm/src/table/id/id-generator.js.map +1 -0
- package/dist/esm/src/table/id/provider.js +2 -0
- package/dist/esm/src/table/id/provider.js.map +1 -0
- package/dist/esm/src/table/operation/components/keyboard-setting.js +1 -1
- package/dist/esm/src/table/range/hooks.js +1 -1
- package/dist/esm/src/table/range/hooks.js.map +1 -1
- package/dist/esm/src/table/range/provider.js +1 -1
- package/dist/esm/src/table/range/provider.js.map +1 -1
- package/dist/esm/src/table/sheet/components.js +1 -1
- package/dist/esm/src/table/sheet/components.js.map +1 -1
- package/dist/esm/src/table/table/base.js +1 -1
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/src/table/libs/id-generator.js +0 -2
- package/dist/cjs/src/table/libs/id-generator.js.map +0 -1
- package/dist/esm/src/table/libs/id-generator.js +0 -2
- package/dist/esm/src/table/libs/id-generator.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react"),
|
|
1
|
+
"use strict";var e=require("react"),t=require("../edit/provider.js"),n=require("../sheet/providers.js"),o=require("../range/provider.js"),r=require("../id/provider.js");exports.useCell=function(i,u){var d,s,a=r.useTableIdGenerator(),l=o.useRangeActionContext(),c=l.startSelectRange,p=l.moveSelectRange,v=l.endSelectRange,f=t.useEditActionContext().startEditing,m=a.extractCellIndexFromId(i),x=m[0],g=m[1],C=n.useColumnsContext()[g],I=u[C.key],b="select"===C.type?null===(s=null===(d=C.options)||void 0===d?void 0:d.find((function(e){return e.value===I})))||void 0===s?void 0:s.label:I,q=e.useMemo((function(){return C.editable?b:C.render?C.render(I,u):b}),[C.editable,b,I,u]);return{type:!C.editable&&C.render?"component":C.type,component:q,onDoubleClick:function(e){e.preventDefault(),f()},onMouseDown:function(e){setTimeout((function(){c({rowIndex:x,colIndex:g});var e=function(t){t.preventDefault(),t.stopPropagation(),v(),document.removeEventListener("mouseup",e)};document.addEventListener("mouseup",e)}),0)},onMouseEnter:function(e){e.preventDefault(),e.stopPropagation(),p({rowIndex:x,colIndex:g})}}};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport {
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const IdGenerator = useTableIdGenerator();\n const { startSelectRange, moveSelectRange, endSelectRange } =\n useRangeActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.extractCellIndexFromId(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n startEditing();\n };\n\n /**\n * onBlurよりも先に発火するため、onBlurでendEditingを呼ぶと\n * すぐにstartEditingが呼ばれてしまうため、setTimeoutで遅延させる\n * これにより、endEditingが先に呼ばれるようになる\n */\n const onMouseDown: React.MouseEventHandler<HTMLDivElement> = (e) => {\n setTimeout(() => {\n startSelectRange({ rowIndex, colIndex });\n\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n endSelectRange();\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n }, 0);\n };\n\n const onMouseEnter: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n moveSelectRange({ rowIndex, colIndex });\n };\n\n return {\n type,\n component,\n onDoubleClick,\n onMouseDown,\n onMouseEnter,\n };\n}\n"],"names":["id","row","IdGenerator","useTableIdGenerator","_c","useRangeActionContext","startSelectRange","moveSelectRange","endSelectRange","startEditing","useEditActionContext","_d","extractCellIndexFromId","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onDoubleClick","e","preventDefault","onMouseDown","setTimeout","onMouseUp","stopPropagation","document","removeEventListener","addEventListener","onMouseEnter"],"mappings":"yLAOgB,SAAQA,EAAYC,WAC5BC,EAAcC,EAAAA,sBACdC,EACJC,EAAAA,wBADMC,EAAgBF,EAAAE,iBAAEC,EAAeH,EAAAG,gBAAEC,EAAcJ,EAAAI,eAEjDC,EAAiBC,sCACnBC,EAAuBT,EAAYU,uBAAuBZ,GAAzDa,EAAQF,EAAA,GAAEG,OACXC,EAAMC,EAAAA,oBAAoBF,GAC1BG,EAAQhB,EAAIc,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,EAAAA,SAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBhB,GAAOkB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOhB,IAoChC,MAAO,CACLmB,MAlCCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAmChDM,UAASA,EACTI,cAlC6D,SAACC,GAC9DA,EAAEC,iBACFvB,GACF,EAgCEwB,YAzB2D,SAACF,GAC5DG,YAAW,WACT5B,EAAiB,CAAEO,SAAQA,EAAEC,SAAQA,IAErC,IAAMqB,EAAY,SAACJ,GACjBA,EAAEC,iBACFD,EAAEK,kBACF5B,IACA6B,SAASC,oBAAoB,UAAWH,EAC1C,EAEAE,SAASE,iBAAiB,UAAWJ,EACtC,GAAE,EACL,EAaEK,aAX4D,SAACT,GAC7DA,EAAEC,iBACFD,EAAEK,kBACF7B,EAAgB,CAAEM,SAAQA,EAAEC,SAAQA,GACtC,EASF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("./provider.js"),i=require("../
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("./provider.js"),i=require("../id/provider.js");exports.CopiedMessage=function(){var n=i.useTableIdGenerator(),a=t.useState(!1),o=a[0],s=a[1],u=r.useCopyStateContext().copiedAt;if(t.useEffect((function(){if(u){s(!0);var e=setTimeout((function(){s(!1)}),1e3);return function(){s(!1),clearTimeout(e)}}}),[u]),!o)return e.jsx(e.Fragment,{});var c=document.getElementById(n.getTableId());if(!c)return e.jsx(e.Fragment,{});var d=c.getBoundingClientRect(),p=d.right-120,f=d.bottom-50;return e.jsx("div",{className:"fixed z-[100] p-1 bg-gray-800 duration-300 pointer-events-none ".concat(o?"opacity-100":"opacity-0"),style:{top:f,left:p},children:e.jsx("p",{className:"text-white text-xs",children:"コピーしました!!!"})})};
|
|
2
2
|
//# sourceMappingURL=components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../../../../../src/table/copy/components.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useCopyStateContext } from \"./provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/copy/components.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useCopyStateContext } from \"./provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function CopiedMessage() {\n const IdGenerator = useTableIdGenerator();\n const [isDisplay, setIsDisplay] = useState(false);\n const { copiedAt } = useCopyStateContext();\n\n useEffect(() => {\n if (copiedAt) {\n setIsDisplay(true);\n\n const timer = setTimeout(() => {\n setIsDisplay(false);\n }, 1000);\n\n return () => {\n setIsDisplay(false);\n clearTimeout(timer);\n };\n }\n }, [copiedAt]);\n\n if (!isDisplay) {\n return <></>;\n }\n\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!tableElement) {\n return <></>;\n }\n\n // テーブルの右下の位置を取得\n const rect = tableElement.getBoundingClientRect();\n const x = rect.right - 120;\n const y = rect.bottom - 50;\n\n return (\n <div\n className={`fixed z-[100] p-1 bg-gray-800 duration-300 pointer-events-none ${\n isDisplay ? \"opacity-100\" : \"opacity-0\"\n }`}\n style={{ top: y, left: x }}\n >\n <p className=\"text-white text-xs\">コピーしました!!!</p>\n </div>\n );\n}\n"],"names":["IdGenerator","useTableIdGenerator","_a","useState","isDisplay","setIsDisplay","copiedAt","useCopyStateContext","useEffect","timer_1","setTimeout","clearTimeout","_jsx","tableElement","document","getElementById","getTableId","rect","getBoundingClientRect","x","right","y","bottom","className","style","top","left","children","jsx"],"mappings":"8JAKE,IAAMA,EAAcC,EAAAA,sBACdC,EAA4BC,EAAAA,UAAS,GAApCC,EAASF,EAAA,GAAEG,EAAYH,EAAA,GACtBI,EAAaC,iCAiBrB,GAfAC,EAAAA,WAAU,WACR,GAAIF,EAAU,CACZD,GAAa,GAEb,IAAMI,EAAQC,YAAW,WACvBL,GAAa,EACd,GAAE,KAEH,OAAO,WACLA,GAAa,GACbM,aAAaF,EACf,CACD,CACH,GAAG,CAACH,KAECF,EACH,OAAOQ,qBAGT,IAAMC,EAAeC,SAASC,eAAef,EAAYgB,cAEzD,IAAKH,EACH,OAAOD,qBAIT,IAAMK,EAAOJ,EAAaK,wBACpBC,EAAIF,EAAKG,MAAQ,IACjBC,EAAIJ,EAAKK,OAAS,GAExB,OACEV,MAAA,MAAA,CACEW,UAAW,yEACTnB,EAAY,cAAgB,aAE9BoB,MAAO,CAAEC,IAAKJ,EAAGK,KAAMP,GAEvBQ,SAAAf,EAAAgB,IAAA,IAAA,CAAGL,UAAU,qBAAmCI,SAAA,gBAGtD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../../icon/cancel-icon.js");exports.CellInput=function(
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../../icon/cancel-icon.js"),r=require("../../id/provider.js");exports.CellInput=function(u){var i=r.useTableIdGenerator(),o=t.useRef(null);return t.useEffect((function(){o.current&&o.current.focus()}),[o]),e.jsxs("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[e.jsx("input",{id:i.getEditorId(),ref:o,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:u.value,onChange:u.onChange,onBlur:u.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(u.reset(),u.endEditing())}}),e.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){u.reset(),u.endEditing()}),300)},children:e.jsx(n.CancelIcon,{size:16})})]})};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),n=require("../provider.js"),i=require("./number-input.js"),o=require("./select-input.js"),s=require("./string-input.js"),l=require("../../
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("../../sheet/providers.js"),n=require("../provider.js"),i=require("./number-input.js"),o=require("./select-input.js"),s=require("./string-input.js"),l=require("../../range/provider.js"),u=require("../../id/provider.js");exports.Editor=function(d){var a=u.useTableIdGenerator(),c=l.useRangeStateContext(),g=n.useEditStateContext(),p=n.useEditActionContext(),x=r.useColumnsContext();if(t.useEffect((function(){c.isSelecting&&!x[c.start.colIndex].editable&&p.endEditing()}),[g,c]),!g.isEditing)return e.jsx(e.Fragment,{});if(!c.isSelecting)return e.jsx(e.Fragment,{});var f=x[c.start.colIndex],j=d.rowMaps[d.pageRowIds[c.start.rowIndex]].data;if(!f.editable)return e.jsx(e.Fragment,{});var m=a.getTableCellId({rowIndex:c.start.rowIndex,columnIndex:c.start.colIndex}),I=document.getElementById(m),h=null==I?void 0:I.getBoundingClientRect(),v=h?{width:h.width,height:h.height,top:h.top,left:h.left}:void 0;if(!v)return e.jsx(e.Fragment,{});var w=document.getElementById(a.getTableId());if(!w)return e.jsx(e.Fragment,{});var C=w.getBoundingClientRect();return v.top-=C.top-w.scrollTop,v.left-=C.left-w.scrollLeft,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:v.width,height:v.height,top:v.top-1,left:v.left},children:["string"===f.type&&e.jsx(s.StringCellInput,{col:f,row:j}),"number"===f.type&&e.jsx(i.NumberCellInput,{col:f,row:j}),"select"===f.type&&e.jsx(o.SelectCellInput,{col:f,row:j})]})};
|
|
2
2
|
//# sourceMappingURL=editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\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 {
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\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 { DataObject, DataRecord } from \"../../table/type\";\nimport { useRangeStateContext } from \"../../range/provider\";\nimport { useTableIdGenerator } from \"../../id\";\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 IdGenerator = useTableIdGenerator();\n const range = useRangeStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (range.isSelecting && !cols[range.start.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, range]);\n\n if (!edit.isEditing) return <></>;\n if (!range.isSelecting) return <></>;\n\n const col = cols[range.start.colIndex];\n const row = props.rowMaps[props.pageRowIds[range.start.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId({\n rowIndex: range.start.rowIndex,\n columnIndex: range.start.colIndex,\n });\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(IdGenerator.getTableId());\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop;\n size.left -= rectTable.left - tableElement.scrollLeft;\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","IdGenerator","useTableIdGenerator","range","useRangeStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isSelecting","start","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","getTableCellId","columnIndex","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","getTableId","rectTable","scrollTop","scrollLeft","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"wTAwBM,SAAiBA,GACrB,IAAMC,EAAcC,EAAAA,sBACdC,EAAQC,EAAAA,uBACRC,EAAOC,EAAAA,sBACPC,EAAcC,EAAAA,uBACdC,EAAOC,EAAAA,oBAQb,GANAC,EAAAA,WAAU,WACJR,EAAMS,cAAgBH,EAAKN,EAAMU,MAAMC,UAAUC,UACnDR,EAAYS,YAEhB,GAAG,CAACX,EAAMF,KAELE,EAAKY,UAAW,OAAOC,qBAC5B,IAAKf,EAAMS,YAAa,OAAOM,qBAE/B,IAAMC,EAAMV,EAAKN,EAAMU,MAAMC,UACvBM,EAAMpB,EAAMqB,QAAQrB,EAAMsB,WAAWnB,EAAMU,MAAMU,WAAWC,KAElE,IAAKL,EAAIJ,SAAU,OAAOG,qBAE1B,IAAMO,EAAKxB,EAAYyB,eAAe,CACpCH,SAAUpB,EAAMU,MAAMU,SACtBI,YAAaxB,EAAMU,MAAMC,WAErBc,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,eAAe7B,EAAYuC,cACzD,IAAKD,EAAc,OAAOrB,qBAC1B,IAAMuB,EAAYF,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOK,EAAUL,IAAMG,EAAaG,UACzCT,EAAKI,MAAQI,EAAUJ,KAAOE,EAAaI,WAGzCC,EAAAA,YACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLhB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZc,SAAA,CAAa,WAAbhC,EAAIiC,MAAqBlC,EAAAA,IAACmC,EAAAA,gBAAgB,CAAAlC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,MAACoC,EAAAA,gBAAe,CAACnC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,MAACqC,EAAeA,gBAAA,CAACpC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("../../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),n=require("react"),
|
|
2
|
+
"use strict";var e=require("../../../../node_modules/tslib/tslib.es6.js"),t=require("react/jsx-runtime"),n=require("react"),r=require("../provider.js"),o=require("../../../icon/cancel-icon.js"),u=require("../../../select-box/index.js"),i=require("../../id/provider.js");exports.SelectCellInput=function(s){var l=i.useTableIdGenerator(),c=s.col,a=r.useEditActionContext().endEditing,d=s.row[c.key],f=n.useState(d),p=f[0],v=f[1],m=n.useRef(null),j=n.useRef(null);n.useEffect((function(){j.current&&j.current.focus()}),[j]);var x=function(e){c.editable&&c.onCellBlur(c.key,e,s.row,a)};if(!c.editable)return t.jsx(t.Fragment,{});n.useEffect((function(){var e=function(e){var t=m.current,n=e.target;n instanceof Node&&(null==t?void 0:t.contains(n))||(p!==d?x(p):a())};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[p,x,a,d]);var b=n.useMemo((function(){return c.allowEmpty?e.__spreadArray([{value:"",label:""===d?"-- 未選択 --":"-- 選択解除 --"}],c.options,!0):c.options}),[c.options,c.allowEmpty,d]);return t.jsxs("div",{ref:m,className:"flex justify-between gap-1 w-full items-center",children:[t.jsx(u.SelectBox,{id:l.getEditorId(),inputRef:j,value:p,defaultIsOpen:!0,options:b,onSelect:function(e){v(e),x(e)}}),t.jsx("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){v(d),a()}),300)},children:t.jsx(o.CancelIcon,{size:16})})]})};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=function(){function t(t){this.additionalId=t}return t.prototype.getTableId=function(){return"ReactUI:Table".concat(this.additionalId?":".concat(this.additionalId):"")},t.prototype.getTableColId=function(t){return"".concat(this.getTableId(),":Column-").concat(t.columnIndex)},t.prototype.getTableCellId=function(t){return"".concat(this.getTableId(),":Cell-").concat(t.rowIndex,"-").concat(t.columnIndex)},t.prototype.getEditorId=function(){return"".concat(this.getTableId(),":Editor")},t.prototype.extractCellIndexFromId=function(t){var e=t.split("-"),n=e[e.length-2],o=e[e.length-1];return[Number(n),Number(o)]},t}();exports.IdGenerator=t;
|
|
2
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/id/id-generator.ts"],"sourcesContent":["import { ITableIdGenerator } from \"./interface\";\n\nexport class IdGenerator implements ITableIdGenerator {\n constructor(private additionalId?: string) {}\n\n getTableId(): string {\n return `ReactUI:Table${this.additionalId ? `:${this.additionalId}` : \"\"}`;\n }\n getTableColId(args: { columnIndex: number }): string {\n return `${this.getTableId()}:Column-${args.columnIndex}`;\n }\n getTableCellId(args: { rowIndex: number; columnIndex: number }): string {\n return `${this.getTableId()}:Cell-${args.rowIndex}-${args.columnIndex}`;\n }\n getEditorId(): string {\n return `${this.getTableId()}:Editor`;\n }\n extractCellIndexFromId(id: string): [number, number] {\n const arr = id.split(\"-\");\n const rowIndex = arr[arr.length - 2];\n const columnIndex = arr[arr.length - 1];\n return [Number(rowIndex), Number(columnIndex)];\n }\n}\n"],"names":["IdGenerator","additionalId","this","prototype","getTableId","concat","getTableColId","args","columnIndex","getTableCellId","rowIndex","getEditorId","extractCellIndexFromId","id","arr","split","length","Number"],"mappings":"aAEA,IAAAA,EAAA,WACE,SAAAA,EAAoBC,GAAAC,KAAYD,aAAZA,CAAyB,CAoB/C,OAlBED,EAAAG,UAAAC,WAAA,WACE,MAAO,uBAAgBF,KAAKD,aAAe,IAAAI,OAAIH,KAAKD,cAAiB,KAEvED,EAAaG,UAAAG,cAAb,SAAcC,GACZ,MAAO,GAAAF,OAAGH,KAAKE,gCAAuBG,EAAKC,cAE7CR,EAAcG,UAAAM,eAAd,SAAeF,GACb,MAAO,GAAGF,OAAAH,KAAKE,aAAqB,UAAAC,OAAAE,EAAKG,SAAY,KAAAL,OAAAE,EAAKC,cAE5DR,EAAAG,UAAAQ,YAAA,WACE,MAAO,UAAGT,KAAKE,yBAEjBJ,EAAsBG,UAAAS,uBAAtB,SAAuBC,GACrB,IAAMC,EAAMD,EAAGE,MAAM,KACfL,EAAWI,EAAIA,EAAIE,OAAS,GAC5BR,EAAcM,EAAIA,EAAIE,OAAS,GACrC,MAAO,CAACC,OAAOP,GAAWO,OAAOT,KAEpCR,CAAD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("./id-generator.js"),n=r.createContext(null);exports.TableIdGeneratorProvider=function(r){return e.jsx(n.Provider,{value:new t.IdGenerator(r.id),children:r.children})},exports.useTableIdGenerator=function(){var e=r.useContext(n);if(!e)throw new Error("useTableIdGenerator must be used within TableIdGeneratorProvider");return e};
|
|
2
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/id/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ITableIdGenerator } from \"./interface\";\nimport { IdGenerator } from \"./id-generator\";\n\nconst TableIdContext = createContext<ITableIdGenerator | null>(null);\n\nexport function TableIdGeneratorProvider(props: {\n id?: string;\n children: React.ReactNode;\n}) {\n return (\n <TableIdContext.Provider value={new IdGenerator(props.id)}>\n {props.children}\n </TableIdContext.Provider>\n );\n}\n\nexport function useTableIdGenerator() {\n const context = useContext(TableIdContext);\n\n if (!context) {\n throw new Error(\n \"useTableIdGenerator must be used within TableIdGeneratorProvider\"\n );\n }\n\n return context;\n}\n"],"names":["TableIdContext","createContext","props","_jsx","Provider","value","IdGenerator","id","children","context","useContext","Error"],"mappings":"kGAIMA,EAAiBC,EAAAA,cAAwC,uCAEzD,SAAmCC,GAIvC,OACEC,MAACH,EAAeI,SAAS,CAAAC,MAAO,IAAIC,EAAAA,YAAYJ,EAAMK,IAAGC,SACtDN,EAAMM,UAGb,yCAGE,IAAMC,EAAUC,aAAWV,GAE3B,IAAKS,EACH,MAAM,IAAIE,MACR,oEAIJ,OAAOF,CACT"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),r=require("../../sheet/providers.js"),i=require("../../range/provider.js"),o=require("../../copy/provider.js"),u=function(e){var
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("../../edit/provider.js"),r=require("../../sheet/providers.js"),i=require("../../range/provider.js"),o=require("../../copy/provider.js"),s=require("../../id/provider.js"),u=function(e,t){var n,r=document.getElementById(t);if(r){var i=null===(n=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===n?void 0:n.set;i&&i.call(r,e);var o=new Event("input",{bubbles:!0});r.dispatchEvent(o)}};exports.KeyboardSetting=function(){var a=s.useTableIdGenerator(),d=n.useEditContext(),p=i.useRangeContext(),v=o.useCopyActionContext().copy,c=r.useColumnsContext()[p.isSelecting?p.start.colIndex:0];return t.useEffect((function(){var e=function(e){d.isEditing?"Escape"===e.key&&(e.preventDefault(),d.endEditing()):p.isSelecting&&("Enter"===e.key?(e.preventDefault(),p.moveDown()):"Escape"===e.key?(e.preventDefault(),p.reset()):"ArrowRight"===e.key?(e.preventDefault(),e.shiftKey?p.extendRight():p.moveRight()):"ArrowLeft"===e.key?(e.preventDefault(),e.shiftKey?p.extendLeft():p.moveLeft()):"ArrowUp"===e.key?(e.preventDefault(),e.shiftKey?p.extendUp():p.moveUp()):"ArrowDown"===e.key?(e.preventDefault(),e.shiftKey?p.extendDown():p.moveDown()):"F2"===e.key?(e.preventDefault(),d.startEditing()):e.ctrlKey&&"c"===e.key?(e.preventDefault(),v()):e.altKey||e.ctrlKey||!/^[a-zA-Z0-9]$/.test(e.key)?"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),d.startEditing(),setTimeout((function(){u("",a.getEditorId())}),10)):(e.preventDefault(),e.stopPropagation(),d.startEditing(),setTimeout((function(){u(e.key,a.getEditorId())}),10)))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[p,d.isEditing]),t.useEffect((function(){d.isEditing&&!c.editable&&d.endEditing()}),[d,c]),e.jsx(e.Fragment,{})};
|
|
3
3
|
//# sourceMappingURL=keyboard-setting.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),n=require("../
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("react"),n=require("../id/provider.js");function i(e){return{maxColIndex:e.maxColIndex<-1?-1:e.maxColIndex,maxRowIndex:e.maxRowIndex<-1?-1:e.maxRowIndex}}function o(e){var t=e.rowIndex,n=e.colIndex;return t<0?t=0:e.constraint.maxRowIndex<t&&(t=e.constraint.maxRowIndex),n<0?n=0:e.constraint.maxColIndex<n&&(n=e.constraint.maxColIndex),{rowIndex:t,colIndex:n}}function s(e,t){return e.rowIndex===t.rowIndex&&e.colIndex===t.colIndex}var a={UP:{deltaRow:-1,deltaCol:0},DOWN:{deltaRow:1,deltaCol:0},LEFT:{deltaRow:0,deltaCol:-1},RIGHT:{deltaRow:0,deltaCol:1}};function r(e){var t=e.index,n=e.direction,i=e.constraint,s=a[n],r=s.deltaRow,d=s.deltaCol;return o({rowIndex:t.rowIndex+r,colIndex:t.colIndex+d,constraint:i})}var d=function(t,n){switch(n.type){case"setMax":return e.__assign(e.__assign({},t),{constraint:i(n.payload)});case"startSelectRange":var a=o({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return t.isSelecting&&s(t.start,a)&&s(t.end,a)&&t.inProgress?t:e.__assign(e.__assign({},t),{isSelecting:!0,inProgress:!0,start:a,end:a});case"moveSelectRange":if(!t.isSelecting||!t.inProgress)return t;var d=o({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return s(t.end,d)?t:e.__assign(e.__assign({},t),{end:d});case"endSelectRange":return t.isSelecting&&t.inProgress?e.__assign(e.__assign({},t),{inProgress:!1}):t;case"moveUp":return t.isSelecting?s(a=r({index:t.start,direction:"UP",constraint:t.constraint}),t.start)&&s(a,t.end)?t:e.__assign(e.__assign({},t),{start:a,end:a}):t;case"moveDown":return t.isSelecting?s(a=r({index:t.start,direction:"DOWN",constraint:t.constraint}),t.start)&&s(a,t.end)?t:e.__assign(e.__assign({},t),{start:a,end:a}):t;case"moveLeft":return t.isSelecting?s(a=r({index:t.start,direction:"LEFT",constraint:t.constraint}),t.start)&&s(a,t.end)?t:e.__assign(e.__assign({},t),{start:a,end:a}):t;case"moveRight":return t.isSelecting?s(a=r({index:t.start,direction:"RIGHT",constraint:t.constraint}),t.start)&&s(a,t.end)?t:e.__assign(e.__assign({},t),{start:a,end:a}):t;case"extendUp":return t.isSelecting?s(d=r({index:t.end,direction:"UP",constraint:t.constraint}),t.end)?t:e.__assign(e.__assign({},t),{end:d}):t;case"extendDown":return t.isSelecting?s(d=r({index:t.end,direction:"DOWN",constraint:t.constraint}),t.end)?t:e.__assign(e.__assign({},t),{end:d}):t;case"extendLeft":return t.isSelecting?s(d=r({index:t.end,direction:"LEFT",constraint:t.constraint}),t.end)?t:e.__assign(e.__assign({},t),{end:d}):t;case"extendRight":return t.isSelecting?s(d=r({index:t.end,direction:"RIGHT",constraint:t.constraint}),t.end)?t:e.__assign(e.__assign({},t),{end:d}):t;case"reset":return{constraint:t.constraint,isSelecting:!1};case"setRange":return e.__assign(e.__assign({},t),{isSelecting:!0,inProgress:!1,start:n.payload.start,end:n.payload.end})}};exports.rangeReducer=d,exports.useRangeReducer=function(){var o=n.useTableIdGenerator(),s=t.useReducer(d,{constraint:i({maxColIndex:0,maxRowIndex:0}),isSelecting:!1}),a=s[0],r=s[1],c=t.useMemo((function(){return{setMax:function(e){r({type:"setMax",payload:e})},startSelectRange:function(e){r({type:"startSelectRange",payload:e})},moveSelectRange:function(e){r({type:"moveSelectRange",payload:e})},endSelectRange:function(){r({type:"endSelectRange"})},moveUp:function(){r({type:"moveUp"})},moveDown:function(){r({type:"moveDown"})},moveLeft:function(){r({type:"moveLeft"})},moveRight:function(){r({type:"moveRight"})},extendUp:function(){r({type:"extendUp"})},extendDown:function(){r({type:"extendDown"})},extendLeft:function(){r({type:"extendLeft"})},extendRight:function(){r({type:"extendRight"})},reset:function(){r({type:"reset"})},setRange:function(e){r({type:"setRange",payload:e})}}}),[]);return t.useEffect((function(){var e=function(e){var t=document.getElementById(o.getTableId()),n=e.target;n instanceof Node&&(null==t?void 0:t.contains(n))||r({type:"reset"})};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[]),{state:t.useMemo((function(){if(!a.isSelecting)return a;var t=document.getElementById(o.getTableCellId({rowIndex:a.start.rowIndex,columnIndex:a.start.colIndex})),n=document.getElementById(o.getTableCellId({rowIndex:a.end.rowIndex,columnIndex:a.end.colIndex})),i=document.getElementById(o.getTableId());if(!t||!n||!i)return r({type:"reset"}),{isSelecting:!1};var s=t.getBoundingClientRect(),d=n.getBoundingClientRect(),c=i.getBoundingClientRect(),l=c.top-i.scrollTop,g=c.left-i.scrollLeft,x={top:s.top-l,left:s.left-g,width:s.width,height:s.height},u={top:d.top-l,left:d.left-g,width:d.width,height:d.height};return{isSelecting:!0,start:e.__assign(e.__assign({},a.start),{xStart:x.left,xEnd:x.left+x.width,yStart:x.top,yEnd:x.top+x.height}),end:e.__assign(e.__assign({},a.end),{xStart:u.left,xEnd:u.left+u.width,yStart:u.top,yEnd:u.top+u.height}),rangeBox:{top:Math.min(x.top,u.top),left:Math.min(x.left,u.left),width:Math.abs(x.left-u.left)+(x.left<=u.left?u.width:x.width),height:Math.abs(x.top-u.top)+(x.top<=u.top?u.height:x.height)}}}),[a]),actions:c}};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { IdGenerator } from \"../libs\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId(state.start.rowIndex, state.start.colIndex)\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId(state.end.rowIndex, state.end.colIndex)\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop - window.scrollY,\n x: rectTable.left - tableElement.scrollLeft - window.scrollX,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","IdGenerator","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","window","scrollY","left","scrollLeft","scrollX","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { useTableIdGenerator } from \"../id\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const IdGenerator = useTableIdGenerator();\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.start.rowIndex,\n columnIndex: state.start.colIndex,\n })\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop,\n x: rectTable.left - tableElement.scrollLeft,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","IdGenerator","useTableIdGenerator","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","columnIndex","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","left","scrollLeft","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react/jsx-runtime"),t=require("react"),o=require("../lib/errors.js"),r=require("./hooks.js"),i=require("../table-property/provider.js"),s=require("../
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react/jsx-runtime"),t=require("react"),o=require("../lib/errors.js"),r=require("./hooks.js"),i=require("../table-property/provider.js"),s=require("../id/provider.js"),a=t.createContext({isSelecting:!1}),u=t.createContext({setMax:o.NoImplementeFunction,startSelectRange:o.NoImplementeFunction,moveSelectRange:o.NoImplementeFunction,endSelectRange:o.NoImplementeFunction,moveUp:o.NoImplementeFunction,moveDown:o.NoImplementeFunction,moveLeft:o.NoImplementeFunction,moveRight:o.NoImplementeFunction,extendUp:o.NoImplementeFunction,extendDown:o.NoImplementeFunction,extendLeft:o.NoImplementeFunction,extendRight:o.NoImplementeFunction,reset:o.NoImplementeFunction,setRange:o.NoImplementeFunction});function l(){return t.useContext(a)}function c(){return t.useContext(u)}function d(){var e=c().setMax,o=i.useTablePropertyStateContext(),r=o.maxDisplayRowCount,s=o.maxDisplayColCount;return t.useEffect((function(){e({maxRowIndex:r-1,maxColIndex:s-1})}),[r,s]),n.jsx(n.Fragment,{})}exports.RangeProvider=function(e){var t=e.children,o=r.useRangeReducer(),i=o.state,s=o.actions;return n.jsx(a.Provider,{value:i,children:n.jsxs(u.Provider,{value:s,children:[n.jsx(d,{}),t]})})},exports.TestRange=function(e){var o=s.useTableIdGenerator(),r=l();if(t.useEffect((function(){if(r.isSelecting){var e=document.getElementById(o.getTableCellId({rowIndex:r.end.rowIndex,columnIndex:r.end.colIndex}));e&&(e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),e.focus())}}),[r]),!r.isSelecting)return n.jsx(n.Fragment,{});var i=r.rangeBox,a=r.start,u=r.end;return a.xEnd<u.xEnd?u.xEnd:a.xEnd,a.yEnd<u.yEnd?u.yEnd:a.yEnd,n.jsx(n.Fragment,{children:n.jsx("div",{className:"absolute border border-gray-500 bg-gray-500 bg-opacity-10 ".concat(e.isCopied?"border-dashed":"border-solid"),style:{top:i.top,left:i.left,width:i.width,height:i.height,pointerEvents:"none"}})})},exports.useRangeActionContext=c,exports.useRangeContext=function(){return e.__assign(e.__assign({},l()),c())},exports.useRangeStateContext=l;
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n extendUp: NoImplementeFunction,\n extendDown: NoImplementeFunction,\n extendLeft: NoImplementeFunction,\n extendRight: NoImplementeFunction,\n reset: NoImplementeFunction,\n setRange: NoImplementeFunction,\n});\n\nexport function useRangeStateContext() {\n return useContext(RangeStateContext);\n}\n\nexport function useRangeActionContext() {\n return useContext(RangeActionContext);\n}\n\nexport function useRangeContext() {\n return { ...useRangeStateContext(), ...useRangeActionContext() };\n}\n\nfunction EffectSetMax() {\n const { setMax } = useRangeActionContext();\n const { maxDisplayRowCount, maxDisplayColCount } =\n useTablePropertyStateContext();\n\n useEffect(() => {\n setMax({\n maxRowIndex: maxDisplayRowCount - 1,\n maxColIndex: maxDisplayColCount - 1,\n });\n }, [maxDisplayRowCount, maxDisplayColCount]);\n\n return <></>;\n}\n\nexport function TestRange(props: { isCopied?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const state = useRangeStateContext();\n\n useEffect(() => {\n if (state.isSelecting) {\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n\n if (endElement) {\n endElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500 bg-opacity-10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useRangeStateContext","useContext","useRangeActionContext","EffectSetMax","_a","useTablePropertyStateContext","maxDisplayRowCount","maxDisplayColCount","useEffect","maxRowIndex","maxColIndex","_jsx","children","_b","useRangeReducer","state","actions","jsx","Provider","value","_jsxs","props","IdGenerator","useTableIdGenerator","endElement","document","getElementById","getTableCellId","rowIndex","end","columnIndex","colIndex","scrollIntoView","behavior","block","inline","focus","rangeBox","start","xEnd","yEnd","className","concat","isCopied","style","top","left","width","height","pointerEvents","__assign"],"mappings":"yPAOMA,EAAoBC,EAAAA,cAAkC,CAC1DC,aAAa,IAGTC,EAAqBF,EAAAA,cAAmC,CAC5DG,OAAQC,EAAoBA,qBAC5BC,iBAAkBD,EAAoBA,qBACtCE,gBAAiBF,EAAoBA,qBACrCG,eAAgBH,EAAoBA,qBACpCI,OAAQJ,EAAoBA,qBAC5BK,SAAUL,EAAoBA,qBAC9BM,SAAUN,EAAoBA,qBAC9BO,UAAWP,EAAoBA,qBAC/BQ,SAAUR,EAAoBA,qBAC9BS,WAAYT,EAAoBA,qBAChCU,WAAYV,EAAoBA,qBAChCW,YAAaX,EAAoBA,qBACjCY,MAAOZ,EAAoBA,qBAC3Ba,SAAUb,EAAoBA,gCAGhBc,IACd,OAAOC,EAAAA,WAAWpB,EACpB,UAEgBqB,IACd,OAAOD,EAAAA,WAAWjB,EACpB,CAMA,SAASmB,IACC,IAAAlB,EAAWiB,WACbE,EACJC,EAA4BA,+BADtBC,EAAkBF,EAAAE,mBAAEC,EAAkBH,EAAAG,mBAU9C,OAPAC,EAAAA,WAAU,WACRvB,EAAO,CACLwB,YAAaH,EAAqB,EAClCI,YAAaH,EAAqB,GAEtC,GAAG,CAACD,EAAoBC,IAEjBI,oBACT,uBAiEM,SAAwBP,GAC5B,IAAAQ,EAAQR,EAAAQ,SAIFC,EAAqBC,EAAeA,kBAAlCC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEL,EAACM,IAAApC,EAAkBqC,SAAS,CAAAC,MAAOJ,EACjCH,SAAAQ,OAACpC,EAAmBkC,SAAQ,CAACC,MAAOH,EAAOJ,SAAA,CACzCD,MAACR,EAAe,CAAA,GACfS,MAIT,oBA9EM,SAAoBS,GACxB,IAAMC,EAAcC,EAAAA,sBACdR,EAAQf,IAsBd,GApBAQ,EAAAA,WAAU,WACR,GAAIO,EAAMhC,YAAa,CACrB,IAAMyC,EAAaC,SAASC,eAC1BJ,EAAYK,eAAe,CACzBC,SAAUb,EAAMc,IAAID,SACpBE,YAAaf,EAAMc,IAAIE,YAIvBP,IACFA,EAAWQ,eAAe,CACxBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVX,EAAWY,QAEd,CACH,GAAG,CAACrB,KAECA,EAAMhC,YACT,OAAO4B,qBAGD,IAAA0B,EAAyBtB,EAAKsB,SAApBC,EAAevB,EAAKuB,MAAbT,EAAQd,MAOjC,OAJKuB,EAAMC,KAAOV,EAAIU,KAAOV,EAAIU,KAAOD,EAAMC,KACzCD,EAAME,KAAOX,EAAIW,KAAOX,EAAIW,KAAOF,EAAME,KAI5C7B,EAAAA,yBACEA,EACEM,IAAA,MAAA,CAAAwB,UAAW,6DACTC,OAAArB,EAAMsB,SAAW,gBAAkB,gBAErCC,MAAO,CACLC,IAAKR,EAASQ,IACdC,KAAMT,EAASS,KACfC,MAAOV,EAASU,MAChBC,OAAQX,EAASW,OACjBC,cAAe,WAezB,qEA/EE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYlD,KAA2BE,IACzC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../checkbox/components.js"),o=require("../cell/ui/cell.js"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("../checkbox/components.js"),o=require("../cell/ui/cell.js"),n=require("../range/provider.js"),i=require("../id/provider.js"),a=r.memo((function(r){var a=i.useTableIdGenerator(),l=n.useRangeActionContext().reset,c=JSON.parse(r.dataString),s=r.conditionalFormattingString.split(",");return e.jsxs("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(r.onClickRow?"hover:cursor-pointer":""," ").concat(r.applyRowFormatting?r.applyRowFormatting(c):""),onClick:function(e){e.preventDefault(),r.onClickRow&&(r.onClickRow(c),l())},"data-testid":c.id,children:[r.existCheckbox&&e.jsx("td",{onClick:function(e){e.stopPropagation()},children:e.jsx(t.Checkbox,{row:c})}),r.cols.map((function(t,n){var i;return e.jsx(o.TableCell,{id:a.getTableCellId({rowIndex:r.rowIndex,columnIndex:n}),row:c,isExistOnClickRow:!!r.onClickRow,cellFormatClassName:s[n],editable:null!==(i=t.editable)&&void 0!==i&&i},t.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 { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport {
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","existCheckbox","_jsx","jsx","stopPropagation","children","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"2MAiBaA,EAAMC,EAAIA,MAAC,SAAiCC,GACvD,IAAMC,EAAcC,EAAAA,sBACZC,EAAUC,gCACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,OACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAC5C,KAAAD,OAAAd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,aAEhBpB,EAAMqB,eACLC,EAAAC,IAAA,KAAA,CACEN,QAAS,SAACC,GACRA,EAAEM,iBACH,EAAAC,SAEDH,MAACI,EAAQA,SAAA,CAACrB,IAAKA,MAGlBL,EAAM2B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACER,MAACS,EAASA,UAAA,CAERX,GAAInB,EAAY+B,eAAe,CAC7BC,SAAUjC,EAAMiC,SAChBC,YAAaJ,IAEfzB,IAAKA,EACL8B,oBAAqBnC,EAAMe,WAC3BqB,oBAAqB3B,EAAsBqB,GAC3CO,SAA0B,QAAhBC,EAAAT,EAAIQ,gBAAY,IAAAC,GAAAA,GARrBT,EAAIU,UAcrB"}
|
|
@@ -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"),s=require("../pagenation/providers.js"),t=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var
|
|
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"),s=require("../pagenation/providers.js"),t=require("../pagenation/components.js"),n=require("../filter/provider.js"),l=require("../filter/components.js");require("../sort/icon.js");var d=require("../sort/provider.js"),a=require("../sheet/providers.js"),c=require("../checkbox/provider.js"),x=require("../checkbox/components.js"),u=require("../edit/provider.js"),j=require("../table-property/provider.js"),h=require("../operation/components/keyboard-setting.js"),p=require("../sheet/components.js"),g=require("../paste/provider.js"),v=require("../libs/conditional-formatting.js"),m=require("../edit/ui/editor.js"),b=require("../filter/hooks/selectedFilteringColumn/provider.js"),w=require("../range/provider.js"),q=require("../copy/provider.js"),y=require("../copy/components.js"),C=require("../id/provider.js");function k(e){var s=o.useTable(e),n=s.cols,d=s.rowMaps,a=s.pageRowIds,c=b.useFilteringColumnStateContext(),u=w.useRangeActionContext().reset,j=C.useTableIdGenerator();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:j.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 bg-white rounded-md overflow-auto",children:[r.jsx(w.TestRange,{}),r.jsx(m.Editor,{rowMaps:d,pageRowIds:a}),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]",onClick:function(e){e.stopPropagation(),u()},children:[e.checkbox&&r.jsx("th",{children:r.jsx(x.AllCheckbox,{rows:e.rows})}),n.map((function(e,o){return r.jsx(i.TableHeaderElement,{id:j.getTableColId({columnIndex:o}),col:e},e.key.toString())}))]})}),r.jsxs("tbody",{children:[!!c&&r.jsx("tr",{onClick:function(e){e.stopPropagation(),u()},children:r.jsx("td",{colSpan:n.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r.jsx(l.TableFilterForm,{})})}),0===a.length&&r.jsx("tr",{children:r.jsx("td",{colSpan:n.length,className:"py-5",children:r.jsx("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),a.map((function(o,i){return r.jsx(p.Row,{existCheckbox:!!e.checkbox,rowIndex:i,dataString:d[o].stringValue,cols:e.cols,onClickRow:e.onClickRow,applyRowFormatting:e.applyRowFormatting,conditionalFormattingString:v.generateFormattingString(d[o].data,n,e.conditionalFormattings)},o)}))]})]})]}),r.jsxs("div",{className:"mt-1",children:[r.jsx(t.DisplayRange,{}),r.jsx("div",{className:"mt-2",children:r.jsx(t.Pagenation,{})})]})]})}module.exports=function(o){var i,t,l;return r.jsx(C.TableIdGeneratorProvider,{id:o.id,children:r.jsx(n.FilterProvider,{children:r.jsx(d.SortProvider,{initialCondition:null===(i=o.initialCondition)||void 0===i?void 0:i.sort,children:r.jsx(s.PagenationProvider,{rowCount:o.rows.length,perPage:null===(l=null===(t=o.initialCondition)||void 0===t?void 0:t.pagenation)||void 0===l?void 0:l.rowCountPerPage,children:r.jsx(c.CheckboxProvider,{checkbox:o.checkbox,children:r.jsx(c.CheckboxStatusProvider,{checkboxCount:o.rows.length,children:r.jsx(a.ColumnsProvider,{cols:o.cols,errorHandler:o.errorHandler,children:r.jsx(u.EditProvider,{children:r.jsx(j.TablePropertyProvider,{children:r.jsx(w.RangeProvider,{children:r.jsxs(q.CopyProvider,{rows:o.rows,cols:o.cols,children:[r.jsx(y.CopiedMessage,{}),r.jsxs(g.PasteProvider,{rows:o.rows,cols:o.cols,onUpdateRowFunction:o.onUpdateRow,children:[r.jsx(h.KeyboardSetting,{}),r.jsx(k,e.__assign({},o))]})]})})})})})})})})})})})};
|
|
3
3
|
//# sourceMappingURL=base.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useMemo as e}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useColumnsContext as
|
|
1
|
+
import{useMemo as e}from"react";import{useEditActionContext as t}from"../edit/provider.js";import{useColumnsContext as o}from"../sheet/providers.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as r}from"../id/provider.js";function i(i,d){var u,p,a=r(),l=n(),c=l.startSelectRange,m=l.moveSelectRange,s=l.endSelectRange,v=t().startEditing,f=a.extractCellIndexFromId(i),g=f[0],x=f[1],I=o()[x],b=d[I.key],D="select"===I.type?null===(p=null===(u=I.options)||void 0===u?void 0:u.find((function(e){return e.value===b})))||void 0===p?void 0:p.label:b,j=e((function(){return I.editable?D:I.render?I.render(b,d):D}),[I.editable,D,b,d]);return{type:!I.editable&&I.render?"component":I.type,component:j,onDoubleClick:function(e){e.preventDefault(),v()},onMouseDown:function(e){setTimeout((function(){c({rowIndex:g,colIndex:x});var e=function(t){t.preventDefault(),t.stopPropagation(),s(),document.removeEventListener("mouseup",e)};document.addEventListener("mouseup",e)}),0)},onMouseEnter:function(e){e.preventDefault(),e.stopPropagation(),m({rowIndex:g,colIndex:x})}}}export{i as useCell};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport {
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/cell/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useEditActionContext } from \"../edit/provider\";\nimport { useColumnsContext } from \"../sheet/providers\";\nimport { DataObject, DataRecord, TColumnType } from \"../table/type\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function useCell(id: string, row: DataObject<DataRecord>) {\n const IdGenerator = useTableIdGenerator();\n const { startSelectRange, moveSelectRange, endSelectRange } =\n useRangeActionContext();\n const { startEditing } = useEditActionContext();\n const [rowIndex, colIndex] = IdGenerator.extractCellIndexFromId(id);\n const col = useColumnsContext()[colIndex];\n const value = row[col.key as string];\n\n const label =\n col.type === \"select\"\n ? col.options?.find((op) => op.value === value)?.label\n : value;\n\n const component = useMemo(() => {\n if (col.editable) {\n return label;\n } else {\n return col.render ? col.render(value as never, row) : label;\n }\n }, [col.editable, label, value, row]);\n\n const type: TColumnType | \"component\" =\n !col.editable && col.render ? \"component\" : col.type;\n\n const onDoubleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n startEditing();\n };\n\n /**\n * onBlurよりも先に発火するため、onBlurでendEditingを呼ぶと\n * すぐにstartEditingが呼ばれてしまうため、setTimeoutで遅延させる\n * これにより、endEditingが先に呼ばれるようになる\n */\n const onMouseDown: React.MouseEventHandler<HTMLDivElement> = (e) => {\n setTimeout(() => {\n startSelectRange({ rowIndex, colIndex });\n\n const onMouseUp = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n endSelectRange();\n document.removeEventListener(\"mouseup\", onMouseUp);\n };\n\n document.addEventListener(\"mouseup\", onMouseUp);\n }, 0);\n };\n\n const onMouseEnter: React.MouseEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n moveSelectRange({ rowIndex, colIndex });\n };\n\n return {\n type,\n component,\n onDoubleClick,\n onMouseDown,\n onMouseEnter,\n };\n}\n"],"names":["useCell","id","row","IdGenerator","useTableIdGenerator","_c","useRangeActionContext","startSelectRange","moveSelectRange","endSelectRange","startEditing","useEditActionContext","_d","extractCellIndexFromId","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_a","options","find","op","_b","component","useMemo","editable","render","onDoubleClick","e","preventDefault","onMouseDown","setTimeout","onMouseUp","stopPropagation","document","removeEventListener","addEventListener","onMouseEnter"],"mappings":"0QAOgB,SAAAA,EAAQC,EAAYC,WAC5BC,EAAcC,IACdC,EACJC,IADMC,EAAgBF,EAAAE,iBAAEC,EAAeH,EAAAG,gBAAEC,EAAcJ,EAAAI,eAEjDC,EAAiBC,iBACnBC,EAAuBT,EAAYU,uBAAuBZ,GAAzDa,EAAQF,EAAA,GAAEG,OACXC,EAAMC,IAAoBF,GAC1BG,EAAQhB,EAAIc,EAAIG,KAEhBC,EACS,WAAbJ,EAAIK,KAC6C,UAAlC,QAAXC,EAAAN,EAAIO,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGP,QAAUA,CAAb,WAAmB,IAAAQ,OAAA,EAAAA,EAAEN,MAC/CF,EAEAS,EAAYC,GAAQ,WACxB,OAAIZ,EAAIa,SACCT,EAEAJ,EAAIc,OAASd,EAAIc,OAAOZ,EAAgBhB,GAAOkB,CAE1D,GAAG,CAACJ,EAAIa,SAAUT,EAAOF,EAAOhB,IAoChC,MAAO,CACLmB,MAlCCL,EAAIa,UAAYb,EAAIc,OAAS,YAAcd,EAAIK,KAmChDM,UAASA,EACTI,cAlC6D,SAACC,GAC9DA,EAAEC,iBACFvB,GACF,EAgCEwB,YAzB2D,SAACF,GAC5DG,YAAW,WACT5B,EAAiB,CAAEO,SAAQA,EAAEC,SAAQA,IAErC,IAAMqB,EAAY,SAACJ,GACjBA,EAAEC,iBACFD,EAAEK,kBACF5B,IACA6B,SAASC,oBAAoB,UAAWH,EAC1C,EAEAE,SAASE,iBAAiB,UAAWJ,EACtC,GAAE,EACL,EAaEK,aAX4D,SAACT,GAC7DA,EAAEC,iBACFD,EAAEK,kBACF7B,EAAgB,CAAEM,SAAQA,EAAEC,SAAQA,GACtC,EASF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,Fragment as e}from"react/jsx-runtime";import{useState as r,useEffect as i}from"react";import{useCopyStateContext as o}from"./provider.js";import{
|
|
1
|
+
import{jsx as t,Fragment as e}from"react/jsx-runtime";import{useState as r,useEffect as i}from"react";import{useCopyStateContext as o}from"./provider.js";import{useTableIdGenerator as n}from"../id/provider.js";function c(){var c=n(),a=r(!1),m=a[0],p=a[1],u=o().copiedAt;if(i((function(){if(u){p(!0);var t=setTimeout((function(){p(!1)}),1e3);return function(){p(!1),clearTimeout(t)}}}),[u]),!m)return t(e,{});var d=document.getElementById(c.getTableId());if(!d)return t(e,{});var f=d.getBoundingClientRect(),s=f.right-120,l=f.bottom-50;return t("div",{className:"fixed z-[100] p-1 bg-gray-800 duration-300 pointer-events-none ".concat(m?"opacity-100":"opacity-0"),style:{top:l,left:s},children:t("p",{className:"text-white text-xs",children:"コピーしました!!!"})})}export{c as CopiedMessage};
|
|
2
2
|
//# sourceMappingURL=components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sources":["../../../../../src/table/copy/components.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useCopyStateContext } from \"./provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/copy/components.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useCopyStateContext } from \"./provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nexport function CopiedMessage() {\n const IdGenerator = useTableIdGenerator();\n const [isDisplay, setIsDisplay] = useState(false);\n const { copiedAt } = useCopyStateContext();\n\n useEffect(() => {\n if (copiedAt) {\n setIsDisplay(true);\n\n const timer = setTimeout(() => {\n setIsDisplay(false);\n }, 1000);\n\n return () => {\n setIsDisplay(false);\n clearTimeout(timer);\n };\n }\n }, [copiedAt]);\n\n if (!isDisplay) {\n return <></>;\n }\n\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!tableElement) {\n return <></>;\n }\n\n // テーブルの右下の位置を取得\n const rect = tableElement.getBoundingClientRect();\n const x = rect.right - 120;\n const y = rect.bottom - 50;\n\n return (\n <div\n className={`fixed z-[100] p-1 bg-gray-800 duration-300 pointer-events-none ${\n isDisplay ? \"opacity-100\" : \"opacity-0\"\n }`}\n style={{ top: y, left: x }}\n >\n <p className=\"text-white text-xs\">コピーしました!!!</p>\n </div>\n );\n}\n"],"names":["CopiedMessage","IdGenerator","useTableIdGenerator","_a","useState","isDisplay","setIsDisplay","copiedAt","useCopyStateContext","useEffect","timer_1","setTimeout","clearTimeout","_jsx","tableElement","document","getElementById","getTableId","rect","getBoundingClientRect","x","right","y","bottom","className","style","top","left","children"],"mappings":"2NAIgBA,IACd,IAAMC,EAAcC,IACdC,EAA4BC,GAAS,GAApCC,EAASF,EAAA,GAAEG,EAAYH,EAAA,GACtBI,EAAaC,aAiBrB,GAfAC,GAAU,WACR,GAAIF,EAAU,CACZD,GAAa,GAEb,IAAMI,EAAQC,YAAW,WACvBL,GAAa,EACd,GAAE,KAEH,OAAO,WACLA,GAAa,GACbM,aAAaF,EACf,CACD,CACH,GAAG,CAACH,KAECF,EACH,OAAOQ,QAGT,IAAMC,EAAeC,SAASC,eAAef,EAAYgB,cAEzD,IAAKH,EACH,OAAOD,QAIT,IAAMK,EAAOJ,EAAaK,wBACpBC,EAAIF,EAAKG,MAAQ,IACjBC,EAAIJ,EAAKK,OAAS,GAExB,OACEV,EAAA,MAAA,CACEW,UAAW,yEACTnB,EAAY,cAAgB,aAE9BoB,MAAO,CAAEC,IAAKJ,EAAGK,KAAMP,GAEvBQ,SAAAf,EAAA,IAAA,CAAGW,UAAU,qBAAmCI,SAAA,gBAGtD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
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"../../../icon/cancel-icon.js";function
|
|
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"../../../icon/cancel-icon.js";import{useTableIdGenerator as i}from"../../id/provider.js";function u(u){var a=i(),c=n(null);return r((function(){c.current&&c.current.focus()}),[c]),e("div",{className:"flex justify-between gap-1 w-full items-center",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[t("input",{id:a.getEditorId(),ref:c,className:"w-full py-1 px-2 bg-white text-gray-900",type:"text",value:u.value,onChange:u.onChange,onBlur:u.onBlur,onKeyUp:function(e){e.preventDefault(),"Enter"===e.key?e.target.blur():"Escape"===e.key&&(u.reset(),u.endEditing())}}),t("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){u.reset(),u.endEditing()}),300)},children:t(o,{size:16})})]})}export{u as CellInput};
|
|
3
3
|
//# sourceMappingURL=base-input.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,Fragment as e,jsxs as r}from"react/jsx-runtime";import{useEffect as o}from"react";import{useColumnsContext as i}from"../../sheet/providers.js";import{useEditStateContext as n,useEditActionContext as l}from"../provider.js";import{NumberCellInput as d}from"./number-input.js";import{SelectCellInput as
|
|
1
|
+
import{jsx as t,Fragment as e,jsxs as r}from"react/jsx-runtime";import{useEffect as o}from"react";import{useColumnsContext as i}from"../../sheet/providers.js";import{useEditStateContext as n,useEditActionContext as l}from"../provider.js";import{NumberCellInput as d}from"./number-input.js";import{SelectCellInput as p}from"./select-input.js";import{StringCellInput as s}from"./string-input.js";import{useRangeStateContext as a}from"../../range/provider.js";import{useTableIdGenerator as m}from"../../id/provider.js";function c(c){var f=m(),u=a(),g=n(),h=l(),v=i();if(o((function(){u.isSelecting&&!v[u.start.colIndex].editable&&h.endEditing()}),[g,u]),!g.isEditing)return t(e,{});if(!u.isSelecting)return t(e,{});var w=v[u.start.colIndex],I=c.rowMaps[c.pageRowIds[u.start.rowIndex]].data;if(!w.editable)return t(e,{});var x=f.getTableCellId({rowIndex:u.start.rowIndex,columnIndex:u.start.colIndex}),j=document.getElementById(x),b=null==j?void 0:j.getBoundingClientRect(),y=b?{width:b.width,height:b.height,top:b.top,left:b.left}:void 0;if(!y)return t(e,{});var B=document.getElementById(f.getTableId());if(!B)return t(e,{});var C=B.getBoundingClientRect();return y.top-=C.top-B.scrollTop,y.left-=C.left-B.scrollLeft,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:y.width,height:y.height,top:y.top-1,left:y.left},children:["string"===w.type&&t(s,{col:w,row:I}),"number"===w.type&&t(d,{col:w,row:I}),"select"===w.type&&t(p,{col:w,row:I})]})}export{c as Editor};
|
|
2
2
|
//# sourceMappingURL=editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\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 {
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../../../../src/table/edit/ui/editor.tsx"],"sourcesContent":["import { useEffect } from \"react\";\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 { DataObject, DataRecord } from \"../../table/type\";\nimport { useRangeStateContext } from \"../../range/provider\";\nimport { useTableIdGenerator } from \"../../id\";\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 IdGenerator = useTableIdGenerator();\n const range = useRangeStateContext();\n const edit = useEditStateContext();\n const editActions = useEditActionContext();\n const cols = useColumnsContext();\n\n useEffect(() => {\n if (range.isSelecting && !cols[range.start.colIndex].editable) {\n editActions.endEditing();\n }\n }, [edit, range]);\n\n if (!edit.isEditing) return <></>;\n if (!range.isSelecting) return <></>;\n\n const col = cols[range.start.colIndex];\n const row = props.rowMaps[props.pageRowIds[range.start.rowIndex]].data;\n\n if (!col.editable) return <></>;\n\n const id = IdGenerator.getTableCellId({\n rowIndex: range.start.rowIndex,\n columnIndex: range.start.colIndex,\n });\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(IdGenerator.getTableId());\n if (!tableElement) return <></>;\n const rectTable = tableElement.getBoundingClientRect();\n\n size.top -= rectTable.top - tableElement.scrollTop;\n size.left -= rectTable.left - tableElement.scrollLeft;\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","IdGenerator","useTableIdGenerator","range","useRangeStateContext","edit","useEditStateContext","editActions","useEditActionContext","cols","useColumnsContext","useEffect","isSelecting","start","colIndex","editable","endEditing","isEditing","_jsx","col","row","rowMaps","pageRowIds","rowIndex","data","id","getTableCellId","columnIndex","cellElement","document","getElementById","rect","getBoundingClientRect","size","width","height","top","left","undefined","tableElement","getTableId","rectTable","scrollTop","scrollLeft","_jsxs","className","onClick","e","preventDefault","stopPropagation","style","children","type","StringCellInput","NumberCellInput","SelectCellInput"],"mappings":"ogBAwBM,SAAUA,EAAOC,GACrB,IAAMC,EAAcC,IACdC,EAAQC,IACRC,EAAOC,IACPC,EAAcC,IACdC,EAAOC,IAQb,GANAC,GAAU,WACJR,EAAMS,cAAgBH,EAAKN,EAAMU,MAAMC,UAAUC,UACnDR,EAAYS,YAEhB,GAAG,CAACX,EAAMF,KAELE,EAAKY,UAAW,OAAOC,QAC5B,IAAKf,EAAMS,YAAa,OAAOM,QAE/B,IAAMC,EAAMV,EAAKN,EAAMU,MAAMC,UACvBM,EAAMpB,EAAMqB,QAAQrB,EAAMsB,WAAWnB,EAAMU,MAAMU,WAAWC,KAElE,IAAKL,EAAIJ,SAAU,OAAOG,QAE1B,IAAMO,EAAKxB,EAAYyB,eAAe,CACpCH,SAAUpB,EAAMU,MAAMU,SACtBI,YAAaxB,EAAMU,MAAMC,WAErBc,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,eAAe7B,EAAYuC,cACzD,IAAKD,EAAc,OAAOrB,QAC1B,IAAMuB,EAAYF,EAAaP,wBAK/B,OAHAC,EAAKG,KAAOK,EAAUL,IAAMG,EAAaG,UACzCT,EAAKI,MAAQI,EAAUJ,KAAOE,EAAaI,WAGzCC,SACEC,UAAU,0DACVC,QAAS,SAACC,GACRA,EAAEC,iBACFD,EAAEE,iBACH,EACDC,MAAO,CACLhB,MAAOD,EAAKC,MACZC,OAAQF,EAAKE,OACbC,IAAKH,EAAKG,IAAM,EAChBC,KAAMJ,EAAKI,MAGZc,SAAA,CAAa,WAAbhC,EAAIiC,MAAqBlC,EAACmC,EAAgB,CAAAlC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,EAACoC,EAAe,CAACnC,IAAKA,EAAKC,IAAKA,IAC5C,WAAbD,EAAIiC,MAAqBlC,EAACqC,EAAe,CAACpC,IAAKA,EAAKC,IAAKA,MAGhE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{__spreadArray as e}from"../../../../node_modules/tslib/tslib.es6.js";import{jsx as
|
|
2
|
+
import{__spreadArray as e}from"../../../../node_modules/tslib/tslib.es6.js";import{jsx as o,Fragment as n,jsxs as t}from"react/jsx-runtime";import{useState as r,useRef as i,useEffect as u,useMemo as l}from"react";import{useEditActionContext as c}from"../provider.js";import{CancelIcon as s}from"../../../icon/cancel-icon.js";import{SelectBox as f}from"../../../select-box/index.js";import{useTableIdGenerator as a}from"../../id/provider.js";function m(m){var d=a(),p=m.col,v=c().endEditing,w=m.row[p.key],b=r(w),j=b[0],E=b[1],g=i(null),x=i(null);u((function(){x.current&&x.current.focus()}),[x]);var y=function(e){p.editable&&p.onCellBlur(p.key,e,m.row,v)};if(!p.editable)return o(n,{});u((function(){var e=function(e){var o=g.current,n=e.target;n instanceof Node&&(null==o?void 0:o.contains(n))||(j!==w?y(j):v())};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[j,y,v,w]);var h=l((function(){return p.allowEmpty?e([{value:"",label:""===w?"-- 未選択 --":"-- 選択解除 --"}],p.options,!0):p.options}),[p.options,p.allowEmpty,w]);return t("div",{ref:g,className:"flex justify-between gap-1 w-full items-center",children:[o(f,{id:d.getEditorId(),inputRef:x,value:j,defaultIsOpen:!0,options:h,onSelect:function(e){E(e),y(e)}}),o("button",{onMouseDown:function(e){e.preventDefault(),e.stopPropagation(),setTimeout((function(){E(w),v()}),300)},children:o(s,{size:16})})]})}export{m as SelectCellInput};
|
|
3
3
|
//# sourceMappingURL=select-input.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var t=function(){function t(t){this.additionalId=t}return t.prototype.getTableId=function(){return"ReactUI:Table".concat(this.additionalId?":".concat(this.additionalId):"")},t.prototype.getTableColId=function(t){return"".concat(this.getTableId(),":Column-").concat(t.columnIndex)},t.prototype.getTableCellId=function(t){return"".concat(this.getTableId(),":Cell-").concat(t.rowIndex,"-").concat(t.columnIndex)},t.prototype.getEditorId=function(){return"".concat(this.getTableId(),":Editor")},t.prototype.extractCellIndexFromId=function(t){var n=t.split("-"),e=n[n.length-2],o=n[n.length-1];return[Number(e),Number(o)]},t}();export{t as IdGenerator};
|
|
2
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/id/id-generator.ts"],"sourcesContent":["import { ITableIdGenerator } from \"./interface\";\n\nexport class IdGenerator implements ITableIdGenerator {\n constructor(private additionalId?: string) {}\n\n getTableId(): string {\n return `ReactUI:Table${this.additionalId ? `:${this.additionalId}` : \"\"}`;\n }\n getTableColId(args: { columnIndex: number }): string {\n return `${this.getTableId()}:Column-${args.columnIndex}`;\n }\n getTableCellId(args: { rowIndex: number; columnIndex: number }): string {\n return `${this.getTableId()}:Cell-${args.rowIndex}-${args.columnIndex}`;\n }\n getEditorId(): string {\n return `${this.getTableId()}:Editor`;\n }\n extractCellIndexFromId(id: string): [number, number] {\n const arr = id.split(\"-\");\n const rowIndex = arr[arr.length - 2];\n const columnIndex = arr[arr.length - 1];\n return [Number(rowIndex), Number(columnIndex)];\n }\n}\n"],"names":["IdGenerator","additionalId","this","prototype","getTableId","concat","getTableColId","args","columnIndex","getTableCellId","rowIndex","getEditorId","extractCellIndexFromId","id","arr","split","length","Number"],"mappings":"AAEA,IAAAA,EAAA,WACE,SAAAA,EAAoBC,GAAAC,KAAYD,aAAZA,CAAyB,CAoB/C,OAlBED,EAAAG,UAAAC,WAAA,WACE,MAAO,uBAAgBF,KAAKD,aAAe,IAAAI,OAAIH,KAAKD,cAAiB,KAEvED,EAAaG,UAAAG,cAAb,SAAcC,GACZ,MAAO,GAAAF,OAAGH,KAAKE,gCAAuBG,EAAKC,cAE7CR,EAAcG,UAAAM,eAAd,SAAeF,GACb,MAAO,GAAGF,OAAAH,KAAKE,aAAqB,UAAAC,OAAAE,EAAKG,SAAY,KAAAL,OAAAE,EAAKC,cAE5DR,EAAAG,UAAAQ,YAAA,WACE,MAAO,UAAGT,KAAKE,yBAEjBJ,EAAsBG,UAAAS,uBAAtB,SAAuBC,GACrB,IAAMC,EAAMD,EAAGE,MAAM,KACfL,EAAWI,EAAIA,EAAIE,OAAS,GAC5BR,EAAcM,EAAIA,EAAIE,OAAS,GACrC,MAAO,CAACC,OAAOP,GAAWO,OAAOT,KAEpCR,CAAD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{createContext as e,useContext as t}from"react";import{IdGenerator as n}from"./id-generator.js";var o=e(null);function i(e){return r(o.Provider,{value:new n(e.id),children:e.children})}function a(){var r=t(o);if(!r)throw new Error("useTableIdGenerator must be used within TableIdGeneratorProvider");return r}export{i as TableIdGeneratorProvider,a as useTableIdGenerator};
|
|
2
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/id/provider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ITableIdGenerator } from \"./interface\";\nimport { IdGenerator } from \"./id-generator\";\n\nconst TableIdContext = createContext<ITableIdGenerator | null>(null);\n\nexport function TableIdGeneratorProvider(props: {\n id?: string;\n children: React.ReactNode;\n}) {\n return (\n <TableIdContext.Provider value={new IdGenerator(props.id)}>\n {props.children}\n </TableIdContext.Provider>\n );\n}\n\nexport function useTableIdGenerator() {\n const context = useContext(TableIdContext);\n\n if (!context) {\n throw new Error(\n \"useTableIdGenerator must be used within TableIdGeneratorProvider\"\n );\n }\n\n return context;\n}\n"],"names":["TableIdContext","createContext","TableIdGeneratorProvider","props","_jsx","Provider","value","IdGenerator","id","children","useTableIdGenerator","context","useContext","Error"],"mappings":"8IAIA,IAAMA,EAAiBC,EAAwC,MAEzD,SAAUC,EAAyBC,GAIvC,OACEC,EAACJ,EAAeK,SAAS,CAAAC,MAAO,IAAIC,EAAYJ,EAAMK,IAAGC,SACtDN,EAAMM,UAGb,UAEgBC,IACd,IAAMC,EAAUC,EAAWZ,GAE3B,IAAKW,EACH,MAAM,IAAIE,MACR,oEAIJ,OAAOF,CACT"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as
|
|
2
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useEffect as r}from"react";import{useEditContext as n}from"../../edit/provider.js";import{useColumnsContext as i}from"../../sheet/providers.js";import{useRangeContext as o}from"../../range/provider.js";import{useCopyActionContext as p}from"../../copy/provider.js";import{useTableIdGenerator as a}from"../../id/provider.js";var d=function(e,t){var r,n=document.getElementById(t);if(n){var i=null===(r=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"value"))||void 0===r?void 0:r.set;i&&i.call(n,e);var o=new Event("input",{bubbles:!0});n.dispatchEvent(o)}};function s(){var s=a(),v=n(),f=o(),u=p().copy,c=i()[f.isSelecting?f.start.colIndex:0];return r((function(){var e=function(e){v.isEditing?"Escape"===e.key&&(e.preventDefault(),v.endEditing()):f.isSelecting&&("Enter"===e.key?(e.preventDefault(),f.moveDown()):"Escape"===e.key?(e.preventDefault(),f.reset()):"ArrowRight"===e.key?(e.preventDefault(),e.shiftKey?f.extendRight():f.moveRight()):"ArrowLeft"===e.key?(e.preventDefault(),e.shiftKey?f.extendLeft():f.moveLeft()):"ArrowUp"===e.key?(e.preventDefault(),e.shiftKey?f.extendUp():f.moveUp()):"ArrowDown"===e.key?(e.preventDefault(),e.shiftKey?f.extendDown():f.moveDown()):"F2"===e.key?(e.preventDefault(),v.startEditing()):e.ctrlKey&&"c"===e.key?(e.preventDefault(),u()):e.altKey||e.ctrlKey||!/^[a-zA-Z0-9]$/.test(e.key)?"Backspace"!==e.key&&"Delete"!==e.key||(e.preventDefault(),e.stopPropagation(),v.startEditing(),setTimeout((function(){d("",s.getEditorId())}),10)):(e.preventDefault(),e.stopPropagation(),v.startEditing(),setTimeout((function(){d(e.key,s.getEditorId())}),10)))};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f,v.isEditing]),r((function(){v.isEditing&&!c.editable&&v.endEditing()}),[v,c]),e(t,{})}export{s as KeyboardSetting};
|
|
3
3
|
//# sourceMappingURL=keyboard-setting.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useMemo as n,useEffect as o}from"react";import{
|
|
1
|
+
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useMemo as n,useEffect as o}from"react";import{useTableIdGenerator as r}from"../id/provider.js";function i(e){return{maxColIndex:e.maxColIndex<-1?-1:e.maxColIndex,maxRowIndex:e.maxRowIndex<-1?-1:e.maxRowIndex}}function d(e){var t=e.rowIndex,n=e.colIndex;return t<0?t=0:e.constraint.maxRowIndex<t&&(t=e.constraint.maxRowIndex),n<0?n=0:e.constraint.maxColIndex<n&&(n=e.constraint.maxColIndex),{rowIndex:t,colIndex:n}}function a(e,t){return e.rowIndex===t.rowIndex&&e.colIndex===t.colIndex}var c={UP:{deltaRow:-1,deltaCol:0},DOWN:{deltaRow:1,deltaCol:0},LEFT:{deltaRow:0,deltaCol:-1},RIGHT:{deltaRow:0,deltaCol:1}};function s(e){var t=e.index,n=e.direction,o=e.constraint,r=c[n],i=r.deltaRow,a=r.deltaCol;return d({rowIndex:t.rowIndex+i,colIndex:t.colIndex+a,constraint:o})}var l=function(t,n){switch(n.type){case"setMax":return e(e({},t),{constraint:i(n.payload)});case"startSelectRange":var o=d({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return t.isSelecting&&a(t.start,o)&&a(t.end,o)&&t.inProgress?t:e(e({},t),{isSelecting:!0,inProgress:!0,start:o,end:o});case"moveSelectRange":if(!t.isSelecting||!t.inProgress)return t;var r=d({rowIndex:n.payload.rowIndex,colIndex:n.payload.colIndex,constraint:t.constraint});return a(t.end,r)?t:e(e({},t),{end:r});case"endSelectRange":return t.isSelecting&&t.inProgress?e(e({},t),{inProgress:!1}):t;case"moveUp":return t.isSelecting?a(o=s({index:t.start,direction:"UP",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveDown":return t.isSelecting?a(o=s({index:t.start,direction:"DOWN",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveLeft":return t.isSelecting?a(o=s({index:t.start,direction:"LEFT",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"moveRight":return t.isSelecting?a(o=s({index:t.start,direction:"RIGHT",constraint:t.constraint}),t.start)&&a(o,t.end)?t:e(e({},t),{start:o,end:o}):t;case"extendUp":return t.isSelecting?a(r=s({index:t.end,direction:"UP",constraint:t.constraint}),t.end)?t:e(e({},t),{end:r}):t;case"extendDown":return t.isSelecting?a(r=s({index:t.end,direction:"DOWN",constraint:t.constraint}),t.end)?t:e(e({},t),{end:r}):t;case"extendLeft":return t.isSelecting?a(r=s({index:t.end,direction:"LEFT",constraint:t.constraint}),t.end)?t:e(e({},t),{end:r}):t;case"extendRight":return t.isSelecting?a(r=s({index:t.end,direction:"RIGHT",constraint:t.constraint}),t.end)?t:e(e({},t),{end:r}):t;case"reset":return{constraint:t.constraint,isSelecting:!1};case"setRange":return e(e({},t),{isSelecting:!0,inProgress:!1,start:n.payload.start,end:n.payload.end})}};function x(){var d=r(),a=t(l,{constraint:i({maxColIndex:0,maxRowIndex:0}),isSelecting:!1}),c=a[0],s=a[1],x=n((function(){return{setMax:function(e){s({type:"setMax",payload:e})},startSelectRange:function(e){s({type:"startSelectRange",payload:e})},moveSelectRange:function(e){s({type:"moveSelectRange",payload:e})},endSelectRange:function(){s({type:"endSelectRange"})},moveUp:function(){s({type:"moveUp"})},moveDown:function(){s({type:"moveDown"})},moveLeft:function(){s({type:"moveLeft"})},moveRight:function(){s({type:"moveRight"})},extendUp:function(){s({type:"extendUp"})},extendDown:function(){s({type:"extendDown"})},extendLeft:function(){s({type:"extendLeft"})},extendRight:function(){s({type:"extendRight"})},reset:function(){s({type:"reset"})},setRange:function(e){s({type:"setRange",payload:e})}}}),[]);return o((function(){var e=function(e){var t=document.getElementById(d.getTableId()),n=e.target;n instanceof Node&&(null==t?void 0:t.contains(n))||s({type:"reset"})};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[]),{state:n((function(){if(!c.isSelecting)return c;var t=document.getElementById(d.getTableCellId({rowIndex:c.start.rowIndex,columnIndex:c.start.colIndex})),n=document.getElementById(d.getTableCellId({rowIndex:c.end.rowIndex,columnIndex:c.end.colIndex})),o=document.getElementById(d.getTableId());if(!t||!n||!o)return s({type:"reset"}),{isSelecting:!1};var r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=o.getBoundingClientRect(),l=a.top-o.scrollTop,x=a.left-o.scrollLeft,g={top:r.top-l,left:r.left-x,width:r.width,height:r.height},u={top:i.top-l,left:i.left-x,width:i.width,height:i.height};return{isSelecting:!0,start:e(e({},c.start),{xStart:g.left,xEnd:g.left+g.width,yStart:g.top,yEnd:g.top+g.height}),end:e(e({},c.end),{xStart:u.left,xEnd:u.left+u.width,yStart:u.top,yEnd:u.top+u.height}),rangeBox:{top:Math.min(g.top,u.top),left:Math.min(g.left,u.left),width:Math.abs(g.left-u.left)+(g.left<=u.left?u.width:g.width),height:Math.abs(g.top-u.top)+(g.top<=u.top?u.height:g.height)}}}),[c]),actions:x}}export{l as rangeReducer,x as useRangeReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { IdGenerator } from \"../libs\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId(state.start.rowIndex, state.start.colIndex)\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId(state.end.rowIndex, state.end.colIndex)\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop - window.scrollY,\n x: rectTable.left - tableElement.scrollLeft - window.scrollX,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","useRangeReducer","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","IdGenerator","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","window","scrollY","left","scrollLeft","scrollX","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { useTableIdGenerator } from \"../id\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const IdGenerator = useTableIdGenerator();\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.start.rowIndex,\n columnIndex: state.start.colIndex,\n })\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop,\n x: rectTable.left - tableElement.scrollLeft,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","useRangeReducer","IdGenerator","useTableIdGenerator","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","columnIndex","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","left","scrollLeft","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{createContext as o,useContext as i,useEffect as d}from"react";import{NoImplementeFunction as a}from"../lib/errors.js";import{useRangeReducer as s}from"./hooks.js";import{useTablePropertyStateContext as l}from"../table-property/provider.js";import{
|
|
1
|
+
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as t,jsxs as n,Fragment as r}from"react/jsx-runtime";import{createContext as o,useContext as i,useEffect as d}from"react";import{NoImplementeFunction as a}from"../lib/errors.js";import{useRangeReducer as s}from"./hooks.js";import{useTablePropertyStateContext as l}from"../table-property/provider.js";import{useTableIdGenerator as c}from"../id/provider.js";var m=o({isSelecting:!1}),u=o({setMax:a,startSelectRange:a,moveSelectRange:a,endSelectRange:a,moveUp:a,moveDown:a,moveLeft:a,moveRight:a,extendUp:a,extendDown:a,extendLeft:a,extendRight:a,reset:a,setRange:a});function x(){return i(m)}function f(){return i(u)}function p(){return e(e({},x()),f())}function v(){var e=f().setMax,n=l(),o=n.maxDisplayRowCount,i=n.maxDisplayColCount;return d((function(){e({maxRowIndex:o-1,maxColIndex:i-1})}),[o,i]),t(r,{})}function g(e){var n=c(),o=x();if(d((function(){if(o.isSelecting){var e=document.getElementById(n.getTableCellId({rowIndex:o.end.rowIndex,columnIndex:o.end.colIndex}));e&&(e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"}),e.focus())}}),[o]),!o.isSelecting)return t(r,{});var i=o.rangeBox,a=o.start,s=o.end;return a.xEnd<s.xEnd?s.xEnd:a.xEnd,a.yEnd<s.yEnd?s.yEnd:a.yEnd,t(r,{children:t("div",{className:"absolute border border-gray-500 bg-gray-500 bg-opacity-10 ".concat(e.isCopied?"border-dashed":"border-solid"),style:{top:i.top,left:i.left,width:i.width,height:i.height,pointerEvents:"none"}})})}function h(e){var r=e.children,o=s(),i=o.state,d=o.actions;return t(m.Provider,{value:i,children:n(u.Provider,{value:d,children:[t(v,{}),r]})})}export{h as RangeProvider,g as TestRange,f as useRangeActionContext,p as useRangeContext,x as useRangeStateContext};
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport {
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n extendUp: NoImplementeFunction,\n extendDown: NoImplementeFunction,\n extendLeft: NoImplementeFunction,\n extendRight: NoImplementeFunction,\n reset: NoImplementeFunction,\n setRange: NoImplementeFunction,\n});\n\nexport function useRangeStateContext() {\n return useContext(RangeStateContext);\n}\n\nexport function useRangeActionContext() {\n return useContext(RangeActionContext);\n}\n\nexport function useRangeContext() {\n return { ...useRangeStateContext(), ...useRangeActionContext() };\n}\n\nfunction EffectSetMax() {\n const { setMax } = useRangeActionContext();\n const { maxDisplayRowCount, maxDisplayColCount } =\n useTablePropertyStateContext();\n\n useEffect(() => {\n setMax({\n maxRowIndex: maxDisplayRowCount - 1,\n maxColIndex: maxDisplayColCount - 1,\n });\n }, [maxDisplayRowCount, maxDisplayColCount]);\n\n return <></>;\n}\n\nexport function TestRange(props: { isCopied?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const state = useRangeStateContext();\n\n useEffect(() => {\n if (state.isSelecting) {\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n\n if (endElement) {\n endElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500 bg-opacity-10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","extendUp","extendDown","extendLeft","extendRight","reset","setRange","useRangeStateContext","useContext","useRangeActionContext","useRangeContext","__assign","EffectSetMax","_a","useTablePropertyStateContext","maxDisplayRowCount","maxDisplayColCount","useEffect","maxRowIndex","maxColIndex","_jsx","TestRange","props","IdGenerator","useTableIdGenerator","state","endElement","document","getElementById","getTableCellId","rowIndex","end","columnIndex","colIndex","scrollIntoView","behavior","block","inline","focus","rangeBox","start","xEnd","yEnd","className","concat","isCopied","style","top","left","width","height","pointerEvents","RangeProvider","children","_b","useRangeReducer","actions","Provider","value","_jsxs"],"mappings":"mbAOA,IAAMA,EAAoBC,EAAkC,CAC1DC,aAAa,IAGTC,EAAqBF,EAAmC,CAC5DG,OAAQC,EACRC,iBAAkBD,EAClBE,gBAAiBF,EACjBG,eAAgBH,EAChBI,OAAQJ,EACRK,SAAUL,EACVM,SAAUN,EACVO,UAAWP,EACXQ,SAAUR,EACVS,WAAYT,EACZU,WAAYV,EACZW,YAAaX,EACbY,MAAOZ,EACPa,SAAUb,aAGIc,IACd,OAAOC,EAAWpB,EACpB,UAEgBqB,IACd,OAAOD,EAAWjB,EACpB,UAEgBmB,IACd,OAAAC,EAAAA,EAAA,CAAA,EAAYJ,KAA2BE,IACzC,CAEA,SAASG,IACC,IAAApB,EAAWiB,WACbI,EACJC,IADMC,EAAkBF,EAAAE,mBAAEC,EAAkBH,EAAAG,mBAU9C,OAPAC,GAAU,WACRzB,EAAO,CACL0B,YAAaH,EAAqB,EAClCI,YAAaH,EAAqB,GAEtC,GAAG,CAACD,EAAoBC,IAEjBI,OACT,CAEM,SAAUC,EAAUC,GACxB,IAAMC,EAAcC,IACdC,EAAQlB,IAsBd,GApBAU,GAAU,WACR,GAAIQ,EAAMnC,YAAa,CACrB,IAAMoC,EAAaC,SAASC,eAC1BL,EAAYM,eAAe,CACzBC,SAAUL,EAAMM,IAAID,SACpBE,YAAaP,EAAMM,IAAIE,YAIvBP,IACFA,EAAWQ,eAAe,CACxBC,SAAU,SACVC,MAAO,UACPC,OAAQ,YAEVX,EAAWY,QAEd,CACH,GAAG,CAACb,KAECA,EAAMnC,YACT,OAAO8B,QAGD,IAAAmB,EAAyBd,EAAKc,SAApBC,EAAef,EAAKe,MAAbT,EAAQN,MAOjC,OAJKe,EAAMC,KAAOV,EAAIU,KAAOV,EAAIU,KAAOD,EAAMC,KACzCD,EAAME,KAAOX,EAAIW,KAAOX,EAAIW,KAAOF,EAAME,KAI5CtB,cACEA,EACE,MAAA,CAAAuB,UAAW,6DACTC,OAAAtB,EAAMuB,SAAW,gBAAkB,gBAErCC,MAAO,CACLC,IAAKR,EAASQ,IACdC,KAAMT,EAASS,KACfC,MAAOV,EAASU,MAChBC,OAAQX,EAASW,OACjBC,cAAe,WAezB,CAEM,SAAUC,EAAcvC,GAC5B,IAAAwC,EAAQxC,EAAAwC,SAIFC,EAAqBC,IAAnB9B,EAAK6B,EAAA7B,MAAE+B,EAAOF,EAAAE,QAEtB,OACEpC,EAAChC,EAAkBqE,SAAS,CAAAC,MAAOjC,EACjC4B,SAAAM,EAACpE,EAAmBkE,SAAQ,CAACC,MAAOF,EAAOH,SAAA,CACzCjC,EAACR,EAAe,CAAA,GACfyC,MAIT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{Checkbox as e}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{
|
|
1
|
+
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{memo as t}from"react";import{Checkbox as e}from"../checkbox/components.js";import{TableCell as i}from"../cell/ui/cell.js";import{useRangeActionContext as n}from"../range/provider.js";import{useTableIdGenerator as a}from"../id/provider.js";var l=t((function(t){var l=a(),c=n().reset,p=JSON.parse(t.dataString),m=t.conditionalFormattingString.split(",");return r("tr",{className:"relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ".concat(t.onClickRow?"hover:cursor-pointer":""," ").concat(t.applyRowFormatting?t.applyRowFormatting(p):""),onClick:function(r){r.preventDefault(),t.onClickRow&&(t.onClickRow(p),c())},"data-testid":p.id,children:[t.existCheckbox&&o("td",{onClick:function(r){r.stopPropagation()},children:o(e,{row:p})}),t.cols.map((function(r,e){var n;return o(i,{id:l.getTableCellId({rowIndex:t.rowIndex,columnIndex:e}),row:p,isExistOnClickRow:!!t.onClickRow,cellFormatClassName:m[e],editable:null!==(n=r.editable)&&void 0!==n&&n},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 { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport {
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../../../../../src/table/sheet/components.tsx"],"sourcesContent":["import { memo } from \"react\";\nimport { DataRecord, TTableColumn } from \"../table/type\";\nimport { Checkbox } from \"../checkbox/components\";\nimport { TableCell } from \"../cell/ui/cell\";\nimport { useRangeActionContext } from \"../range/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\ninterface TPropsRow<T extends DataRecord> {\n dataString: string;\n cols: TTableColumn<T>[];\n existCheckbox?: boolean;\n rowIndex: number;\n conditionalFormattingString: string;\n onClickRow?: (row: any) => void;\n applyRowFormatting?: (row: any) => string;\n}\n\nexport const Row = memo(function R<T extends DataRecord>(props: TPropsRow<T>) {\n const IdGenerator = useTableIdGenerator();\n const { reset } = useRangeActionContext();\n const row = JSON.parse(props.dataString);\n const conditionalFormatting = props.conditionalFormattingString.split(\",\");\n\n return (\n <tr\n className={`relative border border-gray-200 after:absolute after:w-full after:h-full after:top-0 after:left-0 after:pointer-events-none after:hover:bg-gray-500/10 ${\n !!props.onClickRow ? \"hover:cursor-pointer\" : \"\"\n } ${props.applyRowFormatting ? props.applyRowFormatting(row) : \"\"}`}\n onClick={(e) => {\n e.preventDefault();\n\n if (!!props.onClickRow) {\n props.onClickRow(row);\n reset();\n }\n }}\n data-testid={row.id}\n >\n {props.existCheckbox && (\n <td\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Checkbox row={row} />\n </td>\n )}\n {props.cols.map((col, j) => {\n return (\n <TableCell\n key={col.key as string}\n id={IdGenerator.getTableCellId({\n rowIndex: props.rowIndex,\n columnIndex: j,\n })}\n row={row}\n isExistOnClickRow={!!props.onClickRow}\n cellFormatClassName={conditionalFormatting[j]}\n editable={col.editable ?? false}\n />\n );\n })}\n </tr>\n );\n});\n"],"names":["Row","memo","props","IdGenerator","useTableIdGenerator","reset","useRangeActionContext","row","JSON","parse","dataString","conditionalFormatting","conditionalFormattingString","split","_jsxs","className","concat","onClickRow","applyRowFormatting","onClick","e","preventDefault","id","existCheckbox","_jsx","stopPropagation","children","Checkbox","cols","map","col","j","TableCell","getTableCellId","rowIndex","columnIndex","isExistOnClickRow","cellFormatClassName","editable","_a","key"],"mappings":"4SAiBaA,EAAMC,GAAK,SAAiCC,GACvD,IAAMC,EAAcC,IACZC,EAAUC,UACZC,EAAMC,KAAKC,MAAMP,EAAMQ,YACvBC,EAAwBT,EAAMU,4BAA4BC,MAAM,KAEtE,OACEC,EACE,KAAA,CAAAC,UAAW,0JACTC,OAAEd,EAAMe,WAAa,uBAAyB,GAC5C,KAAAD,OAAAd,EAAMgB,mBAAqBhB,EAAMgB,mBAAmBX,GAAO,IAC/DY,QAAS,SAACC,GACRA,EAAEC,iBAEInB,EAAMe,aACVf,EAAMe,WAAWV,GACjBF,IAEH,EACY,cAAAE,EAAIe,aAEhBpB,EAAMqB,eACLC,EAAA,KAAA,CACEL,QAAS,SAACC,GACRA,EAAEK,iBACH,EAAAC,SAEDF,EAACG,EAAQ,CAACpB,IAAKA,MAGlBL,EAAM0B,KAAKC,KAAI,SAACC,EAAKC,SACpB,OACEP,EAACQ,EAAS,CAERV,GAAInB,EAAY8B,eAAe,CAC7BC,SAAUhC,EAAMgC,SAChBC,YAAaJ,IAEfxB,IAAKA,EACL6B,oBAAqBlC,EAAMe,WAC3BoB,oBAAqB1B,EAAsBoB,GAC3CO,SAA0B,QAAhBC,EAAAT,EAAIQ,gBAAY,IAAAC,GAAAA,GARrBT,EAAIU,UAcrB"}
|
|
@@ -1,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
|
|
2
|
+
import{__assign as o}from"../../../node_modules/tslib/tslib.es6.js";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useTable as i}from"./hook.js";import{TableHeaderElement as t}from"../header/header.js";import{PagenationProvider as n}from"../pagenation/providers.js";import{DisplayRange as l,Pagenation as d}from"../pagenation/components.js";import{FilterProvider as s}from"../filter/provider.js";import{TableFilterRemoveButton as c,TableFilterForm as a}from"../filter/components.js";import"../sort/icon.js";import{SortProvider as m}from"../sort/provider.js";import{ColumnsProvider as p}from"../sheet/providers.js";import{CheckboxProvider as h,CheckboxStatusProvider as f}from"../checkbox/provider.js";import{AllCheckbox as g}from"../checkbox/components.js";import{EditProvider as u}from"../edit/provider.js";import{TablePropertyProvider as v}from"../table-property/provider.js";import{KeyboardSetting as w}from"../operation/components/keyboard-setting.js";import{Row as b}from"../sheet/components.js";import{PasteProvider as j}from"../paste/provider.js";import{generateFormattingString as x}from"../libs/conditional-formatting.js";import{Editor as y}from"../edit/ui/editor.js";import{useFilteringColumnStateContext as k}from"../filter/hooks/selectedFilteringColumn/provider.js";import{RangeProvider as C,useRangeActionContext as N,TestRange as R}from"../range/provider.js";import{CopyProvider as F}from"../copy/provider.js";import{CopiedMessage as I}from"../copy/components.js";import{TableIdGeneratorProvider as P,useTableIdGenerator as S}from"../id/provider.js";function T(i){var t,l,d;return r(P,{id:i.id,children:r(s,{children:r(m,{initialCondition:null===(t=i.initialCondition)||void 0===t?void 0:t.sort,children:r(n,{rowCount:i.rows.length,perPage:null===(d=null===(l=i.initialCondition)||void 0===l?void 0:l.pagenation)||void 0===d?void 0:d.rowCountPerPage,children:r(h,{checkbox:i.checkbox,children:r(f,{checkboxCount:i.rows.length,children:r(p,{cols:i.cols,errorHandler:i.errorHandler,children:r(u,{children:r(v,{children:r(C,{children:e(F,{rows:i.rows,cols:i.cols,children:[r(I,{}),e(j,{rows:i.rows,cols:i.cols,onUpdateRowFunction:i.onUpdateRow,children:[r(w,{}),r(z,o({},i))]})]})})})})})})})})})})})}function z(o){var n=i(o),s=n.cols,m=n.rowMaps,p=n.pageRowIds,h=k(),f=N().reset,u=S();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:u.getTableId(),className:"relative h-full max-w-full max-h-[80vh] border border-gray-200 bg-white rounded-md overflow-auto",children:[r(R,{}),r(y,{rowMaps:m,pageRowIds:p}),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]",onClick:function(o){o.stopPropagation(),f()},children:[o.checkbox&&r("th",{children:r(g,{rows:o.rows})}),s.map((function(o,e){return r(t,{id:u.getTableColId({columnIndex:e}),col:o},o.key.toString())}))]})}),e("tbody",{children:[!!h&&r("tr",{onClick:function(o){o.stopPropagation(),f()},children:r("td",{colSpan:s.length,className:"sticky top-8 left-0 bg-gray-300 w-full shadow-lg rounded-b-2xl z-20 p-0 overflow-hidden",children:r(a,{})})}),0===p.length&&r("tr",{children:r("td",{colSpan:s.length,className:"py-5",children:r("p",{className:"text-center font-bold text-lg",children:"NO DATA"})})}),p.map((function(e,i){return r(b,{existCheckbox:!!o.checkbox,rowIndex:i,dataString:m[e].stringValue,cols:o.cols,onClickRow:o.onClickRow,applyRowFormatting:o.applyRowFormatting,conditionalFormattingString:x(m[e].data,s,o.conditionalFormattings)},e)}))]})]})]}),e("div",{className:"mt-1",children:[r(l,{}),r("div",{className:"mt-2",children:r(d,{})})]})]})}export{T as default};
|
|
3
3
|
//# sourceMappingURL=base.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ type TConditionalFormatting<T extends DataRecord> = {
|
|
|
98
98
|
};
|
|
99
99
|
type TailwindCssStyle = string;
|
|
100
100
|
type TPropsTable<T extends DataRecord> = {
|
|
101
|
+
id?: string;
|
|
101
102
|
cols: TTableColumn<T>[];
|
|
102
103
|
rows: DataObject<T>[];
|
|
103
104
|
onClickRow?: (row: DataObject<T>) => void;
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var t={getTableId:function(t){return"react-ui:table".concat((null==t?void 0:t.id)?"-".concat(t.id):"")},getTableCellId:function(t,e){return"table-cell-".concat(t,"-").concat(e)},getCellIndex:function(t){var e=t.split("-");e[0],e[1];var n=e[2],c=e[3];return[Number(n),Number(c)]},getTableColId:function(t){return"table-col-".concat(t)}};exports.IdGenerator=t;
|
|
2
|
-
//# sourceMappingURL=id-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableId: (option?: { id?: string }) =>\n `react-ui:table${option?.id ? `-${option.id}` : \"\"}`,\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableId","option","concat","id","getTableCellId","rowIndex","columnIndex","getCellIndex","_a","split","Number","getTableColId"],"mappings":"aAAa,IAAAA,EAAc,CACzBC,WAAY,SAACC,GACX,MAAA,iBAAAC,QAAiBD,aAAA,EAAAA,EAAQE,IAAK,IAAAD,OAAID,EAAOE,IAAO,GAAI,EACtDC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcJ,OAAAG,EAAY,KAAAH,OAAAI,EAAa,EACzCC,aAAc,SAACJ,GACP,IAAAK,EAAkCL,EAAGM,MAAM,eAAlC,IAAAJ,OAAUC,OACzB,MAAO,CAACI,OAAOL,GAAWK,OAAOJ,GAClC,EACDK,cAAe,SAACL,GAAwB,MAAA,aAAaJ,OAAAI,EAAa"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var t={getTableId:function(t){return"react-ui:table".concat((null==t?void 0:t.id)?"-".concat(t.id):"")},getTableCellId:function(t,e){return"table-cell-".concat(t,"-").concat(e)},getCellIndex:function(t){var e=t.split("-");e[0],e[1];var n=e[2],c=e[3];return[Number(n),Number(c)]},getTableColId:function(t){return"table-col-".concat(t)}};export{t as IdGenerator};
|
|
2
|
-
//# sourceMappingURL=id-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"id-generator.js","sources":["../../../../../src/table/libs/id-generator.ts"],"sourcesContent":["export const IdGenerator = {\n getTableId: (option?: { id?: string }) =>\n `react-ui:table${option?.id ? `-${option.id}` : \"\"}`,\n getTableCellId: (rowIndex: number, columnIndex: number) =>\n `table-cell-${rowIndex}-${columnIndex}`,\n getCellIndex: (id: string) => {\n const [_t, _c, rowIndex, columnIndex] = id.split(\"-\");\n return [Number(rowIndex), Number(columnIndex)];\n },\n getTableColId: (columnIndex: number) => `table-col-${columnIndex}`,\n};\n"],"names":["IdGenerator","getTableId","option","concat","id","getTableCellId","rowIndex","columnIndex","getCellIndex","_a","split","Number","getTableColId"],"mappings":"AAAa,IAAAA,EAAc,CACzBC,WAAY,SAACC,GACX,MAAA,iBAAAC,QAAiBD,aAAA,EAAAA,EAAQE,IAAK,IAAAD,OAAID,EAAOE,IAAO,GAAI,EACtDC,eAAgB,SAACC,EAAkBC,GACjC,MAAA,cAAcJ,OAAAG,EAAY,KAAAH,OAAAI,EAAa,EACzCC,aAAc,SAACJ,GACP,IAAAK,EAAkCL,EAAGM,MAAM,eAAlC,IAAAJ,OAAUC,OACzB,MAAO,CAACI,OAAOL,GAAWK,OAAOJ,GAClC,EACDK,cAAe,SAACL,GAAwB,MAAA,aAAaJ,OAAAI,EAAa"}
|