@sheinx/hooks 3.7.0-beta.30 → 3.7.0-beta.31

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 (37) hide show
  1. package/cjs/common/use-filter/index.d.ts +1 -0
  2. package/cjs/common/use-filter/index.d.ts.map +1 -1
  3. package/cjs/common/use-filter/index.js +7 -0
  4. package/cjs/common/use-filter/use-filter-context.d.ts +7 -0
  5. package/cjs/common/use-filter/use-filter-context.d.ts.map +1 -0
  6. package/cjs/common/use-filter/use-filter-context.js +10 -0
  7. package/cjs/common/use-filter/use-filter.d.ts +1 -0
  8. package/cjs/common/use-filter/use-filter.d.ts.map +1 -1
  9. package/cjs/common/use-filter/use-filter.js +2 -0
  10. package/cjs/utils/highlight.d.ts +7 -0
  11. package/cjs/utils/highlight.d.ts.map +1 -0
  12. package/cjs/utils/highlight.js +67 -0
  13. package/cjs/utils/index.d.ts +1 -0
  14. package/cjs/utils/index.d.ts.map +1 -1
  15. package/cjs/utils/index.js +12 -0
  16. package/cjs/utils/string.d.ts +1 -0
  17. package/cjs/utils/string.d.ts.map +1 -1
  18. package/cjs/utils/string.js +13 -0
  19. package/esm/common/use-filter/index.d.ts +1 -0
  20. package/esm/common/use-filter/index.d.ts.map +1 -1
  21. package/esm/common/use-filter/index.js +2 -1
  22. package/esm/common/use-filter/use-filter-context.d.ts +7 -0
  23. package/esm/common/use-filter/use-filter-context.d.ts.map +1 -0
  24. package/esm/common/use-filter/use-filter-context.js +3 -0
  25. package/esm/common/use-filter/use-filter.d.ts +1 -0
  26. package/esm/common/use-filter/use-filter.d.ts.map +1 -1
  27. package/esm/common/use-filter/use-filter.js +2 -0
  28. package/esm/utils/highlight.d.ts +7 -0
  29. package/esm/utils/highlight.d.ts.map +1 -0
  30. package/esm/utils/highlight.js +59 -0
  31. package/esm/utils/index.d.ts +1 -0
  32. package/esm/utils/index.d.ts.map +1 -1
  33. package/esm/utils/index.js +1 -0
  34. package/esm/utils/string.d.ts +1 -0
  35. package/esm/utils/string.d.ts.map +1 -1
  36. package/esm/utils/string.js +12 -0
  37. package/package.json +1 -1
@@ -1,2 +1,3 @@
1
1
  export { default, default as useFilter } from './use-filter';
2
+ export { FilterContext } from './use-filter-context';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -4,6 +4,12 @@
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ Object.defineProperty(exports, "FilterContext", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _useFilterContext.FilterContext;
11
+ }
12
+ });
7
13
  Object.defineProperty(exports, "default", {
8
14
  enumerable: true,
9
15
  get: function get() {
@@ -17,4 +23,5 @@ Object.defineProperty(exports, "useFilter", {
17
23
  }
18
24
  });
19
25
  var _useFilter = _interopRequireDefault(require("./use-filter"));
26
+ var _useFilterContext = require("./use-filter-context");
20
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface FilterContextProps {
3
+ filterText?: string;
4
+ highlight?: boolean;
5
+ }
6
+ export declare const FilterContext: React.Context<FilterContextProps>;
7
+ //# sourceMappingURL=use-filter-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-filter-context.d.ts","sourceRoot":"","sources":["use-filter-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAEzB,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,mCAA8C,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FilterContext = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var FilterContext = exports.FilterContext = /*#__PURE__*/_react.default.createContext({});
10
+ FilterContext.displayName = 'FilterContext';
@@ -14,6 +14,7 @@ declare const useFilter: <DataItem>(props: UseFilterProps<DataItem>) => {
14
14
  filterFunc: ((d: DataItem) => boolean) | undefined;
15
15
  onCreate: ((text: string) => string | DataItem | undefined) | undefined;
16
16
  onFilter: ((text: string, from?: string) => void) | undefined;
17
+ FilterProvider: import("react").Provider<import("./use-filter-context").FilterContextProps>;
17
18
  onClearCreatedData: () => void;
18
19
  };
19
20
  export default useFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["use-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,QAAA,MAAM,SAAS;;;;;;;;;;kCAmBkD,OAAO;sBAiB1C,MAAM;sBAKN,MAAM,SAAQ,MAAM;;CAqGjD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["use-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,QAAA,MAAM,SAAS;;;;;;;;;;kCAmBkD,OAAO;sBAiB1C,MAAM;sBAKN,MAAM,SAAQ,MAAM;;;CAsGjD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _utils = require("../../utils");
9
+ var _useFilterContext = require("./use-filter-context");
9
10
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
10
11
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
12
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -157,6 +158,7 @@ var useFilter = function useFilter(props) {
157
158
  filterFunc: filterFunc,
158
159
  onCreate: onCreate ? handleCreate : undefined,
159
160
  onFilter: onFilter || onCreate ? handleFilter : undefined,
161
+ FilterProvider: _useFilterContext.FilterContext.Provider,
160
162
  // onResetFilter: handleResetData,
161
163
  onClearCreatedData: handleClearCreatedData
162
164
  };
@@ -0,0 +1,7 @@
1
+ export declare function getHighlightText<T>({ nodeList, searchWords, highlightClassName, enable, }: {
2
+ enable?: boolean;
3
+ nodeList: T;
4
+ searchWords?: string;
5
+ highlightClassName: string;
6
+ }): T;
7
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["highlight.tsx"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAClC,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,CAAC,CA8BJ"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getHighlightText = getHighlightText;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _string = require("./string");
10
+ var _is = require("./is");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function getHighlightText(_ref) {
15
+ var nodeList = _ref.nodeList,
16
+ searchWords = _ref.searchWords,
17
+ highlightClassName = _ref.highlightClassName,
18
+ enable = _ref.enable;
19
+ if (!enable || !searchWords) {
20
+ return nodeList;
21
+ }
22
+ var transformNode = function transformNode(node) {
23
+ var _node$props;
24
+ if (node && typeof ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.children) === 'string') {
25
+ return /*#__PURE__*/(0, _react.cloneElement)(node, undefined, /*#__PURE__*/(0, _jsxRuntime.jsx)(HighlightText, {
26
+ textToHighlight: node.props.children,
27
+ searchWords: searchWords,
28
+ highlightClassName: highlightClassName
29
+ }));
30
+ }
31
+ if (node && typeof node === 'string') {
32
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(HighlightText, {
33
+ textToHighlight: node,
34
+ searchWords: searchWords,
35
+ highlightClassName: highlightClassName
36
+ });
37
+ }
38
+ return node;
39
+ };
40
+ return (0, _is.isArray)(nodeList) ? nodeList.map(transformNode) : transformNode(nodeList);
41
+ }
42
+ function HighlightText(_ref2) {
43
+ var textToHighlight = _ref2.textToHighlight,
44
+ searchWords = _ref2.searchWords,
45
+ highlightClassName = _ref2.highlightClassName;
46
+ if (!searchWords) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
47
+ children: textToHighlight
48
+ });
49
+ if (searchWords.length > 500) {
50
+ searchWords = searchWords.slice(0, 500);
51
+ }
52
+
53
+ // 注意这里的括号,这里使用了带capture group功能的正则,来split字符串
54
+ // 从而在strArr中可以保留匹配文本
55
+ var re = new RegExp("(".concat((0, _string.escapeRegExp)(searchWords), ")"), 'i');
56
+ var strArr = textToHighlight.split(re);
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
58
+ children: strArr.map(function (item, index) {
59
+ return re.test(item) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
60
+ className: highlightClassName,
61
+ children: item
62
+ }, index) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
63
+ children: item
64
+ }, index);
65
+ })
66
+ });
67
+ }
@@ -21,5 +21,6 @@ export * from './array';
21
21
  export * from './tree';
22
22
  export * from './immer';
23
23
  export * from './warning';
24
+ export * from './highlight';
24
25
  export * as flat from './flat';
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
@@ -280,6 +280,18 @@ Object.keys(_warning).forEach(function (key) {
280
280
  }
281
281
  });
282
282
  });
283
+ var _highlight = require("./highlight");
284
+ Object.keys(_highlight).forEach(function (key) {
285
+ if (key === "default" || key === "__esModule") return;
286
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
287
+ if (key in exports && exports[key] === _highlight[key]) return;
288
+ Object.defineProperty(exports, key, {
289
+ enumerable: true,
290
+ get: function get() {
291
+ return _highlight[key];
292
+ }
293
+ });
294
+ });
283
295
  var _flat = _interopRequireWildcard(require("./flat"));
284
296
  exports.flat = _flat;
285
297
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -11,4 +11,5 @@ export declare function substitute<T extends ObjectType = ObjectType>(str: strin
11
11
  * 输出 '//github.com/'
12
12
  */
13
13
  export declare function removeProtocol(url: string): string;
14
+ export declare function escapeRegExp(str?: any): any;
14
15
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAC1D,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,EAClC,GAAG,EAAE,CAAC,UAoBP;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAQzC"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAC1D,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,EAClC,GAAG,EAAE,CAAC,UAoBP;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAQzC;AASD,wBAAgB,YAAY,CAAC,GAAG,GAAE,GAAQ,OAKzC"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.escapeRegExp = escapeRegExp;
6
7
  exports.removeProtocol = removeProtocol;
7
8
  exports.substitute = substitute;
8
9
  /**
@@ -44,4 +45,16 @@ function removeProtocol(url) {
44
45
  } catch (error) {
45
46
  return url;
46
47
  }
48
+ }
49
+
50
+ /**
51
+ * Used to match `RegExp`
52
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
53
+ */
54
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
55
+ reHasRegExpChar = RegExp(reRegExpChar.source);
56
+ function escapeRegExp() {
57
+ var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
58
+ var string = typeof str === 'string' ? str : str.toString();
59
+ return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, '\\$&') : string;
47
60
  }
@@ -1,2 +1,3 @@
1
1
  export { default, default as useFilter } from './use-filter';
2
+ export { FilterContext } from './use-filter-context';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  "use client";
2
- export { default, default as useFilter } from "./use-filter";
2
+ export { default, default as useFilter } from "./use-filter";
3
+ export { FilterContext } from "./use-filter-context";
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface FilterContextProps {
3
+ filterText?: string;
4
+ highlight?: boolean;
5
+ }
6
+ export declare const FilterContext: React.Context<FilterContextProps>;
7
+ //# sourceMappingURL=use-filter-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-filter-context.d.ts","sourceRoot":"","sources":["use-filter-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAEzB,MAAM,WAAW,kBAAkB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,mCAA8C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export var FilterContext = /*#__PURE__*/React.createContext({});
3
+ FilterContext.displayName = 'FilterContext';
@@ -14,6 +14,7 @@ declare const useFilter: <DataItem>(props: UseFilterProps<DataItem>) => {
14
14
  filterFunc: ((d: DataItem) => boolean) | undefined;
15
15
  onCreate: ((text: string) => string | DataItem | undefined) | undefined;
16
16
  onFilter: ((text: string, from?: string) => void) | undefined;
17
+ FilterProvider: import("react").Provider<import("./use-filter-context").FilterContextProps>;
17
18
  onClearCreatedData: () => void;
18
19
  };
19
20
  export default useFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["use-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,QAAA,MAAM,SAAS;;;;;;;;;;kCAmBkD,OAAO;sBAiB1C,MAAM;sBAKN,MAAM,SAAQ,MAAM;;CAqGjD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"use-filter.d.ts","sourceRoot":"","sources":["use-filter.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,QAAA,MAAM,SAAS;;;;;;;;;;kCAmBkD,OAAO;sBAiB1C,MAAM;sBAKN,MAAM,SAAQ,MAAM;;;CAsGjD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -10,6 +10,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
10
10
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
11
  import { useState, useEffect, useRef, useMemo } from 'react';
12
12
  import { isFunc, getKey, getFilterTree } from "../../utils";
13
+ import { FilterContext } from "./use-filter-context";
13
14
  var useFilter = function useFilter(props) {
14
15
  var data = props.data,
15
16
  groupKey = props.groupKey,
@@ -151,6 +152,7 @@ var useFilter = function useFilter(props) {
151
152
  filterFunc: filterFunc,
152
153
  onCreate: onCreate ? handleCreate : undefined,
153
154
  onFilter: onFilter || onCreate ? handleFilter : undefined,
155
+ FilterProvider: FilterContext.Provider,
154
156
  // onResetFilter: handleResetData,
155
157
  onClearCreatedData: handleClearCreatedData
156
158
  };
@@ -0,0 +1,7 @@
1
+ export declare function getHighlightText<T>({ nodeList, searchWords, highlightClassName, enable, }: {
2
+ enable?: boolean;
3
+ nodeList: T;
4
+ searchWords?: string;
5
+ highlightClassName: string;
6
+ }): T;
7
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["highlight.tsx"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAClC,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,CAAC,CA8BJ"}
@@ -0,0 +1,59 @@
1
+ import React, { cloneElement } from 'react';
2
+ import { escapeRegExp } from "./string";
3
+ import { isArray } from "./is";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
+ export function getHighlightText(_ref) {
7
+ var nodeList = _ref.nodeList,
8
+ searchWords = _ref.searchWords,
9
+ highlightClassName = _ref.highlightClassName,
10
+ enable = _ref.enable;
11
+ if (!enable || !searchWords) {
12
+ return nodeList;
13
+ }
14
+ var transformNode = function transformNode(node) {
15
+ var _node$props;
16
+ if (node && typeof ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.children) === 'string') {
17
+ return /*#__PURE__*/cloneElement(node, undefined, /*#__PURE__*/_jsx(HighlightText, {
18
+ textToHighlight: node.props.children,
19
+ searchWords: searchWords,
20
+ highlightClassName: highlightClassName
21
+ }));
22
+ }
23
+ if (node && typeof node === 'string') {
24
+ return /*#__PURE__*/_jsx(HighlightText, {
25
+ textToHighlight: node,
26
+ searchWords: searchWords,
27
+ highlightClassName: highlightClassName
28
+ });
29
+ }
30
+ return node;
31
+ };
32
+ return isArray(nodeList) ? nodeList.map(transformNode) : transformNode(nodeList);
33
+ }
34
+ function HighlightText(_ref2) {
35
+ var textToHighlight = _ref2.textToHighlight,
36
+ searchWords = _ref2.searchWords,
37
+ highlightClassName = _ref2.highlightClassName;
38
+ if (!searchWords) return /*#__PURE__*/_jsx(_Fragment, {
39
+ children: textToHighlight
40
+ });
41
+ if (searchWords.length > 500) {
42
+ searchWords = searchWords.slice(0, 500);
43
+ }
44
+
45
+ // 注意这里的括号,这里使用了带capture group功能的正则,来split字符串
46
+ // 从而在strArr中可以保留匹配文本
47
+ var re = new RegExp("(".concat(escapeRegExp(searchWords), ")"), 'i');
48
+ var strArr = textToHighlight.split(re);
49
+ return /*#__PURE__*/_jsx(_Fragment, {
50
+ children: strArr.map(function (item, index) {
51
+ return re.test(item) ? /*#__PURE__*/_jsx("span", {
52
+ className: highlightClassName,
53
+ children: item
54
+ }, index) : /*#__PURE__*/_jsx(React.Fragment, {
55
+ children: item
56
+ }, index);
57
+ })
58
+ });
59
+ }
@@ -21,5 +21,6 @@ export * from './array';
21
21
  export * from './tree';
22
22
  export * from './immer';
23
23
  export * from './warning';
24
+ export * from './highlight';
24
25
  export * as flat from './flat';
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
@@ -21,5 +21,6 @@ export * from "./array";
21
21
  export * from "./tree";
22
22
  export * from "./immer";
23
23
  export * from "./warning";
24
+ export * from "./highlight";
24
25
  import * as _flat from "./flat";
25
26
  export { _flat as flat };
@@ -11,4 +11,5 @@ export declare function substitute<T extends ObjectType = ObjectType>(str: strin
11
11
  * 输出 '//github.com/'
12
12
  */
13
13
  export declare function removeProtocol(url: string): string;
14
+ export declare function escapeRegExp(str?: any): any;
14
15
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAC1D,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,EAClC,GAAG,EAAE,CAAC,UAoBP;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAQzC"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAC1D,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,EAClC,GAAG,EAAE,CAAC,UAoBP;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAQzC;AASD,wBAAgB,YAAY,CAAC,GAAG,GAAE,GAAQ,OAKzC"}
@@ -37,4 +37,16 @@ export function removeProtocol(url) {
37
37
  } catch (error) {
38
38
  return url;
39
39
  }
40
+ }
41
+
42
+ /**
43
+ * Used to match `RegExp`
44
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
45
+ */
46
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
47
+ reHasRegExpChar = RegExp(reRegExpChar.source);
48
+ export function escapeRegExp() {
49
+ var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
50
+ var string = typeof str === 'string' ? str : str.toString();
51
+ return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, '\\$&') : string;
40
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.7.0-beta.30",
3
+ "version": "3.7.0-beta.31",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",