@pisell/private-materials 3.4.16 → 3.4.18

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 (211) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +9 -9
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/appointmentBooking/components/Content/index.js +1 -1
  12. package/es/components/appointmentBooking/components/Content/index.less +3 -3
  13. package/es/components/appointmentBooking/components/Services/index.js +2 -2
  14. package/es/components/appointmentBooking/index.js +8 -2
  15. package/es/components/booking/info2/service/addTimeModal/index.js +0 -1
  16. package/es/components/booking/utils.d.ts +2 -2
  17. package/es/components/eftposPay/hooks.d.ts +1 -1
  18. package/es/components/eftposPay/store/index.d.ts +2 -2
  19. package/es/components/eventBooking/index.js +8 -1
  20. package/es/components/ticketBooking/components/addServiceVariant/addService.js +3 -3
  21. package/es/hooks/useWindowSize.js +8 -1
  22. package/es/index.d.ts +3 -0
  23. package/es/index.js +4 -1
  24. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  25. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.js +29 -0
  26. package/es/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  27. package/es/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  28. package/es/plus/productSelect/CategoryTabs/index.js +171 -0
  29. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  30. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.js +37 -0
  31. package/es/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  32. package/es/plus/productSelect/ProductCard/index.d.ts +45 -0
  33. package/es/plus/productSelect/ProductCard/index.js +170 -0
  34. package/es/plus/productSelect/ProductCard/index.less +253 -0
  35. package/es/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  36. package/es/plus/productSelect/ProductList/gridComponents.js +149 -0
  37. package/es/plus/productSelect/ProductList/index.d.ts +22 -0
  38. package/es/plus/productSelect/ProductList/index.js +72 -0
  39. package/es/plus/productSelect/ProductList/index.less +0 -0
  40. package/es/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  41. package/es/plus/productSelect/components/IntersectionObserver.js +276 -0
  42. package/es/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  43. package/es/plus/productSelect/components/TabsStructure/TabsStructure.js +357 -0
  44. package/es/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  45. package/es/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  46. package/es/plus/productSelect/components/TabsStructure/hooks.js +243 -0
  47. package/es/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  48. package/es/plus/productSelect/components/TabsStructure/index.js +13 -0
  49. package/es/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  50. package/es/plus/productSelect/components/TabsStructure/styles.js +87 -0
  51. package/es/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  52. package/es/plus/productSelect/components/TabsStructure/types.js +1 -0
  53. package/es/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  54. package/es/plus/productSelect/components/TabsStructure/utils.js +56 -0
  55. package/es/plus/productSelect/components/pisellPriceText/index.d.ts +12 -0
  56. package/es/plus/productSelect/components/pisellPriceText/index.js +44 -0
  57. package/es/plus/productSelect/components/pisellPriceText/index.less +4 -0
  58. package/es/plus/productSelect/hooks/useToken.d.ts +18 -0
  59. package/es/plus/productSelect/hooks/useToken.js +34 -0
  60. package/es/plus/productSelect/index.d.ts +31 -0
  61. package/es/plus/productSelect/index.js +270 -0
  62. package/es/plus/productSelect/index.less +56 -0
  63. package/es/plus/productSelect/locales.d.ts +18 -0
  64. package/es/plus/productSelect/locales.js +17 -0
  65. package/es/plus/productSelect/theme/token.d.ts +17 -0
  66. package/es/plus/productSelect/theme/token.js +19 -0
  67. package/es/plus/productSelect/utils.d.ts +39 -0
  68. package/es/plus/productSelect/utils.js +162 -0
  69. package/es/plus/saasCreateOrganization/components/Header.d.ts +3 -0
  70. package/es/plus/saasCreateOrganization/components/Header.js +62 -0
  71. package/es/plus/saasCreateOrganization/index.d.ts +4 -0
  72. package/es/plus/saasCreateOrganization/index.js +15 -0
  73. package/es/plus/saasCreateOrganization/index.less +55 -0
  74. package/es/plus/saasCreateOrganization/locales.d.ts +15 -0
  75. package/es/plus/saasCreateOrganization/locales.js +14 -0
  76. package/es/plus/saasCreateOrganization/types.d.ts +69 -0
  77. package/es/plus/saasCreateOrganization/types.js +1 -0
  78. package/es/plus/saasLogin/index.d.ts +5 -0
  79. package/es/plus/saasLogin/index.js +165 -0
  80. package/es/plus/saasLogin/index.less +136 -0
  81. package/es/plus/saasLogin/locales.d.ts +51 -0
  82. package/es/plus/saasLogin/locales.js +50 -0
  83. package/es/plus/saasLogin/types.d.ts +62 -0
  84. package/es/plus/saasLogin/types.js +1 -0
  85. package/es/plus/saasLogin/utils.d.ts +35 -0
  86. package/es/plus/saasLogin/utils.js +31 -0
  87. package/es/plus/saasRegister/components/EntryEmail.d.ts +9 -0
  88. package/es/plus/saasRegister/components/EntryEmail.js +92 -0
  89. package/es/plus/saasRegister/components/EntryInfo.d.ts +9 -0
  90. package/es/plus/saasRegister/components/EntryInfo.js +145 -0
  91. package/es/plus/saasRegister/components/GoLogin.d.ts +4 -0
  92. package/es/plus/saasRegister/components/GoLogin.js +27 -0
  93. package/es/plus/saasRegister/components/Header.d.ts +3 -0
  94. package/es/plus/saasRegister/components/Header.js +62 -0
  95. package/es/plus/saasRegister/components/VerifyError.d.ts +8 -0
  96. package/es/plus/saasRegister/components/VerifyError.js +68 -0
  97. package/es/plus/saasRegister/components/VerifyingLink.d.ts +5 -0
  98. package/es/plus/saasRegister/components/VerifyingLink.js +16 -0
  99. package/es/plus/saasRegister/components/VertifyEmail.d.ts +7 -0
  100. package/es/plus/saasRegister/components/VertifyEmail.js +121 -0
  101. package/es/plus/saasRegister/index.d.ts +5 -0
  102. package/es/plus/saasRegister/index.js +246 -0
  103. package/es/plus/saasRegister/index.less +218 -0
  104. package/es/plus/saasRegister/locales.d.ts +117 -0
  105. package/es/plus/saasRegister/locales.js +116 -0
  106. package/es/plus/saasRegister/types.d.ts +114 -0
  107. package/es/plus/saasRegister/types.js +24 -0
  108. package/lib/components/appointmentBooking/components/Content/index.js +1 -1
  109. package/lib/components/appointmentBooking/components/Content/index.less +3 -3
  110. package/lib/components/appointmentBooking/components/Services/index.js +2 -2
  111. package/lib/components/appointmentBooking/index.js +6 -1
  112. package/lib/components/booking/info2/service/addTimeModal/index.js +0 -1
  113. package/lib/components/booking/utils.d.ts +2 -2
  114. package/lib/components/eftposPay/hooks.d.ts +1 -1
  115. package/lib/components/eftposPay/store/index.d.ts +2 -2
  116. package/lib/components/eventBooking/index.js +6 -1
  117. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +3 -3
  118. package/lib/hooks/useWindowSize.js +6 -1
  119. package/lib/index.d.ts +3 -0
  120. package/lib/index.js +9 -0
  121. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
  122. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.js +62 -0
  123. package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
  124. package/lib/plus/productSelect/CategoryTabs/index.d.ts +18 -0
  125. package/lib/plus/productSelect/CategoryTabs/index.js +183 -0
  126. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
  127. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.js +58 -0
  128. package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
  129. package/lib/plus/productSelect/ProductCard/index.d.ts +45 -0
  130. package/lib/plus/productSelect/ProductCard/index.js +184 -0
  131. package/lib/plus/productSelect/ProductCard/index.less +253 -0
  132. package/lib/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
  133. package/lib/plus/productSelect/ProductList/gridComponents.js +148 -0
  134. package/lib/plus/productSelect/ProductList/index.d.ts +22 -0
  135. package/lib/plus/productSelect/ProductList/index.js +86 -0
  136. package/lib/plus/productSelect/ProductList/index.less +0 -0
  137. package/lib/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
  138. package/lib/plus/productSelect/components/IntersectionObserver.js +269 -0
  139. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
  140. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.js +393 -0
  141. package/lib/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
  142. package/lib/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
  143. package/lib/plus/productSelect/components/TabsStructure/hooks.js +209 -0
  144. package/lib/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
  145. package/lib/plus/productSelect/components/TabsStructure/index.js +92 -0
  146. package/lib/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
  147. package/lib/plus/productSelect/components/TabsStructure/styles.js +122 -0
  148. package/lib/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
  149. package/lib/plus/productSelect/components/TabsStructure/types.js +17 -0
  150. package/lib/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
  151. package/lib/plus/productSelect/components/TabsStructure/utils.js +72 -0
  152. package/lib/plus/productSelect/components/pisellPriceText/index.d.ts +12 -0
  153. package/lib/plus/productSelect/components/pisellPriceText/index.js +73 -0
  154. package/lib/plus/productSelect/components/pisellPriceText/index.less +4 -0
  155. package/lib/plus/productSelect/hooks/useToken.d.ts +18 -0
  156. package/lib/plus/productSelect/hooks/useToken.js +50 -0
  157. package/lib/plus/productSelect/index.d.ts +31 -0
  158. package/lib/plus/productSelect/index.js +299 -0
  159. package/lib/plus/productSelect/index.less +56 -0
  160. package/lib/plus/productSelect/locales.d.ts +18 -0
  161. package/lib/plus/productSelect/locales.js +41 -0
  162. package/lib/plus/productSelect/theme/token.d.ts +17 -0
  163. package/lib/plus/productSelect/theme/token.js +47 -0
  164. package/lib/plus/productSelect/utils.d.ts +39 -0
  165. package/lib/plus/productSelect/utils.js +138 -0
  166. package/lib/plus/saasCreateOrganization/components/Header.d.ts +3 -0
  167. package/lib/plus/saasCreateOrganization/components/Header.js +99 -0
  168. package/lib/plus/saasCreateOrganization/index.d.ts +4 -0
  169. package/lib/plus/saasCreateOrganization/index.js +47 -0
  170. package/lib/plus/saasCreateOrganization/index.less +55 -0
  171. package/lib/plus/saasCreateOrganization/locales.d.ts +15 -0
  172. package/lib/plus/saasCreateOrganization/locales.js +38 -0
  173. package/lib/plus/saasCreateOrganization/types.d.ts +69 -0
  174. package/lib/plus/saasCreateOrganization/types.js +17 -0
  175. package/lib/plus/saasLogin/index.d.ts +5 -0
  176. package/lib/plus/saasLogin/index.js +171 -0
  177. package/lib/plus/saasLogin/index.less +136 -0
  178. package/lib/plus/saasLogin/locales.d.ts +51 -0
  179. package/lib/plus/saasLogin/locales.js +74 -0
  180. package/lib/plus/saasLogin/types.d.ts +62 -0
  181. package/lib/plus/saasLogin/types.js +17 -0
  182. package/lib/plus/saasLogin/utils.d.ts +35 -0
  183. package/lib/plus/saasLogin/utils.js +50 -0
  184. package/lib/plus/saasRegister/components/EntryEmail.d.ts +9 -0
  185. package/lib/plus/saasRegister/components/EntryEmail.js +92 -0
  186. package/lib/plus/saasRegister/components/EntryInfo.d.ts +9 -0
  187. package/lib/plus/saasRegister/components/EntryInfo.js +128 -0
  188. package/lib/plus/saasRegister/components/GoLogin.d.ts +4 -0
  189. package/lib/plus/saasRegister/components/GoLogin.js +58 -0
  190. package/lib/plus/saasRegister/components/Header.d.ts +3 -0
  191. package/lib/plus/saasRegister/components/Header.js +99 -0
  192. package/lib/plus/saasRegister/components/VerifyError.d.ts +8 -0
  193. package/lib/plus/saasRegister/components/VerifyError.js +123 -0
  194. package/lib/plus/saasRegister/components/VerifyingLink.d.ts +5 -0
  195. package/lib/plus/saasRegister/components/VerifyingLink.js +44 -0
  196. package/lib/plus/saasRegister/components/VertifyEmail.d.ts +7 -0
  197. package/lib/plus/saasRegister/components/VertifyEmail.js +110 -0
  198. package/lib/plus/saasRegister/index.d.ts +5 -0
  199. package/lib/plus/saasRegister/index.js +205 -0
  200. package/lib/plus/saasRegister/index.less +218 -0
  201. package/lib/plus/saasRegister/locales.d.ts +117 -0
  202. package/lib/plus/saasRegister/locales.js +140 -0
  203. package/lib/plus/saasRegister/types.d.ts +114 -0
  204. package/lib/plus/saasRegister/types.js +54 -0
  205. package/lowcode/saas-create-organization/meta.ts +214 -0
  206. package/lowcode/saas-create-organization/snippets.ts +25 -0
  207. package/lowcode/saas-login/meta.ts +370 -0
  208. package/lowcode/saas-login/snippets.ts +38 -0
  209. package/lowcode/saas-register/meta.ts +386 -0
  210. package/lowcode/saas-register/snippets.ts +31 -0
  211. package/package.json +2 -2
@@ -0,0 +1,72 @@
1
+ var _excluded = ["children"],
2
+ _excluded2 = ["children", "index"];
3
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
5
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
6
+ import React, { forwardRef, useMemo, memo } from 'react';
7
+ import classNames from 'classnames';
8
+ // 将默认组件移到组件外部,避免重复创建
9
+ var DefaultListComponent = /*#__PURE__*/memo(function (_ref) {
10
+ var children = _ref.children,
11
+ listProps = _objectWithoutProperties(_ref, _excluded);
12
+ return /*#__PURE__*/React.createElement("div", _extends({
13
+ className: "product-list-wrapper"
14
+ }, listProps), children);
15
+ });
16
+ var DefaultItemComponent = /*#__PURE__*/memo(function (_ref2) {
17
+ var children = _ref2.children,
18
+ index = _ref2.index,
19
+ itemProps = _objectWithoutProperties(_ref2, _excluded2);
20
+ return /*#__PURE__*/React.createElement("div", _extends({}, itemProps, {
21
+ "data-index": index,
22
+ "data-item-index": index
23
+ }), children);
24
+ });
25
+ var ProductList = /*#__PURE__*/forwardRef(function (props, ref) {
26
+ var className = props.className,
27
+ data = props.data,
28
+ context = props.context,
29
+ components = props.components,
30
+ itemContent = props.itemContent;
31
+
32
+ // 使用 useMemo 缓存组件选择
33
+ var ListComponent = useMemo(function () {
34
+ return (components === null || components === void 0 ? void 0 : components.List) || DefaultListComponent;
35
+ }, [components === null || components === void 0 ? void 0 : components.List]);
36
+ var ItemComponent = useMemo(function () {
37
+ return (components === null || components === void 0 ? void 0 : components.Item) || DefaultItemComponent;
38
+ }, [components === null || components === void 0 ? void 0 : components.Item]);
39
+ var itemContentRenderer = useMemo(function () {
40
+ if (itemContent) {
41
+ return function (item, index) {
42
+ return itemContent(index, item, context);
43
+ };
44
+ }
45
+ return function (item, index) {
46
+ return /*#__PURE__*/React.createElement("div", null, index);
47
+ };
48
+ }, [itemContent, context]);
49
+ var renderedItems = useMemo(function () {
50
+ return data === null || data === void 0 ? void 0 : data.map(function (item, index) {
51
+ var content = itemContentRenderer(item, index);
52
+ return /*#__PURE__*/React.createElement(ItemComponent, {
53
+ key: "".concat(item.id || index, "-").concat(index),
54
+ item: item,
55
+ index: index,
56
+ "data-index": index,
57
+ "data-item-index": index,
58
+ context: context
59
+ }, content);
60
+ });
61
+ }, [data, ItemComponent, itemContentRenderer]);
62
+ return /*#__PURE__*/React.createElement("div", {
63
+ className: classNames(className)
64
+ }, /*#__PURE__*/React.createElement(ListComponent, {
65
+ ref: ref,
66
+ context: context
67
+ }, renderedItems));
68
+ });
69
+ export default ProductList;
70
+
71
+ // 导出网格组件工厂函数,方便外部使用
72
+ export { createGridComponents, createTwoColumnGrid, createCustomGrid, GRID_LAYOUTS } from "./gridComponents";
File without changes
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import type { ReactNode, CSSProperties } from 'react';
3
+ declare global {
4
+ interface Window {
5
+ IntersectionObserver: typeof IntersectionObserver;
6
+ }
7
+ }
8
+ interface IntersectionObserverContextValue {
9
+ initialized: boolean;
10
+ register: (params: {
11
+ ref: React.RefObject<HTMLElement>;
12
+ callback: (entry: IntersectionObserverEntry) => void;
13
+ }) => void;
14
+ unregister: (params: {
15
+ ref: React.RefObject<HTMLElement>;
16
+ }) => void;
17
+ }
18
+ declare type PriorityMode = 'top' | 'bottom' | 'left' | 'right' | undefined;
19
+ interface IntersectionObserverProps {
20
+ children: ReactNode;
21
+ root?: Element | null;
22
+ rootMargin?: string;
23
+ threshold?: number | number[];
24
+ priorityMode?: PriorityMode;
25
+ }
26
+ interface IntersectionTriggerOptions {
27
+ once?: boolean;
28
+ onHide?: (cleanup: () => void) => void;
29
+ onShow?: (cleanup: () => void) => void;
30
+ }
31
+ interface IntersectionTriggerProps extends IntersectionTriggerOptions {
32
+ children?: ReactNode;
33
+ className?: string;
34
+ style?: CSSProperties;
35
+ }
36
+ declare const IntersectionObserverContext: React.Context<IntersectionObserverContextValue>;
37
+ declare const Consumer: React.Consumer<IntersectionObserverContextValue>;
38
+ export declare const IntersectionObserverProvider: React.FC<IntersectionObserverProps>;
39
+ export declare const IntersectionTrigger: React.FC<IntersectionTriggerProps>;
40
+ export type { IntersectionObserverProps, IntersectionTriggerProps, IntersectionTriggerOptions, IntersectionObserverContextValue, PriorityMode, };
41
+ export { IntersectionObserverContext, Consumer as IntersectionObserverConsumer, };
42
+ export default IntersectionObserverProvider;
@@ -0,0 +1,276 @@
1
+ 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); }
2
+ var _excluded = ["children", "className", "style"];
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
+ import React, { createContext, useContext, useState, useRef, useEffect, useCallback, useMemo } from 'react';
17
+ var IntersectionObserverContext = /*#__PURE__*/createContext({
18
+ initialized: false,
19
+ register: function register() {},
20
+ unregister: function unregister() {}
21
+ });
22
+ var Provider = IntersectionObserverContext.Provider,
23
+ Consumer = IntersectionObserverContext.Consumer;
24
+ export var IntersectionObserverProvider = function IntersectionObserverProvider(_ref) {
25
+ var children = _ref.children,
26
+ _ref$root = _ref.root,
27
+ root = _ref$root === void 0 ? null : _ref$root,
28
+ _ref$rootMargin = _ref.rootMargin,
29
+ rootMargin = _ref$rootMargin === void 0 ? '0px' : _ref$rootMargin,
30
+ _ref$threshold = _ref.threshold,
31
+ threshold = _ref$threshold === void 0 ? 0 : _ref$threshold,
32
+ priorityMode = _ref.priorityMode;
33
+ var _useState = useState(false),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ mounted = _useState2[0],
36
+ setMounted = _useState2[1];
37
+ var _useState3 = useState(false),
38
+ _useState4 = _slicedToArray(_useState3, 2),
39
+ initialized = _useState4[0],
40
+ setInitialized = _useState4[1];
41
+ var observerRef = useRef(null);
42
+ var callbackMapRef = useRef(new Map());
43
+ var findCallback = useCallback(function (target) {
44
+ return callbackMapRef.current.get(target);
45
+ }, []);
46
+
47
+ // 选择优先级元素的函数
48
+ var selectPriorityEntry = useCallback(function (entries, mode) {
49
+ if (entries.length === 0) return undefined;
50
+ if (entries.length === 1) return entries[0];
51
+ switch (mode) {
52
+ case 'top':
53
+ return entries.reduce(function (prev, curr) {
54
+ return curr.boundingClientRect.top < prev.boundingClientRect.top ? curr : prev;
55
+ });
56
+ case 'bottom':
57
+ return entries.reduce(function (prev, curr) {
58
+ return curr.boundingClientRect.bottom > prev.boundingClientRect.bottom ? curr : prev;
59
+ });
60
+ case 'left':
61
+ return entries.reduce(function (prev, curr) {
62
+ return curr.boundingClientRect.left < prev.boundingClientRect.left ? curr : prev;
63
+ });
64
+ case 'right':
65
+ return entries.reduce(function (prev, curr) {
66
+ return curr.boundingClientRect.right > prev.boundingClientRect.right ? curr : prev;
67
+ });
68
+ default:
69
+ return entries[0];
70
+ }
71
+ }, []);
72
+
73
+ // 创建 IntersectionObserver 实例
74
+ var observerOptions = useMemo(function () {
75
+ return {
76
+ root: root,
77
+ rootMargin: rootMargin,
78
+ threshold: threshold
79
+ };
80
+ }, [root, rootMargin, threshold]);
81
+ var createObserver = useCallback(function () {
82
+ if (typeof window !== 'undefined' && !window.IntersectionObserver) {
83
+ console.warn('IntersectionObserver is not supported in this browser');
84
+ return null;
85
+ }
86
+ return new IntersectionObserver(function (entries) {
87
+ if (entries.length === 0) return;
88
+ try {
89
+ // 如果没有设置priorityMode,触发所有元素的回调(包括可见和不可见)
90
+ if (!priorityMode) {
91
+ entries.forEach(function (entry) {
92
+ var callback = findCallback(entry.target);
93
+ if (callback) {
94
+ callback(entry);
95
+ }
96
+ });
97
+ return;
98
+ }
99
+
100
+ // 遍历处理所有元素
101
+ var visibleEntries = [];
102
+ var invisibleEntries = [];
103
+ entries.forEach(function (entry) {
104
+ if (entry.isIntersecting) {
105
+ visibleEntries.push(entry);
106
+ } else {
107
+ invisibleEntries.push(entry);
108
+ }
109
+ });
110
+
111
+ // 处理不可见元素
112
+ invisibleEntries.forEach(function (entry) {
113
+ var callback = findCallback(entry.target);
114
+ if (callback) {
115
+ callback(entry);
116
+ }
117
+ });
118
+
119
+ // 处理可见元素,根据优先级选择一个
120
+ if (visibleEntries.length > 0) {
121
+ var selectedEntry = selectPriorityEntry(visibleEntries, priorityMode);
122
+ if (selectedEntry) {
123
+ var callback = findCallback(selectedEntry.target);
124
+ if (callback) {
125
+ callback(selectedEntry);
126
+ }
127
+ }
128
+ }
129
+ } catch (error) {
130
+ console.error('IntersectionObserver callback error:', error);
131
+ }
132
+ }, observerOptions);
133
+ }, [observerOptions, priorityMode, findCallback, selectPriorityEntry]);
134
+
135
+ // 注册元素到观察器
136
+ var register = useCallback(function (_ref2) {
137
+ var ref = _ref2.ref,
138
+ callback = _ref2.callback;
139
+ if (ref !== null && ref !== void 0 && ref.current && observerRef !== null && observerRef !== void 0 && observerRef.current) {
140
+ var element = ref.current;
141
+
142
+ // 检查是否已经注册,避免重复注册
143
+ if (callbackMapRef.current.has(element)) {
144
+ return;
145
+ }
146
+ callbackMapRef.current.set(element, callback);
147
+ observerRef.current.observe(element);
148
+ }
149
+ }, []);
150
+
151
+ // 从观察器中注销元素
152
+ var unregister = useCallback(function (_ref3) {
153
+ var ref = _ref3.ref;
154
+ if (ref !== null && ref !== void 0 && ref.current && observerRef !== null && observerRef !== void 0 && observerRef.current) {
155
+ var element = ref.current;
156
+
157
+ // 从Map中移除回调
158
+ callbackMapRef.current.delete(element);
159
+ observerRef.current.unobserve(element);
160
+ }
161
+ }, []);
162
+
163
+ // 初始化观察器
164
+ useEffect(function () {
165
+ if (mounted) {
166
+ // 清理旧的observer
167
+ if (observerRef.current) {
168
+ observerRef.current.disconnect();
169
+ }
170
+ observerRef.current = createObserver();
171
+ setInitialized(true);
172
+ }
173
+ }, [mounted, createObserver]);
174
+
175
+ // 组件挂载和清理
176
+ useEffect(function () {
177
+ setMounted(true);
178
+ return function () {
179
+ if (observerRef.current) {
180
+ observerRef.current.disconnect();
181
+ callbackMapRef.current.clear();
182
+ setInitialized(false);
183
+ }
184
+ };
185
+ }, []);
186
+ var contextValue = {
187
+ initialized: initialized,
188
+ register: register,
189
+ unregister: unregister
190
+ };
191
+ return /*#__PURE__*/React.createElement(Provider, {
192
+ value: contextValue
193
+ }, children);
194
+ };
195
+
196
+ // IntersectionTrigger Hook - 内部使用
197
+ var useIntersectionTrigger = function useIntersectionTrigger(elementRef) {
198
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
199
+ var _options$once = options.once,
200
+ once = _options$once === void 0 ? false : _options$once,
201
+ onHide = options.onHide,
202
+ onShow = options.onShow;
203
+ var _useContext = useContext(IntersectionObserverContext),
204
+ initialized = _useContext.initialized,
205
+ register = _useContext.register,
206
+ unregister = _useContext.unregister;
207
+ var _useState5 = useState(false),
208
+ _useState6 = _slicedToArray(_useState5, 2),
209
+ isIntersecting = _useState6[0],
210
+ setIsIntersecting = _useState6[1];
211
+ var cleanup = useCallback(function () {
212
+ return unregister({
213
+ ref: elementRef
214
+ });
215
+ }, [elementRef, unregister]);
216
+
217
+ // 使用useCallback优化回调函数,避免竞态条件
218
+ var intersectionCallback = useCallback(function (entry) {
219
+ if (entry.isIntersecting) {
220
+ onShow === null || onShow === void 0 || onShow(cleanup);
221
+ if (once) {
222
+ unregister({
223
+ ref: elementRef
224
+ });
225
+ }
226
+ } else {
227
+ onHide === null || onHide === void 0 || onHide(cleanup);
228
+ }
229
+ setIsIntersecting(entry.isIntersecting);
230
+ }, [onShow, onHide, once, cleanup, unregister, elementRef]);
231
+ var registerRef = useRef();
232
+ registerRef.current = function () {
233
+ return register({
234
+ ref: elementRef,
235
+ callback: intersectionCallback
236
+ });
237
+ };
238
+ useEffect(function () {
239
+ if (initialized) {
240
+ var _registerRef$current;
241
+ (_registerRef$current = registerRef.current) === null || _registerRef$current === void 0 || _registerRef$current.call(registerRef);
242
+ }
243
+ return function () {
244
+ cleanup();
245
+ };
246
+ }, [initialized, cleanup]);
247
+ return {
248
+ isIntersecting: isIntersecting
249
+ };
250
+ };
251
+
252
+ // IntersectionTrigger 组件
253
+ export var IntersectionTrigger = function IntersectionTrigger(_ref4) {
254
+ var children = _ref4.children,
255
+ className = _ref4.className,
256
+ _ref4$style = _ref4.style,
257
+ style = _ref4$style === void 0 ? {} : _ref4$style,
258
+ options = _objectWithoutProperties(_ref4, _excluded);
259
+ var elementRef = useRef(null);
260
+ // 使用内部 hook
261
+ var _useIntersectionTrigg = useIntersectionTrigger(elementRef, options),
262
+ isIntersecting = _useIntersectionTrigg.isIntersecting;
263
+ return /*#__PURE__*/React.createElement("div", {
264
+ className: className,
265
+ ref: elementRef,
266
+ style: _objectSpread({
267
+ width: '100%',
268
+ height: '100%'
269
+ }, style)
270
+ }, children);
271
+ };
272
+
273
+ // 导出类型和组件
274
+
275
+ export { IntersectionObserverContext, Consumer as IntersectionObserverConsumer };
276
+ export default IntersectionObserverProvider;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import type { TabsStructureProps, TabListContainerProps, TabItemProps, RailProps, SelectionIndicatorProps, ScrollShadowProps, ChevronControlsProps, ChevronButtonProps } from './types';
3
+ declare global {
4
+ interface WeakRef<T extends object> {
5
+ deref(): T | undefined;
6
+ }
7
+ interface WeakRefConstructor {
8
+ new <T extends object>(target: T): WeakRef<T>;
9
+ }
10
+ const WeakRef: WeakRefConstructor | undefined;
11
+ }
12
+ declare const TabListContainer: React.ForwardRefExoticComponent<Omit<TabListContainerProps, "ref"> & React.RefAttributes<HTMLUListElement>>;
13
+ declare const TabItem: React.ForwardRefExoticComponent<Omit<TabItemProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
14
+ declare const Rail: React.ForwardRefExoticComponent<Omit<RailProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ declare const SelectionIndicator: React.ForwardRefExoticComponent<Omit<SelectionIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ declare const ScrollShadow: React.ForwardRefExoticComponent<Omit<ScrollShadowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ declare const ChevronButton: React.ForwardRefExoticComponent<Omit<ChevronButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
18
+ declare const ChevronControls: React.FC<ChevronControlsProps>;
19
+ declare type TabsStructureComponent = React.FC<TabsStructureProps> & {
20
+ Rail: typeof Rail;
21
+ ListContainer: typeof TabListContainer;
22
+ Item: typeof TabItem;
23
+ SelectionIndicator: typeof SelectionIndicator;
24
+ ScrollShadow: typeof ScrollShadow;
25
+ ChevronControls: typeof ChevronControls;
26
+ ChevronButton: typeof ChevronButton;
27
+ };
28
+ declare const TabsStructureWithSubComponents: TabsStructureComponent;
29
+ export default TabsStructureWithSubComponents;
30
+ export { TabListContainer, TabItem, Rail, SelectionIndicator, ScrollShadow, ChevronControls, ChevronButton, };