@pisell/materials 6.8.9 → 6.8.10

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 (73) 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.js +16 -16
  8. package/build/lowcode/view.js +16 -16
  9. package/es/components/PisellProcedure/PisellProcedure.stories.d.ts +163 -0
  10. package/es/components/PisellProcedure/PisellProcedure.stories.js +1611 -0
  11. package/es/components/PisellScrollView/PisellScrollView.stories.d.ts +87 -0
  12. package/es/components/PisellScrollView/PisellScrollView.stories.js +772 -0
  13. package/es/components/PisellScrollView/hooks/useScrollEvents.js +18 -3
  14. package/es/components/PisellScrollView/index.d.ts +2 -1
  15. package/es/components/PisellScrollView/index.js +2 -1
  16. package/es/components/PisellSteps/PisellSteps.stories.d.ts +155 -0
  17. package/es/components/PisellSteps/PisellSteps.stories.js +851 -0
  18. package/es/components/PisellSuperTabs/PisellSuperTabs.d.ts +6 -10
  19. package/es/components/PisellSuperTabs/PisellSuperTabs.js +28 -8
  20. package/es/components/PisellSuperTabs/types.d.ts +1 -0
  21. package/es/components/PisellTabbar/PisellTabbar.d.ts +2 -19
  22. package/es/components/PisellTabbar/PisellTabbar.js +2 -1
  23. package/es/components/PisellTabbar/constants.d.ts +4 -4
  24. package/es/components/PisellTabbar/constants.js +5 -5
  25. package/es/components/PisellTabbar/index.d.ts +2 -0
  26. package/es/components/PisellTabbar/index.js +2 -0
  27. package/es/components/PisellTabbar/template/Template1/PisellTabbar.d.ts +20 -0
  28. package/es/components/PisellTabbar/template/Template1/PisellTabbar.js +426 -0
  29. package/es/components/PisellTabbar/template/Template1/constants.d.ts +10 -0
  30. package/es/components/PisellTabbar/template/Template1/constants.js +33 -0
  31. package/es/components/PisellTabbar/template/Template1/index.d.ts +6 -0
  32. package/es/components/PisellTabbar/template/Template1/index.js +7 -0
  33. package/es/components/PisellTabbar/template/Template1/utils/index.d.ts +35 -0
  34. package/es/components/PisellTabbar/template/Template1/utils/index.js +96 -0
  35. package/es/components/PisellTabbar/utils/index.d.ts +33 -0
  36. package/es/components/PisellTabbar/utils/index.js +3 -2
  37. package/es/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
  38. package/es/components/productCard/components/Packages/utils.d.ts +1 -1
  39. package/es/index.d.ts +2 -1
  40. package/es/index.js +2 -1
  41. package/lib/components/PisellProcedure/PisellProcedure.stories.d.ts +163 -0
  42. package/lib/components/PisellProcedure/PisellProcedure.stories.js +925 -0
  43. package/lib/components/PisellScrollView/PisellScrollView.stories.d.ts +87 -0
  44. package/lib/components/PisellScrollView/PisellScrollView.stories.js +535 -0
  45. package/lib/components/PisellScrollView/hooks/useScrollEvents.js +13 -3
  46. package/lib/components/PisellScrollView/index.d.ts +2 -1
  47. package/lib/components/PisellScrollView/index.js +2 -5
  48. package/lib/components/PisellSteps/PisellSteps.stories.d.ts +155 -0
  49. package/lib/components/PisellSteps/PisellSteps.stories.js +570 -0
  50. package/lib/components/PisellSuperTabs/PisellSuperTabs.d.ts +6 -10
  51. package/lib/components/PisellSuperTabs/PisellSuperTabs.js +25 -6
  52. package/lib/components/PisellSuperTabs/types.d.ts +1 -0
  53. package/lib/components/PisellTabbar/PisellTabbar.d.ts +2 -19
  54. package/lib/components/PisellTabbar/PisellTabbar.js +2 -1
  55. package/lib/components/PisellTabbar/constants.d.ts +4 -4
  56. package/lib/components/PisellTabbar/constants.js +5 -5
  57. package/lib/components/PisellTabbar/index.d.ts +2 -0
  58. package/lib/components/PisellTabbar/index.js +6 -0
  59. package/lib/components/PisellTabbar/template/Template1/PisellTabbar.d.ts +20 -0
  60. package/lib/components/PisellTabbar/template/Template1/PisellTabbar.js +437 -0
  61. package/lib/components/PisellTabbar/template/Template1/constants.d.ts +10 -0
  62. package/lib/components/PisellTabbar/template/Template1/constants.js +60 -0
  63. package/lib/components/PisellTabbar/template/Template1/index.d.ts +6 -0
  64. package/lib/components/PisellTabbar/template/Template1/index.js +36 -0
  65. package/lib/components/PisellTabbar/template/Template1/utils/index.d.ts +35 -0
  66. package/lib/components/PisellTabbar/template/Template1/utils/index.js +68 -0
  67. package/lib/components/PisellTabbar/utils/index.d.ts +33 -0
  68. package/lib/components/PisellTabbar/utils/index.js +4 -1
  69. package/lib/components/productCard/cartSkuCard/components/packages/utils.d.ts +1 -1
  70. package/lib/components/productCard/components/Packages/utils.d.ts +1 -1
  71. package/lib/index.d.ts +2 -1
  72. package/lib/index.js +5 -2
  73. package/package.json +21 -2
@@ -0,0 +1,772 @@
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
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ import { expect, within } from '@storybook/test';
6
+ import { Button, Card, Space } from 'antd';
7
+ import { useRef } from 'react';
8
+ import PisellScrollView from "./PisellScrollView";
9
+
10
+ /**
11
+ * PisellScrollView 滚动视图组件
12
+ *
13
+ * 提供丰富的滚动功能,包括滚动方向控制、滚动条样式、滚动按钮、滚动事件监听、
14
+ * 视图监听、吸附滚动等功能
15
+ */
16
+ var meta = {
17
+ title: 'Pro Components/PisellScrollView',
18
+ component: PisellScrollView,
19
+ parameters: {
20
+ layout: 'padded',
21
+ docs: {
22
+ description: {
23
+ component: '滚动视图组件,提供丰富的滚动功能,支持多种滚动方向、滚动条样式、滚动按钮和滚动事件监听。'
24
+ }
25
+ }
26
+ },
27
+ tags: ['autodocs'],
28
+ argTypes: {
29
+ overflow: {
30
+ control: 'select',
31
+ options: ['auto', 'scroll', 'hidden', 'x', 'y', 'both'],
32
+ description: '滚动方向'
33
+ },
34
+ scrollbarStyle: {
35
+ control: 'select',
36
+ options: ['default', 'thin', 'minimal', 'rounded', 'overlay', 'custom', 'none'],
37
+ description: '滚动条样式'
38
+ },
39
+ width: {
40
+ control: 'text',
41
+ description: '容器宽度'
42
+ },
43
+ height: {
44
+ control: 'text',
45
+ description: '容器高度'
46
+ }
47
+ }
48
+ };
49
+ export default meta;
50
+ /**
51
+ * 基础用法 - 垂直滚动
52
+ */
53
+ export var Default = {
54
+ args: {
55
+ width: '100%',
56
+ height: 400,
57
+ overflow: 'y',
58
+ children: /*#__PURE__*/React.createElement("div", {
59
+ style: {
60
+ padding: 20
61
+ }
62
+ }, Array.from({
63
+ length: 20
64
+ }, function (_, i) {
65
+ return /*#__PURE__*/React.createElement(Card, {
66
+ key: i,
67
+ style: {
68
+ marginBottom: 16
69
+ }
70
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u662F\u7B2C ", i + 1, " \u4E2A\u5361\u7247\u5185\u5BB9\uFF0C\u7528\u4E8E\u6F14\u793A\u5782\u76F4\u6EDA\u52A8\u6548\u679C\u3002"));
71
+ }))
72
+ }
73
+ };
74
+
75
+ /**
76
+ * 水平滚动
77
+ */
78
+ export var HorizontalScroll = {
79
+ args: {
80
+ width: '100%',
81
+ height: 300,
82
+ overflow: 'x',
83
+ children: /*#__PURE__*/React.createElement("div", {
84
+ style: {
85
+ display: 'flex',
86
+ padding: 20,
87
+ gap: 16
88
+ }
89
+ }, Array.from({
90
+ length: 10
91
+ }, function (_, i) {
92
+ return /*#__PURE__*/React.createElement(Card, {
93
+ key: i,
94
+ style: {
95
+ minWidth: 300,
96
+ flexShrink: 0
97
+ }
98
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u662F\u7B2C ", i + 1, " \u4E2A\u5361\u7247\uFF0C\u7528\u4E8E\u6F14\u793A\u6C34\u5E73\u6EDA\u52A8\u6548\u679C\u3002"));
99
+ }))
100
+ }
101
+ };
102
+
103
+ /**
104
+ * 双向滚动
105
+ */
106
+ export var BothDirections = {
107
+ args: {
108
+ width: '100%',
109
+ height: 400,
110
+ overflow: 'both',
111
+ children: /*#__PURE__*/React.createElement("div", {
112
+ style: {
113
+ padding: 20,
114
+ width: 2000,
115
+ height: 2000
116
+ }
117
+ }, /*#__PURE__*/React.createElement("h2", null, "\u53CC\u5411\u6EDA\u52A8\u5185\u5BB9"), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u4E2A\u533A\u57DF\u53EF\u4EE5\u540C\u65F6\u8FDB\u884C\u6C34\u5E73\u548C\u5782\u76F4\u6EDA\u52A8\u3002"), /*#__PURE__*/React.createElement("div", {
118
+ style: {
119
+ marginTop: 100,
120
+ marginLeft: 500
121
+ }
122
+ }, /*#__PURE__*/React.createElement(Card, null, /*#__PURE__*/React.createElement("h3", null, "\u53F3\u4E0B\u89D2\u5185\u5BB9"), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u5230\u8FD9\u91CC\u53EF\u4EE5\u770B\u5230\u53CC\u5411\u6EDA\u52A8\u7684\u6548\u679C\u3002"))))
123
+ }
124
+ };
125
+
126
+ /**
127
+ * 滚动条样式 - 细滚动条
128
+ */
129
+ export var ThinScrollbar = {
130
+ args: {
131
+ width: '100%',
132
+ height: 400,
133
+ overflow: 'y',
134
+ scrollbarStyle: 'thin',
135
+ children: /*#__PURE__*/React.createElement("div", {
136
+ style: {
137
+ padding: 20
138
+ }
139
+ }, Array.from({
140
+ length: 15
141
+ }, function (_, i) {
142
+ return /*#__PURE__*/React.createElement(Card, {
143
+ key: i,
144
+ style: {
145
+ marginBottom: 16
146
+ }
147
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u4F7F\u7528\u7EC6\u6EDA\u52A8\u6761\u6837\u5F0F\u3002"));
148
+ }))
149
+ }
150
+ };
151
+
152
+ /**
153
+ * 滚动条样式 - 隐藏滚动条
154
+ */
155
+ export var HiddenScrollbar = {
156
+ args: {
157
+ width: '100%',
158
+ height: 400,
159
+ overflow: 'y',
160
+ scrollbarStyle: 'none',
161
+ children: /*#__PURE__*/React.createElement("div", {
162
+ style: {
163
+ padding: 20
164
+ }
165
+ }, Array.from({
166
+ length: 15
167
+ }, function (_, i) {
168
+ return /*#__PURE__*/React.createElement(Card, {
169
+ key: i,
170
+ style: {
171
+ marginBottom: 16
172
+ }
173
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u6761\u5DF2\u9690\u85CF\uFF0C\u4F46\u4ECD\u53EF\u6EDA\u52A8\u3002"));
174
+ }))
175
+ }
176
+ };
177
+
178
+ /**
179
+ * 滚动按钮 - 右侧箭头
180
+ */
181
+ export var RightArrows = {
182
+ args: {
183
+ width: '100%',
184
+ height: 400,
185
+ overflow: 'x',
186
+ scrollActionsConfig: {
187
+ show: true,
188
+ type: 'rArrows',
189
+ scrollDistance: 300
190
+ },
191
+ children: /*#__PURE__*/React.createElement("div", {
192
+ style: {
193
+ display: 'flex',
194
+ padding: 20,
195
+ gap: 16
196
+ }
197
+ }, Array.from({
198
+ length: 10
199
+ }, function (_, i) {
200
+ return /*#__PURE__*/React.createElement(Card, {
201
+ key: i,
202
+ style: {
203
+ minWidth: 300,
204
+ flexShrink: 0
205
+ }
206
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u70B9\u51FB\u53F3\u4FA7\u7BAD\u5934\u6309\u94AE\u53EF\u4EE5\u6EDA\u52A8\u3002"));
207
+ }))
208
+ }
209
+ };
210
+
211
+ /**
212
+ * 滚动按钮 - 左右箭头
213
+ */
214
+ export var LeftRightArrows = {
215
+ args: {
216
+ width: '100%',
217
+ height: 400,
218
+ overflow: 'x',
219
+ scrollActionsConfig: {
220
+ show: true,
221
+ type: 'lrArrows',
222
+ scrollDistance: 300
223
+ },
224
+ children: /*#__PURE__*/React.createElement("div", {
225
+ style: {
226
+ display: 'flex',
227
+ padding: 20,
228
+ gap: 16
229
+ }
230
+ }, Array.from({
231
+ length: 10
232
+ }, function (_, i) {
233
+ return /*#__PURE__*/React.createElement(Card, {
234
+ key: i,
235
+ style: {
236
+ minWidth: 300,
237
+ flexShrink: 0
238
+ }
239
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u70B9\u51FB\u5DE6\u53F3\u7BAD\u5934\u6309\u94AE\u53EF\u4EE5\u6EDA\u52A8\u3002"));
240
+ }))
241
+ }
242
+ };
243
+
244
+ /**
245
+ * 滚动按钮 - 返回顶部
246
+ */
247
+ export var BackToTop = {
248
+ args: {
249
+ width: '100%',
250
+ height: 400,
251
+ overflow: 'y',
252
+ scrollActionsConfig: {
253
+ show: true,
254
+ type: 'backTop'
255
+ },
256
+ children: /*#__PURE__*/React.createElement("div", {
257
+ style: {
258
+ padding: 20
259
+ }
260
+ }, Array.from({
261
+ length: 30
262
+ }, function (_, i) {
263
+ return /*#__PURE__*/React.createElement(Card, {
264
+ key: i,
265
+ style: {
266
+ marginBottom: 16
267
+ }
268
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u5230\u5E95\u90E8\u540E\uFF0C\u70B9\u51FB\u8FD4\u56DE\u9876\u90E8\u6309\u94AE\u53EF\u4EE5\u5FEB\u901F\u56DE\u5230\u9876\u90E8\u3002"));
269
+ }))
270
+ }
271
+ };
272
+
273
+ /**
274
+ * 滚动事件监听
275
+ */
276
+ export var ScrollEvents = {
277
+ args: {
278
+ width: '100%',
279
+ height: 400,
280
+ overflow: 'y',
281
+ onScroll: function onScroll(data) {
282
+ console.log('滚动中:', data);
283
+ },
284
+ onScrollStart: function onScrollStart(data) {
285
+ console.log('开始滚动:', data);
286
+ },
287
+ onScrollEnd: function onScrollEnd(data) {
288
+ console.log('滚动结束:', data);
289
+ },
290
+ onReachTop: function onReachTop(data) {
291
+ console.log('到达顶部:', data);
292
+ },
293
+ onReachBottom: function onReachBottom(data) {
294
+ console.log('到达底部:', data);
295
+ },
296
+ children: /*#__PURE__*/React.createElement("div", {
297
+ style: {
298
+ padding: 20
299
+ }
300
+ }, Array.from({
301
+ length: 20
302
+ }, function (_, i) {
303
+ return /*#__PURE__*/React.createElement(Card, {
304
+ key: i,
305
+ style: {
306
+ marginBottom: 16
307
+ }
308
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u65F6\u67E5\u770B\u63A7\u5236\u53F0\u8F93\u51FA\uFF0C\u53EF\u4EE5\u770B\u5230\u6EDA\u52A8\u4E8B\u4EF6\u6570\u636E\u3002"));
309
+ }))
310
+ }
311
+ };
312
+
313
+ /**
314
+ * 吸附滚动 - 垂直方向
315
+ */
316
+ export var SnapScrollVertical = {
317
+ args: {
318
+ width: '100%',
319
+ height: 400,
320
+ overflow: 'y',
321
+ snapScroll: {
322
+ enabled: true,
323
+ type: 'mandatory'
324
+ },
325
+ scrollActionsConfig: {
326
+ show: true,
327
+ type: 'tbArrows'
328
+ },
329
+ children: /*#__PURE__*/React.createElement("div", {
330
+ style: {
331
+ padding: 20
332
+ }
333
+ }, Array.from({
334
+ length: 5
335
+ }, function (_, i) {
336
+ return /*#__PURE__*/React.createElement(Card, {
337
+ key: i,
338
+ id: "snap-item-".concat(i),
339
+ style: {
340
+ marginBottom: 16,
341
+ height: 350,
342
+ scrollSnapAlign: 'start'
343
+ }
344
+ }, /*#__PURE__*/React.createElement("h2", null, "\u5438\u9644\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u65F6\u4F1A\u81EA\u52A8\u5438\u9644\u5230\u6BCF\u4E2A\u5361\u7247\u7684\u5F00\u59CB\u4F4D\u7F6E\u3002"));
345
+ }))
346
+ }
347
+ };
348
+
349
+ /**
350
+ * 吸附滚动 - 水平方向
351
+ */
352
+ export var SnapScrollHorizontal = {
353
+ args: {
354
+ width: '100%',
355
+ height: 400,
356
+ overflow: 'x',
357
+ snapScroll: {
358
+ enabled: true,
359
+ type: 'mandatory'
360
+ },
361
+ scrollActionsConfig: {
362
+ show: true,
363
+ type: 'lrArrows'
364
+ },
365
+ children: /*#__PURE__*/React.createElement("div", {
366
+ style: {
367
+ display: 'flex',
368
+ padding: 20,
369
+ gap: 16
370
+ }
371
+ }, Array.from({
372
+ length: 5
373
+ }, function (_, i) {
374
+ return /*#__PURE__*/React.createElement(Card, {
375
+ key: i,
376
+ id: "snap-item-".concat(i),
377
+ style: {
378
+ minWidth: 'calc(100% - 40px)',
379
+ flexShrink: 0,
380
+ scrollSnapAlign: 'start'
381
+ }
382
+ }, /*#__PURE__*/React.createElement("h2", null, "\u5438\u9644\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u6EDA\u52A8\u65F6\u4F1A\u81EA\u52A8\u5438\u9644\u5230\u6BCF\u4E2A\u5361\u7247\u7684\u5F00\u59CB\u4F4D\u7F6E\u3002"));
383
+ }))
384
+ }
385
+ };
386
+
387
+ /**
388
+ * 视图监听 - IntersectionObserver
389
+ */
390
+ export var IntersectionObserver = {
391
+ args: {
392
+ width: '100%',
393
+ height: 400,
394
+ overflow: 'y',
395
+ intersection: {
396
+ enabled: true,
397
+ threshold: 0.5,
398
+ onEnterViewport: function onEnterViewport(entry, element) {
399
+ console.log('元素进入视图:', element.id);
400
+ },
401
+ onLeaveViewport: function onLeaveViewport(entry, element) {
402
+ console.log('元素离开视图:', element.id);
403
+ },
404
+ targetSelector: '.observe-item'
405
+ },
406
+ children: /*#__PURE__*/React.createElement("div", {
407
+ style: {
408
+ padding: 20
409
+ }
410
+ }, Array.from({
411
+ length: 10
412
+ }, function (_, i) {
413
+ return /*#__PURE__*/React.createElement(Card, {
414
+ key: i,
415
+ id: "observe-item-".concat(i),
416
+ className: "observe-item",
417
+ style: {
418
+ marginBottom: 16,
419
+ minHeight: 200
420
+ }
421
+ }, /*#__PURE__*/React.createElement("h3", null, "\u53EF\u89C2\u5BDF\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u5F53\u8FD9\u4E2A\u5361\u7247\u8FDB\u5165\u6216\u79BB\u5F00\u89C6\u56FE\u65F6\uFF0C\u4F1A\u5728\u63A7\u5236\u53F0\u8F93\u51FA\u65E5\u5FD7\u3002"));
422
+ }))
423
+ }
424
+ };
425
+
426
+ /**
427
+ * Ref 方法调用
428
+ */
429
+ export var RefMethods = {
430
+ render: function render() {
431
+ var scrollViewRef = useRef(null);
432
+ var handleScrollToTop = function handleScrollToTop() {
433
+ var _scrollViewRef$curren;
434
+ (_scrollViewRef$curren = scrollViewRef.current) === null || _scrollViewRef$curren === void 0 || _scrollViewRef$curren.scrollToTop('smooth');
435
+ };
436
+ var handleScrollToBottom = function handleScrollToBottom() {
437
+ var _scrollViewRef$curren2;
438
+ (_scrollViewRef$curren2 = scrollViewRef.current) === null || _scrollViewRef$curren2 === void 0 || _scrollViewRef$curren2.scrollToBottom('smooth');
439
+ };
440
+ var handleScrollTo50Percent = function handleScrollTo50Percent() {
441
+ var _scrollViewRef$curren3;
442
+ (_scrollViewRef$curren3 = scrollViewRef.current) === null || _scrollViewRef$curren3 === void 0 || _scrollViewRef$curren3.scrollToPercentage({
443
+ percentY: 50,
444
+ behavior: 'smooth'
445
+ });
446
+ };
447
+ var handleGetScrollData = function handleGetScrollData() {
448
+ var _scrollViewRef$curren4;
449
+ var data = (_scrollViewRef$curren4 = scrollViewRef.current) === null || _scrollViewRef$curren4 === void 0 ? void 0 : _scrollViewRef$curren4.getScrollData();
450
+ console.log('当前滚动数据:', data);
451
+ alert("\u6EDA\u52A8\u4F4D\u7F6E: ".concat((data === null || data === void 0 ? void 0 : data.scrollTop) || 0, "px\n\u6EDA\u52A8\u767E\u5206\u6BD4: ").concat((data === null || data === void 0 ? void 0 : data.percentY) || 0, "%"));
452
+ };
453
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Space, {
454
+ style: {
455
+ marginBottom: 16
456
+ }
457
+ }, /*#__PURE__*/React.createElement(Button, {
458
+ onClick: handleScrollToTop
459
+ }, "\u6EDA\u52A8\u5230\u9876\u90E8"), /*#__PURE__*/React.createElement(Button, {
460
+ onClick: handleScrollToBottom
461
+ }, "\u6EDA\u52A8\u5230\u5E95\u90E8"), /*#__PURE__*/React.createElement(Button, {
462
+ onClick: handleScrollTo50Percent
463
+ }, "\u6EDA\u52A8\u5230 50%"), /*#__PURE__*/React.createElement(Button, {
464
+ onClick: handleGetScrollData
465
+ }, "\u83B7\u53D6\u6EDA\u52A8\u6570\u636E")), /*#__PURE__*/React.createElement(PisellScrollView, {
466
+ ref: scrollViewRef,
467
+ width: "100%",
468
+ height: 400,
469
+ overflow: "y"
470
+ }, /*#__PURE__*/React.createElement("div", {
471
+ style: {
472
+ padding: 20
473
+ }
474
+ }, Array.from({
475
+ length: 20
476
+ }, function (_, i) {
477
+ return /*#__PURE__*/React.createElement(Card, {
478
+ key: i,
479
+ style: {
480
+ marginBottom: 16
481
+ }
482
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u4F7F\u7528\u4E0A\u65B9\u7684\u6309\u94AE\u53EF\u4EE5\u63A7\u5236\u6EDA\u52A8\u4F4D\u7F6E\u3002"));
483
+ }))));
484
+ }
485
+ };
486
+
487
+ /**
488
+ * 滚动到指定元素
489
+ */
490
+ export var ScrollToElement = {
491
+ render: function render() {
492
+ var scrollViewRef = useRef(null);
493
+ var handleScrollToElement = function handleScrollToElement(index) {
494
+ var _scrollViewRef$curren5;
495
+ (_scrollViewRef$curren5 = scrollViewRef.current) === null || _scrollViewRef$curren5 === void 0 || _scrollViewRef$curren5.scrollToElement({
496
+ targetId: "target-item-".concat(index),
497
+ align: 'start',
498
+ behavior: 'smooth'
499
+ });
500
+ };
501
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Space, {
502
+ style: {
503
+ marginBottom: 16
504
+ }
505
+ }, /*#__PURE__*/React.createElement(Button, {
506
+ onClick: function onClick() {
507
+ return handleScrollToElement(0);
508
+ }
509
+ }, "\u6EDA\u52A8\u5230\u7B2C 1 \u9879"), /*#__PURE__*/React.createElement(Button, {
510
+ onClick: function onClick() {
511
+ return handleScrollToElement(4);
512
+ }
513
+ }, "\u6EDA\u52A8\u5230\u7B2C 5 \u9879"), /*#__PURE__*/React.createElement(Button, {
514
+ onClick: function onClick() {
515
+ return handleScrollToElement(9);
516
+ }
517
+ }, "\u6EDA\u52A8\u5230\u7B2C 10 \u9879")), /*#__PURE__*/React.createElement(PisellScrollView, {
518
+ ref: scrollViewRef,
519
+ width: "100%",
520
+ height: 400,
521
+ overflow: "y"
522
+ }, /*#__PURE__*/React.createElement("div", {
523
+ style: {
524
+ padding: 20
525
+ }
526
+ }, Array.from({
527
+ length: 15
528
+ }, function (_, i) {
529
+ return /*#__PURE__*/React.createElement(Card, {
530
+ key: i,
531
+ id: "target-item-".concat(i),
532
+ style: {
533
+ marginBottom: 16,
534
+ minHeight: 150
535
+ }
536
+ }, /*#__PURE__*/React.createElement("h3", null, "\u76EE\u6807\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u70B9\u51FB\u4E0A\u65B9\u6309\u94AE\u53EF\u4EE5\u6EDA\u52A8\u5230\u8FD9\u4E2A\u5361\u7247\u3002"));
537
+ }))));
538
+ }
539
+ };
540
+
541
+ /**
542
+ * 自定义尺寸
543
+ */
544
+ export var CustomSize = {
545
+ args: {
546
+ width: 600,
547
+ height: 300,
548
+ maxWidth: '100%',
549
+ maxHeight: 500,
550
+ overflow: 'y',
551
+ children: /*#__PURE__*/React.createElement("div", {
552
+ style: {
553
+ padding: 20
554
+ }
555
+ }, Array.from({
556
+ length: 10
557
+ }, function (_, i) {
558
+ return /*#__PURE__*/React.createElement(Card, {
559
+ key: i,
560
+ style: {
561
+ marginBottom: 16
562
+ }
563
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u81EA\u5B9A\u4E49\u5C3A\u5BF8\u7684\u6EDA\u52A8\u5BB9\u5668\u3002"));
564
+ }))
565
+ }
566
+ };
567
+
568
+ /**
569
+ * 综合示例 - 商品列表
570
+ */
571
+ export var ProductList = {
572
+ args: {
573
+ width: '100%',
574
+ height: 500,
575
+ overflow: 'y',
576
+ scrollbarStyle: 'thin',
577
+ scrollActionsConfig: {
578
+ show: true,
579
+ type: 'backTop'
580
+ },
581
+ onReachBottom: function onReachBottom(data) {
582
+ console.log('已滚动到底部,可以加载更多商品');
583
+ },
584
+ children: /*#__PURE__*/React.createElement("div", {
585
+ style: {
586
+ padding: 20
587
+ }
588
+ }, /*#__PURE__*/React.createElement("h2", {
589
+ style: {
590
+ marginBottom: 16
591
+ }
592
+ }, "\u5546\u54C1\u5217\u8868"), /*#__PURE__*/React.createElement("div", {
593
+ style: {
594
+ display: 'grid',
595
+ gridTemplateColumns: 'repeat(3, 1fr)',
596
+ gap: 16
597
+ }
598
+ }, Array.from({
599
+ length: 30
600
+ }, function (_, i) {
601
+ return /*#__PURE__*/React.createElement(Card, {
602
+ key: i,
603
+ hoverable: true,
604
+ cover: /*#__PURE__*/React.createElement("div", {
605
+ style: {
606
+ height: 200,
607
+ background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
608
+ display: 'flex',
609
+ alignItems: 'center',
610
+ justifyContent: 'center',
611
+ color: 'white',
612
+ fontSize: 24
613
+ }
614
+ }, "\u5546\u54C1 ", i + 1)
615
+ }, /*#__PURE__*/React.createElement(Card.Meta, {
616
+ title: "\u5546\u54C1\u6807\u9898 ".concat(i + 1),
617
+ description: "\u8FD9\u662F\u5546\u54C1 ".concat(i + 1, " \u7684\u63CF\u8FF0\u4FE1\u606F\uFF0C\u4EF7\u683C \xA5").concat((i + 1) * 10)
618
+ }));
619
+ })))
620
+ }
621
+ };
622
+
623
+ /**
624
+ * 综合示例 - 横向标签页
625
+ */
626
+ export var HorizontalTabs = {
627
+ args: {
628
+ width: '100%',
629
+ height: 400,
630
+ overflow: 'x',
631
+ scrollbarStyle: 'none',
632
+ scrollActionsConfig: {
633
+ show: true,
634
+ type: 'lrArrows',
635
+ scrollDistance: 200
636
+ },
637
+ snapScroll: {
638
+ enabled: true,
639
+ type: 'proximity'
640
+ },
641
+ children: /*#__PURE__*/React.createElement("div", {
642
+ style: {
643
+ display: 'flex',
644
+ padding: 20,
645
+ gap: 16
646
+ }
647
+ }, ['全部', '推荐', '热门', '最新', '科技', '设计', '开发', '产品', '运营', '市场'].map(function (tab, i) {
648
+ return /*#__PURE__*/React.createElement(Card, {
649
+ key: i,
650
+ hoverable: true,
651
+ style: {
652
+ minWidth: 200,
653
+ flexShrink: 0,
654
+ scrollSnapAlign: 'start'
655
+ }
656
+ }, /*#__PURE__*/React.createElement("h3", null, tab), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u662F ", tab, " \u6807\u7B7E\u9875\u7684\u5185\u5BB9"));
657
+ }))
658
+ }
659
+ };
660
+
661
+ // ========== 交互测试 ==========
662
+
663
+ /**
664
+ * 交互测试 - 验证组件渲染
665
+ */
666
+ export var RenderTest = {
667
+ args: {
668
+ width: '100%',
669
+ height: 400,
670
+ overflow: 'y',
671
+ children: /*#__PURE__*/React.createElement("div", {
672
+ style: {
673
+ padding: 20
674
+ }
675
+ }, Array.from({
676
+ length: 10
677
+ }, function (_, i) {
678
+ return /*#__PURE__*/React.createElement(Card, {
679
+ key: i,
680
+ style: {
681
+ marginBottom: 16
682
+ }
683
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u662F\u7B2C ", i + 1, " \u4E2A\u5361\u7247\u5185\u5BB9"));
684
+ }))
685
+ },
686
+ play: function () {
687
+ var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
688
+ var canvasElement, canvas, scrollView;
689
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
690
+ while (1) switch (_context.prev = _context.next) {
691
+ case 0:
692
+ canvasElement = _ref.canvasElement;
693
+ canvas = within(canvasElement); // 验证组件渲染
694
+ scrollView = canvasElement.querySelector('.pisell-scroll-view');
695
+ _context.next = 5;
696
+ return expect(scrollView).toBeInTheDocument();
697
+ case 5:
698
+ _context.next = 7;
699
+ return expect(canvas.getByText('卡片 1')).toBeInTheDocument();
700
+ case 7:
701
+ _context.next = 9;
702
+ return expect(canvas.getByText('卡片 10')).toBeInTheDocument();
703
+ case 9:
704
+ case "end":
705
+ return _context.stop();
706
+ }
707
+ }, _callee);
708
+ }));
709
+ function play(_x) {
710
+ return _play.apply(this, arguments);
711
+ }
712
+ return play;
713
+ }()
714
+ };
715
+
716
+ /**
717
+ * 交互测试 - 滚动按钮点击
718
+ */
719
+ export var ScrollButtonTest = {
720
+ args: {
721
+ width: '100%',
722
+ height: 400,
723
+ overflow: 'x',
724
+ scrollActionsConfig: {
725
+ show: true,
726
+ type: 'lrArrows',
727
+ scrollDistance: 300
728
+ },
729
+ children: /*#__PURE__*/React.createElement("div", {
730
+ style: {
731
+ display: 'flex',
732
+ padding: 20,
733
+ gap: 16
734
+ }
735
+ }, Array.from({
736
+ length: 10
737
+ }, function (_, i) {
738
+ return /*#__PURE__*/React.createElement(Card, {
739
+ key: i,
740
+ style: {
741
+ minWidth: 300,
742
+ flexShrink: 0
743
+ }
744
+ }, /*#__PURE__*/React.createElement("h3", null, "\u5361\u7247 ", i + 1), /*#__PURE__*/React.createElement("p", null, "\u8FD9\u662F\u7B2C ", i + 1, " \u4E2A\u5361\u7247"));
745
+ }))
746
+ },
747
+ play: function () {
748
+ var _play2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
749
+ var canvasElement, canvas, actions;
750
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
751
+ while (1) switch (_context2.prev = _context2.next) {
752
+ case 0:
753
+ canvasElement = _ref2.canvasElement;
754
+ canvas = within(canvasElement); // 验证滚动按钮存在
755
+ actions = canvasElement.querySelector('.pisell-scroll-view-actions');
756
+ _context2.next = 5;
757
+ return expect(actions).toBeInTheDocument();
758
+ case 5:
759
+ _context2.next = 7;
760
+ return expect(canvas.getByText('卡片 1')).toBeInTheDocument();
761
+ case 7:
762
+ case "end":
763
+ return _context2.stop();
764
+ }
765
+ }, _callee2);
766
+ }));
767
+ function play(_x2) {
768
+ return _play2.apply(this, arguments);
769
+ }
770
+ return play;
771
+ }()
772
+ };