@zhenliang/sheet 0.0.6 → 0.0.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.
Files changed (128) hide show
  1. package/dist/core/config.js +2 -1
  2. package/dist/core/config.js.map +1 -0
  3. package/dist/core/editor/cascaderEditor/index.js +2 -1
  4. package/dist/core/editor/cascaderEditor/index.js.map +1 -0
  5. package/dist/core/editor/dateEditor/index.d.ts +2 -1
  6. package/dist/core/editor/dateEditor/index.js +44 -34
  7. package/dist/core/editor/dateEditor/index.js.map +1 -0
  8. package/dist/core/editor/index.d.ts +1 -1
  9. package/dist/core/editor/index.js +3 -2
  10. package/dist/core/editor/index.js.map +1 -0
  11. package/dist/core/editor/numberEditor/index.d.ts +1 -1
  12. package/dist/core/editor/numberEditor/index.js +6 -1
  13. package/dist/core/editor/numberEditor/index.js.map +1 -0
  14. package/dist/core/editor/numberEditor/index.less +10 -0
  15. package/dist/core/editor/selectEditor/index.d.ts +1 -1
  16. package/dist/core/editor/selectEditor/index.js +15 -3
  17. package/dist/core/editor/selectEditor/index.js.map +1 -0
  18. package/dist/core/reducers/index.js +2 -1
  19. package/dist/core/reducers/index.js.map +1 -0
  20. package/dist/core/reducers/keyboardReducer.js +6 -3
  21. package/dist/core/reducers/keyboardReducer.js.map +1 -0
  22. package/dist/core/reducers/mouseReducer.js +24 -10
  23. package/dist/core/reducers/mouseReducer.js.map +1 -0
  24. package/dist/core/reducers/sideEffectReducer.js +21 -10
  25. package/dist/core/reducers/sideEffectReducer.js.map +1 -0
  26. package/dist/core/reducers/stateReducer.js +8 -3
  27. package/dist/core/reducers/stateReducer.js.map +1 -0
  28. package/dist/core/sheet/Cell.d.ts +1 -1
  29. package/dist/core/sheet/Cell.js +5 -3
  30. package/dist/core/sheet/Cell.js.map +1 -0
  31. package/dist/core/sheet/DataEditor.js +2 -1
  32. package/dist/core/sheet/DataEditor.js.map +1 -0
  33. package/dist/core/sheet/DefaultCell.d.ts +1 -1
  34. package/dist/core/sheet/DefaultCell.js +2 -1
  35. package/dist/core/sheet/DefaultCell.js.map +1 -0
  36. package/dist/core/sheet/DefaultRow.js +2 -1
  37. package/dist/core/sheet/DefaultRow.js.map +1 -0
  38. package/dist/core/sheet/DefaultRowMapper.js +2 -1
  39. package/dist/core/sheet/DefaultRowMapper.js.map +1 -0
  40. package/dist/core/sheet/DefaultShell.js +2 -1
  41. package/dist/core/sheet/DefaultShell.js.map +1 -0
  42. package/dist/core/sheet/Event.js +2 -1
  43. package/dist/core/sheet/Event.js.map +1 -0
  44. package/dist/core/sheet/ValueViewer.js +2 -1
  45. package/dist/core/sheet/ValueViewer.js.map +1 -0
  46. package/dist/core/sheet/index.js +12 -9
  47. package/dist/core/sheet/index.js.map +1 -0
  48. package/dist/core/sheet/useCellEvent.js +2 -1
  49. package/dist/core/sheet/useCellEvent.js.map +1 -0
  50. package/dist/core/sheet/useContextMenu.js +2 -1
  51. package/dist/core/sheet/useContextMenu.js.map +1 -0
  52. package/dist/core/sheet/useKeyBoardEvent.js +14 -4
  53. package/dist/core/sheet/useKeyBoardEvent.js.map +1 -0
  54. package/dist/core/sheet/useMouseEvent.js +2 -1
  55. package/dist/core/sheet/useMouseEvent.js.map +1 -0
  56. package/dist/core/sheet/useVirtualList.js +10 -1
  57. package/dist/core/sheet/useVirtualList.js.map +1 -0
  58. package/dist/core/shell/draggableShell/index.js +2 -1
  59. package/dist/core/shell/draggableShell/index.js.map +1 -0
  60. package/dist/core/shell/tableShell.js +2 -1
  61. package/dist/core/shell/tableShell.js.map +1 -0
  62. package/dist/core/table/index.js +2 -1
  63. package/dist/core/table/index.js.map +1 -0
  64. package/dist/core/table/useGroupConfig.js +2 -1
  65. package/dist/core/table/useGroupConfig.js.map +1 -0
  66. package/dist/core/table/useRowSelection.js +2 -1
  67. package/dist/core/table/useRowSelection.js.map +1 -0
  68. package/dist/core/table/util.js +2 -1
  69. package/dist/core/table/util.js.map +1 -0
  70. package/dist/core/util.js +2 -1
  71. package/dist/core/util.js.map +1 -0
  72. package/dist/core/viewer/btnViewer/index.js +2 -1
  73. package/dist/core/viewer/btnViewer/index.js.map +1 -0
  74. package/dist/core/viewer/checkViewer/index.js +2 -1
  75. package/dist/core/viewer/checkViewer/index.js.map +1 -0
  76. package/dist/core/viewer/editViewer/index.js +2 -1
  77. package/dist/core/viewer/editViewer/index.js.map +1 -0
  78. package/dist/core/viewer/groupViewer/index.js +2 -1
  79. package/dist/core/viewer/groupViewer/index.js.map +1 -0
  80. package/dist/core/viewer/index.js +2 -1
  81. package/dist/core/viewer/index.js.map +1 -0
  82. package/dist/core/viewer/switchViewer/index.js +2 -1
  83. package/dist/core/viewer/switchViewer/index.js.map +1 -0
  84. package/dist/example/antComponent.js +4 -3
  85. package/dist/example/antComponent.js.map +1 -0
  86. package/dist/example/basic.js +2 -1
  87. package/dist/example/basic.js.map +1 -0
  88. package/dist/example/ellipsis.js +2 -1
  89. package/dist/example/ellipsis.js.map +1 -0
  90. package/dist/example/fixed.js +2 -1
  91. package/dist/example/fixed.js.map +1 -0
  92. package/dist/example/group.js +2 -1
  93. package/dist/example/group.js.map +1 -0
  94. package/dist/example/selection.js +2 -1
  95. package/dist/example/selection.js.map +1 -0
  96. package/dist/example/sheet.js +2 -1
  97. package/dist/example/sheet.js.map +1 -0
  98. package/dist/example/valuationAnalyze.d.ts +1 -1
  99. package/dist/example/valuationAnalyze.js +2 -1
  100. package/dist/example/valuationAnalyze.js.map +1 -0
  101. package/dist/hooks/index.js +2 -1
  102. package/dist/hooks/index.js.map +1 -0
  103. package/dist/hooks/useEventBus.d.ts +1 -0
  104. package/dist/hooks/useEventBus.js +2 -1
  105. package/dist/hooks/useEventBus.js.map +1 -0
  106. package/dist/hooks/useKeyboard.js +3 -2
  107. package/dist/hooks/useKeyboard.js.map +1 -0
  108. package/dist/hooks/useMiddlewareReducer.js +2 -1
  109. package/dist/hooks/useMiddlewareReducer.js.map +1 -0
  110. package/dist/hooks/useMouse.js +36 -19
  111. package/dist/hooks/useMouse.js.map +1 -0
  112. package/dist/hooks/useSetState.js +2 -1
  113. package/dist/hooks/useSetState.js.map +1 -0
  114. package/dist/hooks/useSheetEvent.js +2 -1
  115. package/dist/hooks/useSheetEvent.js.map +1 -0
  116. package/dist/index.js +2 -1
  117. package/dist/index.js.map +1 -0
  118. package/dist/standardUtils/index.js +2 -1
  119. package/dist/standardUtils/index.js.map +1 -0
  120. package/dist/type/index.js +2 -1
  121. package/dist/type/index.js.map +1 -0
  122. package/dist/type/sheet.js +2 -1
  123. package/dist/type/sheet.js.map +1 -0
  124. package/dist/type/sheetTable.d.ts +2 -2
  125. package/dist/type/sheetTable.js +2 -1
  126. package/dist/type/sheetTable.js.map +1 -0
  127. package/package.json +3 -3
  128. package/README_PROJECT.md +0 -40
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import EventEmitter from 'events';
2
3
  declare const useEventBus: () => EventEmitter;
3
4
  export { useEventBus };
@@ -14,4 +14,5 @@ var useEventBus = function useEventBus() {
14
14
  }
15
15
  return eventBus.current;
16
16
  };
17
- export { useEventBus };
17
+ export { useEventBus };
18
+ //# sourceMappingURL=useEventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventEmitter","useEffect","useRef","useEventBus","eventBus","_eventBus$current","current","removeAllListeners"],"sources":["../../src/hooks/useEventBus.ts"],"sourcesContent":["import EventEmitter from 'events';\nimport { useEffect, useRef } from 'react';\n\nconst useEventBus = () => {\n const eventBus = useRef<EventEmitter | null>(new EventEmitter());\n\n useEffect(() => {\n return () => {\n eventBus.current?.removeAllListeners();\n eventBus.current = null;\n };\n }, []);\n\n if (!eventBus.current) {\n eventBus.current = new EventEmitter();\n }\n\n return eventBus.current;\n};\n\nexport { useEventBus };\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,QAAQ;AACjC,SAASC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEzC,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;EACxB,IAAMC,QAAQ,GAAGF,MAAM,CAAsB,IAAIF,YAAY,CAAC,CAAC,CAAC;EAEhEC,SAAS,CAAC,YAAM;IACd,OAAO,YAAM;MAAA,IAAAI,iBAAA;MACX,CAAAA,iBAAA,GAAAD,QAAQ,CAACE,OAAO,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAkBE,kBAAkB,CAAC,CAAC;MACtCH,QAAQ,CAACE,OAAO,GAAG,IAAI;IACzB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAI,CAACF,QAAQ,CAACE,OAAO,EAAE;IACrBF,QAAQ,CAACE,OAAO,GAAG,IAAIN,YAAY,CAAC,CAAC;EACvC;EAEA,OAAOI,QAAQ,CAACE,OAAO;AACzB,CAAC;AAED,SAASH,WAAW"}
@@ -87,7 +87,7 @@ export var useKeyBoard = function useKeyBoard(handler, listenElement) {
87
87
  var isValueInput = isInputKey(keyCode);
88
88
  if (isValueInput) {
89
89
  handler.otherInput(e, e.key);
90
- return;
90
+ return false;
91
91
  }
92
92
  var moveInfo = move(keyCode, shiftKey);
93
93
  moveInfo && handler.move(e, moveInfo);
@@ -105,4 +105,5 @@ export var useKeyBoard = function useKeyBoard(handler, listenElement) {
105
105
  document.removeEventListener('cut', handler.cut);
106
106
  };
107
107
  }, [listenElement]);
108
- };
108
+ };
109
+ //# sourceMappingURL=useKeyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","BACKSPACE_KEY","C_KEY","DELETE_KEY","DOWN_KEY","ENTER_KEY","ESCAPE_KEY","LEFT_KEY","RIGHT_KEY","TAB_KEY","UP_KEY","V_KEY","X_KEY","Z_KEY","isInputKey","ua","window","navigator","userAgent","isIE","test","move","keyCode","isShiftKey","row","col","useKeyBoard","handler","listenElement","handleKey","e","defaultPrevented","ctrlKey","metaKey","shiftKey","ctrlKeyPressed","isEscape","escape","isReverse","reverse","isCopy","copy","isCut","isPaste","paste","isDelete","delete","isEnter","enter","isValueInput","otherInput","key","moveInfo","addEventListener","document","cut","removeEventListener"],"sources":["../../src/hooks/useKeyboard.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport {\n BACKSPACE_KEY,\n C_KEY,\n DELETE_KEY,\n DOWN_KEY,\n ENTER_KEY,\n ESCAPE_KEY,\n LEFT_KEY,\n RIGHT_KEY,\n TAB_KEY,\n UP_KEY,\n V_KEY,\n X_KEY,\n Z_KEY,\n} from '../core/config';\nimport { isInputKey } from '../core/util';\n\ntype KeyOrClipBoardEvent = (\n event: KeyboardEvent | ClipboardEvent,\n value?: any,\n) => void;\ntype KeyboardHandler = {\n move: KeyOrClipBoardEvent;\n escape: KeyOrClipBoardEvent;\n delete: KeyOrClipBoardEvent;\n enter: KeyOrClipBoardEvent;\n otherInput: KeyOrClipBoardEvent;\n copy: KeyOrClipBoardEvent;\n paste: KeyOrClipBoardEvent;\n reverse: KeyOrClipBoardEvent;\n cut: KeyOrClipBoardEvent;\n};\n\nconst ua = window.navigator.userAgent;\nconst isIE = /MSIE|Trident/.test(ua);\n\nexport function move(keyCode: number, isShiftKey: boolean) {\n if (keyCode === TAB_KEY) {\n return { row: 0, col: isShiftKey ? -1 : 1 };\n } else if (keyCode === RIGHT_KEY) {\n return { row: 0, col: 1 };\n } else if (keyCode === LEFT_KEY) {\n return { row: 0, col: -1 };\n } else if (keyCode === UP_KEY) {\n return { row: -1, col: 0 };\n } else if (keyCode === DOWN_KEY) {\n return { row: 1, col: 0 };\n } else if (keyCode === ENTER_KEY) {\n return { row: isShiftKey ? -1 : 1, col: 0 };\n }\n}\n\nexport const useKeyBoard = (\n handler: KeyboardHandler,\n listenElement: HTMLSpanElement | null,\n) => {\n const handleKey = useCallback(\n (e: KeyboardEvent) => {\n if (e.defaultPrevented) {\n return;\n }\n const { ctrlKey, metaKey, keyCode, shiftKey } = e;\n\n const ctrlKeyPressed = ctrlKey || metaKey;\n\n const isEscape = keyCode === ESCAPE_KEY;\n\n if (isEscape) {\n handler.escape(e);\n return;\n }\n\n const isReverse = ctrlKeyPressed && keyCode === Z_KEY;\n if (isReverse) {\n handler.reverse(e);\n return;\n }\n const isCopy = ctrlKeyPressed && keyCode === C_KEY;\n if (isCopy && isIE) {\n handler.copy(e);\n return;\n }\n\n const isCut = ctrlKeyPressed && keyCode === X_KEY;\n if (isCut && isIE) {\n handler.copy(e);\n return;\n }\n\n const isPaste = ctrlKeyPressed && keyCode === V_KEY;\n if (isPaste && isIE) {\n handler.paste(e);\n return;\n }\n\n const isDelete = keyCode === DELETE_KEY || keyCode === BACKSPACE_KEY;\n if (isDelete) {\n handler.delete(e);\n return;\n }\n\n const isEnter = keyCode === ENTER_KEY;\n if (isEnter && !shiftKey) {\n handler.enter(e);\n return;\n }\n if (ctrlKeyPressed) {\n return;\n }\n\n const isValueInput = isInputKey(keyCode);\n if (isValueInput) {\n handler.otherInput(e, e.key);\n return false;\n }\n const moveInfo = move(keyCode, shiftKey);\n moveInfo && handler.move(e, moveInfo);\n },\n [handler],\n );\n\n useEffect(() => {\n if (!listenElement) return;\n\n listenElement.addEventListener('keydown', handleKey);\n\n document.addEventListener('copy', handler.copy as any);\n document.addEventListener('paste', handler.paste as any);\n document.addEventListener('cut', handler.cut as any);\n return () => {\n listenElement.removeEventListener('keydown', handleKey);\n document.removeEventListener('copy', handler.copy as any);\n document.removeEventListener('paste', handler.paste as any);\n document.removeEventListener('cut', handler.cut as any);\n };\n }, [listenElement]);\n};\n"],"mappings":"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"}
@@ -44,4 +44,5 @@ export var useMiddlewareReducer = function useMiddlewareReducer(reducer, initial
44
44
  return dispatch;
45
45
  }, []);
46
46
  return [state, dispatch];
47
- };
47
+ };
48
+ //# sourceMappingURL=useMiddlewareReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMiddlewareReducer","reducer","initialState","middleware","arguments","length","undefined","_React$useState","useState","_React$useState2","_slicedToArray","state","setState","stateRef","useRef","dispatch","useMemo","Error","middlewareAPI","getState","current","_dispatch","_x2","apply","toString","action","localDispatch","map","reduceRight","acc"],"sources":["../../src/hooks/useMiddlewareReducer.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type NormalAction = { type: string; payload?: any };\nexport type FunctionAction = (dispatch: any, getState?: () => any) => any;\n\nexport type Dispatch = (action: any) => any;\n\nexport type MiddlewareAPI<A> = { getState: () => A; dispatch: Dispatch };\n\nexport type Middleware<A> = (\n api: MiddlewareAPI<A>,\n) => (next: Dispatch) => Dispatch;\n\nexport const useMiddlewareReducer = <A, B>(\n reducer: (state: A, action: B) => A,\n initialState: A,\n middleware: Middleware<A>[] = [],\n): [A, Dispatch] => {\n const [state, setState] = React.useState(initialState);\n const stateRef = React.useRef(state);\n\n const dispatch = React.useMemo(() => {\n let dispatch: Dispatch = () => {\n throw new Error(\n `Dispatching while constructing your middleware is not allowed. ` +\n `Other middleware would not be applied to this dispatch.`,\n );\n };\n\n const middlewareAPI = {\n getState: () => stateRef.current,\n dispatch: (action: B) => dispatch(action),\n };\n\n const localDispatch = (action: B) => {\n stateRef.current = reducer(stateRef.current, action);\n setState(stateRef.current);\n };\n\n dispatch = middleware\n .map((middleware) => middleware(middlewareAPI))\n .reduceRight((acc, middleware) => middleware(acc), localDispatch);\n\n return dispatch;\n }, []);\n\n return [state, dispatch];\n};\n"],"mappings":";;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAa9B,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAC/BC,OAAmC,EACnCC,YAAe,EAEG;EAAA,IADlBC,UAA2B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEhC,IAAAG,eAAA,GAA0BR,KAAK,CAACS,QAAQ,CAACN,YAAY,CAAC;IAAAO,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAA/CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EACtB,IAAMI,QAAQ,GAAGd,KAAK,CAACe,MAAM,CAACH,KAAK,CAAC;EAEpC,IAAMI,QAAQ,GAAGhB,KAAK,CAACiB,OAAO,CAAC,YAAM;IACnC,IAAID,QAAkB,GAAG,SAAAA,SAAA,EAAM;MAC7B,MAAM,IAAIE,KAAK,CACb,6HAEF,CAAC;IACH,CAAC;IAED,IAAMC,aAAa,GAAG;MACpBC,QAAQ,EAAE,SAAAA,SAAA;QAAA,OAAMN,QAAQ,CAACO,OAAO;MAAA;MAChCL,QAAQ,YAAAM,SAAA;QAAA,SAAAN,SAAAO,GAAA;UAAA,OAAAD,SAAA,CAAAE,KAAA,OAAAnB,SAAA;QAAA;QAAAW,QAAA,CAAAS,QAAA;UAAA,OAAAH,SAAA,CAAAG,QAAA;QAAA;QAAA,OAAAT,QAAA;MAAA,EAAE,UAACU,MAAS;QAAA,OAAKV,QAAQ,CAACU,MAAM,CAAC;MAAA;IAC3C,CAAC;IAED,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAID,MAAS,EAAK;MACnCZ,QAAQ,CAACO,OAAO,GAAGnB,OAAO,CAACY,QAAQ,CAACO,OAAO,EAAEK,MAAM,CAAC;MACpDb,QAAQ,CAACC,QAAQ,CAACO,OAAO,CAAC;IAC5B,CAAC;IAEDL,QAAQ,GAAGZ,UAAU,CAClBwB,GAAG,CAAC,UAACxB,UAAU;MAAA,OAAKA,UAAU,CAACe,aAAa,CAAC;IAAA,EAAC,CAC9CU,WAAW,CAAC,UAACC,GAAG,EAAE1B,UAAU;MAAA,OAAKA,UAAU,CAAC0B,GAAG,CAAC;IAAA,GAAEH,aAAa,CAAC;IAEnE,OAAOX,QAAQ;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO,CAACJ,KAAK,EAAEI,QAAQ,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { debounce } from 'lodash';
2
- import { useCallback, useEffect } from 'react';
2
+ import { useCallback, useEffect, useRef } from 'react';
3
3
  export var useMouse = function useMouse(handler, listenElement) {
4
4
  var mouseUp = handler.mouseUp,
5
5
  mouseDown = handler.mouseDown,
@@ -8,6 +8,7 @@ export var useMouse = function useMouse(handler, listenElement) {
8
8
  mouseEnter = handler.mouseEnter,
9
9
  doubleClick = handler.doubleClick,
10
10
  loseFocus = handler.loseFocus;
11
+ var handlerRef = useRef();
11
12
 
12
13
  // todo
13
14
  var wrapper = useCallback(function (handle) {
@@ -18,35 +19,51 @@ export var useMouse = function useMouse(handler, listenElement) {
18
19
  handle(e);
19
20
  };
20
21
  }, [listenElement]);
21
-
22
- // useEffect(() => {
23
- // if (!listenElement) return;
24
- // }, [mouseUp]);
22
+ useEffect(function () {
23
+ return function () {
24
+ if (!handlerRef.current) return;
25
+ var _handlerRef$current = handlerRef.current,
26
+ listenerMouseUp = _handlerRef$current.mouseUp,
27
+ listenerMouseDown = _handlerRef$current.mouseDown,
28
+ listenerMouseOver = _handlerRef$current.mouseOver,
29
+ listenerMouseLeave = _handlerRef$current.mouseLeave,
30
+ listenerMouseEnter = _handlerRef$current.mouseEnter,
31
+ listenerDoubleClick = _handlerRef$current.doubleClick;
32
+ document.removeEventListener('mouseup', listenerMouseUp);
33
+ document.removeEventListener('mousedown', listenerMouseDown);
34
+ document.removeEventListener('dblclick', listenerDoubleClick);
35
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.removeEventListener('mouseover', listenerMouseOver);
36
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.removeEventListener('mouseleave', listenerMouseLeave);
37
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.removeEventListener('mouseenter', listenerMouseEnter);
38
+ };
39
+ }, []);
25
40
  useEffect(function () {
26
41
  if (!listenElement) return;
27
42
  var debounceOver = debounce(mouseOver, 10);
28
43
  var wrappedMouseUp = mouseUp;
29
44
  var wrappedMouseDown = function wrappedMouseDown(e) {
30
- if (!listenElement.contains(e.target)) {
45
+ if (!(listenElement !== null && listenElement !== void 0 && listenElement.contains(e.target))) {
31
46
  loseFocus(e);
32
47
  return;
33
48
  }
34
49
  mouseDown(e);
35
50
  };
36
51
  var wrappedMouseDoubleClick = wrapper(doubleClick);
52
+ handlerRef.current = {
53
+ mouseUp: wrappedMouseUp,
54
+ mouseDown: wrappedMouseDown,
55
+ doubleClick: wrappedMouseDoubleClick,
56
+ mouseOver: debounceOver,
57
+ mouseLeave: mouseLeave,
58
+ mouseEnter: mouseEnter,
59
+ loseFocus: loseFocus
60
+ };
37
61
  document.addEventListener('mouseup', wrappedMouseUp);
38
62
  document.addEventListener('mousedown', wrappedMouseDown);
39
63
  document.addEventListener('dblclick', wrappedMouseDoubleClick);
40
- listenElement.addEventListener('mouseover', debounceOver);
41
- listenElement.addEventListener('mouseleave', mouseLeave);
42
- listenElement.addEventListener('mouseenter', mouseEnter);
43
- return function () {
44
- listenElement.removeEventListener('mouseover', debounceOver);
45
- listenElement.removeEventListener('mouseleave', mouseLeave);
46
- listenElement.removeEventListener('mouseenter', mouseEnter);
47
- document.removeEventListener('mousedown', wrappedMouseUp);
48
- document.removeEventListener('mouseup', wrappedMouseDown);
49
- document.removeEventListener('dblclick', wrappedMouseDoubleClick);
50
- };
51
- }, [listenElement, mouseUp, mouseDown, mouseOver, mouseLeave, doubleClick, loseFocus]);
52
- };
64
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.addEventListener('mouseover', debounceOver);
65
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.addEventListener('mouseleave', mouseLeave);
66
+ listenElement === null || listenElement === void 0 ? void 0 : listenElement.addEventListener('mouseenter', mouseEnter);
67
+ }, [listenElement]);
68
+ };
69
+ //# sourceMappingURL=useMouse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["debounce","useCallback","useEffect","useRef","useMouse","handler","listenElement","mouseUp","mouseDown","mouseOver","mouseLeave","mouseEnter","doubleClick","loseFocus","handlerRef","wrapper","handle","e","contains","target","current","_handlerRef$current","listenerMouseUp","listenerMouseDown","listenerMouseOver","listenerMouseLeave","listenerMouseEnter","listenerDoubleClick","document","removeEventListener","debounceOver","wrappedMouseUp","wrappedMouseDown","wrappedMouseDoubleClick","addEventListener"],"sources":["../../src/hooks/useMouse.tsx"],"sourcesContent":["import { debounce } from 'lodash';\nimport { useCallback, useEffect, useRef } from 'react';\n\ntype MouseHandler = {\n mouseUp: (value: MouseEvent) => void;\n mouseDown: (value: MouseEvent) => void;\n mouseOver: (value: MouseEvent) => void;\n mouseLeave: (value: MouseEvent) => void;\n mouseEnter: (value: MouseEvent) => void;\n doubleClick: (value: MouseEvent) => void;\n loseFocus: (value: MouseEvent) => void;\n};\n\nexport const useMouse = (\n handler: MouseHandler,\n listenElement: HTMLSpanElement | null,\n) => {\n const {\n mouseUp,\n mouseDown,\n mouseOver,\n mouseLeave,\n mouseEnter,\n doubleClick,\n loseFocus,\n } = handler;\n const handlerRef = useRef<MouseHandler | null>();\n\n // todo\n const wrapper = useCallback(\n (handle: (e: MouseEvent) => void) => {\n return (e: MouseEvent) => {\n if (!(listenElement as any).contains(e.target as HTMLElement)) {\n return;\n }\n handle(e);\n };\n },\n [listenElement],\n );\n\n useEffect(\n () => () => {\n if (!handlerRef.current) return;\n const {\n mouseUp: listenerMouseUp,\n mouseDown: listenerMouseDown,\n mouseOver: listenerMouseOver,\n mouseLeave: listenerMouseLeave,\n mouseEnter: listenerMouseEnter,\n doubleClick: listenerDoubleClick,\n } = handlerRef.current;\n document.removeEventListener('mouseup', listenerMouseUp);\n document.removeEventListener('mousedown', listenerMouseDown);\n document.removeEventListener('dblclick', listenerDoubleClick);\n listenElement?.removeEventListener('mouseover', listenerMouseOver);\n listenElement?.removeEventListener('mouseleave', listenerMouseLeave);\n listenElement?.removeEventListener('mouseenter', listenerMouseEnter);\n },\n [],\n );\n useEffect(() => {\n if (!listenElement) return;\n const debounceOver = debounce(mouseOver, 10);\n const wrappedMouseUp = mouseUp;\n const wrappedMouseDown = (e: MouseEvent) => {\n if (!listenElement?.contains(e.target as HTMLElement)) {\n loseFocus(e);\n return;\n }\n mouseDown(e);\n };\n const wrappedMouseDoubleClick = wrapper(doubleClick);\n handlerRef.current = {\n mouseUp: wrappedMouseUp,\n mouseDown: wrappedMouseDown,\n doubleClick: wrappedMouseDoubleClick,\n mouseOver: debounceOver,\n mouseLeave: mouseLeave,\n mouseEnter: mouseEnter,\n loseFocus,\n };\n\n document.addEventListener('mouseup', wrappedMouseUp);\n document.addEventListener('mousedown', wrappedMouseDown);\n document.addEventListener('dblclick', wrappedMouseDoubleClick);\n listenElement?.addEventListener('mouseover', debounceOver);\n listenElement?.addEventListener('mouseleave', mouseLeave);\n listenElement?.addEventListener('mouseenter', mouseEnter);\n }, [listenElement]);\n};\n"],"mappings":"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"}
@@ -24,4 +24,5 @@ var useSetState = function useSetState() {
24
24
  }, []);
25
25
  return [state, setMergeState];
26
26
  };
27
- export { useSetState };
27
+ export { useSetState };
28
+ //# sourceMappingURL=useSetState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useState","useSetState","initialState","arguments","length","undefined","_useState","_useState2","_slicedToArray","state","setState","setMergeState","patch","prevState","_objectSpread"],"sources":["../../src/hooks/useSetState.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nconst useSetState = <T extends object>(\n initialState: T = {} as T,\n): [T, (patch: Partial<T> | ((prevState: T) => Partial<T>)) => void] => {\n const [state, setState] = useState<T>(initialState);\n\n const setMergeState = useCallback(\n (patch: Partial<T> | ((arg0: T) => Partial<T>)) => {\n setState((prevState) => ({\n ...prevState,\n ...(typeof patch === 'function' ? patch(prevState) : patch),\n }));\n },\n [],\n );\n\n return [state, setMergeState];\n};\n\nexport { useSetState };\n"],"mappings":";;;;;;;;;;;;AAAA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAE7C,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAEuD;EAAA,IADtEC,YAAe,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEpB,IAAAG,SAAA,GAA0BN,QAAQ,CAAIE,YAAY,CAAC;IAAAK,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAA5CG,KAAK,GAAAF,UAAA;IAAEG,QAAQ,GAAAH,UAAA;EAEtB,IAAMI,aAAa,GAAGZ,WAAW,CAC/B,UAACa,KAA6C,EAAK;IACjDF,QAAQ,CAAC,UAACG,SAAS;MAAA,OAAAC,aAAA,CAAAA,aAAA,KACdD,SAAS,GACR,OAAOD,KAAK,KAAK,UAAU,GAAGA,KAAK,CAACC,SAAS,CAAC,GAAGD,KAAK;IAAA,CAC1D,CAAC;EACL,CAAC,EACD,EACF,CAAC;EAED,OAAO,CAACH,KAAK,EAAEE,aAAa,CAAC;AAC/B,CAAC;AAED,SAASV,WAAW"}
@@ -2,4 +2,5 @@ import { createContext, useContext } from 'react';
2
2
  export var SheetEventContext = /*#__PURE__*/createContext(undefined);
3
3
  export function useSheetEvent() {
4
4
  return useContext(SheetEventContext);
5
- }
5
+ }
6
+ //# sourceMappingURL=useSheetEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","SheetEventContext","undefined","useSheetEvent"],"sources":["../../src/hooks/useSheetEvent.ts"],"sourcesContent":["import Events from 'events';\nimport { createContext, useContext } from 'react';\n\nexport const SheetEventContext = createContext<Events | undefined>(undefined);\n\nexport function useSheetEvent() {\n return useContext(SheetEventContext)!;\n}\n"],"mappings":"AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAEjD,OAAO,IAAMC,iBAAiB,gBAAGF,aAAa,CAAqBG,SAAS,CAAC;AAE7E,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,OAAOH,UAAU,CAACC,iBAAiB,CAAC;AACtC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./core/editor";
2
2
  export { default as Sheet } from "./core/sheet";
3
3
  export { default as Table } from "./core/table";
4
- export { useSheetEvent } from "./hooks/useSheetEvent";
4
+ export { useSheetEvent } from "./hooks/useSheetEvent";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","Sheet","Table","useSheetEvent"],"sources":["../src/index.ts"],"sourcesContent":["export * from './core/editor';\nexport { default as Sheet } from './core/sheet';\nexport { default as Table } from './core/table';\nexport { useSheetEvent } from './hooks/useSheetEvent';\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,KAAK;AACzB,SAASD,OAAO,IAAIE,KAAK;AACzB,SAASC,aAAa"}
@@ -29,4 +29,5 @@ export var thousandsSeparator = function thousandsSeparator(value) {
29
29
  formattedData += ".".concat(decimal);
30
30
  }
31
31
  return formattedData;
32
- };
32
+ };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatPrecision","value","precision","arguments","length","undefined","Number","isNaN","b","Math","pow","res","round","toFixed","thousandsSeparator","_String$split","String","split","_String$split2","_slicedToArray","integer","decimal","formattedData","replace","concat"],"sources":["../../src/standardUtils/index.ts"],"sourcesContent":["type ValueParams = string | number | null | undefined;\n\nexport const formatPrecision = (value: ValueParams, precision = 2) => {\n if (Number.isNaN(Number(value)) || value === null || value === 0) {\n return '0';\n }\n\n const b = 10 ** precision;\n const res = Math.round(Number(value) * b) / b;\n\n return res.toFixed(precision);\n};\n\n/**\n * 千位分隔符\n * @param value 需要千分符格式化的数据\n * @returns 含千分符的字符串\n */\nexport const thousandsSeparator = (value: string | number) => {\n const [integer, decimal] = String(value).split('.');\n let formattedData = integer.replace(/(\\d{1,3})(?=(\\d{3})+$)/g, '$1,');\n if (decimal && decimal.length) {\n formattedData += `.${decimal}`;\n }\n return formattedData;\n};\n"],"mappings":";;;;;;AAEA,OAAO,IAAMA,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,KAAkB,EAAoB;EAAA,IAAlBC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAC/D,IAAIG,MAAM,CAACC,KAAK,CAACD,MAAM,CAACL,KAAK,CAAC,CAAC,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,CAAC,EAAE;IAChE,OAAO,GAAG;EACZ;EAEA,IAAMO,CAAC,GAAAC,IAAA,CAAAC,GAAA,CAAG,EAAE,EAAIR,SAAS;EACzB,IAAMS,GAAG,GAAGF,IAAI,CAACG,KAAK,CAACN,MAAM,CAACL,KAAK,CAAC,GAAGO,CAAC,CAAC,GAAGA,CAAC;EAE7C,OAAOG,GAAG,CAACE,OAAO,CAACX,SAAS,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMY,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIb,KAAsB,EAAK;EAC5D,IAAAc,aAAA,GAA2BC,MAAM,CAACf,KAAK,CAAC,CAACgB,KAAK,CAAC,GAAG,CAAC;IAAAC,cAAA,GAAAC,cAAA,CAAAJ,aAAA;IAA5CK,OAAO,GAAAF,cAAA;IAAEG,OAAO,GAAAH,cAAA;EACvB,IAAII,aAAa,GAAGF,OAAO,CAACG,OAAO,CAAC,yBAAyB,EAAE,KAAK,CAAC;EACrE,IAAIF,OAAO,IAAIA,OAAO,CAACjB,MAAM,EAAE;IAC7BkB,aAAa,QAAAE,MAAA,CAAQH,OAAO,CAAE;EAChC;EACA,OAAOC,aAAa;AACtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import * as _SheetType from "./sheet";
2
2
  export { _SheetType as SheetType };
3
3
  import * as _SheetTableType from "./sheetTable";
4
- export { _SheetTableType as SheetTableType };
4
+ export { _SheetTableType as SheetTableType };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SheetType","_SheetTableType","SheetTableType"],"sources":["../../src/type/index.ts"],"sourcesContent":["export * as SheetType from './sheet';\nexport * as SheetTableType from './sheetTable';\n"],"mappings":";uBAAYA,SAAS;AAAA,YAAAC,eAAA;AAAA,SAAAA,eAAA,IACTC,cAAc"}
@@ -6,4 +6,5 @@ export var CellAlign = /*#__PURE__*/function (CellAlign) {
6
6
  return CellAlign;
7
7
  }({});
8
8
 
9
- // todo
9
+ // todo
10
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CellAlign"],"sources":["../../src/type/sheet.ts"],"sourcesContent":["import type { EventEmitter } from 'events';\nimport { SheetTableType } from '.';\n\nexport enum CellAlign {\n left = 'left',\n center = 'center',\n right = 'right',\n unset = 'unset',\n}\n\nexport type Cell = {\n id: string;\n key?: string;\n readonly?: boolean;\n component?: CellViewer;\n editable?: boolean;\n colSpan?: number;\n rowSpan?: number;\n width?: number;\n record?: Record<string, unknown>;\n disableEvents?: boolean;\n dataEditor?: CellEditor;\n valueViewer?: CellViewer;\n className?: string;\n align?: CellAlign;\n fixed?: Omit<CellAlign, 'center'>;\n value?: string | number | null;\n};\n\nexport type CellViewerProps = {\n value: unknown;\n record?: Record<string, unknown>;\n row?: number;\n col?: number;\n cell?: Cell;\n};\n\nexport type CellEditorProps = {\n value: unknown;\n cell?: Cell;\n onChange: (value: unknown) => void;\n onConfirm: (value: unknown) => void;\n} & CellViewerProps;\n\nexport type CellEditor = React.FC<CellEditorProps> & {\n checker?: (value: unknown) => boolean;\n formatter?: (value: unknown) => unknown;\n};\nexport type CellViewer = React.FC<CellViewerProps>;\n\nexport type CellPosition = {\n row: number;\n col: number;\n};\n\nexport type CellData = {\n id: string;\n cell: Cell;\n row: number;\n col: number;\n value?: string;\n};\n\nexport type CellNavigable = (\n cell?: Cell,\n row?: number,\n col?: number,\n) => boolean;\nexport type CellChangeHandler = (\n cells: CellData[],\n additions?: CellData[],\n) => void;\n\nexport type RowGroup = {\n groupName: string;\n groupStart: number;\n groupEnd: number;\n};\nexport type RowGroupConfig = {\n groups: RowGroup[];\n groupOpen: boolean[];\n};\nexport type MenuRenderProps = {\n position?: { top: number; left: number };\n cell?: CellPosition;\n onContextMenu?: (event: any) => void;\n};\n\nexport type SheetInstance = {\n zoomTo: (row?: number) => void;\n pushToHistory: (value: OperateHistory) => void;\n selectRow: (row?: number) => void;\n popHistory: () => OperateHistory;\n};\n\nexport type SheetProps = {\n sheetInstance?: React.MutableRefObject<SheetInstance | null>;\n sheetRenderer?: any;\n rowRenderer?: any;\n className?: string;\n data: Cell[][];\n freePaste?: boolean;\n virtualized?: boolean;\n\n groupConfig?: RowGroupConfig;\n\n onCellsChanged?: CellChangeHandler;\n menuRenderer?: React.FC<MenuRenderProps>;\n onContextMenu?: (event: any) => void;\n\n scroll?: { x?: number | string; y?: number | string };\n rowClassName?:\n | string\n | ((record: Record<string, unknown>, index: number) => string);\n children?: any[];\n};\n\nexport type SheetShell = Pick<SheetTableType.TableProps, 'columns'> & {\n className?: string;\n showGroup?: boolean;\n showSelect?: boolean;\n controlWidth?: number;\n controlProps?: {\n check?: {\n checked: boolean;\n indeterminate?: boolean;\n };\n group?: {\n open: boolean;\n };\n };\n};\n\nexport type SheetRow = {\n row: number;\n cells: Cell[];\n selected: boolean;\n children: React.ElementType;\n};\n\n// todo\nexport type windowAssertion = {\n clipboardData?: {\n getData?: (type: string) => string;\n setData?: (type: string, data: string) => string;\n };\n};\n\nexport type refAssertion = {\n contains?: (target: EventTarget | null) => boolean;\n focus?: () => boolean;\n} & HTMLSpanElement;\n\nexport type AttributesRenderer = (\n cell: Cell,\n row: number,\n col: number,\n) => Record<string, string>;\n\nexport type CellProps = {\n row: number;\n col: number;\n cell: Cell;\n cellRenderer?: React.ElementType;\n dataEditor?: React.ElementType;\n valueViewer?: React.ElementType;\n attributesRenderer?: AttributesRenderer;\n};\n\nexport type UpdateStateType = {\n eventBus: EventEmitter;\n start: CellPosition;\n end: CellPosition;\n selecting: boolean;\n forceEdit: boolean;\n clear: CellPosition;\n editing: CellPosition & { value?: string };\n history: OperateHistory[];\n freePaste?: boolean;\n data: Cell[][];\n mouseDown: boolean;\n lastSelected?: {\n start?: CellPosition;\n end?: CellPosition;\n };\n groupConfig?: {\n groups: RowGroup[];\n groupOpen: boolean[];\n };\n lastFocus: { id: string; col: number }[];\n lastEditing: CellPosition & { confirm?: boolean };\n cellChangeHandler: (cells: CellData[], additions?: CellData[]) => void;\n};\nexport type UpdateFocus = (start: CellPosition, end: CellPosition) => void;\n\nexport type Options<T = any> = {\n value: string;\n label: string;\n} & T;\n\nexport type OptionsType = Options<{\n disabled?: boolean;\n children?: OptionsType[];\n}>;\n\nexport type OperateHistory = {\n changes: Partial<CellData>[];\n type: OperateType;\n\n rowInfo?: {\n newRow?: number;\n deleteRow?: number;\n };\n extraInfo?: Record<string, unknown>;\n};\n\nexport type OperateType =\n // 前三个Type 直接调用 onCellChange\n | 'Edit'\n | 'Paste'\n | 'Delete'\n // 后三个单独Event 处理\n | 'DeleteRow'\n | 'NewRow'\n | 'Custom';\n"],"mappings":"AAGA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAyIrB"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { ReactNode } from 'react';
2
2
  import { SheetType } from '.';
3
3
  export declare type refAssertion = {
4
4
  contains?: (target: EventTarget | null) => boolean;
@@ -10,7 +10,7 @@ export declare type ColumnProps = {
10
10
  fixed?: Omit<CellFixed, 'center'>;
11
11
  width?: string | number;
12
12
  dataIndex?: string;
13
- title: string;
13
+ title: string | ReactNode | ReactNode[];
14
14
  key?: string;
15
15
  editable?: boolean;
16
16
  readonly?: boolean | ((value: unknown, record: Record<string, unknown>, index: number) => boolean);
@@ -1 +1,2 @@
1
- export {};
1
+ export {};
2
+ //# sourceMappingURL=sheetTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/type/sheetTable.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport { SheetType } from '.';\n\nexport type refAssertion = {\n contains?: (target: EventTarget | null) => boolean;\n focus?: () => boolean;\n} & HTMLTableSectionElement;\n\nexport type CellFixed = SheetType.CellAlign;\n\nexport type ColumnProps = {\n align?: SheetType.CellAlign;\n fixed?: Omit<CellFixed, 'center'>;\n width?: string | number;\n dataIndex?: string;\n title: string | ReactNode | ReactNode[];\n key?: string;\n editable?: boolean;\n readonly?:\n | boolean\n | ((\n value: unknown,\n record: Record<string, unknown>,\n index: number,\n ) => boolean);\n render?: SheetType.CellViewer;\n editor?: SheetType.CellEditor;\n};\nexport type TableChange = {\n row: number;\n id: string;\n key: string;\n value: unknown;\n};\nexport type TableRowSelection = {\n onChange: (\n selectedRowKeys: string[],\n selectedRows: Record<string, unknown>[],\n ) => void;\n};\nexport type TableGroupConfig = {\n defaultOpen: boolean;\n};\nexport type TableProps = {\n className?: string;\n sheetInstance?: React.MutableRefObject<SheetType.SheetInstance | null>;\n columns: ColumnProps[];\n virtualized?: boolean;\n dataSource: Record<string, unknown>[];\n rowClassName?:\n | string\n | ((record: Record<string, unknown>, index: number) => string);\n rowKey?:\n | string\n | ((record: Record<string, unknown>, index: number) => string);\n scroll?: { x?: number | string; y?: number | string };\n sticky?: boolean;\n draggable?: boolean;\n rowSelection?: {\n rowSelected: string[];\n onChange: (\n selectedRowKeys: string[],\n selectedRows: Record<string, unknown>[],\n ) => void;\n };\n groupConfig?: {\n rowGroup: TableGroupConfig;\n onChange: (value: TableGroupConfig) => void;\n };\n\n onChange: (changes: TableChange[]) => void;\n handleAdd?: () => void;\n eventHandler?: Record<\n 'btn-click' | 'cell-edit' | 'cell-switch' | string,\n undefined | ((value: unknown) => void)\n >;\n};\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhenliang/sheet",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "A react library developed with dumi",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",
@@ -56,8 +56,8 @@
56
56
  "@commitlint/cli": "^17.1.2",
57
57
  "@commitlint/config-conventional": "^17.1.0",
58
58
  "@types/lodash": "^4.14.195",
59
- "@types/react": "^18.0.0",
60
- "@types/react-dom": "^18.0.0",
59
+ "@types/react": "^17.0.0",
60
+ "@types/react-dom": "^17.0.0",
61
61
  "@umijs/lint": "^4.0.0",
62
62
  "dumi": "^2.2.0",
63
63
  "eslint": "^8.23.0",
package/README_PROJECT.md DELETED
@@ -1,40 +0,0 @@
1
- # @zhenliang/sheet
2
-
3
- [![NPM version](https://img.shields.io/npm/v/@zhenliang/sheet.svg?style=flat)](https://npmjs.org/package/@zhenliang/sheet)
4
- [![NPM downloads](http://img.shields.io/npm/dm/@zhenliang/sheet.svg?style=flat)](https://npmjs.org/package/@zhenliang/sheet)
5
-
6
- A react library developed with dumi
7
-
8
- ## Usage
9
-
10
- TODO
11
-
12
- ## Options
13
-
14
- TODO
15
-
16
- ## Development
17
-
18
- ```bash
19
- # install dependencies
20
- $ pnpm install
21
-
22
- # develop library by docs demo
23
- $ pnpm start
24
-
25
- # build library source code
26
- $ pnpm run build
27
-
28
- # build library source code in watch mode
29
- $ pnpm run build:watch
30
-
31
- # build docs
32
- $ pnpm run docs:build
33
-
34
- # check your project for potential problems
35
- $ pnpm run doctor
36
- ```
37
-
38
- ## LICENSE
39
-
40
- MIT