@xaui/native 0.9.1-beta.96 → 0.9.1-beta.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-C6JO2RTV.cjs +752 -0
- package/dist/chunk-SVS726BW.js +822 -0
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/phone-number-field/index.cjs +16 -9
- package/dist/components/phone-number-field/index.js +9 -2
- package/dist/components/slide-button/index.cjs +30 -0
- package/dist/components/slide-button/index.d.cts +44 -0
- package/dist/components/slide-button/index.d.ts +44 -0
- package/dist/components/slide-button/index.js +30 -0
- package/dist/components/slide-button/slide-button-fill.d.cts +29 -0
- package/dist/components/slide-button/slide-button-fill.d.ts +29 -0
- package/dist/components/slide-button/slide-button-icon.d.cts +10 -0
- package/dist/components/slide-button/slide-button-icon.d.ts +10 -0
- package/dist/components/slide-button/slide-button-label.d.cts +20 -0
- package/dist/components/slide-button/slide-button-label.d.ts +20 -0
- package/dist/components/slide-button/slide-button-thumb.d.cts +20 -0
- package/dist/components/slide-button/slide-button-thumb.d.ts +20 -0
- package/dist/components/slide-button/slide-button.animation.d.cts +33 -0
- package/dist/components/slide-button/slide-button.animation.d.ts +33 -0
- package/dist/components/slide-button/slide-button.context.d.cts +7 -0
- package/dist/components/slide-button/slide-button.context.d.ts +7 -0
- package/dist/components/slide-button/slide-button.d.cts +56 -0
- package/dist/components/slide-button/slide-button.d.ts +56 -0
- package/dist/components/slide-button/slide-button.recipe.d.cts +31 -0
- package/dist/components/slide-button/slide-button.recipe.d.ts +31 -0
- package/dist/components/slide-button/slide-button.type.d.cts +79 -0
- package/dist/components/slide-button/slide-button.type.d.ts +79 -0
- package/dist/index.cjs +30 -12
- package/dist/index.js +34 -16
- package/package.json +11 -1
|
@@ -0,0 +1,752 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _interopRequireDefault(obj) {
|
|
7
|
+
return obj && obj.__esModule ? obj : {
|
|
8
|
+
default: obj
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function _nullishCoalesce(lhs, rhsFn) {
|
|
12
|
+
if (lhs != null) {
|
|
13
|
+
return lhs;
|
|
14
|
+
} else {
|
|
15
|
+
return rhsFn();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function _optionalChain(ops) {
|
|
19
|
+
let lastAccessLHS = undefined;
|
|
20
|
+
let value = ops[0];
|
|
21
|
+
let i = 1;
|
|
22
|
+
while (i < ops.length) {
|
|
23
|
+
const op = ops[i];
|
|
24
|
+
const fn = ops[i + 1];
|
|
25
|
+
i += 2;
|
|
26
|
+
if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
if (op === 'access' || op === 'optionalAccess') {
|
|
30
|
+
lastAccessLHS = value;
|
|
31
|
+
value = fn(value);
|
|
32
|
+
} else if (op === 'call' || op === 'optionalCall') {
|
|
33
|
+
value = fn((...args) => value.call(lastAccessLHS, ...args));
|
|
34
|
+
lastAccessLHS = undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
var _chunk7EIHHOHPcjs = require('./chunk-7EIHHOHP.cjs');
|
|
40
|
+
var _chunkGSZDN6EZcjs = require('./chunk-GSZDN6EZ.cjs');
|
|
41
|
+
var _chunkFHNIGHN5cjs = require('./chunk-FHNIGHN5.cjs');
|
|
42
|
+
var _chunkSL3V7R2Ycjs = require('./chunk-SL3V7R2Y.cjs');
|
|
43
|
+
var _chunkCDRGTUYFcjs = require('./chunk-CDRGTUYF.cjs');
|
|
44
|
+
var _chunkIIAQISBGcjs = require('./chunk-IIAQISBG.cjs');
|
|
45
|
+
var _chunkTK44VBIEcjs = require('./chunk-TK44VBIE.cjs');
|
|
46
|
+
|
|
47
|
+
// src/components/slide-button/slide-button-fill.tsx
|
|
48
|
+
var _react = require('react');
|
|
49
|
+
var _reactnative = require('react-native');
|
|
50
|
+
var _reactnativereanimated = require('react-native-reanimated');
|
|
51
|
+
var _reactnativereanimated2 = _interopRequireDefault(_reactnativereanimated);
|
|
52
|
+
|
|
53
|
+
// src/components/slide-button/slide-button.animation.ts
|
|
54
|
+
var THUMB_PRESSED_SCALE = 1.06;
|
|
55
|
+
var THUMB_SPRING = {
|
|
56
|
+
damping: 20,
|
|
57
|
+
stiffness: 260,
|
|
58
|
+
mass: 0.7
|
|
59
|
+
};
|
|
60
|
+
var DEFAULT_THRESHOLD = 0.9;
|
|
61
|
+
const _worklet_16393505849963_init_data = {
|
|
62
|
+
code: "function sweptWidth_chunkC6JO2RTVCjs1(offset,travel,trackLength){return travel>0?offset/travel*trackLength:0;}",
|
|
63
|
+
location: "/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs",
|
|
64
|
+
sourceMap: "{\"version\":3,\"names\":[\"sweptWidth_chunkC6JO2RTVCjs1\",\"offset\",\"travel\",\"trackLength\"],\"sources\":[\"/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs\"],\"mappings\":\"AAiCA,SAAAA,4BAAoCA,CAAAC,MAAA,CAAAC,MAAa,CAAAC,WAAA,EAE/C,MAAO,CAAAD,MAAM,CAAG,CAAC,CAAGD,MAAM,CAAGC,MAAM,CAAGC,WAAW,CAAG,CAAC,CACvD\",\"ignoreList\":[]}"
|
|
65
|
+
};
|
|
66
|
+
const sweptWidth = function sweptWidth_chunkC6JO2RTVCjs1Factory({
|
|
67
|
+
_worklet_16393505849963_init_data
|
|
68
|
+
}) {
|
|
69
|
+
const _e = [new global.Error(), 1, -27];
|
|
70
|
+
const sweptWidth = function (offset, travel, trackLength) {
|
|
71
|
+
return travel > 0 ? offset / travel * trackLength : 0;
|
|
72
|
+
};
|
|
73
|
+
sweptWidth.__closure = {};
|
|
74
|
+
sweptWidth.__workletHash = 16393505849963;
|
|
75
|
+
sweptWidth.__pluginVersion = "0.7.4";
|
|
76
|
+
sweptWidth.__initData = _worklet_16393505849963_init_data;
|
|
77
|
+
sweptWidth.__stackDetails = _e;
|
|
78
|
+
return sweptWidth;
|
|
79
|
+
}({
|
|
80
|
+
_worklet_16393505849963_init_data
|
|
81
|
+
}); // src/components/slide-button/slide-button.context.ts
|
|
82
|
+
var [SlideButtonProvider, useSlideButton] = _chunkCDRGTUYFcjs.createSlotContext.call(void 0, "SlideButton");
|
|
83
|
+
|
|
84
|
+
// src/components/slide-button/slide-button-fill.tsx
|
|
85
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
86
|
+
const _worklet_4491413439968_init_data = {
|
|
87
|
+
code: "function chunkC6JO2RTVCjs2(){const{sweptWidth,offset,travel,trackLength}=this.__closure;return{width:sweptWidth(offset.get(),travel,trackLength)};}",
|
|
88
|
+
location: "/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs",
|
|
89
|
+
sourceMap: "{\"version\":3,\"names\":[\"chunkC6JO2RTVCjs2\",\"sweptWidth\",\"offset\",\"travel\",\"trackLength\",\"__closure\",\"width\",\"get\"],\"sources\":[\"/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs\"],\"mappings\":\"AA+CuE,SAAAA,iBAAMA,CAAA,QAAAC,UAAA,CAAAC,MAAA,CAAAC,MAAA,CAAAC,WAAA,OAAAC,SAAA,CAEvE,MAAO,CAAEC,KAAK,CAAEL,UAAU,CAACC,MAAM,CAACK,GAAG,CAAC,CAAC,CAAEJ,MAAM,CAAEC,WAAW,CAAE,CAAC,CACjE\",\"ignoreList\":[]}"
|
|
90
|
+
};
|
|
91
|
+
var SlideButtonFill = _react.forwardRef.call(void 0, function SlideButtonFill2({
|
|
92
|
+
style,
|
|
93
|
+
...props
|
|
94
|
+
}, ref) {
|
|
95
|
+
const {
|
|
96
|
+
fillClipStyle,
|
|
97
|
+
fillStyle,
|
|
98
|
+
offset,
|
|
99
|
+
travel,
|
|
100
|
+
trackLength
|
|
101
|
+
} = useSlideButton();
|
|
102
|
+
const [styleProps, rest] = _chunkTK44VBIEcjs.useStyleProps.call(void 0, props);
|
|
103
|
+
const width = _reactnativereanimated.useAnimatedStyle.call(void 0, function chunkC6JO2RTVCjs2Factory({
|
|
104
|
+
_worklet_4491413439968_init_data,
|
|
105
|
+
sweptWidth,
|
|
106
|
+
offset,
|
|
107
|
+
travel,
|
|
108
|
+
trackLength
|
|
109
|
+
}) {
|
|
110
|
+
const _e = [new global.Error(), -5, -27];
|
|
111
|
+
const chunkC6JO2RTVCjs2 = function () {
|
|
112
|
+
return {
|
|
113
|
+
width: sweptWidth(offset.get(), travel, trackLength)
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
chunkC6JO2RTVCjs2.__closure = {
|
|
117
|
+
sweptWidth,
|
|
118
|
+
offset,
|
|
119
|
+
travel,
|
|
120
|
+
trackLength
|
|
121
|
+
};
|
|
122
|
+
chunkC6JO2RTVCjs2.__workletHash = 4491413439968;
|
|
123
|
+
chunkC6JO2RTVCjs2.__pluginVersion = "0.7.4";
|
|
124
|
+
chunkC6JO2RTVCjs2.__initData = _worklet_4491413439968_init_data;
|
|
125
|
+
chunkC6JO2RTVCjs2.__stackDetails = _e;
|
|
126
|
+
return chunkC6JO2RTVCjs2;
|
|
127
|
+
}({
|
|
128
|
+
_worklet_4491413439968_init_data,
|
|
129
|
+
sweptWidth,
|
|
130
|
+
offset,
|
|
131
|
+
travel,
|
|
132
|
+
trackLength
|
|
133
|
+
}), [travel, trackLength]);
|
|
134
|
+
return /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnative.View, {
|
|
135
|
+
pointerEvents: "box-none",
|
|
136
|
+
style: fillClipStyle,
|
|
137
|
+
children: /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnativereanimated2.default.View, {
|
|
138
|
+
ref,
|
|
139
|
+
...rest,
|
|
140
|
+
style: [fillStyle, width, styleProps, style]
|
|
141
|
+
})
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
SlideButtonFill.displayName = "XAUI.SlideButton.Fill";
|
|
145
|
+
|
|
146
|
+
// src/components/slide-button/slide-button-icon.tsx
|
|
147
|
+
|
|
148
|
+
function SlideButtonIcon({
|
|
149
|
+
size,
|
|
150
|
+
color,
|
|
151
|
+
...rest
|
|
152
|
+
}) {
|
|
153
|
+
const {
|
|
154
|
+
icon
|
|
155
|
+
} = useSlideButton();
|
|
156
|
+
return /* @__PURE__ */_jsxruntime.jsx.call(void 0, _chunkGSZDN6EZcjs.Icon, {
|
|
157
|
+
size: _nullishCoalesce(size, () => icon.size),
|
|
158
|
+
color: _nullishCoalesce(color, () => icon.color),
|
|
159
|
+
...rest
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
SlideButtonIcon.displayName = "XAUI.SlideButton.Icon";
|
|
163
|
+
|
|
164
|
+
// src/components/slide-button/slide-button-label.tsx
|
|
165
|
+
|
|
166
|
+
var CLIP = _reactnative.StyleSheet.create({
|
|
167
|
+
window: {
|
|
168
|
+
position: "absolute",
|
|
169
|
+
top: 0,
|
|
170
|
+
bottom: 0,
|
|
171
|
+
start: 0,
|
|
172
|
+
overflow: "hidden",
|
|
173
|
+
justifyContent: "center"
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
const _worklet_10972554653121_init_data = {
|
|
177
|
+
code: "function chunkC6JO2RTVCjs3(){const{sweptWidth,offset,travel,trackLength}=this.__closure;return{width:sweptWidth(offset.get(),travel,trackLength)};}",
|
|
178
|
+
location: "/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs",
|
|
179
|
+
sourceMap: "{\"version\":3,\"names\":[\"chunkC6JO2RTVCjs3\",\"sweptWidth\",\"offset\",\"travel\",\"trackLength\",\"__closure\",\"width\",\"get\"],\"sources\":[\"/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs\"],\"mappings\":\"AA0FsE,SAAAA,iBAAMA,CAAA,QAAAC,UAAA,CAAAC,MAAA,CAAAC,MAAA,CAAAC,WAAA,OAAAC,SAAA,CAEtE,MAAO,CAAEC,KAAK,CAAEL,UAAU,CAACC,MAAM,CAACK,GAAG,CAAC,CAAC,CAAEJ,MAAM,CAAEC,WAAW,CAAE,CAAC,CACjE\",\"ignoreList\":[]}"
|
|
180
|
+
};
|
|
181
|
+
var SlideButtonLabel = _react.forwardRef.call(void 0, function SlideButtonLabel2({
|
|
182
|
+
children,
|
|
183
|
+
style,
|
|
184
|
+
...props
|
|
185
|
+
}, ref) {
|
|
186
|
+
const {
|
|
187
|
+
labelStyle,
|
|
188
|
+
labelSweptStyle,
|
|
189
|
+
offset,
|
|
190
|
+
travel,
|
|
191
|
+
trackLength
|
|
192
|
+
} = useSlideButton();
|
|
193
|
+
const [styleProps, rest] = _chunkTK44VBIEcjs.useStyleProps.call(void 0, props);
|
|
194
|
+
const clip = _reactnativereanimated.useAnimatedStyle.call(void 0, function chunkC6JO2RTVCjs3Factory({
|
|
195
|
+
_worklet_10972554653121_init_data,
|
|
196
|
+
sweptWidth,
|
|
197
|
+
offset,
|
|
198
|
+
travel,
|
|
199
|
+
trackLength
|
|
200
|
+
}) {
|
|
201
|
+
const _e = [new global.Error(), -5, -27];
|
|
202
|
+
const chunkC6JO2RTVCjs3 = function () {
|
|
203
|
+
return {
|
|
204
|
+
width: sweptWidth(offset.get(), travel, trackLength)
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
chunkC6JO2RTVCjs3.__closure = {
|
|
208
|
+
sweptWidth,
|
|
209
|
+
offset,
|
|
210
|
+
travel,
|
|
211
|
+
trackLength
|
|
212
|
+
};
|
|
213
|
+
chunkC6JO2RTVCjs3.__workletHash = 10972554653121;
|
|
214
|
+
chunkC6JO2RTVCjs3.__pluginVersion = "0.7.4";
|
|
215
|
+
chunkC6JO2RTVCjs3.__initData = _worklet_10972554653121_init_data;
|
|
216
|
+
chunkC6JO2RTVCjs3.__stackDetails = _e;
|
|
217
|
+
return chunkC6JO2RTVCjs3;
|
|
218
|
+
}({
|
|
219
|
+
_worklet_10972554653121_init_data,
|
|
220
|
+
sweptWidth,
|
|
221
|
+
offset,
|
|
222
|
+
travel,
|
|
223
|
+
trackLength
|
|
224
|
+
}), [travel, trackLength]);
|
|
225
|
+
return /* @__PURE__ */_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, {
|
|
226
|
+
children: [/* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnative.Text, {
|
|
227
|
+
ref,
|
|
228
|
+
numberOfLines: 1,
|
|
229
|
+
...rest,
|
|
230
|
+
style: [labelStyle, styleProps, style],
|
|
231
|
+
children
|
|
232
|
+
}), /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnativereanimated2.default.View, {
|
|
233
|
+
pointerEvents: "none",
|
|
234
|
+
style: [CLIP.window, clip],
|
|
235
|
+
children: /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnative.Text, {
|
|
236
|
+
numberOfLines: 1,
|
|
237
|
+
...rest,
|
|
238
|
+
accessibilityElementsHidden: true,
|
|
239
|
+
importantForAccessibility: "no-hide-descendants",
|
|
240
|
+
style: [labelSweptStyle, styleProps, style],
|
|
241
|
+
children
|
|
242
|
+
})
|
|
243
|
+
})]
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
SlideButtonLabel.displayName = "XAUI.SlideButton.Label";
|
|
247
|
+
|
|
248
|
+
// src/components/slide-button/slide-button-thumb.tsx
|
|
249
|
+
|
|
250
|
+
var _reactnativegesturehandler = require('react-native-gesture-handler');
|
|
251
|
+
const _worklet_13716117858015_init_data = {
|
|
252
|
+
code: "function chunkC6JO2RTVCjs4(){const{direction,offset,pressed,THUMB_PRESSED_SCALE}=this.__closure;return{transform:[{translateX:direction*offset.get()},{scale:1+pressed.get()*(THUMB_PRESSED_SCALE-1)}]};}",
|
|
253
|
+
location: "/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs",
|
|
254
|
+
sourceMap: "{\"version\":3,\"names\":[\"chunkC6JO2RTVCjs4\",\"direction\",\"offset\",\"pressed\",\"THUMB_PRESSED_SCALE\",\"__closure\",\"transform\",\"translateX\",\"get\",\"scale\"],\"sources\":[\"/home/runner/work/xaui/xaui/packages/native/dist/chunk-C6JO2RTV.cjs\"],\"mappings\":\"AAkKwE,SAAAA,iBAAMA,CAAA,QAAAC,SAAA,CAAAC,MAAA,CAAAC,OAAA,CAAAC,mBAAA,OAAAC,SAAA,CAE1E,MAAO,CACLC,SAAS,CAAE,CACT,CAAEC,UAAU,CAAEN,SAAS,CAAGC,MAAM,CAACM,GAAG,CAAC,CAAE,CAAC,CACxC,CAAEC,KAAK,CAAE,CAAC,CAAGN,OAAO,CAACK,GAAG,CAAC,CAAC,EAAIJ,mBAAmB,CAAG,CAAC,CAAE,CAAC,CAE5D,CAAC,CACH\",\"ignoreList\":[]}"
|
|
255
|
+
};
|
|
256
|
+
function SlideButtonThumb({
|
|
257
|
+
children,
|
|
258
|
+
style,
|
|
259
|
+
...props
|
|
260
|
+
}) {
|
|
261
|
+
const {
|
|
262
|
+
thumbStyle,
|
|
263
|
+
glyphStyle,
|
|
264
|
+
offset,
|
|
265
|
+
travel,
|
|
266
|
+
threshold,
|
|
267
|
+
isDisabled,
|
|
268
|
+
isConfirmed,
|
|
269
|
+
confirm
|
|
270
|
+
} = useSlideButton();
|
|
271
|
+
const [styleProps, rest] = _chunkTK44VBIEcjs.useStyleProps.call(void 0, props);
|
|
272
|
+
const pressed = _reactnativereanimated.useSharedValue.call(void 0, 0);
|
|
273
|
+
const start = _reactnativereanimated.useSharedValue.call(void 0, 0);
|
|
274
|
+
const direction = _reactnative.I18nManager.isRTL ? -1 : 1;
|
|
275
|
+
const pan = _reactnativegesturehandler.Gesture.Pan().enabled(!isDisabled && !isConfirmed).onBegin(() => {
|
|
276
|
+
start.set(offset.get());
|
|
277
|
+
pressed.set(_reactnativereanimated.withSpring.call(void 0, 1, THUMB_SPRING));
|
|
278
|
+
}).onUpdate(event => {
|
|
279
|
+
const next = start.get() + direction * event.translationX;
|
|
280
|
+
offset.set(Math.min(Math.max(next, 0), travel));
|
|
281
|
+
}).onFinalize(() => {
|
|
282
|
+
pressed.set(_reactnativereanimated.withSpring.call(void 0, 0, THUMB_SPRING));
|
|
283
|
+
const reached = travel > 0 && offset.get() / travel >= threshold;
|
|
284
|
+
offset.set(_reactnativereanimated.withSpring.call(void 0, reached ? travel : 0, THUMB_SPRING));
|
|
285
|
+
if (reached) _reactnativereanimated.runOnJS.call(void 0, confirm)();
|
|
286
|
+
});
|
|
287
|
+
const animated = _reactnativereanimated.useAnimatedStyle.call(void 0, function chunkC6JO2RTVCjs4Factory({
|
|
288
|
+
_worklet_13716117858015_init_data,
|
|
289
|
+
direction,
|
|
290
|
+
offset,
|
|
291
|
+
pressed,
|
|
292
|
+
THUMB_PRESSED_SCALE
|
|
293
|
+
}) {
|
|
294
|
+
const _e = [new global.Error(), -5, -27];
|
|
295
|
+
const chunkC6JO2RTVCjs4 = function () {
|
|
296
|
+
return {
|
|
297
|
+
transform: [{
|
|
298
|
+
translateX: direction * offset.get()
|
|
299
|
+
}, {
|
|
300
|
+
scale: 1 + pressed.get() * (THUMB_PRESSED_SCALE - 1)
|
|
301
|
+
}]
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
chunkC6JO2RTVCjs4.__closure = {
|
|
305
|
+
direction,
|
|
306
|
+
offset,
|
|
307
|
+
pressed,
|
|
308
|
+
THUMB_PRESSED_SCALE
|
|
309
|
+
};
|
|
310
|
+
chunkC6JO2RTVCjs4.__workletHash = 13716117858015;
|
|
311
|
+
chunkC6JO2RTVCjs4.__pluginVersion = "0.7.4";
|
|
312
|
+
chunkC6JO2RTVCjs4.__initData = _worklet_13716117858015_init_data;
|
|
313
|
+
chunkC6JO2RTVCjs4.__stackDetails = _e;
|
|
314
|
+
return chunkC6JO2RTVCjs4;
|
|
315
|
+
}({
|
|
316
|
+
_worklet_13716117858015_init_data,
|
|
317
|
+
direction,
|
|
318
|
+
offset,
|
|
319
|
+
pressed,
|
|
320
|
+
THUMB_PRESSED_SCALE
|
|
321
|
+
}), [direction]);
|
|
322
|
+
return /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnativegesturehandler.GestureDetector, {
|
|
323
|
+
gesture: pan,
|
|
324
|
+
children: /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnativereanimated2.default.View, {
|
|
325
|
+
...rest,
|
|
326
|
+
style: [thumbStyle, animated, styleProps, style],
|
|
327
|
+
children: _nullishCoalesce(children, () => (/* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnative.View, {
|
|
328
|
+
style: glyphStyle
|
|
329
|
+
})))
|
|
330
|
+
})
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
SlideButtonThumb.displayName = "XAUI.SlideButton.Thumb";
|
|
334
|
+
|
|
335
|
+
// src/components/slide-button/slide-button.tsx
|
|
336
|
+
|
|
337
|
+
// src/components/slide-button/slide-button.recipe.ts
|
|
338
|
+
var SLOTS = ["root", "fillClip", "fill", "label", "labelSwept", "thumb", "glyph"];
|
|
339
|
+
var VARIANT_TOKENS = {
|
|
340
|
+
primary: {
|
|
341
|
+
bg: "accentSoft",
|
|
342
|
+
fg: "accentSoftForeground",
|
|
343
|
+
bgSelected: "accent",
|
|
344
|
+
fgSelected: "accentForeground"
|
|
345
|
+
},
|
|
346
|
+
secondary: {
|
|
347
|
+
bg: "default",
|
|
348
|
+
fg: "defaultForeground"
|
|
349
|
+
},
|
|
350
|
+
tertiary: {
|
|
351
|
+
border: "border",
|
|
352
|
+
fg: "foreground"
|
|
353
|
+
},
|
|
354
|
+
ghost: {
|
|
355
|
+
fg: "foreground"
|
|
356
|
+
},
|
|
357
|
+
success: {
|
|
358
|
+
bg: "successSoft",
|
|
359
|
+
fg: "successSoftForeground",
|
|
360
|
+
bgSelected: "success",
|
|
361
|
+
fgSelected: "successForeground"
|
|
362
|
+
},
|
|
363
|
+
"success-soft": {
|
|
364
|
+
bg: "successSoft",
|
|
365
|
+
fg: "success"
|
|
366
|
+
},
|
|
367
|
+
warning: {
|
|
368
|
+
bg: "warningSoft",
|
|
369
|
+
fg: "warningSoftForeground",
|
|
370
|
+
bgSelected: "warning",
|
|
371
|
+
fgSelected: "warningForeground"
|
|
372
|
+
},
|
|
373
|
+
"warning-soft": {
|
|
374
|
+
bg: "warningSoft",
|
|
375
|
+
fg: "warning"
|
|
376
|
+
},
|
|
377
|
+
danger: {
|
|
378
|
+
bg: "dangerSoft",
|
|
379
|
+
fg: "dangerSoftForeground",
|
|
380
|
+
bgSelected: "danger",
|
|
381
|
+
fgSelected: "dangerForeground"
|
|
382
|
+
},
|
|
383
|
+
"danger-soft": {
|
|
384
|
+
bg: "dangerSoft",
|
|
385
|
+
fg: "danger"
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
var FILL_ALPHA = 0.2;
|
|
389
|
+
var THUMB_RATIO = 1.5;
|
|
390
|
+
var NO_SHADOW = {
|
|
391
|
+
shadowColor: "#000000",
|
|
392
|
+
shadowOffset: {
|
|
393
|
+
width: 0,
|
|
394
|
+
height: 0
|
|
395
|
+
},
|
|
396
|
+
shadowOpacity: 0,
|
|
397
|
+
shadowRadius: 0,
|
|
398
|
+
elevation: 0
|
|
399
|
+
};
|
|
400
|
+
var SIZES = {
|
|
401
|
+
sm: {
|
|
402
|
+
height: "sm",
|
|
403
|
+
inset: 3,
|
|
404
|
+
glyph: 14,
|
|
405
|
+
label: "sm"
|
|
406
|
+
},
|
|
407
|
+
md: {
|
|
408
|
+
height: "md",
|
|
409
|
+
inset: 4,
|
|
410
|
+
glyph: 16,
|
|
411
|
+
label: "md"
|
|
412
|
+
},
|
|
413
|
+
lg: {
|
|
414
|
+
height: "lg",
|
|
415
|
+
inset: 4,
|
|
416
|
+
glyph: 20,
|
|
417
|
+
label: "lg"
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
function sizeAxis(step) {
|
|
421
|
+
return theme => {
|
|
422
|
+
const height = theme.controlHeights[step.height];
|
|
423
|
+
const handleHeight = height - step.inset * 2;
|
|
424
|
+
return {
|
|
425
|
+
root: {
|
|
426
|
+
height
|
|
427
|
+
},
|
|
428
|
+
// Centred across the whole pill, not laid out beside the handle — the handle slides
|
|
429
|
+
// over it, so there is no gap to keep. Symmetric `start`/`end` insets (R13, never
|
|
430
|
+
// `left`/`right`) just keep a long label off the pill's rounded ends.
|
|
431
|
+
label: {
|
|
432
|
+
start: theme.spacing(4),
|
|
433
|
+
end: theme.spacing(4),
|
|
434
|
+
fontSize: theme.fontSizes[step.label],
|
|
435
|
+
lineHeight: theme.lineHeights[step.label]
|
|
436
|
+
},
|
|
437
|
+
// The same type at the same inset. No `end`: this copy is laid out inside a clip
|
|
438
|
+
// whose width is the trail's, and an `end` would measure against *that*, re-centring
|
|
439
|
+
// the text in a box that keeps narrowing. The slot gives it a width off the measured
|
|
440
|
+
// pill instead, so both copies sit on exactly the same glyphs.
|
|
441
|
+
labelSwept: {
|
|
442
|
+
start: theme.spacing(4),
|
|
443
|
+
fontSize: theme.fontSizes[step.label],
|
|
444
|
+
lineHeight: theme.lineHeights[step.label]
|
|
445
|
+
},
|
|
446
|
+
// A horizontal stadium: wider than tall, its corners a half-height so the ends stay
|
|
447
|
+
// round at any width. `start` is its resting inset; the pan translates it from there.
|
|
448
|
+
thumb: {
|
|
449
|
+
width: Math.round(handleHeight * THUMB_RATIO),
|
|
450
|
+
height: handleHeight,
|
|
451
|
+
borderRadius: handleHeight / 2,
|
|
452
|
+
start: step.inset
|
|
453
|
+
},
|
|
454
|
+
glyph: {
|
|
455
|
+
width: step.glyph,
|
|
456
|
+
height: step.glyph
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
var slideButtonRecipe = _chunkSL3V7R2Ycjs.createRecipe.call(void 0, {
|
|
462
|
+
slots: SLOTS,
|
|
463
|
+
base: theme => ({
|
|
464
|
+
// A fixed-height bar holding absolutely-positioned children — the fill, the label and
|
|
465
|
+
// its clipped copy, the thumb — so none of them pushes the others around as it moves.
|
|
466
|
+
//
|
|
467
|
+
// **It does not clip.** The trail needs clipping and gets it from `fillClip`, one layer
|
|
468
|
+
// in; putting `overflow: 'hidden'` up here instead costs the handle its shadow. That
|
|
469
|
+
// shadow is offset a point down over a three-point blur, and the handle sits four
|
|
470
|
+
// points off the floor — so the lower half reaches the pill's edge exactly, and the
|
|
471
|
+
// clip cut it flat there and curved it away at the leading cap while leaving the top
|
|
472
|
+
// untouched. A shadow soft above and sheared below does not read as a clipped shadow;
|
|
473
|
+
// it reads as a handle sunk into a groove, which is what it looked like.
|
|
474
|
+
root: {
|
|
475
|
+
width: "100%",
|
|
476
|
+
justifyContent: "center",
|
|
477
|
+
borderCurve: "continuous",
|
|
478
|
+
borderRadius: theme.radius.full,
|
|
479
|
+
borderWidth: 0
|
|
480
|
+
},
|
|
481
|
+
/**
|
|
482
|
+
* The window the trail is read through, and the whole reason it has one.
|
|
483
|
+
*
|
|
484
|
+
* The pill is `radius.full`, which on a 48-tall bar resolves to a 24-point cap. The
|
|
485
|
+
* trail's own `full` is clamped to half of whichever side is shorter — half its
|
|
486
|
+
* *width* for the first 48 points of the drag — so it draws a squarer corner inside a
|
|
487
|
+
* rounder one and bulges past the leading edge. No radius fixes that, because the
|
|
488
|
+
* clamp applies whatever is asked for: the trail has to be cut to the pill's shape.
|
|
489
|
+
*
|
|
490
|
+
* Cutting it here rather than on the root is what keeps the cut off the handle.
|
|
491
|
+
*/
|
|
492
|
+
fillClip: {
|
|
493
|
+
position: "absolute",
|
|
494
|
+
top: 0,
|
|
495
|
+
bottom: 0,
|
|
496
|
+
start: 0,
|
|
497
|
+
end: 0,
|
|
498
|
+
overflow: "hidden",
|
|
499
|
+
borderCurve: "continuous",
|
|
500
|
+
borderRadius: theme.radius.full
|
|
501
|
+
},
|
|
502
|
+
// Zero width at rest — the width is the swept fraction of the pill, set by the slot,
|
|
503
|
+
// so there is nothing to draw until the drag has actually started. The radius is the
|
|
504
|
+
// pill's, so the trail matches the leading cap once it is wide enough to render it;
|
|
505
|
+
// `fillClip` covers the widths where it cannot. The colour is the variant's,
|
|
506
|
+
// set in `paint`.
|
|
507
|
+
fill: {
|
|
508
|
+
position: "absolute",
|
|
509
|
+
top: 0,
|
|
510
|
+
bottom: 0,
|
|
511
|
+
start: 0,
|
|
512
|
+
borderRadius: theme.radius.full
|
|
513
|
+
},
|
|
514
|
+
label: {
|
|
515
|
+
position: "absolute",
|
|
516
|
+
textAlign: "center",
|
|
517
|
+
fontFamily: theme.fontFamilies.body,
|
|
518
|
+
fontWeight: theme.fontWeights.medium
|
|
519
|
+
},
|
|
520
|
+
/**
|
|
521
|
+
* The label again, for the ground the trail has already covered.
|
|
522
|
+
*
|
|
523
|
+
* One label cannot serve both: on the four inverted variants the pill goes from a soft
|
|
524
|
+
* slice to the vivid one, and the polarity of a readable text colour flips with it —
|
|
525
|
+
* measured, a label painted for the soft pill reads 1.2–1.5:1 once the trail is under
|
|
526
|
+
* it, in light and in dark alike. Fading the label out would answer legibility by
|
|
527
|
+
* removing the instruction, which is the wrong trade on the control whose whole job is
|
|
528
|
+
* to say what the slide will do. So it is drawn twice and the top copy is clipped to
|
|
529
|
+
* the trail: each half of a straddling word sits on the ground it was painted for, and
|
|
530
|
+
* the switch happens exactly at the trail's edge rather than at some threshold.
|
|
531
|
+
*/
|
|
532
|
+
labelSwept: {
|
|
533
|
+
position: "absolute",
|
|
534
|
+
textAlign: "center",
|
|
535
|
+
fontFamily: theme.fontFamilies.body,
|
|
536
|
+
fontWeight: theme.fontWeights.medium
|
|
537
|
+
},
|
|
538
|
+
/**
|
|
539
|
+
* The handle: the surface colour, lifted off the pill by a shadow — the same treatment
|
|
540
|
+
* the `Slider`'s knob takes, and for the same reason, so the chevron on it never has
|
|
541
|
+
* to fight the pill for contrast.
|
|
542
|
+
*/
|
|
543
|
+
thumb: {
|
|
544
|
+
position: "absolute",
|
|
545
|
+
alignItems: "center",
|
|
546
|
+
justifyContent: "center",
|
|
547
|
+
backgroundColor: theme.colors.background,
|
|
548
|
+
...theme.shadows.surface
|
|
549
|
+
},
|
|
550
|
+
/**
|
|
551
|
+
* The built-in chevron, drawn from two borders a quarter turn round — a control whose
|
|
552
|
+
* whole affordance is "drag me this way" cannot be written without one, and a peer
|
|
553
|
+
* dependency for a single arrow is the bargain the `CloseButton`'s cross also refuses.
|
|
554
|
+
* The lit edges are `top` and `end`, so under RTL it flips to point the other way on
|
|
555
|
+
* its own — the direction the handle travels either way. `children` replace it.
|
|
556
|
+
*/
|
|
557
|
+
glyph: {
|
|
558
|
+
borderColor: theme.colors.foreground,
|
|
559
|
+
borderTopWidth: 2,
|
|
560
|
+
borderEndWidth: 2,
|
|
561
|
+
transform: [{
|
|
562
|
+
rotate: "45deg"
|
|
563
|
+
}]
|
|
564
|
+
}
|
|
565
|
+
}),
|
|
566
|
+
variantTokens: VARIANT_TOKENS,
|
|
567
|
+
paint: (theme, colors) => ({
|
|
568
|
+
root: {
|
|
569
|
+
backgroundColor: colors.bg,
|
|
570
|
+
borderColor: colors.border,
|
|
571
|
+
borderWidth: colors.border ? theme.borderWidth.default : 0
|
|
572
|
+
},
|
|
573
|
+
label: {
|
|
574
|
+
color: colors.fg
|
|
575
|
+
},
|
|
576
|
+
// A variant with no vivid slice sweeps a wash, which the resting label already reads
|
|
577
|
+
// against — so it falls back to the same colour and the two copies are one label.
|
|
578
|
+
labelSwept: {
|
|
579
|
+
color: _nullishCoalesce(colors.fgSelected, () => colors.fg)
|
|
580
|
+
},
|
|
581
|
+
// The vivid slice where the variant named one, so the slide *arrives* at the intent
|
|
582
|
+
// rather than opening on it. Everything else keeps a wash of the same foreground the
|
|
583
|
+
// label uses, which reads against every pill without a token of its own. Either way a
|
|
584
|
+
// raw `color` moves the trail, because both roles go through the tint pass.
|
|
585
|
+
fill: {
|
|
586
|
+
backgroundColor: _nullishCoalesce(colors.bgSelected, () => colors.fg ? _chunkIIAQISBGcjs.alpha.call(void 0, colors.fg, FILL_ALPHA) : void 0)
|
|
587
|
+
}
|
|
588
|
+
}),
|
|
589
|
+
variants: {
|
|
590
|
+
size: {
|
|
591
|
+
sm: sizeAxis(SIZES.sm),
|
|
592
|
+
md: sizeAxis(SIZES.md),
|
|
593
|
+
lg: sizeAxis(SIZES.lg)
|
|
594
|
+
},
|
|
595
|
+
/** After `size`, so a caller's `radius` wins over the pill's `full`. */
|
|
596
|
+
radius: _chunkSL3V7R2Ycjs.radiusAxis.call(void 0, "root", "fillClip", "fill")
|
|
597
|
+
},
|
|
598
|
+
states: {
|
|
599
|
+
disabled: theme => ({
|
|
600
|
+
root: {
|
|
601
|
+
opacity: theme.opacity.disabled
|
|
602
|
+
},
|
|
603
|
+
// The handle also puts its shadow down. Opacity fades the pill until its edges are
|
|
604
|
+
// most of the way to the page, but it fades the shadow too — and a shadow at half
|
|
605
|
+
// strength is still the strongest edge left in the picture, sitting a point below a
|
|
606
|
+
// handle whose own outline has gone. What reads then is not a faded control, it is a
|
|
607
|
+
// handle pressed into a dent. Nothing about a disabled control should look lifted
|
|
608
|
+
// anyway, so the lift goes rather than being dimmed with everything else.
|
|
609
|
+
thumb: NO_SHADOW
|
|
610
|
+
})
|
|
611
|
+
},
|
|
612
|
+
defaultVariants: {
|
|
613
|
+
variant: "secondary",
|
|
614
|
+
size: "md"
|
|
615
|
+
}
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
// src/components/slide-button/slide-button.tsx
|
|
619
|
+
|
|
620
|
+
var SlideButtonRoot = _react.forwardRef.call(void 0, function SlideButton({
|
|
621
|
+
children,
|
|
622
|
+
variant,
|
|
623
|
+
size,
|
|
624
|
+
radius,
|
|
625
|
+
color,
|
|
626
|
+
threshold = DEFAULT_THRESHOLD,
|
|
627
|
+
isConfirmed: controlledConfirmed,
|
|
628
|
+
defaultConfirmed = false,
|
|
629
|
+
onConfirm,
|
|
630
|
+
isDisabled = false,
|
|
631
|
+
accessibilityRole = "button",
|
|
632
|
+
accessibilityState,
|
|
633
|
+
style,
|
|
634
|
+
onLayout,
|
|
635
|
+
...props
|
|
636
|
+
}, ref) {
|
|
637
|
+
const theme = _chunkIIAQISBGcjs.useXAUITheme.call(void 0);
|
|
638
|
+
const [styleProps, rest] = _chunkTK44VBIEcjs.useStyleProps.call(void 0, props);
|
|
639
|
+
const [trackLength, setTrackLength] = _react.useState.call(void 0, 0);
|
|
640
|
+
const offset = _reactnativereanimated.useSharedValue.call(void 0, 0);
|
|
641
|
+
const reach = Math.min(Math.max(threshold, 0), 1);
|
|
642
|
+
const [confirmed, setConfirmed] = _chunk7EIHHOHPcjs.useControllableState.call(void 0, {
|
|
643
|
+
value: controlledConfirmed,
|
|
644
|
+
defaultValue: defaultConfirmed
|
|
645
|
+
});
|
|
646
|
+
const selection = {
|
|
647
|
+
variant,
|
|
648
|
+
size,
|
|
649
|
+
radius
|
|
650
|
+
};
|
|
651
|
+
const states = {
|
|
652
|
+
disabled: isDisabled
|
|
653
|
+
};
|
|
654
|
+
const styles = slideButtonRecipe.resolve({
|
|
655
|
+
theme,
|
|
656
|
+
selection,
|
|
657
|
+
states
|
|
658
|
+
});
|
|
659
|
+
const tint = color ? slideButtonRecipe.tint({
|
|
660
|
+
theme,
|
|
661
|
+
color,
|
|
662
|
+
selection,
|
|
663
|
+
states
|
|
664
|
+
}) : void 0;
|
|
665
|
+
const thumb = _reactnative.StyleSheet.flatten([styles.thumb]);
|
|
666
|
+
const thumbSize = typeof thumb.width === "number" ? thumb.width : 0;
|
|
667
|
+
const inset = typeof thumb.start === "number" ? thumb.start : 0;
|
|
668
|
+
const travel = Math.max(trackLength - thumbSize - inset * 2, 0);
|
|
669
|
+
const confirm = _react.useCallback.call(void 0, () => {
|
|
670
|
+
setConfirmed(true);
|
|
671
|
+
_optionalChain([onConfirm, 'optionalCall', _ => _()]);
|
|
672
|
+
}, [onConfirm, setConfirmed]);
|
|
673
|
+
_react.useEffect.call(void 0, () => {
|
|
674
|
+
offset.set(_reactnativereanimated.withSpring.call(void 0, confirmed ? travel : 0, THUMB_SPRING));
|
|
675
|
+
}, [confirmed, travel, offset]);
|
|
676
|
+
const measure = _react.useCallback.call(void 0, event => {
|
|
677
|
+
_optionalChain([onLayout, 'optionalCall', _2 => _2(event)]);
|
|
678
|
+
setTrackLength(event.nativeEvent.layout.width);
|
|
679
|
+
}, [onLayout]);
|
|
680
|
+
const context = _react.useMemo.call(void 0, () => {
|
|
681
|
+
const glyph = _reactnative.StyleSheet.flatten([styles.glyph, _optionalChain([tint, 'optionalAccess', _3 => _3.glyph])]);
|
|
682
|
+
const labelInset = _reactnative.StyleSheet.flatten([styles.label]).start;
|
|
683
|
+
const sweptWidth2 = Math.max(trackLength - (typeof labelInset === "number" ? labelInset : 0) * 2, 0);
|
|
684
|
+
return {
|
|
685
|
+
fillClipStyle: styles.fillClip,
|
|
686
|
+
fillStyle: tint ? [styles.fill, tint.fill] : styles.fill,
|
|
687
|
+
labelStyle: tint ? [styles.label, tint.label] : styles.label,
|
|
688
|
+
labelSweptStyle: [styles.labelSwept, _optionalChain([tint, 'optionalAccess', _4 => _4.labelSwept]), {
|
|
689
|
+
width: sweptWidth2
|
|
690
|
+
}],
|
|
691
|
+
thumbStyle: styles.thumb,
|
|
692
|
+
glyphStyle: tint ? [styles.glyph, tint.glyph] : styles.glyph,
|
|
693
|
+
icon: {
|
|
694
|
+
size: typeof glyph.width === "number" ? glyph.width : void 0,
|
|
695
|
+
// The chevron is on the surface-coloured handle, so its colour is the theme's
|
|
696
|
+
// foreground and not the variant's — `color` (R7) stays on the pill.
|
|
697
|
+
color: theme.colors.foreground
|
|
698
|
+
},
|
|
699
|
+
offset,
|
|
700
|
+
travel,
|
|
701
|
+
thumbSize,
|
|
702
|
+
threshold: reach,
|
|
703
|
+
isDisabled,
|
|
704
|
+
isConfirmed: confirmed,
|
|
705
|
+
confirm,
|
|
706
|
+
trackLength
|
|
707
|
+
};
|
|
708
|
+
}, [styles, tint, theme.colors.foreground, offset, travel, thumbSize, reach, isDisabled, confirmed, confirm, trackLength]);
|
|
709
|
+
const text = _chunkFHNIGHN5cjs.childrenToString.call(void 0, children);
|
|
710
|
+
return /* @__PURE__ */_jsxruntime.jsx.call(void 0, SlideButtonProvider, {
|
|
711
|
+
value: context,
|
|
712
|
+
children: /* @__PURE__ */_jsxruntime.jsx.call(void 0, _reactnative.View, {
|
|
713
|
+
ref,
|
|
714
|
+
accessibilityRole,
|
|
715
|
+
accessibilityState: {
|
|
716
|
+
disabled: isDisabled,
|
|
717
|
+
...accessibilityState
|
|
718
|
+
},
|
|
719
|
+
accessibilityActions: [{
|
|
720
|
+
name: "activate"
|
|
721
|
+
}],
|
|
722
|
+
onAccessibilityAction: event => {
|
|
723
|
+
if (event.nativeEvent.actionName === "activate" && !isDisabled) confirm();
|
|
724
|
+
},
|
|
725
|
+
...rest,
|
|
726
|
+
onLayout: measure,
|
|
727
|
+
style: [styles.root, _optionalChain([tint, 'optionalAccess', _5 => _5.root]), styleProps, style],
|
|
728
|
+
children: text !== null ? /* @__PURE__ */_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, {
|
|
729
|
+
children: [/* @__PURE__ */_jsxruntime.jsx.call(void 0, SlideButtonFill, {}), /* @__PURE__ */_jsxruntime.jsx.call(void 0, SlideButtonLabel, {
|
|
730
|
+
children: text
|
|
731
|
+
}), /* @__PURE__ */_jsxruntime.jsx.call(void 0, SlideButtonThumb, {})]
|
|
732
|
+
}) : children
|
|
733
|
+
})
|
|
734
|
+
});
|
|
735
|
+
});
|
|
736
|
+
SlideButtonRoot.displayName = "XAUI.SlideButton.Root";
|
|
737
|
+
|
|
738
|
+
// src/components/slide-button/index.ts
|
|
739
|
+
var SlideButton2 = Object.assign(SlideButtonRoot, {
|
|
740
|
+
Fill: SlideButtonFill,
|
|
741
|
+
Label: SlideButtonLabel,
|
|
742
|
+
Thumb: SlideButtonThumb,
|
|
743
|
+
Icon: SlideButtonIcon
|
|
744
|
+
});
|
|
745
|
+
exports.useSlideButton = useSlideButton;
|
|
746
|
+
exports.SlideButtonFill = SlideButtonFill;
|
|
747
|
+
exports.SlideButtonIcon = SlideButtonIcon;
|
|
748
|
+
exports.SlideButtonLabel = SlideButtonLabel;
|
|
749
|
+
exports.SlideButtonThumb = SlideButtonThumb;
|
|
750
|
+
exports.slideButtonRecipe = slideButtonRecipe;
|
|
751
|
+
exports.SlideButtonRoot = SlideButtonRoot;
|
|
752
|
+
exports.SlideButton = SlideButton2;
|