@teppen/react-ui 1.8.6 → 1.8.8
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/search-bar/condition-search-bar/condition-list.js +1 -1
- package/dist/cjs/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/cjs/src/select-box/options-window/component.js +1 -1
- package/dist/cjs/src/select-box/options-window/component.js.map +1 -1
- package/dist/cjs/src/share/search-operator/constant.js +1 -1
- package/dist/cjs/src/share/search-operator/constant.js.map +1 -1
- 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/hooks.js +1 -1
- package/dist/cjs/src/table/copy/hooks.js.map +1 -1
- package/dist/cjs/src/table/edit/ui/base-input.js +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js +1 -1
- package/dist/cjs/src/table/filter-v2/hook.js.map +1 -1
- package/dist/cjs/src/table/header/header-v2.js +1 -1
- package/dist/cjs/src/table/header/header-v2.js.map +1 -1
- package/dist/cjs/src/table/libs/generate-validate-function.js +1 -1
- package/dist/cjs/src/table/libs/generate-validate-function.js.map +1 -1
- 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/table/hook.js.map +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/condition-list.js +1 -1
- package/dist/esm/src/search-bar/condition-search-bar/input-form.js +1 -1
- package/dist/esm/src/select-box/options-window/component.js +1 -1
- package/dist/esm/src/select-box/options-window/component.js.map +1 -1
- package/dist/esm/src/share/search-operator/constant.js +1 -1
- package/dist/esm/src/share/search-operator/constant.js.map +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/hooks.js +1 -1
- package/dist/esm/src/table/copy/hooks.js.map +1 -1
- package/dist/esm/src/table/edit/ui/base-input.js +1 -1
- package/dist/esm/src/table/filter-v2/hook.js +1 -1
- package/dist/esm/src/table/filter-v2/hook.js.map +1 -1
- package/dist/esm/src/table/header/header-v2.js +1 -1
- package/dist/esm/src/table/header/header-v2.js.map +1 -1
- package/dist/esm/src/table/libs/generate-validate-function.js +1 -1
- package/dist/esm/src/table/libs/generate-validate-function.js.map +1 -1
- 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/table/hook.js.map +1 -1
- package/dist/index.d.ts +22 -5
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react"),t=require("../id/provider.js");function o(e){return{maxColIndex:e.maxColIndex<-1?-1:e.maxColIndex,maxRowIndex:e.maxRowIndex<-1?-1:e.maxRowIndex}}function s(e){var n=e.rowIndex,t=e.colIndex;return n<0?n=0:e.constraint.maxRowIndex<n&&(n=e.constraint.maxRowIndex),t<0?t=0:e.constraint.maxColIndex<t&&(t=e.constraint.maxColIndex),{rowIndex:n,colIndex:t}}function i(e,n){return e.rowIndex===n.rowIndex&&e.colIndex===n.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 n=e.index,t=e.direction,o=e.constraint,i=a[t],r=i.deltaRow,d=i.deltaCol;return s({rowIndex:n.rowIndex+r,colIndex:n.colIndex+d,constraint:o})}var d=function(n,t){switch(t.type){case"setMax":return e.__assign(e.__assign({},n),{constraint:o(t.payload)});case"startSelectRange":var a=s({rowIndex:t.payload.rowIndex,colIndex:t.payload.colIndex,constraint:n.constraint});return n.isSelecting&&i(n.start,a)&&i(n.end,a)&&n.inProgress?n:e.__assign(e.__assign({},n),{isSelecting:!0,inProgress:!0,start:a,end:a});case"moveSelectRange":if(!n.isSelecting||!n.inProgress)return n;var d=s({rowIndex:t.payload.rowIndex,colIndex:t.payload.colIndex,constraint:n.constraint});return i(n.end,d)?n:e.__assign(e.__assign({},n),{end:d});case"endSelectRange":return n.isSelecting&&n.inProgress?e.__assign(e.__assign({},n),{inProgress:!1}):n;case"moveUp":return n.isSelecting?i(a=r({index:n.start,direction:"UP",constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveDown":return n.isSelecting?i(a=r({index:n.start,direction:"DOWN",constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveLeft":return n.isSelecting?i(a=r({index:n.start,direction:"LEFT",constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveRight":return n.isSelecting?i(a=r({index:n.start,direction:"RIGHT",constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveTop":return n.isSelecting?i(a=s({rowIndex:0,colIndex:n.start.colIndex,constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveBottom":return n.isSelecting?i(a=s({rowIndex:n.constraint.maxRowIndex,colIndex:n.start.colIndex,constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveLeftEnd":return n.isSelecting?i(a=s({rowIndex:n.start.rowIndex,colIndex:0,constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"moveRightEnd":return n.isSelecting?i(a=s({rowIndex:n.start.rowIndex,colIndex:n.constraint.maxColIndex,constraint:n.constraint}),n.start)&&i(a,n.end)?n:e.__assign(e.__assign({},n),{start:a,end:a}):n;case"extendUp":return n.isSelecting?i(d=r({index:n.end,direction:"UP",constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendDown":return n.isSelecting?i(d=r({index:n.end,direction:"DOWN",constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendLeft":return n.isSelecting?i(d=r({index:n.end,direction:"LEFT",constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendRight":return n.isSelecting?i(d=r({index:n.end,direction:"RIGHT",constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendTop":return n.isSelecting?i(d=s({rowIndex:0,colIndex:n.end.colIndex,constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendBottom":return n.isSelecting?i(d=s({rowIndex:n.constraint.maxRowIndex,colIndex:n.end.colIndex,constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendLeftEnd":return n.isSelecting?i(d=s({rowIndex:n.end.rowIndex,colIndex:0,constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"extendRightEnd":return n.isSelecting?i(d=s({rowIndex:n.end.rowIndex,colIndex:n.constraint.maxColIndex,constraint:n.constraint}),n.end)?n:e.__assign(e.__assign({},n),{end:d}):n;case"reset":return{constraint:n.constraint,isSelecting:!1};case"setRange":return e.__assign(e.__assign({},n),{isSelecting:!0,inProgress:!1,start:t.payload.start,end:t.payload.end})}};exports.rangeReducer=d,exports.useRangeReducer=function(){var s=t.useTableIdGenerator(),i=n.useReducer(d,{constraint:o({maxColIndex:0,maxRowIndex:0}),isSelecting:!1}),a=i[0],r=i[1],c=n.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"})},moveTop:function(){r({type:"moveTop"})},moveBottom:function(){r({type:"moveBottom"})},moveRightEnd:function(){r({type:"moveRightEnd"})},moveLeftEnd:function(){r({type:"moveLeftEnd"})},extendUp:function(){r({type:"extendUp"})},extendDown:function(){r({type:"extendDown"})},extendLeft:function(){r({type:"extendLeft"})},extendRight:function(){r({type:"extendRight"})},extendTop:function(){r({type:"extendTop"})},extendBottom:function(){r({type:"extendBottom"})},extendRightEnd:function(){r({type:"extendRightEnd"})},extendLeftEnd:function(){r({type:"extendLeftEnd"})},reset:function(){r({type:"reset"})},setRange:function(e){r({type:"setRange",payload:e})}}}),[]);return n.useEffect((function(){var e=function(e){var n=document.getElementById(s.getTableId()),t=e.target;t instanceof Node&&(null==n?void 0:n.contains(t))||r({type:"reset"})};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[]),{state:n.useMemo((function(){if(!a.isSelecting)return a;var n=document.getElementById(s.getTableCellId({rowIndex:a.start.rowIndex,columnIndex:a.start.colIndex})),t=document.getElementById(s.getTableCellId({rowIndex:a.end.rowIndex,columnIndex:a.end.colIndex})),o=document.getElementById(s.getTableId());if(!n||!t||!o)return r({type:"reset"}),{isSelecting:!1};var i=n.getBoundingClientRect(),d=t.getBoundingClientRect(),c=o.getBoundingClientRect(),l=c.top-o.scrollTop,g=c.left-o.scrollLeft,x={top:i.top-l,left:i.left-g,width:i.width,height:i.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 { 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
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/range/hooks.ts"],"sourcesContent":["import { useEffect, useMemo, useReducer } from \"react\";\nimport {\n IIndex,\n TRangeReducer,\n IRangeConstraint,\n TReturnRangeReducer,\n} from \"./type\";\nimport { useTableIdGenerator } from \"../id\";\n\nfunction newRangeConstraint(props: {\n maxColIndex: number;\n maxRowIndex: number;\n}): IRangeConstraint {\n return {\n maxColIndex: props.maxColIndex < -1 ? -1 : props.maxColIndex,\n maxRowIndex: props.maxRowIndex < -1 ? -1 : props.maxRowIndex,\n };\n}\n\nfunction newIndex(props: {\n rowIndex: number;\n colIndex: number;\n constraint: IRangeConstraint;\n}): IIndex {\n let rowIndex = props.rowIndex;\n let colIndex = props.colIndex;\n\n if (rowIndex < 0) {\n rowIndex = 0;\n } else if (props.constraint.maxRowIndex < rowIndex) {\n rowIndex = props.constraint.maxRowIndex;\n }\n\n if (colIndex < 0) {\n colIndex = 0;\n } else if (props.constraint.maxColIndex < colIndex) {\n colIndex = props.constraint.maxColIndex;\n }\n\n return { rowIndex, colIndex };\n}\n\nfunction equalIndex(a: IIndex, b: IIndex): boolean {\n return a.rowIndex === b.rowIndex && a.colIndex === b.colIndex;\n}\n\nconst MOVE_ACTION = {\n UP: { deltaRow: -1, deltaCol: 0 },\n DOWN: { deltaRow: 1, deltaCol: 0 },\n LEFT: { deltaRow: 0, deltaCol: -1 },\n RIGHT: { deltaRow: 0, deltaCol: 1 },\n} as const;\n\ntype TMoveAction = keyof typeof MOVE_ACTION;\n\nfunction moveIndex({\n index,\n direction,\n constraint,\n}: {\n index: IIndex;\n direction: TMoveAction;\n constraint: IRangeConstraint;\n}): IIndex {\n const { deltaRow, deltaCol } = MOVE_ACTION[direction];\n\n const newRow = index.rowIndex + deltaRow;\n const newCol = index.colIndex + deltaCol;\n\n return newIndex({\n rowIndex: newRow,\n colIndex: newCol,\n constraint,\n });\n}\n\nexport const rangeReducer: TRangeReducer = (state, action) => {\n switch (action.type) {\n /**\n * Actionが\"setMax\"の場合の説明:\n * - Actionのtypeが\"setMax\"の場合、選択範囲の最大値を設定します。\n * - payloadのmaxRowIndexとmaxColIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、constraintを新しい範囲制約に設定します。\n */\n case \"setMax\":\n return {\n ...state,\n constraint: newRangeConstraint(action.payload),\n };\n\n /**\n * Actionが\"start\"の場合の説明:\n * - Actionのtypeが\"start\"の場合、選択範囲の開始位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、isSelectingをtrueに設定し、startとendの位置をpayloadの位置に設定します。\n */\n case \"startSelectRange\": {\n const startIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (\n state.isSelecting &&\n equalIndex(state.start, startIndex) &&\n equalIndex(state.end, startIndex) &&\n state.inProgress\n ) {\n return state;\n }\n\n return {\n ...state,\n isSelecting: true,\n inProgress: true,\n start: startIndex,\n end: startIndex,\n };\n }\n\n case \"moveSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: action.payload.rowIndex,\n colIndex: action.payload.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(state.end, endIndex)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"end\"の場合の説明:\n * - Actionのtypeが\"end\"の場合、選択範囲の終了位置を設定します。\n * - payloadのrowIndexとcolIndexが範囲外の場合、OutOfRangeErrorをスローします。\n * - 範囲内の場合、endの位置をpayloadの位置に設定します。\n * - この場合、isSelectingはtrueのままです。\n */\n case \"endSelectRange\": {\n if (!state.isSelecting || !state.inProgress) {\n return state;\n }\n\n return {\n ...state,\n inProgress: false,\n };\n }\n\n /**\n * Actionが\"moveUp\"の場合の説明:\n * - Actionのtypeが\"moveUp\"の場合、選択範囲を上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に移動します。\n */\n case \"moveUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveDown\"の場合の説明:\n * - Actionのtypeが\"moveDown\"の場合、選択範囲を下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に移動します。\n */\n case \"moveDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveLeft\"の場合の説明:\n * - Actionのtypeが\"moveLeft\"の場合、選択範囲を左に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に移動します。\n */\n case \"moveLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRight\"の場合の説明:\n * - Actionのtypeが\"moveRight\"の場合、選択範囲を右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に移動します。\n */\n case \"moveRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = moveIndex({\n index: state.start,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveTop\"の場合の説明:\n * - Actionのtypeが\"moveTop\"の場合、選択範囲を一番上に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番上に設定します。\n */\n case \"moveTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: 0,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveBottom\"の場合の説明:\n * - Actionのtypeが\"moveBottom\"の場合、選択範囲を一番下に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番下に設定します。\n */\n case \"moveBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.start.colIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"moveRightEnd\"の場合の説明:\n * - Actionのtypeが\"moveRightEnd\"の場合、選択範囲を一番右に移動します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、startとendの位置を一番右に設定します。\n */\n case \"moveRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const startIndex = newIndex({\n rowIndex: state.start.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (\n equalIndex(startIndex, state.start) &&\n equalIndex(startIndex, state.end)\n ) {\n return state;\n }\n\n return {\n ...state,\n start: startIndex,\n end: startIndex,\n };\n }\n\n /**\n * Actionが\"extendUp\"の場合の説明:\n * - Actionのtypeが\"extendUp\"の場合、選択範囲を上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ上に拡張します。\n */\n case \"extendUp\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"UP\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendDown\"の場合の説明:\n * - Actionのtypeが\"extendDown\"の場合、選択範囲を下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ下に拡張します。\n */\n case \"extendDown\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"DOWN\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendLeft\"の場合の説明:\n * - Actionのtypeが\"extendLeft\"の場合、選択範囲を左に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ左に拡張します。\n */\n case \"extendLeft\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"LEFT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRight\"の場合の説明:\n * - Actionのtypeが\"extendRight\"の場合、選択範囲を右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を1つ右に拡張します。\n */\n case \"extendRight\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = moveIndex({\n index: state.end,\n direction: \"RIGHT\",\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendTop\"の場合の説明:\n * - Actionのtypeが\"extendTop\"の場合、選択範囲を一番上に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番上に拡張します。\n */\n case \"extendTop\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: 0,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendBottom\"の場合の説明:\n * - Actionのtypeが\"extendBottom\"の場合、選択範囲を一番下に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番下に拡張します。\n */\n case \"extendBottom\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.constraint.maxRowIndex,\n colIndex: state.end.colIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendLeftEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: 0,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"extendRightEnd\"の場合の説明:\n * - Actionのtypeが\"extendRightEnd\"の場合、選択範囲を一番右に拡張します。\n * - isSelectingがfalseの場合、InvalidOperationErrorをスローします。\n * - 移動後の位置がstartとendが同じ場合、stateをそのまま返します。\n * - それ以外の場合、endの位置を一番右に拡張します。\n */\n case \"extendRightEnd\": {\n if (!state.isSelecting) {\n return state;\n }\n\n const endIndex = newIndex({\n rowIndex: state.end.rowIndex,\n colIndex: state.constraint.maxColIndex,\n constraint: state.constraint,\n });\n\n if (equalIndex(endIndex, state.end)) {\n return state;\n }\n\n return {\n ...state,\n end: endIndex,\n };\n }\n\n /**\n * Actionが\"reset\"の場合の説明:\n * - Actionのtypeが\"reset\"の場合、選択範囲をリセットします。\n * - isSelectingをfalseに設定します。\n */\n case \"reset\":\n return {\n constraint: state.constraint,\n isSelecting: false,\n };\n\n /**\n * Actionが\"setRange\"の場合の説明:\n * - Actionのtypeが\"setRange\"の場合、選択範囲を設定します。\n * - payloadのstartとendの位置を設定します。\n */\n case \"setRange\":\n return {\n ...state,\n isSelecting: true,\n inProgress: false,\n start: action.payload.start,\n end: action.payload.end,\n };\n }\n};\n\nexport function useRangeReducer(): TReturnRangeReducer {\n const IdGenerator = useTableIdGenerator();\n const [state, dispatch] = useReducer(rangeReducer, {\n constraint: newRangeConstraint({ maxColIndex: 0, maxRowIndex: 0 }),\n isSelecting: false,\n });\n\n const actions = useMemo(\n () => ({\n setMax: (payload: { maxRowIndex: number; maxColIndex: number }) => {\n dispatch({ type: \"setMax\", payload });\n },\n startSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"startSelectRange\", payload });\n },\n moveSelectRange: (payload: { rowIndex: number; colIndex: number }) => {\n dispatch({ type: \"moveSelectRange\", payload });\n },\n endSelectRange: () => {\n dispatch({ type: \"endSelectRange\" });\n },\n moveUp: () => {\n dispatch({ type: \"moveUp\" });\n },\n moveDown: () => {\n dispatch({ type: \"moveDown\" });\n },\n moveLeft: () => {\n dispatch({ type: \"moveLeft\" });\n },\n moveRight: () => {\n dispatch({ type: \"moveRight\" });\n },\n moveTop: () => {\n dispatch({ type: \"moveTop\" });\n },\n moveBottom: () => {\n dispatch({ type: \"moveBottom\" });\n },\n moveRightEnd: () => {\n dispatch({ type: \"moveRightEnd\" });\n },\n moveLeftEnd: () => {\n dispatch({ type: \"moveLeftEnd\" });\n },\n extendUp: () => {\n dispatch({ type: \"extendUp\" });\n },\n extendDown: () => {\n dispatch({ type: \"extendDown\" });\n },\n extendLeft: () => {\n dispatch({ type: \"extendLeft\" });\n },\n extendRight: () => {\n dispatch({ type: \"extendRight\" });\n },\n extendTop: () => {\n dispatch({ type: \"extendTop\" });\n },\n extendBottom: () => {\n dispatch({ type: \"extendBottom\" });\n },\n extendRightEnd: () => {\n dispatch({ type: \"extendRightEnd\" });\n },\n extendLeftEnd: () => {\n dispatch({ type: \"extendLeftEnd\" });\n },\n reset: () => {\n dispatch({ type: \"reset\" });\n },\n setRange: (payload: { start: IIndex; end: IIndex }) => {\n dispatch({ type: \"setRange\", payload });\n },\n }),\n []\n );\n\n useEffect(() => {\n const onClickOutOfTable = (e: MouseEvent) => {\n const element = document.getElementById(IdGenerator.getTableId());\n const ele = e.target;\n if (ele instanceof Node && element?.contains(ele)) return;\n dispatch({ type: \"reset\" });\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfTable);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfTable);\n };\n }, []);\n\n const exState = useMemo<TReturnRangeReducer[\"state\"]>(() => {\n if (!state.isSelecting) {\n return state;\n }\n\n const startElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.start.rowIndex,\n columnIndex: state.start.colIndex,\n })\n );\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n const tableElement = document.getElementById(IdGenerator.getTableId());\n\n if (!startElement || !endElement || !tableElement) {\n dispatch({ type: \"reset\" });\n return { isSelecting: false };\n }\n\n const startRect = startElement.getBoundingClientRect();\n const endRect = endElement.getBoundingClientRect();\n const rectTable = tableElement.getBoundingClientRect();\n\n const adjustSize = {\n y: rectTable.top - tableElement.scrollTop,\n x: rectTable.left - tableElement.scrollLeft,\n };\n\n const startDivProps = {\n top: startRect.top - adjustSize.y,\n left: startRect.left - adjustSize.x,\n width: startRect.width,\n height: startRect.height,\n };\n\n const endDivProps = {\n top: endRect.top - adjustSize.y,\n left: endRect.left - adjustSize.x,\n width: endRect.width,\n height: endRect.height,\n };\n\n return {\n isSelecting: true,\n start: {\n ...state.start,\n xStart: startDivProps.left,\n xEnd: startDivProps.left + startDivProps.width,\n yStart: startDivProps.top,\n yEnd: startDivProps.top + startDivProps.height,\n },\n end: {\n ...state.end,\n xStart: endDivProps.left,\n xEnd: endDivProps.left + endDivProps.width,\n yStart: endDivProps.top,\n yEnd: endDivProps.top + endDivProps.height,\n },\n rangeBox: {\n top: Math.min(startDivProps.top, endDivProps.top),\n left: Math.min(startDivProps.left, endDivProps.left),\n width:\n Math.abs(startDivProps.left - endDivProps.left) +\n (startDivProps.left <= endDivProps.left\n ? endDivProps.width\n : startDivProps.width),\n height:\n Math.abs(startDivProps.top - endDivProps.top) +\n (startDivProps.top <= endDivProps.top\n ? endDivProps.height\n : startDivProps.height),\n },\n };\n }, [state]);\n\n return {\n state: exState,\n actions,\n };\n}\n"],"names":["newRangeConstraint","props","maxColIndex","maxRowIndex","newIndex","rowIndex","colIndex","constraint","equalIndex","a","b","MOVE_ACTION","UP","deltaRow","deltaCol","DOWN","LEFT","RIGHT","moveIndex","_a","index","direction","_b","rangeReducer","state","action","type","__assign","payload","startIndex","isSelecting","start","end","inProgress","endIndex","IdGenerator","useTableIdGenerator","useReducer","dispatch","actions","useMemo","setMax","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useEffect","onClickOutOfTable","e","element","document","getElementById","getTableId","ele","target","Node","contains","addEventListener","removeEventListener","startElement","getTableCellId","columnIndex","endElement","tableElement","startRect","getBoundingClientRect","endRect","rectTable","adjustSize","top","scrollTop","left","scrollLeft","startDivProps","width","height","endDivProps","xStart","xEnd","yStart","yEnd","rangeBox","Math","min","abs"],"mappings":"yHASA,SAASA,EAAmBC,GAI1B,MAAO,CACLC,YAAaD,EAAMC,aAAe,GAAK,EAAID,EAAMC,YACjDC,YAAaF,EAAME,aAAe,GAAK,EAAIF,EAAME,YAErD,CAEA,SAASC,EAASH,GAKhB,IAAII,EAAWJ,EAAMI,SACjBC,EAAWL,EAAMK,SAcrB,OAZID,EAAW,EACbA,EAAW,EACFJ,EAAMM,WAAWJ,YAAcE,IACxCA,EAAWJ,EAAMM,WAAWJ,aAG1BG,EAAW,EACbA,EAAW,EACFL,EAAMM,WAAWL,YAAcI,IACxCA,EAAWL,EAAMM,WAAWL,aAGvB,CAAEG,SAAQA,EAAEC,SAAQA,EAC7B,CAEA,SAASE,EAAWC,EAAWC,GAC7B,OAAOD,EAAEJ,WAAaK,EAAEL,UAAYI,EAAEH,WAAaI,EAAEJ,QACvD,CAEA,IAAMK,EAAc,CAClBC,GAAI,CAAEC,UAAW,EAAGC,SAAU,GAC9BC,KAAM,CAAEF,SAAU,EAAGC,SAAU,GAC/BE,KAAM,CAAEH,SAAU,EAAGC,UAAW,GAChCG,MAAO,CAAEJ,SAAU,EAAGC,SAAU,IAKlC,SAASI,EAAUC,GACjB,IAAAC,UACAC,EAASF,EAAAE,UACTd,EAAUY,EAAAZ,WAMJe,EAAyBX,EAAYU,GAAnCR,EAAQS,EAAAT,SAAEC,EAAQQ,EAAAR,SAK1B,OAAOV,EAAS,CACdC,SAJae,EAAMf,SAAWQ,EAK9BP,SAJac,EAAMd,SAAWQ,EAK9BP,WAAUA,GAEd,CAEa,IAAAgB,EAA8B,SAACC,EAAOC,GACjD,OAAQA,EAAOC,MAOb,IAAK,SACH,OACKC,WAAAA,EAAAA,SAAA,CAAA,EAAAH,GACH,CAAAjB,WAAYP,EAAmByB,EAAOG,WAS1C,IAAK,mBACH,IAAMC,EAAazB,EAAS,CAC1BC,SAAUoB,EAAOG,QAAQvB,SACzBC,SAAUmB,EAAOG,QAAQtB,SACzBC,WAAYiB,EAAMjB,aAGpB,OACEiB,EAAMM,aACNtB,EAAWgB,EAAMO,MAAOF,IACxBrB,EAAWgB,EAAMQ,IAAKH,IACtBL,EAAMS,WAECT,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EACKH,GACH,CAAAM,aAAa,EACbG,YAAY,EACZF,MAAOF,EACPG,IAAKH,IAIT,IAAK,kBACH,IAAKL,EAAMM,cAAgBN,EAAMS,WAC/B,OAAOT,EAGT,IAAMU,EAAW9B,EAAS,CACxBC,SAAUoB,EAAOG,QAAQvB,SACzBC,SAAUmB,EAAOG,QAAQtB,SACzBC,WAAYiB,EAAMjB,aAGpB,OAAIC,EAAWgB,EAAMQ,IAAKE,GACjBV,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAWT,IAAK,iBACH,OAAKV,EAAMM,aAAgBN,EAAMS,WAIjCN,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRS,YAAY,IALLT,EAgBX,IAAK,SACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAaX,EAAU,CAC3BE,MAAOI,EAAMO,MACbV,UAAW,KACXd,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,WACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAaX,EAAU,CAC3BE,MAAOI,EAAMO,MACbV,UAAW,OACXd,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,WACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAaX,EAAU,CAC3BE,MAAOI,EAAMO,MACbV,UAAW,OACXd,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,YACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAaX,EAAU,CAC3BE,MAAOI,EAAMO,MACbV,UAAW,QACXd,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,UACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAazB,EAAS,CAC1BC,SAAU,EACVC,SAAUkB,EAAMO,MAAMzB,SACtBC,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,aACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAazB,EAAS,CAC1BC,SAAUmB,EAAMjB,WAAWJ,YAC3BG,SAAUkB,EAAMO,MAAMzB,SACtBC,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,cACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAazB,EAAS,CAC1BC,SAAUmB,EAAMO,MAAM1B,SACtBC,SAAU,EACVC,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,eACH,OAAKA,EAAMM,YAWTtB,EAPIqB,EAAazB,EAAS,CAC1BC,SAAUmB,EAAMO,MAAM1B,SACtBC,SAAUkB,EAAMjB,WAAWL,YAC3BK,WAAYiB,EAAMjB,aAIKiB,EAAMO,QAC7BvB,EAAWqB,EAAYL,EAAMQ,KAEtBR,EAIJG,WAAAA,EAAAA,SAAA,CAAA,EAAAH,IACHO,MAAOF,EACPG,IAAKH,IAnBEL,EA8BX,IAAK,WACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAWhB,EAAU,CACzBE,MAAOI,EAAMQ,IACbX,UAAW,KACXd,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,aACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAWhB,EAAU,CACzBE,MAAOI,EAAMQ,IACbX,UAAW,OACXd,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,aACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAWhB,EAAU,CACzBE,MAAOI,EAAMQ,IACbX,UAAW,OACXd,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,cACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAWhB,EAAU,CACzBE,MAAOI,EAAMQ,IACbX,UAAW,QACXd,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,YACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAW9B,EAAS,CACxBC,SAAU,EACVC,SAAUkB,EAAMQ,IAAI1B,SACpBC,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,eACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAW9B,EAAS,CACxBC,SAAUmB,EAAMjB,WAAWJ,YAC3BG,SAAUkB,EAAMQ,IAAI1B,SACpBC,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,gBACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAW9B,EAAS,CACxBC,SAAUmB,EAAMQ,IAAI3B,SACpBC,SAAU,EACVC,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EA0BX,IAAK,iBACH,OAAKA,EAAMM,YAUPtB,EANE0B,EAAW9B,EAAS,CACxBC,SAAUmB,EAAMQ,IAAI3B,SACpBC,SAAUkB,EAAMjB,WAAWL,YAC3BK,WAAYiB,EAAMjB,aAGKiB,EAAMQ,KACtBR,EAGTG,EAAAA,SAAAA,EAAAA,SAAA,GACKH,GAAK,CACRQ,IAAKE,IAfEV,EAwBX,IAAK,QACH,MAAO,CACLjB,WAAYiB,EAAMjB,WAClBuB,aAAa,GAQjB,IAAK,WACH,OACKH,EAAAA,SAAAA,EAAAA,SAAA,GAAAH,GACH,CAAAM,aAAa,EACbG,YAAY,EACZF,MAAON,EAAOG,QAAQG,MACtBC,IAAKP,EAAOG,QAAQI,MAG5B,4DAGE,IAAMG,EAAcC,EAAAA,sBACdjB,EAAoBkB,EAAUA,WAACd,EAAc,CACjDhB,WAAYP,EAAmB,CAAEE,YAAa,EAAGC,YAAa,IAC9D2B,aAAa,IAFRN,EAAKL,EAAA,GAAEmB,OAKRC,EAAUC,WACd,WAAM,MAAC,CACLC,OAAQ,SAACb,GACPU,EAAS,CAAEZ,KAAM,SAAUE,QAAOA,GACnC,EACDc,iBAAkB,SAACd,GACjBU,EAAS,CAAEZ,KAAM,mBAAoBE,QAAOA,GAC7C,EACDe,gBAAiB,SAACf,GAChBU,EAAS,CAAEZ,KAAM,kBAAmBE,QAAOA,GAC5C,EACDgB,eAAgB,WACdN,EAAS,CAAEZ,KAAM,kBAClB,EACDmB,OAAQ,WACNP,EAAS,CAAEZ,KAAM,UAClB,EACDoB,SAAU,WACRR,EAAS,CAAEZ,KAAM,YAClB,EACDqB,SAAU,WACRT,EAAS,CAAEZ,KAAM,YAClB,EACDsB,UAAW,WACTV,EAAS,CAAEZ,KAAM,aAClB,EACDuB,QAAS,WACPX,EAAS,CAAEZ,KAAM,WAClB,EACDwB,WAAY,WACVZ,EAAS,CAAEZ,KAAM,cAClB,EACDyB,aAAc,WACZb,EAAS,CAAEZ,KAAM,gBAClB,EACD0B,YAAa,WACXd,EAAS,CAAEZ,KAAM,eAClB,EACD2B,SAAU,WACRf,EAAS,CAAEZ,KAAM,YAClB,EACD4B,WAAY,WACVhB,EAAS,CAAEZ,KAAM,cAClB,EACD6B,WAAY,WACVjB,EAAS,CAAEZ,KAAM,cAClB,EACD8B,YAAa,WACXlB,EAAS,CAAEZ,KAAM,eAClB,EACD+B,UAAW,WACTnB,EAAS,CAAEZ,KAAM,aAClB,EACDgC,aAAc,WACZpB,EAAS,CAAEZ,KAAM,gBAClB,EACDiC,eAAgB,WACdrB,EAAS,CAAEZ,KAAM,kBAClB,EACDkC,cAAe,WACbtB,EAAS,CAAEZ,KAAM,iBAClB,EACDmC,MAAO,WACLvB,EAAS,CAAEZ,KAAM,SAClB,EACDoC,SAAU,SAAClC,GACTU,EAAS,CAAEZ,KAAM,WAAYE,QAAOA,GACrC,EAlEG,GAoEN,IAkGF,OA/FAmC,EAAAA,WAAU,WACR,IAAMC,EAAoB,SAACC,GACzB,IAAMC,EAAUC,SAASC,eAAejC,EAAYkC,cAC9CC,EAAML,EAAEM,OACVD,aAAeE,OAAQN,aAAA,EAAAA,EAASO,SAASH,KAC7ChC,EAAS,CAAEZ,KAAM,SACnB,EAIA,OAFAyC,SAASO,iBAAiB,YAAaV,GAEhC,WACLG,SAASQ,oBAAoB,YAAaX,EAC5C,CACD,GAAE,IAkFI,CACLxC,MAjFcgB,EAAAA,SAAsC,WACpD,IAAKhB,EAAMM,YACT,OAAON,EAGT,IAAMoD,EAAeT,SAASC,eAC5BjC,EAAY0C,eAAe,CACzBxE,SAAUmB,EAAMO,MAAM1B,SACtByE,YAAatD,EAAMO,MAAMzB,YAGvByE,EAAaZ,SAASC,eAC1BjC,EAAY0C,eAAe,CACzBxE,SAAUmB,EAAMQ,IAAI3B,SACpByE,YAAatD,EAAMQ,IAAI1B,YAGrB0E,EAAeb,SAASC,eAAejC,EAAYkC,cAEzD,IAAKO,IAAiBG,IAAeC,EAEnC,OADA1C,EAAS,CAAEZ,KAAM,UACV,CAAEI,aAAa,GAGxB,IAAMmD,EAAYL,EAAaM,wBACzBC,EAAUJ,EAAWG,wBACrBE,EAAYJ,EAAaE,wBAEzBG,EACDD,EAAUE,IAAMN,EAAaO,UAD5BF,EAEDD,EAAUI,KAAOR,EAAaS,WAG7BC,EAAgB,CACpBJ,IAAKL,EAAUK,IAAMD,EACrBG,KAAMP,EAAUO,KAAOH,EACvBM,MAAOV,EAAUU,MACjBC,OAAQX,EAAUW,QAGdC,EAAc,CAClBP,IAAKH,EAAQG,IAAMD,EACnBG,KAAML,EAAQK,KAAOH,EACrBM,MAAOR,EAAQQ,MACfC,OAAQT,EAAQS,QAGlB,MAAO,CACL9D,aAAa,EACbC,+BACKP,EAAMO,OAAK,CACd+D,OAAQJ,EAAcF,KACtBO,KAAML,EAAcF,KAAOE,EAAcC,MACzCK,OAAQN,EAAcJ,IACtBW,KAAMP,EAAcJ,IAAMI,EAAcE,SAE1C5D,6BACKR,EAAMQ,KAAG,CACZ8D,OAAQD,EAAYL,KACpBO,KAAMF,EAAYL,KAAOK,EAAYF,MACrCK,OAAQH,EAAYP,IACpBW,KAAMJ,EAAYP,IAAMO,EAAYD,SAEtCM,SAAU,CACRZ,IAAKa,KAAKC,IAAIV,EAAcJ,IAAKO,EAAYP,KAC7CE,KAAMW,KAAKC,IAAIV,EAAcF,KAAMK,EAAYL,MAC/CG,MACEQ,KAAKE,IAAIX,EAAcF,KAAOK,EAAYL,OACzCE,EAAcF,MAAQK,EAAYL,KAC/BK,EAAYF,MACZD,EAAcC,OACpBC,OACEO,KAAKE,IAAIX,EAAcJ,IAAMO,EAAYP,MACxCI,EAAcJ,KAAOO,EAAYP,IAC9BO,EAAYD,OACZF,EAAcE,SAG1B,GAAG,CAACpE,IAIFe,QAAOA,EAEX"}
|
|
@@ -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"),
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),n=require("react/jsx-runtime"),t=require("react"),o=require("../lib/errors.js"),r=require("./hooks.js"),i=require("../table-property/provider.js"),m=require("../id/provider.js"),s=t.createContext({isSelecting:!1}),u=t.createContext({setMax:o.NoImplementeFunction,startSelectRange:o.NoImplementeFunction,moveSelectRange:o.NoImplementeFunction,endSelectRange:o.NoImplementeFunction,moveUp:o.NoImplementeFunction,moveDown:o.NoImplementeFunction,moveLeft:o.NoImplementeFunction,moveRight:o.NoImplementeFunction,moveTop:o.NoImplementeFunction,moveBottom:o.NoImplementeFunction,moveRightEnd:o.NoImplementeFunction,moveLeftEnd:o.NoImplementeFunction,extendUp:o.NoImplementeFunction,extendDown:o.NoImplementeFunction,extendLeft:o.NoImplementeFunction,extendRight:o.NoImplementeFunction,extendTop:o.NoImplementeFunction,extendBottom:o.NoImplementeFunction,extendRightEnd:o.NoImplementeFunction,extendLeftEnd:o.NoImplementeFunction,reset:o.NoImplementeFunction,setRange:o.NoImplementeFunction});function l(){return t.useContext(s)}function c(){return t.useContext(u)}function a(){var e=c().setMax,o=i.useTablePropertyStateContext(),r=o.maxDisplayRowCount,m=o.maxDisplayColCount;return t.useEffect((function(){e({maxRowIndex:r-1,maxColIndex:m-1})}),[r,m]),n.jsx(n.Fragment,{})}exports.RangeProvider=function(e){var t=e.children,o=r.useRangeReducer(),i=o.state,m=o.actions;return n.jsx(s.Provider,{value:i,children:n.jsxs(u.Provider,{value:m,children:[n.jsx(a,{}),t]})})},exports.TestRange=function(e){var o=m.useTableIdGenerator(),r=l();if(t.useEffect((function(){if(r.isSelecting){var e=document.getElementById(o.getTableCellId({rowIndex:r.end.rowIndex,columnIndex:r.end.colIndex}));e&&(e.scrollIntoView({behavior:"instant",block:"nearest",inline:"nearest"}),e.focus())}}),[r]),!r.isSelecting)return n.jsx(n.Fragment,{});var i=r.rangeBox,s=r.start,u=r.end;return s.xEnd<u.xEnd?u.xEnd:s.xEnd,s.yEnd<u.yEnd?u.yEnd:s.yEnd,n.jsx(n.Fragment,{children:n.jsx("div",{className:"absolute border border-gray-500 bg-gray-500 bg-opacity-10 ".concat(e.isCopied?"border-dashed":"border-solid"),style:{top:i.top,left:i.left,width:i.width,height:i.height,pointerEvents:"none"}})})},exports.useRangeActionContext=c,exports.useRangeContext=function(){return e.__assign(e.__assign({},l()),c())},exports.useRangeStateContext=l;
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n 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: \"instant\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500 bg-opacity-10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","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,
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../../src/table/range/provider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect } from \"react\";\nimport { TRangeActionContext, TRangeStateContext } from \"./type\";\nimport { NoImplementeFunction } from \"../lib/errors\";\nimport { useRangeReducer } from \"./hooks\";\nimport { useTablePropertyStateContext } from \"../table-property/provider\";\nimport { useTableIdGenerator } from \"../id\";\n\nconst RangeStateContext = createContext<TRangeStateContext>({\n isSelecting: false,\n});\n\nconst RangeActionContext = createContext<TRangeActionContext>({\n setMax: NoImplementeFunction,\n startSelectRange: NoImplementeFunction,\n moveSelectRange: NoImplementeFunction,\n endSelectRange: NoImplementeFunction,\n moveUp: NoImplementeFunction,\n moveDown: NoImplementeFunction,\n moveLeft: NoImplementeFunction,\n moveRight: NoImplementeFunction,\n moveTop: NoImplementeFunction,\n moveBottom: NoImplementeFunction,\n moveRightEnd: NoImplementeFunction,\n moveLeftEnd: NoImplementeFunction,\n extendUp: NoImplementeFunction,\n extendDown: NoImplementeFunction,\n extendLeft: NoImplementeFunction,\n extendRight: NoImplementeFunction,\n extendTop: NoImplementeFunction,\n extendBottom: NoImplementeFunction,\n extendRightEnd: NoImplementeFunction,\n extendLeftEnd: NoImplementeFunction,\n reset: NoImplementeFunction,\n setRange: NoImplementeFunction,\n});\n\nexport function useRangeStateContext() {\n return useContext(RangeStateContext);\n}\n\nexport function useRangeActionContext() {\n return useContext(RangeActionContext);\n}\n\nexport function useRangeContext() {\n return { ...useRangeStateContext(), ...useRangeActionContext() };\n}\n\nfunction EffectSetMax() {\n const { setMax } = useRangeActionContext();\n const { maxDisplayRowCount, maxDisplayColCount } =\n useTablePropertyStateContext();\n\n useEffect(() => {\n setMax({\n maxRowIndex: maxDisplayRowCount - 1,\n maxColIndex: maxDisplayColCount - 1,\n });\n }, [maxDisplayRowCount, maxDisplayColCount]);\n\n return <></>;\n}\n\nexport function TestRange(props: { isCopied?: boolean }) {\n const IdGenerator = useTableIdGenerator();\n const state = useRangeStateContext();\n\n useEffect(() => {\n if (state.isSelecting) {\n const endElement = document.getElementById(\n IdGenerator.getTableCellId({\n rowIndex: state.end.rowIndex,\n columnIndex: state.end.colIndex,\n })\n );\n\n if (endElement) {\n endElement.scrollIntoView({\n behavior: \"instant\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n endElement.focus();\n }\n }\n }, [state]);\n\n if (!state.isSelecting) {\n return <></>;\n }\n\n const { rangeBox, start, end } = state;\n\n const clickboxPoint = {\n x: start.xEnd < end.xEnd ? end.xEnd : start.xEnd,\n y: start.yEnd < end.yEnd ? end.yEnd : start.yEnd,\n };\n\n return (\n <>\n <div\n className={`absolute border border-gray-500 bg-gray-500 bg-opacity-10 ${\n props.isCopied ? \"border-dashed\" : \"border-solid\"\n }`}\n style={{\n top: rangeBox.top,\n left: rangeBox.left,\n width: rangeBox.width,\n height: rangeBox.height,\n pointerEvents: \"none\",\n }}\n ></div>\n {/* <div\n className=\"absolute bg-gray-700\"\n style={{\n top: clickboxPoint.y - 5,\n left: clickboxPoint.x - 5,\n width: 10,\n height: 10,\n pointerEvents: \"none\",\n }}\n /> */}\n </>\n );\n}\n\nexport function RangeProvider({\n children,\n}: {\n children: JSX.Element | JSX.Element[];\n}) {\n const { state, actions } = useRangeReducer();\n\n return (\n <RangeStateContext.Provider value={state}>\n <RangeActionContext.Provider value={actions}>\n <EffectSetMax />\n {children}\n </RangeActionContext.Provider>\n </RangeStateContext.Provider>\n );\n}\n"],"names":["RangeStateContext","createContext","isSelecting","RangeActionContext","setMax","NoImplementeFunction","startSelectRange","moveSelectRange","endSelectRange","moveUp","moveDown","moveLeft","moveRight","moveTop","moveBottom","moveRightEnd","moveLeftEnd","extendUp","extendDown","extendLeft","extendRight","extendTop","extendBottom","extendRightEnd","extendLeftEnd","reset","setRange","useRangeStateContext","useContext","useRangeActionContext","EffectSetMax","_a","useTablePropertyStateContext","maxDisplayRowCount","maxDisplayColCount","useEffect","maxRowIndex","maxColIndex","_jsx","children","_b","useRangeReducer","state","actions","jsx","Provider","value","_jsxs","props","IdGenerator","useTableIdGenerator","endElement","document","getElementById","getTableCellId","rowIndex","end","columnIndex","colIndex","scrollIntoView","behavior","block","inline","focus","rangeBox","start","xEnd","yEnd","className","concat","isCopied","style","top","left","width","height","pointerEvents","__assign"],"mappings":"yPAOMA,EAAoBC,EAAAA,cAAkC,CAC1DC,aAAa,IAGTC,EAAqBF,EAAAA,cAAmC,CAC5DG,OAAQC,EAAoBA,qBAC5BC,iBAAkBD,EAAoBA,qBACtCE,gBAAiBF,EAAoBA,qBACrCG,eAAgBH,EAAoBA,qBACpCI,OAAQJ,EAAoBA,qBAC5BK,SAAUL,EAAoBA,qBAC9BM,SAAUN,EAAoBA,qBAC9BO,UAAWP,EAAoBA,qBAC/BQ,QAASR,EAAoBA,qBAC7BS,WAAYT,EAAoBA,qBAChCU,aAAcV,EAAoBA,qBAClCW,YAAaX,EAAoBA,qBACjCY,SAAUZ,EAAoBA,qBAC9Ba,WAAYb,EAAoBA,qBAChCc,WAAYd,EAAoBA,qBAChCe,YAAaf,EAAoBA,qBACjCgB,UAAWhB,EAAoBA,qBAC/BiB,aAAcjB,EAAoBA,qBAClCkB,eAAgBlB,EAAoBA,qBACpCmB,cAAenB,EAAoBA,qBACnCoB,MAAOpB,EAAoBA,qBAC3BqB,SAAUrB,EAAoBA,gCAGhBsB,IACd,OAAOC,EAAAA,WAAW5B,EACpB,UAEgB6B,IACd,OAAOD,EAAAA,WAAWzB,EACpB,CAMA,SAAS2B,IACC,IAAA1B,EAAWyB,WACbE,EACJC,EAA4BA,+BADtBC,EAAkBF,EAAAE,mBAAEC,EAAkBH,EAAAG,mBAU9C,OAPAC,EAAAA,WAAU,WACR/B,EAAO,CACLgC,YAAaH,EAAqB,EAClCI,YAAaH,EAAqB,GAEtC,GAAG,CAACD,EAAoBC,IAEjBI,oBACT,uBAiEM,SAAwBP,GAC5B,IAAAQ,EAAQR,EAAAQ,SAIFC,EAAqBC,EAAeA,kBAAlCC,EAAKF,EAAAE,MAAEC,EAAOH,EAAAG,QAEtB,OACEL,EAACM,IAAA5C,EAAkB6C,SAAS,CAAAC,MAAOJ,EACjCH,SAAAQ,OAAC5C,EAAmB0C,SAAQ,CAACC,MAAOH,EAAOJ,SAAA,CACzCD,MAACR,EAAe,CAAA,GACfS,MAIT,oBA9EM,SAAoBS,GACxB,IAAMC,EAAcC,EAAAA,sBACdR,EAAQf,IAsBd,GApBAQ,EAAAA,WAAU,WACR,GAAIO,EAAMxC,YAAa,CACrB,IAAMiD,EAAaC,SAASC,eAC1BJ,EAAYK,eAAe,CACzBC,SAAUb,EAAMc,IAAID,SACpBE,YAAaf,EAAMc,IAAIE,YAIvBP,IACFA,EAAWQ,eAAe,CACxBC,SAAU,UACVC,MAAO,UACPC,OAAQ,YAEVX,EAAWY,QAEd,CACH,GAAG,CAACrB,KAECA,EAAMxC,YACT,OAAOoC,qBAGD,IAAA0B,EAAyBtB,EAAKsB,SAApBC,EAAevB,EAAKuB,MAAbT,EAAQd,MAOjC,OAJKuB,EAAMC,KAAOV,EAAIU,KAAOV,EAAIU,KAAOD,EAAMC,KACzCD,EAAME,KAAOX,EAAIW,KAAOX,EAAIW,KAAOF,EAAME,KAI5C7B,EAAAA,yBACEA,EACEM,IAAA,MAAA,CAAAwB,UAAW,6DACTC,OAAArB,EAAMsB,SAAW,gBAAkB,gBAErCC,MAAO,CACLC,IAAKR,EAASQ,IACdC,KAAMT,EAASS,KACfC,MAAOV,EAASU,MAChBC,OAAQX,EAASW,OACjBC,cAAe,WAezB,qEA/EE,OAAAC,EAAAA,SAAAA,EAAAA,SAAA,CAAA,EAAYlD,KAA2BE,IACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\nimport { useCopyActionContext } from \"../copy/provider\";\nimport { useFilterFunctions } from \"../filter-v2/context\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterFunctions();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows: setRowsForPaste } = usePasteActionContext();\n const { setRows: setRowsForCopy } = useCopyActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n const rows = pageRowIds.map((id) => rowMaps[id].data);\n setRowsForCopy(rows);\n setRowsForPaste(rows);\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRowsForPaste","usePasteActionContext","setRowsForCopy","useCopyActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"sTAUM,SAAyCA,GACrC,IAAAC,EAAWC,8BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAClBC,EAAoBC,kCACpBC,EAAmBC,iCAC9BC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAK,GACxB,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,EAAAA,WAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKxB,EAAM6B,SAIJ7B,EAAMyB,KAAKxB,QAAO,SAAC6B,GAAG,IAAA3B,EAAK,eAAAA,EAAAH,EAAM6B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC9B,EAAM6B,SAAU7B,EAAMyB,OAE1BE,EAAAA,WAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAnB,EAAKkB,KACX,CAACA,EAAchB,IAGjBoB,EAAAA,WAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAZ,EAAWuB,KACjB,CAACvB,EAAYuB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,WACE,OAAAxB,EAAMyB,KACHxB,QAAO,SAAC6B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCzB,OACAuC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../../../src/table/table/hook.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { DataObject, DataRecord, TPropsTable } from \"./type\";\nimport { usePageContext } from \"../pagenation/providers\";\nimport { useCheckboxStatusContext } from \"../checkbox/provider\";\nimport { useSortActionContext, useSortTimingContext } from \"../sort/provider\";\nimport { useTablePropertyActionContext } from \"../table-property/provider\";\nimport { usePasteActionContext } from \"../paste/provider\";\nimport { useCopyActionContext } from \"../copy/provider\";\nimport { useFilterFunctions } from \"../filter-v2/context\";\n\nexport function useTable<T extends DataRecord>(props: TPropsTable<T>) {\n const { filter } = useFilterFunctions();\n const { sort, updatedData } = useSortActionContext();\n const sortTiming = useSortTimingContext();\n const { setRowCount, pageFilter } = usePageContext();\n const { dispatchCheckboxStatus } = useCheckboxStatusContext();\n const { setRows: setRowsForPaste } = usePasteActionContext();\n const { setRows: setRowsForCopy } = useCopyActionContext();\n const { setMaxDisplayColCount, setMaxDisplayRowCount } =\n useTablePropertyActionContext();\n\n const filteredRows = useMemo(\n () => filter(props.rows),\n [filter, sortTiming, props.rows.length]\n );\n\n useEffect(() => {\n setRowCount(filteredRows.length);\n }, [filteredRows.length]);\n\n const checkBoxes = useMemo(() => {\n if (!props.checkbox) {\n return [];\n }\n\n return props.rows.filter((row) => props.checkbox?.checked(row));\n }, [props.checkbox, props.rows]);\n\n useEffect(() => {\n dispatchCheckboxStatus({\n type: \"SET\",\n payload: { checkedRecords: checkBoxes },\n });\n }, [checkBoxes]);\n\n const sortedRows = useMemo(\n () => sort(filteredRows),\n [filteredRows, sortTiming]\n );\n\n useEffect(() => {\n updatedData();\n }, [props.rows]);\n\n const pageRows = useMemo(\n () => pageFilter(sortedRows),\n [pageFilter, sortedRows]\n );\n\n const pageRowIds = useMemo(() => pageRows.map((row) => row.id), [pageRows]);\n const pageRowIdSets = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const rowMaps = useMemo(\n () =>\n props.rows\n .filter((row) => pageRowIdSets.has(row.id))\n .reduce((acc, row) => {\n const rowSortedByKey = Object.keys(row)\n .sort()\n .reduce((acc, key) => {\n acc[key] = row[key];\n return acc;\n }, {} as { [key: string]: string | number | Date });\n\n acc[row.id] = {\n data: rowSortedByKey,\n stringValue: JSON.stringify(rowSortedByKey),\n };\n return acc;\n }, {} as { [id: string | number]: { data: DataObject<any>; stringValue: string } }),\n [props.rows, pageRowIdSets]\n );\n\n useEffect(() => {\n setMaxDisplayColCount(props.cols.length);\n }, [props.cols.length]);\n\n useEffect(() => {\n setMaxDisplayRowCount(pageRowIds.length);\n }, [pageRowIds.length]);\n\n useEffect(() => {\n const rows = pageRowIds.map((id) => rowMaps[id].data);\n setRowsForCopy(rows);\n setRowsForPaste(rows);\n }, [rowMaps]);\n\n return {\n cols: props.cols,\n rowMaps,\n pageRowIds,\n };\n}\n"],"names":["props","filter","useFilterFunctions","_a","useSortActionContext","sort","updatedData","sortTiming","useSortTimingContext","_b","usePageContext","setRowCount","pageFilter","dispatchCheckboxStatus","useCheckboxStatusContext","setRowsForPaste","usePasteActionContext","setRowsForCopy","useCopyActionContext","_c","useTablePropertyActionContext","setMaxDisplayColCount","setMaxDisplayRowCount","filteredRows","useMemo","rows","length","useEffect","checkBoxes","checkbox","row","checked","type","payload","checkedRecords","sortedRows","pageRows","pageRowIds","map","id","pageRowIdSets","Set","rowMaps","has","reduce","acc","rowSortedByKey","Object","keys","key","data","stringValue","JSON","stringify","cols"],"mappings":"sTAUM,SAAyCA,GACrC,IAAAC,EAAWC,8BACbC,EAAwBC,EAAoBA,uBAA1CC,EAAIF,EAAAE,KAAEC,EAAWH,EAAAG,YACnBC,EAAaC,EAAAA,uBACbC,EAA8BC,EAAcA,iBAA1CC,EAAWF,EAAAE,YAAEC,EAAUH,EAAAG,WACvBC,EAA2BC,oDAClBC,EAAoBC,kCACpBC,EAAmBC,iCAC9BC,EACJC,EAA6BA,gCADvBC,EAAqBF,EAAAE,sBAAEC,EAAqBH,EAAAG,sBAG9CC,EAAeC,EAAAA,SACnB,WAAM,OAAAvB,EAAOD,EAAMyB,KAAK,GACxB,CAACxB,EAAQM,EAAYP,EAAMyB,KAAKC,SAGlCC,EAAAA,WAAU,WACRhB,EAAYY,EAAaG,OAC3B,GAAG,CAACH,EAAaG,SAEjB,IAAME,EAAaJ,EAAAA,SAAQ,WACzB,OAAKxB,EAAM6B,SAIJ7B,EAAMyB,KAAKxB,QAAO,SAAC6B,GAAG,IAAA3B,EAAK,eAAAA,EAAAH,EAAM6B,+BAAUE,QAAQD,EAAI,IAHrD,EAIV,GAAE,CAAC9B,EAAM6B,SAAU7B,EAAMyB,OAE1BE,EAAAA,WAAU,WACRd,EAAuB,CACrBmB,KAAM,MACNC,QAAS,CAAEC,eAAgBN,IAE/B,GAAG,CAACA,IAEJ,IAAMO,EAAaX,EAAAA,SACjB,WAAM,OAAAnB,EAAKkB,KACX,CAACA,EAAchB,IAGjBoB,EAAAA,WAAU,WACRrB,GACF,GAAG,CAACN,EAAMyB,OAEV,IAAMW,EAAWZ,EAAAA,SACf,WAAM,OAAAZ,EAAWuB,KACjB,CAACvB,EAAYuB,IAGTE,EAAab,EAAAA,SAAQ,WAAM,OAAAY,EAASE,KAAI,SAACR,GAAQ,OAAAA,EAAIS,EAAE,GAAC,GAAE,CAACH,IAC3DI,EAAgBhB,EAAAA,SAAQ,WAAM,OAAA,IAAIiB,IAAIJ,EAAW,GAAE,CAACA,IAEpDK,EAAUlB,EAAAA,SACd,WACE,OAAAxB,EAAMyB,KACHxB,QAAO,SAAC6B,GAAQ,OAAAU,EAAcG,IAAIb,EAAIS,OACtCK,QAAO,SAACC,EAAKf,GACZ,IAAMgB,EAAiBC,OAAOC,KAAKlB,GAChCzB,OACAuC,QAAO,SAACC,EAAKI,GAEZ,OADAJ,EAAII,GAAOnB,EAAImB,GACRJ,CACR,GAAE,CAA+C,GAMpD,OAJAA,EAAIf,EAAIS,IAAM,CACZW,KAAMJ,EACNK,YAAaC,KAAKC,UAAUP,IAEvBD,CACR,GAAE,CAA+E,EAAC,GACvF,CAAC7C,EAAMyB,KAAMe,IAiBf,OAdAb,EAAAA,WAAU,WACRN,EAAsBrB,EAAMsD,KAAK5B,OAClC,GAAE,CAAC1B,EAAMsD,KAAK5B,SAEfC,EAAAA,WAAU,WACRL,EAAsBe,EAAWX,OACnC,GAAG,CAACW,EAAWX,SAEfC,EAAAA,WAAU,WACR,IAAMF,EAAOY,EAAWC,KAAI,SAACC,GAAO,OAAAG,EAAQH,GAAIW,IAAI,IACpDjC,EAAeQ,GACfV,EAAgBU,EAClB,GAAG,CAACiB,IAEG,CACLY,KAAMtD,EAAMsD,KACZZ,QAAOA,EACPL,WAAUA,EAEd"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useConditionInputAction as
|
|
2
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useConditionInputAction as a}from"./condition-input-management/context.js";import"react";import"../../../node_modules/tslib/tslib.es6.js";import{TiDeleteOutline as n}from"../../../node_modules/react-icons/ti/index.js";function o(t){return e("div",{className:"flex gap-1",children:t.conditions.map((function(t,a){return e(r,{index:a,condition:t},a)}))})}function r(o){var r=a().deleteCondition;return t("div",{className:"flex items-center gap-2 w-fit px-2 border-2 border-sky-600 rounded shadow",children:[e("p",{className:"whitespace-nowrap",children:c(o.condition)}),e("div",{children:e(n,{className:"bg-white hover:bg-slate-300 rounded-full cursor-pointer",onClick:function(){return r(o.index)}})})]})}function c(e){var t;switch(e.input.type){case"none":return"".concat(e.target.label," ").concat(e.operator.label);case"single string":case"single number":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value);case"single date":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value.toLocaleDateString());case"single datetime":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value.toLocaleString());case"range string":case"range number":case"range date":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.from," ~ ").concat(e.input.payload.to);case"select":if("select"!==e.target.type)throw new Error("type error");var a=e.input.payload.value;return"".concat(e.target.label," ").concat(e.operator.label," ").concat(null===(t=e.target.options.find((function(e){return e.value===a})))||void 0===t?void 0:t.label);case"multi select":return"".concat(e.target.label," ").concat(e.operator.label," ").concat(e.input.payload.value.join(", "))}}export{o as ConditionList};
|
|
3
3
|
//# sourceMappingURL=condition-list.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{jsx as e,jsxs as
|
|
2
|
+
import{jsx as e,jsxs as n,Fragment as t}from"react/jsx-runtime";import{useState as i,useRef as o,useEffect as r}from"react";import{SelectBox as a}from"../../select-box/index.js";import{useConditionInputState as u,useConditionInputAction as l}from"./condition-input-management/context.js";import"../../../node_modules/tslib/tslib.es6.js";import{useIdGenerator as p}from"../id-generator/context.js";import{TiDeleteOutline as c}from"../../../node_modules/react-icons/ti/index.js";function s(n){switch(u().status){case"waiting for input":return e(d,{});case"inputted target":return e(f,{});case"inputted operator":return e(g,{size:n.size})}}function d(){var n=p().generateId,t=u().targets,i=l().inputTarget;return e(a,{id:n("TargetInput"),onSelect:function(e){i(e)},options:t.map((function(e){return{value:e.key,label:e.label}})),placeholder:"Select target",no_appearance:!0,no_icon:!0})}function f(){var i=p().generateId,o=u(),r=l(),c=r.inputOperator,s=r.removeInputedTarget;if("inputted target"!==o.status)return null;var d=o.inputtingCondition.target,f=o.useableOperators;return n(t,{children:[e(T,{label:d.label,onClickDelete:function(){s()}}),e("div",{className:"w-full min-w-64",children:e(a,{id:i("OperatorInput"),onSelect:function(e){c(e),setTimeout((function(){var e=document.getElementById(i("ValueInput"));e&&e.focus()}),10)},options:f.map((function(e){return{value:e.key,label:e.label}})),defaultIsOpen:!0,placeholder:"Select operator",no_appearance:!0,no_icon:!0})})]})}function g(i){var o=u(),r=l(),a=r.removeInputedOperator,p=r.removeInputedTarget;if("inputted operator"!==o.status)return null;var c=o.inputtingCondition.target,s=o.inputtingCondition.operator;return n(t,{children:[e(T,{label:c.label,onClickDelete:function(){p()}}),e(T,{label:s.label,onClickDelete:function(){a()}}),"single string"===o.inputtingCondition.operator.inputType?e(m,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"single number"===o.inputtingCondition.operator.inputType?e(y,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"select"===o.inputtingCondition.operator.inputType?e(v,{inputType:o.inputtingCondition.operator.inputType,options:"select"===o.inputtingCondition.target.type?o.inputtingCondition.target.options:[]}):"single datetime"===o.inputtingCondition.operator.inputType?e(b,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):"single date"===o.inputtingCondition.operator.inputType?e(w,{inputType:o.inputtingCondition.operator.inputType,size:i.size}):console.error("Not implemented")]})}function m(n){var t=p().generateId,o=i(""),r=o[0],a=o[1],u=l().inputValue;return e("input",{id:t("ValueInput"),className:"appearance-none w-full min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===n.size?"text-sm":"large"===n.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){a(e.target.value)},onKeyDown:function(e){"Enter"===e.key&&(u({type:n.inputType,payload:{value:r}}),a(""))}})}function y(n){var t=p().generateId,o=i(""),r=o[0],a=o[1],u=l().inputValue;return e("input",{id:t("ValueInput"),className:"appearance-none w-full min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===n.size?"text-sm":"large"===n.size?"text-lg":""),type:"text",placeholder:"Search text",value:r,onChange:function(e){a(e.target.value)},onKeyDown:function(e){"Enter"===e.key&&(u({type:n.inputType,payload:{value:Number(r)}}),a(""))}})}function v(n){var t=l().inputValue,i=p().generateId;return e("div",{className:"w-full min-w-64",children:e(a,{id:i("ValueInput"),onSelect:function(e){t({type:n.inputType,payload:{value:e}})},options:n.options,defaultIsOpen:!0,placeholder:"Select value",no_appearance:!0,no_icon:!0})})}function b(n){var t=p().generateId,i=l().inputValue,a=o(null);return r((function(){if(a.current){var e=a.current;e.focus(),e.scrollIntoView(),e.click()}}),[]),e("input",{ref:a,id:t("ValueInput"),className:"appearance-none w-fit min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===n.size?"text-sm":"large"===n.size?"text-lg":""),type:"datetime-local",defaultValue:new Date((new Date).getTime()-6e4*(new Date).getTimezoneOffset()).toISOString().slice(0,16),onKeyDown:function(e){var t,o;if("Enter"===e.key){var r=new Date(null!==(o=null===(t=a.current)||void 0===t?void 0:t.value)&&void 0!==o?o:"");if(isNaN(r.getTime()))return;i({type:n.inputType,payload:{value:r}})}},onClick:function(e){e.currentTarget.showPicker()}})}function w(n){var t=p().generateId,i=l().inputValue,a=o(null),u=o(!1);return r((function(){if(a.current){var e=a.current;e.focus(),e.scrollIntoView(),e.click()}}),[]),e("input",{ref:a,id:t("ValueInput"),className:"appearance-none w-fit min-w-64 border-none px-2 py-1 focus:outline-none focus-visible:outline-none bg-transparent ".concat("small"===n.size?"text-sm":"large"===n.size?"text-lg":""),type:"date",defaultValue:new Date((new Date).getTime()-6e4*(new Date).getTimezoneOffset()).toISOString().slice(0,10),onKeyDown:function(e){var t;if("Enter"===e.key){if(!(null===(t=a.current)||void 0===t?void 0:t.value))return;var o=a.current.value.split("-"),r=o[0],u=o[1],l=o[2],p=new Date(Number(r),Number(u)-1,Number(l));if(isNaN(p.getTime()))return;i({type:n.inputType,payload:{value:p}})}},onClick:function(e){u.current||(e.currentTarget.showPicker(),u.current=!0)}})}function T(t){return n("div",{className:"flex items-center gap-2 w-fit px-2 border rounded bg-slate-100",children:[e("p",{className:"whitespace-nowrap",children:t.label}),t.onClickDelete&&e("div",{children:e(c,{className:"bg-white hover:bg-slate-300 rounded-full cursor-pointer",onClick:t.onClickDelete})})]})}export{s as SearchBarInputForm};
|
|
3
3
|
//# sourceMappingURL=input-form.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as o}from"react";import{
|
|
1
|
+
import{jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as o}from"react";import{useIdContext as i}from"../id/provider.js";import{IdGenerator as r}from"../lib/id-generator.js";import{useOptionsWindow as l}from"./context.js";function s(){var s=i(),a=l(),c=a.state,u=a.actions,d=n(""),f=d[0],p=d[1],v=n(void 0),m=v[0],g=v[1],y=n({top:0,left:0}),h=y[0],w=y[1],b=c.isOpen?0===c.options.length?void 0:"number"==typeof m&&m<c.options.length&&m>=0?c.options[m].value:void 0:void 0;return o((function(){if(c.isOpen){var e=document.getElementById(r.generateIdSelectBoxOption(s,null!=b?b:""));if(!e)return;if(0===h.top&&0===h.left)return;e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}else g(void 0)}),[c,h,b]),o((function(){if(c.isOpen){var e=function(e){if("ArrowDown"===e.key)e.preventDefault(),g((function(e){return"number"==typeof e?Math.min(e+1,c.options.length-1):0}));else if("ArrowUp"===e.key)e.preventDefault(),g((function(e){return"number"==typeof e?Math.max(e-1,0):0}));else if("Enter"===e.key){if(e.preventDefault(),"number"==typeof m){if(0===c.options.length||c.options.length<=m)return;var t=c.options[m].value;if(!t)return;p(t),c.onSelect(t),u.closeOptionsWindow()}}else"Escape"===e.key&&(e.preventDefault(),u.closeOptionsWindow())};return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}}),[c,m,g,u]),o((function(){var e=setTimeout((function(){var e;if(c.isOpen){for(var t=null===(e=document.getElementById("ReactUI:SelectBox:OptionsArea"))||void 0===e?void 0:e.parentElement,n=["relative","fixed","absolute","sticky"];t;){var o=n.some((function(e){return t.className.includes(e)})),i=n.some((function(e){return t.style.position.includes(e)}));if(o||i)break;t=t.parentElement}var r=document.getElementById(c.selectBoxId);if(r){var l=r.getBoundingClientRect(),s=l.top+l.height,a=l.left;if(t){var u=t.getBoundingClientRect();w({top:s-u.top+t.scrollTop,left:a-u.left+t.scrollLeft})}else w({top:s+window.scrollY,left:a+window.scrollX})}}}),0);return function(){clearTimeout(e)}}),[c.isOpen]),o((function(){var e=function(e){if(c.isOpen){var t=document.getElementById(c.selectBoxId),n=document.getElementById("ReactUI:SelectBox:OptionsArea"),o=e.target;o instanceof Node&&(null==t?void 0:t.contains(o))||o instanceof Node&&(null==n?void 0:n.contains(o))||(u.setSearchText(""),u.closeOptionsWindow())}};return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[c.isOpen]),c.isOpen?e("div",{id:"ReactUI:SelectBox:OptionsArea",className:"absolute min-w-fit max-h-[40vh] overflow-auto border border-gray-300 z-10",style:h,children:c.options.map((function(t){var n,o;return e("div",{id:r.generateIdSelectBoxOption(s,null!==(n=t.value)&&void 0!==n?n:""),className:"hover:bg-gray-200 px-2 py-1 ".concat("string"==typeof b?b===t.value?"bg-gray-100":"bg-white":f===t.value?"bg-gray-100":"bg-white"),onClick:function(){c.onSelect(t.value),u.closeOptionsWindow()},children:null!==(o=t.searchLabel)&&void 0!==o?o:t.label},t.value)}))}):e(t,{})}export{s as OptionsArea};
|
|
2
2
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../../../src/select-box/options-window/component.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { useOptionsWindow } from \"../options-window\";\nimport { useIdContext } from \"../id/provider\";\nimport { IdGenerator } from \"../lib\";\n\nexport function OptionsArea() {\n const id = useIdContext();\n const { state, actions } = useOptionsWindow();\n const [value, setValue] = useState(\"\");\n const [selectingIndex, setSelectingIndex] = useState<number | undefined>(\n undefined\n );\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const selectingValue = state.isOpen\n ? state.options.length === 0\n ? undefined\n : typeof selectingIndex === \"number\" &&\n selectingIndex < state.options.length &&\n selectingIndex >= 0\n ? state.options[selectingIndex].value\n : undefined\n : undefined;\n\n useEffect(() => {\n if (state.isOpen) {\n const optionElement = document.getElementById(\n IdGenerator.generateIdSelectBoxOption(id, selectingValue ?? \"\")\n );\n\n if (!optionElement) return;\n if (position.top === 0 && position.left === 0) return;\n\n optionElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n } else {\n setSelectingIndex(undefined);\n }\n }, [state, position, selectingValue]);\n\n useEffect(() => {\n if (state.isOpen) {\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\"\n ? Math.min(prev + 1, state.options.length - 1)\n : 0\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\" ? Math.max(prev - 1, 0) : 0\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (typeof selectingIndex === \"number\") {\n if (\n state.options.length === 0 ||\n state.options.length <= selectingIndex\n )\n return;\n\n const value = state.options[selectingIndex].value;\n\n if (!value) return;\n\n setValue(value);\n state.onSelect(value);\n actions.closeOptionsWindow();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n actions.closeOptionsWindow();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n };\n }\n }, [state, selectingIndex, setSelectingIndex, actions]);\n\n useEffect(() => {\n const searchParentElement = () => {\n if (state.isOpen) {\n let parentElement = document.getElementById(\n \"ReactUI:SelectBox:OptionsArea\"\n )?.parentElement;\n\n const positionClasses = [\"relative\", \"fixed\", \"absolute\", \"sticky\"];\n\n while (parentElement) {\n const hasPositionClass = positionClasses.some((className) =>\n parentElement!.className.includes(className)\n );\n\n const hasPositionStyle = positionClasses.some((style) =>\n parentElement!.style.position.includes(style)\n );\n\n if (hasPositionClass || hasPositionStyle) break;\n\n parentElement = parentElement.parentElement;\n }\n\n const selectBoxElement = document.getElementById(state.selectBoxId);\n\n if (selectBoxElement) {\n const rect = selectBoxElement.getBoundingClientRect();\n let top = rect.top + rect.height;\n let left = rect.left;\n\n if (parentElement) {\n const parentRect = parentElement.getBoundingClientRect();\n setPosition({\n top: top - parentRect.top + parentElement.scrollTop,\n left: left - parentRect.left + parentElement.scrollLeft,\n });\n } else {\n setPosition({\n top: top + window.scrollY,\n left: left + window.scrollX,\n });\n }\n }\n }\n };\n\n const timer = setTimeout(searchParentElement, 0);\n\n return () => {\n clearTimeout(timer);\n };\n }, [state.isOpen]);\n\n useEffect(() => {\n const onClickOutOfSelectBox = (e: MouseEvent) => {\n if (!state.isOpen) return;\n\n // SelectBox関連の要素を取得\n const frameElement = document.getElementById(state.selectBoxId);\n const optionsElement = document.getElementById(\n \"ReactUI:SelectBox:OptionsArea\"\n );\n\n // クリックされた要素を取得\n const ele = e.target;\n\n if (ele instanceof Node && frameElement?.contains(ele)) return;\n\n if (ele instanceof Node && optionsElement?.contains(ele)) return;\n\n actions.setSearchText(\"\");\n actions.closeOptionsWindow();\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfSelectBox);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfSelectBox);\n };\n }, [state.isOpen]);\n\n if (!state.isOpen) return <></>;\n\n return (\n <div\n id={\"ReactUI:SelectBox:OptionsArea\"}\n className=\"absolute min-w-fit max-h-[40vh] overflow-auto border border-gray-300 z-10\"\n style={position}\n >\n {state.options.map((option) => (\n <div\n id={IdGenerator.generateIdSelectBoxOption(id, option.value ?? \"\")}\n className={`hover:bg-gray-200 px-2 py-1 ${\n typeof selectingValue === \"string\"\n ? selectingValue === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n : value === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n }`}\n key={option.value}\n onClick={() => {\n state.onSelect(option.value);\n actions.closeOptionsWindow();\n }}\n >\n {option.searchLabel ?? option.label}\n </div>\n ))}\n </div>\n );\n}\n"],"names":["OptionsArea","id","useIdContext","_a","useOptionsWindow","state","actions","_b","useState","value","setValue","_c","undefined","selectingIndex","setSelectingIndex","_d","top","left","position","setPosition","selectingValue","isOpen","options","length","useEffect","optionElement","document","getElementById","IdGenerator","generateIdSelectBoxOption","scrollIntoView","behavior","block","inline","handleKeydown_1","e","key","preventDefault","prev","Math","min","max","value_1","onSelect","closeOptionsWindow","addEventListener","removeEventListener","timer","setTimeout","parentElement_1","parentElement","positionClasses","hasPositionClass","some","className","includes","hasPositionStyle","style","selectBoxElement","selectBoxId","rect","getBoundingClientRect","top_1","height","parentRect","scrollTop","scrollLeft","window","scrollY","scrollX","clearTimeout","onClickOutOfSelectBox","frameElement","optionsElement","ele","target","Node","contains","setSearchText","_jsx","map","option","concat","onClick","children","searchLabel","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../../../src/select-box/options-window/component.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { useIdContext } from \"../id/provider\";\nimport { IdGenerator } from \"../lib\";\nimport { useOptionsWindow } from \"./context\";\n\nexport function OptionsArea() {\n const id = useIdContext();\n const { state, actions } = useOptionsWindow();\n const [value, setValue] = useState(\"\");\n const [selectingIndex, setSelectingIndex] = useState<number | undefined>(\n undefined\n );\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const selectingValue = state.isOpen\n ? state.options.length === 0\n ? undefined\n : typeof selectingIndex === \"number\" &&\n selectingIndex < state.options.length &&\n selectingIndex >= 0\n ? state.options[selectingIndex].value\n : undefined\n : undefined;\n\n useEffect(() => {\n if (state.isOpen) {\n const optionElement = document.getElementById(\n IdGenerator.generateIdSelectBoxOption(id, selectingValue ?? \"\")\n );\n\n if (!optionElement) return;\n if (position.top === 0 && position.left === 0) return;\n\n optionElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n } else {\n setSelectingIndex(undefined);\n }\n }, [state, position, selectingValue]);\n\n useEffect(() => {\n if (state.isOpen) {\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\"\n ? Math.min(prev + 1, state.options.length - 1)\n : 0\n );\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectingIndex((prev) =>\n typeof prev === \"number\" ? Math.max(prev - 1, 0) : 0\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (typeof selectingIndex === \"number\") {\n if (\n state.options.length === 0 ||\n state.options.length <= selectingIndex\n )\n return;\n\n const value = state.options[selectingIndex].value;\n\n if (!value) return;\n\n setValue(value);\n state.onSelect(value);\n actions.closeOptionsWindow();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n actions.closeOptionsWindow();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeydown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeydown);\n };\n }\n }, [state, selectingIndex, setSelectingIndex, actions]);\n\n useEffect(() => {\n const searchParentElement = () => {\n if (state.isOpen) {\n let parentElement = document.getElementById(\n \"ReactUI:SelectBox:OptionsArea\"\n )?.parentElement;\n\n const positionClasses = [\"relative\", \"fixed\", \"absolute\", \"sticky\"];\n\n while (parentElement) {\n const hasPositionClass = positionClasses.some((className) =>\n parentElement!.className.includes(className)\n );\n\n const hasPositionStyle = positionClasses.some((style) =>\n parentElement!.style.position.includes(style)\n );\n\n if (hasPositionClass || hasPositionStyle) break;\n\n parentElement = parentElement.parentElement;\n }\n\n const selectBoxElement = document.getElementById(state.selectBoxId);\n\n if (selectBoxElement) {\n const rect = selectBoxElement.getBoundingClientRect();\n let top = rect.top + rect.height;\n let left = rect.left;\n\n if (parentElement) {\n const parentRect = parentElement.getBoundingClientRect();\n setPosition({\n top: top - parentRect.top + parentElement.scrollTop,\n left: left - parentRect.left + parentElement.scrollLeft,\n });\n } else {\n setPosition({\n top: top + window.scrollY,\n left: left + window.scrollX,\n });\n }\n }\n }\n };\n\n const timer = setTimeout(searchParentElement, 0);\n\n return () => {\n clearTimeout(timer);\n };\n }, [state.isOpen]);\n\n useEffect(() => {\n const onClickOutOfSelectBox = (e: MouseEvent) => {\n if (!state.isOpen) return;\n\n // SelectBox関連の要素を取得\n const frameElement = document.getElementById(state.selectBoxId);\n const optionsElement = document.getElementById(\n \"ReactUI:SelectBox:OptionsArea\"\n );\n\n // クリックされた要素を取得\n const ele = e.target;\n\n if (ele instanceof Node && frameElement?.contains(ele)) return;\n\n if (ele instanceof Node && optionsElement?.contains(ele)) return;\n\n actions.setSearchText(\"\");\n actions.closeOptionsWindow();\n };\n\n document.addEventListener(\"mousedown\", onClickOutOfSelectBox);\n\n return () => {\n document.removeEventListener(\"mousedown\", onClickOutOfSelectBox);\n };\n }, [state.isOpen]);\n\n if (!state.isOpen) return <></>;\n\n return (\n <div\n id={\"ReactUI:SelectBox:OptionsArea\"}\n className=\"absolute min-w-fit max-h-[40vh] overflow-auto border border-gray-300 z-10\"\n style={position}\n >\n {state.options.map((option) => (\n <div\n id={IdGenerator.generateIdSelectBoxOption(id, option.value ?? \"\")}\n className={`hover:bg-gray-200 px-2 py-1 ${\n typeof selectingValue === \"string\"\n ? selectingValue === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n : value === option.value\n ? \"bg-gray-100\"\n : \"bg-white\"\n }`}\n key={option.value}\n onClick={() => {\n state.onSelect(option.value);\n actions.closeOptionsWindow();\n }}\n >\n {option.searchLabel ?? option.label}\n </div>\n ))}\n </div>\n );\n}\n"],"names":["OptionsArea","id","useIdContext","_a","useOptionsWindow","state","actions","_b","useState","value","setValue","_c","undefined","selectingIndex","setSelectingIndex","_d","top","left","position","setPosition","selectingValue","isOpen","options","length","useEffect","optionElement","document","getElementById","IdGenerator","generateIdSelectBoxOption","scrollIntoView","behavior","block","inline","handleKeydown_1","e","key","preventDefault","prev","Math","min","max","value_1","onSelect","closeOptionsWindow","addEventListener","removeEventListener","timer","setTimeout","parentElement_1","parentElement","positionClasses","hasPositionClass","some","className","includes","hasPositionStyle","style","selectBoxElement","selectBoxId","rect","getBoundingClientRect","top_1","height","parentRect","scrollTop","scrollLeft","window","scrollY","scrollX","clearTimeout","onClickOutOfSelectBox","frameElement","optionsElement","ele","target","Node","contains","setSearchText","_jsx","map","option","concat","onClick","children","searchLabel","label"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e="none",t="single string",
|
|
1
|
+
var e="none",t="single string",l="single number",p="single date",y="single datetime",n="select",i=[{key:"string:eq",label:"=",type:"string",inputType:t},{key:"string:neq",label:"≠",type:"string",inputType:t},{key:"string:like",label:"like",type:"string",inputType:t},{key:"string:not_like",label:"not like",type:"string",inputType:t},{key:"string:is_null",label:"is empty",type:"string",inputType:e},{key:"string:is_not_null",label:"is not empty",type:"string",inputType:e},{key:"number:eq",label:"=",type:"number",inputType:l},{key:"number:neq",label:"≠",type:"number",inputType:l},{key:"number:gt",label:">",type:"number",inputType:l},{key:"number:lt",label:"<",type:"number",inputType:l},{key:"number:gte",label:"≧",type:"number",inputType:l},{key:"number:lte",label:"≦",type:"number",inputType:l},{key:"select:eq",label:"=",type:"select",inputType:n},{key:"select:neq",label:"≠",type:"select",inputType:n},{key:"select:is_null",label:"is empty",type:"select",inputType:e},{key:"select:is_not_null",label:"is not empty",type:"select",inputType:e},{key:"date:eq",label:"=",type:"date",inputType:p},{key:"date:neq",label:"≠",type:"date",inputType:p},{key:"date:gt",label:">",type:"date",inputType:p},{key:"date:lt",label:"<",type:"date",inputType:p},{key:"date:gte",label:"≧",type:"date",inputType:p},{key:"date:lte",label:"≦",type:"date",inputType:p},{key:"date:is_null",label:"is null",type:"date",inputType:e},{key:"date:is_not_null",label:"is not null",type:"date",inputType:e},{key:"datetime:gt",label:">",type:"datetime",inputType:y},{key:"datetime:lt",label:"<",type:"datetime",inputType:y},{key:"datetime:gte",label:"≧",type:"datetime",inputType:y},{key:"datetime:lte",label:"≦",type:"datetime",inputType:y},{key:"datetime:is_null",label:"is empty",type:"datetime",inputType:e},{key:"datetime:is_not_null",label:"is not empty",type:"datetime",inputType:e}];export{i as DEFAULT_SEARCH_OPERATOR,e as NONE,n as SELECT,p as SINGLE_DATE,y as SINGLE_DATETIME,l as SINGLE_NUMBER,t as SINGLE_STRING};
|
|
2
2
|
//# sourceMappingURL=constant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.js","sources":["../../../../../src/share/search-operator/constant.ts"],"sourcesContent":["export const NONE = \"none\";\nexport const SINGLE_STRING = \"single string\";\nexport const SINGLE_NUMBER = \"single number\";\nexport const SINGLE_DATE = \"single date\";\nexport const RANGE_STRING = \"range string\";\nexport const RANGE_NUMBER = \"range number\";\nexport const RANGE_DATE = \"range date\";\nexport const SELECT = \"select\";\nexport const MULTI_SELECT = \"multi select\";\n\nexport const DEFAULT_SEARCH_OPERATOR = [\n {\n key: \"string:eq\",\n label: \"=\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:neq\",\n label: \"≠\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:like\",\n label: \"like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:not_like\",\n label: \"not like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n // { key: \"string:in\", label: \"in\", type: \"string\" },\n // { key: \"string:not_in\", label: \"not in\", type: \"string\" },\n {\n key: \"string:is_null\",\n label: \"is empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"string:is_not_null\",\n label: \"is not empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"number:eq\",\n label: \"=\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:neq\",\n label: \"≠\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gt\",\n label: \">\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lt\",\n label: \"<\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gte\",\n label: \"≧\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lte\",\n label: \"≦\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"select:eq\",\n label: \"=\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:neq\",\n label: \"≠\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:is_null\",\n label: \"is empty\",\n type: \"select\",\n inputType: NONE,\n },\n {\n key: \"select:is_not_null\",\n label: \"is not empty\",\n type: \"select\",\n inputType: NONE,\n },\n
|
|
1
|
+
{"version":3,"file":"constant.js","sources":["../../../../../src/share/search-operator/constant.ts"],"sourcesContent":["export const NONE = \"none\";\nexport const SINGLE_STRING = \"single string\";\nexport const SINGLE_NUMBER = \"single number\";\nexport const SINGLE_DATE = \"single date\";\nexport const SINGLE_DATETIME = \"single datetime\";\nexport const RANGE_STRING = \"range string\";\nexport const RANGE_NUMBER = \"range number\";\nexport const RANGE_DATE = \"range date\";\nexport const SELECT = \"select\";\nexport const MULTI_SELECT = \"multi select\";\n\nexport const DEFAULT_SEARCH_OPERATOR = [\n {\n key: \"string:eq\",\n label: \"=\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:neq\",\n label: \"≠\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:like\",\n label: \"like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n {\n key: \"string:not_like\",\n label: \"not like\",\n type: \"string\",\n inputType: SINGLE_STRING,\n },\n // { key: \"string:in\", label: \"in\", type: \"string\" },\n // { key: \"string:not_in\", label: \"not in\", type: \"string\" },\n {\n key: \"string:is_null\",\n label: \"is empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"string:is_not_null\",\n label: \"is not empty\",\n type: \"string\",\n inputType: NONE,\n },\n {\n key: \"number:eq\",\n label: \"=\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:neq\",\n label: \"≠\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gt\",\n label: \">\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lt\",\n label: \"<\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:gte\",\n label: \"≧\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"number:lte\",\n label: \"≦\",\n type: \"number\",\n inputType: SINGLE_NUMBER,\n },\n {\n key: \"select:eq\",\n label: \"=\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:neq\",\n label: \"≠\",\n type: \"select\",\n inputType: SELECT,\n },\n {\n key: \"select:is_null\",\n label: \"is empty\",\n type: \"select\",\n inputType: NONE,\n },\n {\n key: \"select:is_not_null\",\n label: \"is not empty\",\n type: \"select\",\n inputType: NONE,\n },\n { key: \"date:eq\", label: \"=\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:neq\", label: \"≠\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:gt\", label: \">\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:lt\", label: \"<\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:gte\", label: \"≧\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:lte\", label: \"≦\", type: \"date\", inputType: SINGLE_DATE },\n { key: \"date:is_null\", label: \"is null\", type: \"date\", inputType: NONE },\n {\n key: \"date:is_not_null\",\n label: \"is not null\",\n type: \"date\",\n inputType: NONE,\n },\n {\n key: \"datetime:gt\",\n label: \">\",\n type: \"datetime\",\n inputType: SINGLE_DATETIME,\n },\n {\n key: \"datetime:lt\",\n label: \"<\",\n type: \"datetime\",\n inputType: SINGLE_DATETIME,\n },\n {\n key: \"datetime:gte\",\n label: \"≧\",\n type: \"datetime\",\n inputType: SINGLE_DATETIME,\n },\n {\n key: \"datetime:lte\",\n label: \"≦\",\n type: \"datetime\",\n inputType: SINGLE_DATETIME,\n },\n {\n key: \"datetime:is_null\",\n label: \"is empty\",\n type: \"datetime\",\n inputType: NONE,\n },\n {\n key: \"datetime:is_not_null\",\n label: \"is not empty\",\n type: \"datetime\",\n inputType: NONE,\n },\n] as const;\n\nexport type T_DEFAULT_SEARCH_OPERATOR =\n (typeof DEFAULT_SEARCH_OPERATOR)[number];\n\nexport type T_SEARCH_INPUT_TYPE = T_DEFAULT_SEARCH_OPERATOR[\"inputType\"];\n"],"names":["NONE","SINGLE_STRING","SINGLE_NUMBER","SINGLE_DATE","SINGLE_DATETIME","SELECT","DEFAULT_SEARCH_OPERATOR","key","label","type","inputType"],"mappings":"AAAO,IAAMA,EAAO,OACPC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAc,cACdC,EAAkB,kBAIlBC,EAAS,SAGTC,EAA0B,CACrC,CACEC,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWT,GAEb,CACEM,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWT,GAEb,CACEM,IAAK,cACLC,MAAO,OACPC,KAAM,SACNC,UAAWT,GAEb,CACEM,IAAK,kBACLC,MAAO,WACPC,KAAM,SACNC,UAAWT,GAIb,CACEM,IAAK,iBACLC,MAAO,WACPC,KAAM,SACNC,UAAWV,GAEb,CACEO,IAAK,qBACLC,MAAO,eACPC,KAAM,SACNC,UAAWV,GAEb,CACEO,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWR,GAEb,CACEK,IAAK,YACLC,MAAO,IACPC,KAAM,SACNC,UAAWL,GAEb,CACEE,IAAK,aACLC,MAAO,IACPC,KAAM,SACNC,UAAWL,GAEb,CACEE,IAAK,iBACLC,MAAO,WACPC,KAAM,SACNC,UAAWV,GAEb,CACEO,IAAK,qBACLC,MAAO,eACPC,KAAM,SACNC,UAAWV,GAEb,CAAEO,IAAK,UAAWC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACvD,CAAEI,IAAK,WAAYC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACxD,CAAEI,IAAK,UAAWC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACvD,CAAEI,IAAK,UAAWC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACvD,CAAEI,IAAK,WAAYC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACxD,CAAEI,IAAK,WAAYC,MAAO,IAAKC,KAAM,OAAQC,UAAWP,GACxD,CAAEI,IAAK,eAAgBC,MAAO,UAAWC,KAAM,OAAQC,UAAWV,GAClE,CACEO,IAAK,mBACLC,MAAO,cACPC,KAAM,OACNC,UAAWV,GAEb,CACEO,IAAK,cACLC,MAAO,IACPC,KAAM,WACNC,UAAWN,GAEb,CACEG,IAAK,cACLC,MAAO,IACPC,KAAM,WACNC,UAAWN,GAEb,CACEG,IAAK,eACLC,MAAO,IACPC,KAAM,WACNC,UAAWN,GAEb,CACEG,IAAK,eACLC,MAAO,IACPC,KAAM,WACNC,UAAWN,GAEb,CACEG,IAAK,mBACLC,MAAO,WACPC,KAAM,WACNC,UAAWV,GAEb,CACEO,IAAK,uBACLC,MAAO,eACPC,KAAM,WACNC,UAAWV"}
|
|
@@ -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 n}from"../sheet/providers.js";import{useRangeActionContext as o}from"../range/provider.js";import{useTableIdGenerator as r}from"../id/provider.js";function i(i,d){var a,p,u,l=r(),m=o(),c=m.startSelectRange,s=m.moveSelectRange,v=m.endSelectRange,f=t().startEditing,g=l.extractCellIndexFromId(i),y=g[0],I=g[1],x=n()[I],D=d[x.key],E="select"===x.type?null!==(u=null===(p=null===(a=x.options)||void 0===a?void 0:a.find((function(e){return e.value===D})))||void 0===p?void 0:p.label)&&void 0!==u?u:"":"date"===x.type||"datetime"===x.type?x.render(D instanceof Date?D:new Date(D)):D,b=e((function(){return"date"===x.type||"datetime"===x.type||x.editable?E:x.render?x.render(D,d):E}),[x.editable,E,D,d]);return{type:!x.editable&&x.render?"component":x.type,component:b,onDoubleClick:function(e){e.preventDefault(),f()},onMouseDown:function(e){document.getElementById(l.getEditorId())||setTimeout((function(){c({rowIndex:y,colIndex:I});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(),s({rowIndex:y,colIndex:I})}}}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 { 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 const element = document.getElementById(IdGenerator.getEditorId());\n\n if (!!element) {\n return;\n }\n\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","
|
|
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 : col.type === \"date\" || col.type === \"datetime\"\n ? col.render(value instanceof Date ? value : new Date(value))\n : (value as string | number);\n\n const component = useMemo(() => {\n if (col.type === \"date\" || col.type === \"datetime\" || 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 const element = document.getElementById(IdGenerator.getEditorId());\n\n if (!!element) {\n return;\n }\n\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","_d","useRangeActionContext","startSelectRange","moveSelectRange","endSelectRange","startEditing","useEditActionContext","_e","extractCellIndexFromId","rowIndex","colIndex","col","useColumnsContext","value","key","label","type","_c","_b","_a","options","find","op","render","Date","component","useMemo","editable","onDoubleClick","e","preventDefault","onMouseDown","document","getElementById","getEditorId","setTimeout","onMouseUp","stopPropagation","removeEventListener","addEventListener","onMouseEnter"],"mappings":"0QAOgB,SAAAA,EAAQC,EAAYC,aAC5BC,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,KACoD,QAApDC,EAA6C,QAA7CC,EAAW,QAAXC,EAAAR,EAAIS,eAAO,IAAAD,OAAA,EAAAA,EAAEE,MAAK,SAACC,GAAO,OAAAA,EAAGT,QAAUA,CAAK,WAAC,IAAAK,OAAA,EAAAA,EAAEH,aAAK,IAAAE,EAAAA,EAAI,GAC3C,SAAbN,EAAIK,MAAgC,aAAbL,EAAIK,KAC3BL,EAAIY,OAAOV,aAAiBW,KAAOX,EAAQ,IAAIW,KAAKX,IACnDA,EAEDY,EAAYC,GAAQ,WACxB,MAAiB,SAAbf,EAAIK,MAAgC,aAAbL,EAAIK,MAAuBL,EAAIgB,SACjDZ,EAEAJ,EAAIY,OAASZ,EAAIY,OAAOV,EAAgBhB,GAAOkB,CAE1D,GAAG,CAACJ,EAAIgB,SAAUZ,EAAOF,EAAOhB,IA0ChC,MAAO,CACLmB,MAxCCL,EAAIgB,UAAYhB,EAAIY,OAAS,YAAcZ,EAAIK,KAyChDS,UAASA,EACTG,cAxC6D,SAACC,GAC9DA,EAAEC,iBACFzB,GACF,EAsCE0B,YA/B2D,SAACF,GAC5CG,SAASC,eAAenC,EAAYoC,gBAMpDC,YAAW,WACTjC,EAAiB,CAAEO,SAAQA,EAAEC,SAAQA,IAErC,IAAM0B,EAAY,SAACP,GACjBA,EAAEC,iBACFD,EAAEQ,kBACFjC,IACA4B,SAASM,oBAAoB,UAAWF,EAC1C,EAEAJ,SAASO,iBAAiB,UAAWH,EACtC,GAAE,EACL,EAaEI,aAX4D,SAACX,GAC7DA,EAAEC,iBACFD,EAAEQ,kBACFlC,EAAgB,CAAEM,SAAQA,EAAEC,SAAQA,GACtC,EASF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useEffect as
|
|
1
|
+
import{__assign as e}from"../../../node_modules/tslib/tslib.es6.js";import{useReducer as t,useEffect as n,useCallback as o,useMemo as r}from"react";import{useRangeStateContext as s}from"../range/provider.js";var d=function(t,n){switch(n.type){case"setRows":return e(e({},t),{rows:n.payload.rows});case"setCols":return e(e({},t),{cols:n.payload.cols});case"copied":return e(e({},t),{copiedAt:new Date});default:return t}};function i(i){var c=t(d,e({},i)),l=c[0],a=c[1],u=s();n((function(){a({type:"setCols",payload:{cols:i.cols}})}),[i.cols]);var p=o((function(e){if(u.isSelecting){var t=u.start.rowIndex<=u.end.rowIndex?u.start.rowIndex:u.end.rowIndex,n=u.start.rowIndex>=u.end.rowIndex?u.start.rowIndex:u.end.rowIndex,o=u.start.colIndex<=u.end.colIndex?u.start.colIndex:u.end.colIndex,r=u.start.colIndex>=u.end.colIndex?u.start.colIndex:u.end.colIndex,s=l.rows.slice(t,n+1).map((function(e){for(var t=[],n=function(n){var o=l.cols[n];if("number"==o.type||"string"==o.type)return t.push(e[o.key]),"continue";if("select"==o.type){var r=e[o.key];return null==r||""===r?t.push(""):t.push(o.options.find((function(t){return t.value===e[o.key]})).label),"continue"}return"date"===o.type?(t.push(e[o.key].toISOString().split("T")[0]),"continue"):"datetime"===o.type?(t.push(e[o.key].toISOString()),"continue"):void 0},s=o;s<=r;s++)n(s);return t})).map((function(e){return e.join("\t")})).join("\n");if(null==e?void 0:e.enableDeprecatedCopy){var d=document.createElement("textarea");d.style.position="fixed",d.style.top="0",d.style.left="0",d.style.width="2em",d.style.height="2em",d.style.padding="0",d.style.border="none",d.style.outline="none",d.style.boxShadow="none",d.style.background="transparent",d.value=s,document.body.appendChild(d),d.select(),document.execCommand("copy"),document.body.removeChild(d)}else navigator.clipboard.writeText(s);a({type:"copied"})}}),[u,l.rows,l.cols]),y=o((function(e){a({type:"setRows",payload:{rows:e}})}),[]);return{states:r((function(){return{copiedAt:l.copiedAt}}),[l.copiedAt]),actions:r((function(){return{copy:p,setRows:y}}),[p,y])}}export{i as useCopyReducer};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/copy/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { useRangeStateContext } from \"../range/provider\";\nimport { TCopyReducer, TReturnCopyReducer } from \"./types\";\n\nconst reducer: TCopyReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"copied\":\n return { ...state, copiedAt: new Date() };\n default:\n return state;\n }\n};\n\nexport function useCopyReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TReturnCopyReducer {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n });\n const range = useRangeStateContext();\n\n useEffect(() => {\n dispatch({ type: \"setCols\", payload: { cols: initial.cols } });\n }, [initial.cols]);\n\n const copy = useCallback(\n (options?: { enableDeprecatedCopy?: boolean }) => {\n if (!range.isSelecting) {\n return;\n }\n\n const startRowIndex =\n range.start.rowIndex <= range.end.rowIndex\n ? range.start.rowIndex\n : range.end.rowIndex;\n const endRowIndex =\n range.start.rowIndex >= range.end.rowIndex\n ? range.start.rowIndex\n : range.end.rowIndex;\n const startColIndex =\n range.start.colIndex <= range.end.colIndex\n ? range.start.colIndex\n : range.end.colIndex;\n const endColIndex =\n range.start.colIndex >= range.end.colIndex\n ? range.start.colIndex\n : range.end.colIndex;\n\n const copiedData = state.rows\n .slice(startRowIndex, endRowIndex + 1)\n .map((row) => {\n const copiedRow = [];\n for (let i = startColIndex; i <= endColIndex; i++) {\n const col = state.cols[i];\n\n if (col.type == \"number\" || col.type == \"string\") {\n copiedRow.push(row[col.key]);\n continue;\n } else if (col.type == \"select\") {\n const value = row[col.key];\n\n if (value === null || value === undefined || value === \"\") {\n copiedRow.push(\"\");\n } else {\n copiedRow.push(\n col.options.find((option) => option.value === row[col.key])!\n .label\n );\n }\n }\n }\n return copiedRow;\n });\n\n const copiedDataString = copiedData\n .map((row) => row.join(\"\\t\"))\n .join(\"\\n\");\n\n if (options?.enableDeprecatedCopy) {\n const textArea = document.createElement(\"textarea\");\n textArea.style.position = \"fixed\";\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.width = \"2em\";\n textArea.style.height = \"2em\";\n textArea.style.padding = \"0\";\n textArea.style.border = \"none\";\n textArea.style.outline = \"none\";\n textArea.style.boxShadow = \"none\";\n textArea.style.background = \"transparent\";\n textArea.value = copiedDataString;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n } else {\n navigator.clipboard.writeText(copiedDataString);\n }\n\n dispatch({ type: \"copied\" });\n },\n [range, state.rows, state.cols]\n );\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const states = useMemo(\n () => ({\n copiedAt: state.copiedAt,\n }),\n [state.copiedAt]\n );\n\n const actions = useMemo(\n () => ({\n copy,\n setRows,\n }),\n [copy, setRows]\n );\n\n return {\n states,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","copiedAt","Date","useCopyReducer","initial","_a","useReducer","dispatch","range","useRangeStateContext","useEffect","copy","useCallback","options","isSelecting","startRowIndex","start","rowIndex","end","endRowIndex","startColIndex","colIndex","endColIndex","copiedDataString","slice","map","row","copiedRow","i","col","push","key","value","find","option","label","join","enableDeprecatedCopy","textArea","document","createElement","style","position","top","left","width","height","padding","border","outline","boxShadow","background","body","appendChild","select","execCommand","removeChild","navigator","clipboard","writeText","setRows","states","useMemo","actions"],"mappings":"gNAIA,IAAMA,EAAwB,SAACC,EAAOC,GACpC,OAAQA,EAAOC,MACb,IAAK,UACH,OAAYC,EAAAA,EAAA,CAAA,EAAAH,IAAOI,KAAMH,EAAOI,QAAQD,OAC1C,IAAK,UACH,OAAYD,EAAAA,EAAA,CAAA,EAAAH,IAAOM,KAAML,EAAOI,QAAQC,OAC1C,IAAK,SACH,OAAAH,EAAAA,EAAA,CAAA,EAAYH,GAAO,CAAAO,SAAU,IAAIC,OACnC,QACE,OAAOR,EAEb,EAEM,SAAUS,EAAeC,GAKvB,IAAAC,EAAoBC,EAAWb,EAChCI,EAAA,CAAA,EAAAO,IADEV,EAAKW,EAAA,GAAEE,OAGRC,EAAQC,IAEdC,GAAU,WACRH,EAAS,CAAEX,KAAM,UAAWG,QAAS,CAAEC,KAAMI,EAAQJ,OACvD,GAAG,CAACI,EAAQJ,OAEZ,IAAMW,EAAOC,GACX,SAACC,GACC,GAAKL,EAAMM,YAAX,CAIA,IAAMC,EACJP,EAAMQ,MAAMC,UAAYT,EAAMU,IAAID,SAC9BT,EAAMQ,MAAMC,SACZT,EAAMU,IAAID,SACVE,EACJX,EAAMQ,MAAMC,UAAYT,EAAMU,IAAID,SAC9BT,EAAMQ,MAAMC,SACZT,EAAMU,IAAID,SACVG,EACJZ,EAAMQ,MAAMK,UAAYb,EAAMU,IAAIG,SAC9Bb,EAAMQ,MAAMK,SACZb,EAAMU,IAAIG,SACVC,EACJd,EAAMQ,MAAMK,UAAYb,EAAMU,IAAIG,SAC9Bb,EAAMQ,MAAMK,SACZb,EAAMU,IAAIG,
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../../../src/table/copy/hooks.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { useRangeStateContext } from \"../range/provider\";\nimport { TCopyReducer, TReturnCopyReducer } from \"./types\";\n\nconst reducer: TCopyReducer = (state, action) => {\n switch (action.type) {\n case \"setRows\":\n return { ...state, rows: action.payload.rows };\n case \"setCols\":\n return { ...state, cols: action.payload.cols };\n case \"copied\":\n return { ...state, copiedAt: new Date() };\n default:\n return state;\n }\n};\n\nexport function useCopyReducer(initial: {\n rows: any[];\n cols: any[];\n onUpdateRowFunction?: (newRow: any, oldRow: any) => void;\n}): TReturnCopyReducer {\n const [state, dispatch] = useReducer(reducer, {\n ...initial,\n });\n const range = useRangeStateContext();\n\n useEffect(() => {\n dispatch({ type: \"setCols\", payload: { cols: initial.cols } });\n }, [initial.cols]);\n\n const copy = useCallback(\n (options?: { enableDeprecatedCopy?: boolean }) => {\n if (!range.isSelecting) {\n return;\n }\n\n const startRowIndex =\n range.start.rowIndex <= range.end.rowIndex\n ? range.start.rowIndex\n : range.end.rowIndex;\n const endRowIndex =\n range.start.rowIndex >= range.end.rowIndex\n ? range.start.rowIndex\n : range.end.rowIndex;\n const startColIndex =\n range.start.colIndex <= range.end.colIndex\n ? range.start.colIndex\n : range.end.colIndex;\n const endColIndex =\n range.start.colIndex >= range.end.colIndex\n ? range.start.colIndex\n : range.end.colIndex;\n\n const copiedData = state.rows\n .slice(startRowIndex, endRowIndex + 1)\n .map((row) => {\n const copiedRow = [];\n for (let i = startColIndex; i <= endColIndex; i++) {\n const col = state.cols[i];\n\n if (col.type == \"number\" || col.type == \"string\") {\n copiedRow.push(row[col.key]);\n continue;\n } else if (col.type == \"select\") {\n const value = row[col.key];\n\n if (value === null || value === undefined || value === \"\") {\n copiedRow.push(\"\");\n } else {\n copiedRow.push(\n col.options.find((option) => option.value === row[col.key])!\n .label\n );\n }\n continue;\n } else if (col.type === \"date\") {\n copiedRow.push(row[col.key].toISOString().split(\"T\")[0]);\n continue;\n } else if (col.type === \"datetime\") {\n copiedRow.push(row[col.key].toISOString());\n continue;\n }\n\n col satisfies never;\n }\n return copiedRow;\n });\n\n const copiedDataString = copiedData\n .map((row) => row.join(\"\\t\"))\n .join(\"\\n\");\n\n if (options?.enableDeprecatedCopy) {\n const textArea = document.createElement(\"textarea\");\n textArea.style.position = \"fixed\";\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.width = \"2em\";\n textArea.style.height = \"2em\";\n textArea.style.padding = \"0\";\n textArea.style.border = \"none\";\n textArea.style.outline = \"none\";\n textArea.style.boxShadow = \"none\";\n textArea.style.background = \"transparent\";\n textArea.value = copiedDataString;\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand(\"copy\");\n document.body.removeChild(textArea);\n } else {\n navigator.clipboard.writeText(copiedDataString);\n }\n\n dispatch({ type: \"copied\" });\n },\n [range, state.rows, state.cols]\n );\n\n const setRows = useCallback((rows: any[]) => {\n dispatch({ type: \"setRows\", payload: { rows } });\n }, []);\n\n const states = useMemo(\n () => ({\n copiedAt: state.copiedAt,\n }),\n [state.copiedAt]\n );\n\n const actions = useMemo(\n () => ({\n copy,\n setRows,\n }),\n [copy, setRows]\n );\n\n return {\n states,\n actions,\n };\n}\n"],"names":["reducer","state","action","type","__assign","rows","payload","cols","copiedAt","Date","useCopyReducer","initial","_a","useReducer","dispatch","range","useRangeStateContext","useEffect","copy","useCallback","options","isSelecting","startRowIndex","start","rowIndex","end","endRowIndex","startColIndex","colIndex","endColIndex","copiedDataString","slice","map","row","copiedRow","i","col","push","key","value","find","option","label","toISOString","split","join","enableDeprecatedCopy","textArea","document","createElement","style","position","top","left","width","height","padding","border","outline","boxShadow","background","body","appendChild","select","execCommand","removeChild","navigator","clipboard","writeText","setRows","states","useMemo","actions"],"mappings":"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"}
|
|
@@ -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";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:
|
|
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,l=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:l.getEditorId(),ref:c,className:"w-full py-1 px-2 bg-white text-gray-900",type:null!==(a=u.type)&&void 0!==a?a:"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
|