@multiplatform.one/storybook 6.0.0
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/LICENSE +194 -0
- package/README.md +128 -0
- package/dist/cjs/CreatePreview.cjs +561 -0
- package/dist/cjs/CreatePreview.native.js +781 -0
- package/dist/cjs/CreatePreview.native.js.map +1 -0
- package/dist/cjs/index.cjs +32 -0
- package/dist/cjs/index.native.js +40 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/esm/CreatePreview.mjs +517 -0
- package/dist/esm/CreatePreview.mjs.map +1 -0
- package/dist/esm/CreatePreview.native.js +734 -0
- package/dist/esm/CreatePreview.native.js.map +1 -0
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +12 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/jsx/CreatePreview.mjs +517 -0
- package/dist/jsx/CreatePreview.mjs.map +1 -0
- package/dist/jsx/CreatePreview.native.js +781 -0
- package/dist/jsx/CreatePreview.native.js.map +1 -0
- package/dist/jsx/index.js +4 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/index.mjs +4 -0
- package/dist/jsx/index.mjs.map +1 -0
- package/dist/jsx/index.native.js +40 -0
- package/dist/jsx/index.native.js.map +1 -0
- package/package.json +104 -0
- package/src/CreatePreview.tsx +750 -0
- package/src/index.native.ts +12 -0
- package/src/index.ts +7 -0
|
@@ -0,0 +1,781 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
+
value: mod,
|
|
31
|
+
enumerable: true
|
|
32
|
+
}) : target, mod));
|
|
33
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
34
|
+
value: true
|
|
35
|
+
}), mod);
|
|
36
|
+
var CreatePreview_exports = {};
|
|
37
|
+
__export(CreatePreview_exports, {
|
|
38
|
+
accentColorsChannelEvent: () => accentColorsChannelEvent,
|
|
39
|
+
accentOppositeChannelEvent: () => accentOppositeChannelEvent,
|
|
40
|
+
animationNamesChannelEvent: () => animationNamesChannelEvent,
|
|
41
|
+
baseOppositeChannelEvent: () => baseOppositeChannelEvent,
|
|
42
|
+
baseThemeColorsChannelEvent: () => baseThemeColorsChannelEvent,
|
|
43
|
+
createPreview: () => createPreview,
|
|
44
|
+
frappeDebugChannelEvent: () => frappeDebugChannelEvent,
|
|
45
|
+
themeColorsChannelEvent: () => themeColorsChannelEvent,
|
|
46
|
+
themeColorsOppositeChannelEvent: () => themeColorsOppositeChannelEvent
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(CreatePreview_exports);
|
|
49
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
50
|
+
var import_react = require("react");
|
|
51
|
+
var import_theme = require("@multiplatform.one/theme");
|
|
52
|
+
var import_platform = require("@multiplatform.one/platform");
|
|
53
|
+
var import_react_cookie = require("react-cookie");
|
|
54
|
+
var import_tamagui = require("tamagui");
|
|
55
|
+
function _type_of(obj) {
|
|
56
|
+
"@swc/helpers - typeof";
|
|
57
|
+
|
|
58
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
59
|
+
}
|
|
60
|
+
var themeColorsChannelEvent = "theme-addon/theme-colors";
|
|
61
|
+
var themeColorsOppositeChannelEvent = "theme-addon/theme-colors-opposite";
|
|
62
|
+
var baseThemeColorsChannelEvent = "theme-addon/base-theme-colors";
|
|
63
|
+
var baseOppositeChannelEvent = "theme-addon/base-colors-opposite";
|
|
64
|
+
var accentColorsChannelEvent = "theme-addon/accent-colors";
|
|
65
|
+
var accentOppositeChannelEvent = "theme-addon/accent-colors-opposite";
|
|
66
|
+
var animationNamesChannelEvent = "theme-addon/animation-names";
|
|
67
|
+
var frappeDebugChannelEvent = "frappe-addon/debug-state";
|
|
68
|
+
var knobOptions = {
|
|
69
|
+
fillStyle: Object.values(import_theme.FillStyle),
|
|
70
|
+
borderRadius: Object.values(import_theme.BorderRadius),
|
|
71
|
+
borderWidth: Object.values(import_theme.BorderWidth),
|
|
72
|
+
elevation: Object.values(import_theme.Elevation),
|
|
73
|
+
space: Object.values(import_theme.Space),
|
|
74
|
+
size: Object.values(import_theme.Size),
|
|
75
|
+
textAccent: Object.values(import_theme.TextAccent),
|
|
76
|
+
headingFont: Object.values(import_theme.HeadingFont),
|
|
77
|
+
bodyFont: Object.values(import_theme.BodyFont),
|
|
78
|
+
fontWeight: Object.values(import_theme.FontWeight),
|
|
79
|
+
animation: ["none", ...import_theme.animationNames]
|
|
80
|
+
};
|
|
81
|
+
var stateKnobFields = ["fillStyle", "borderRadius", "borderWidth", "elevation", "space", "size", "textAccent", "headingFont", "bodyFont", "fontWeight"];
|
|
82
|
+
function parseValue(value) {
|
|
83
|
+
if (typeof value !== "string") return value;
|
|
84
|
+
try {
|
|
85
|
+
return JSON.parse(value);
|
|
86
|
+
} catch (unused) {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
var toTitleCase = function toTitleCase2(str) {
|
|
91
|
+
return str.replace(/([A-Z])/g, " $1").replace(/^./, function (s) {
|
|
92
|
+
return s.toUpperCase();
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
function createControl(key) {
|
|
96
|
+
var _knobOptions_key;
|
|
97
|
+
var name = toTitleCase(key);
|
|
98
|
+
var values = (_knobOptions_key = knobOptions[key]) !== null && _knobOptions_key !== void 0 ? _knobOptions_key : [];
|
|
99
|
+
var serialized = values.map(function (value) {
|
|
100
|
+
return value;
|
|
101
|
+
});
|
|
102
|
+
var labels = Object.fromEntries(serialized.map(function (v) {
|
|
103
|
+
return [v, v.replace("$", "")];
|
|
104
|
+
}));
|
|
105
|
+
var fallback = import_theme.defaultKnobs[key];
|
|
106
|
+
return {
|
|
107
|
+
name,
|
|
108
|
+
description: name.toLowerCase(),
|
|
109
|
+
options: serialized,
|
|
110
|
+
control: {
|
|
111
|
+
type: "select",
|
|
112
|
+
labels
|
|
113
|
+
},
|
|
114
|
+
...(fallback !== void 0 && {
|
|
115
|
+
defaultValue: fallback
|
|
116
|
+
})
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function CanvasBackground(param) {
|
|
120
|
+
var {
|
|
121
|
+
children
|
|
122
|
+
} = param;
|
|
123
|
+
var _tamaguiTheme_background;
|
|
124
|
+
var tamaguiTheme = (0, import_tamagui.useTheme)();
|
|
125
|
+
var bg = (_tamaguiTheme_background = tamaguiTheme.background) === null || _tamaguiTheme_background === void 0 ? void 0 : _tamaguiTheme_background.val;
|
|
126
|
+
(0, import_react.useLayoutEffect)(function () {
|
|
127
|
+
if (bg) {
|
|
128
|
+
document.body.style.backgroundColor = bg;
|
|
129
|
+
document.documentElement.style.backgroundColor = bg;
|
|
130
|
+
}
|
|
131
|
+
}, [bg]);
|
|
132
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
|
|
133
|
+
flex: 1,
|
|
134
|
+
minHeight: "100vh",
|
|
135
|
+
backgroundColor: "$background",
|
|
136
|
+
children
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
var _channelEmit = null;
|
|
140
|
+
function getChannelEmit() {
|
|
141
|
+
if (_channelEmit) return _channelEmit;
|
|
142
|
+
try {
|
|
143
|
+
var mod = require("storybook/preview-api");
|
|
144
|
+
var channel = mod.addons.getChannel();
|
|
145
|
+
_channelEmit = function _channelEmit2(event, data) {
|
|
146
|
+
return channel.emit(event, data);
|
|
147
|
+
};
|
|
148
|
+
return _channelEmit;
|
|
149
|
+
} catch (unused) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function AnimationNamesEmitter() {
|
|
154
|
+
var emittedRef = (0, import_react.useRef)(false);
|
|
155
|
+
(0, import_react.useEffect)(function () {
|
|
156
|
+
var _getChannelEmit;
|
|
157
|
+
if (emittedRef.current) return;
|
|
158
|
+
emittedRef.current = true;
|
|
159
|
+
(_getChannelEmit = getChannelEmit()) === null || _getChannelEmit === void 0 ? void 0 : _getChannelEmit(animationNamesChannelEvent, import_theme.animationNames);
|
|
160
|
+
}, []);
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
function FrappeDebugEmitter() {
|
|
164
|
+
var prevRef = (0, import_react.useRef)("");
|
|
165
|
+
var syncRef = (0, import_react.useRef)(null);
|
|
166
|
+
var [tick, setTick] = (0, import_react.useState)(0);
|
|
167
|
+
(0, import_react.useEffect)(function () {
|
|
168
|
+
var cancelled = false;
|
|
169
|
+
async function resolve() {
|
|
170
|
+
try {
|
|
171
|
+
var {
|
|
172
|
+
__getActiveSyncModule
|
|
173
|
+
} = await import("@multiplatform.one/frappe");
|
|
174
|
+
var sync = __getActiveSyncModule();
|
|
175
|
+
if (sync && !cancelled) {
|
|
176
|
+
syncRef.current = sync;
|
|
177
|
+
setTick(function (t) {
|
|
178
|
+
return t + 1;
|
|
179
|
+
});
|
|
180
|
+
return sync.subscribeStore(function () {
|
|
181
|
+
if (!cancelled) setTick(function (t) {
|
|
182
|
+
return t + 1;
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
} catch (unused) {}
|
|
187
|
+
}
|
|
188
|
+
var cleanupPromise = resolve();
|
|
189
|
+
var attempts = 0;
|
|
190
|
+
var interval = setInterval(async function () {
|
|
191
|
+
attempts++;
|
|
192
|
+
if (syncRef.current || cancelled || attempts >= 10) {
|
|
193
|
+
clearInterval(interval);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
await resolve();
|
|
197
|
+
}, 2e3);
|
|
198
|
+
return function () {
|
|
199
|
+
cancelled = true;
|
|
200
|
+
clearInterval(interval);
|
|
201
|
+
cleanupPromise.then(function (unsub) {
|
|
202
|
+
return unsub === null || unsub === void 0 ? void 0 : unsub();
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
}, []);
|
|
206
|
+
(0, import_react.useEffect)(function () {
|
|
207
|
+
if (!syncRef.current) return;
|
|
208
|
+
var emit = getChannelEmit();
|
|
209
|
+
if (!emit) return;
|
|
210
|
+
try {
|
|
211
|
+
var state = syncRef.current.__debug();
|
|
212
|
+
var key = JSON.stringify(state);
|
|
213
|
+
if (key === prevRef.current) return;
|
|
214
|
+
prevRef.current = key;
|
|
215
|
+
emit(frappeDebugChannelEvent, state);
|
|
216
|
+
} catch (unused) {}
|
|
217
|
+
},
|
|
218
|
+
// debug not available
|
|
219
|
+
[tick]);
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
function ThemeColorEmitter() {
|
|
223
|
+
var tamaguiTheme = (0, import_tamagui.useTheme)();
|
|
224
|
+
var prevRef = (0, import_react.useRef)("");
|
|
225
|
+
(0, import_react.useEffect)(function () {
|
|
226
|
+
var _getChannelEmit;
|
|
227
|
+
var colors = [];
|
|
228
|
+
for (var i = 1; i <= 12; i++) {
|
|
229
|
+
var _ref;
|
|
230
|
+
var token = tamaguiTheme[`color${i}`];
|
|
231
|
+
colors.push((_ref = token === null || token === void 0 ? void 0 : token.val) !== null && _ref !== void 0 ? _ref : "");
|
|
232
|
+
}
|
|
233
|
+
var key = colors.join("|");
|
|
234
|
+
if (key === prevRef.current) return;
|
|
235
|
+
prevRef.current = key;
|
|
236
|
+
(_getChannelEmit = getChannelEmit()) === null || _getChannelEmit === void 0 ? void 0 : _getChannelEmit(themeColorsChannelEvent, colors);
|
|
237
|
+
}, [tamaguiTheme]);
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
function BaseThemeColorEmitter() {
|
|
241
|
+
var tamaguiTheme = (0, import_tamagui.useTheme)();
|
|
242
|
+
var prevRef = (0, import_react.useRef)("");
|
|
243
|
+
(0, import_react.useEffect)(function () {
|
|
244
|
+
var _getChannelEmit;
|
|
245
|
+
var colors = [];
|
|
246
|
+
for (var i = 1; i <= 12; i++) {
|
|
247
|
+
var _ref;
|
|
248
|
+
var token = tamaguiTheme[`color${i}`];
|
|
249
|
+
colors.push((_ref = token === null || token === void 0 ? void 0 : token.val) !== null && _ref !== void 0 ? _ref : "");
|
|
250
|
+
}
|
|
251
|
+
var key = colors.join("|");
|
|
252
|
+
if (key === prevRef.current) return;
|
|
253
|
+
prevRef.current = key;
|
|
254
|
+
(_getChannelEmit = getChannelEmit()) === null || _getChannelEmit === void 0 ? void 0 : _getChannelEmit(baseThemeColorsChannelEvent, colors);
|
|
255
|
+
}, [tamaguiTheme]);
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
function OppositeThemeColorEmitter() {
|
|
259
|
+
var tamaguiTheme = (0, import_tamagui.useTheme)();
|
|
260
|
+
var prevRef = (0, import_react.useRef)("");
|
|
261
|
+
(0, import_react.useEffect)(function () {
|
|
262
|
+
var _getChannelEmit;
|
|
263
|
+
var colors = [];
|
|
264
|
+
for (var i = 1; i <= 12; i++) {
|
|
265
|
+
var _ref;
|
|
266
|
+
var token = tamaguiTheme[`color${i}`];
|
|
267
|
+
colors.push((_ref = token === null || token === void 0 ? void 0 : token.val) !== null && _ref !== void 0 ? _ref : "");
|
|
268
|
+
}
|
|
269
|
+
var key = colors.join("|");
|
|
270
|
+
if (key === prevRef.current) return;
|
|
271
|
+
prevRef.current = key;
|
|
272
|
+
(_getChannelEmit = getChannelEmit()) === null || _getChannelEmit === void 0 ? void 0 : _getChannelEmit(themeColorsOppositeChannelEvent, colors);
|
|
273
|
+
}, [tamaguiTheme]);
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
function ColorChannelEmitter(param) {
|
|
277
|
+
var {
|
|
278
|
+
event,
|
|
279
|
+
prefix = "color"
|
|
280
|
+
} = param;
|
|
281
|
+
var tamaguiTheme = (0, import_tamagui.useTheme)();
|
|
282
|
+
var prevRef = (0, import_react.useRef)("");
|
|
283
|
+
(0, import_react.useEffect)(function () {
|
|
284
|
+
var _getChannelEmit;
|
|
285
|
+
var colors = [];
|
|
286
|
+
var found = false;
|
|
287
|
+
for (var i = 1; i <= 12; i++) {
|
|
288
|
+
var _ref;
|
|
289
|
+
var token = tamaguiTheme[`${prefix}${i}`];
|
|
290
|
+
var val = (_ref = token === null || token === void 0 ? void 0 : token.val) !== null && _ref !== void 0 ? _ref : "";
|
|
291
|
+
colors.push(val);
|
|
292
|
+
if (val) found = true;
|
|
293
|
+
}
|
|
294
|
+
if (!found) return;
|
|
295
|
+
var key = colors.join("|");
|
|
296
|
+
if (key === prevRef.current) return;
|
|
297
|
+
prevRef.current = key;
|
|
298
|
+
(_getChannelEmit = getChannelEmit()) === null || _getChannelEmit === void 0 ? void 0 : _getChannelEmit(event, colors);
|
|
299
|
+
}, [tamaguiTheme, event, prefix]);
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
var tamaguiPropLeakPatterns = ["pressTheme", "scaleIcon", "borderTopRightRadius", "borderBottomRightRadius", "borderTopLeftRadius", "borderBottomLeftRadius"];
|
|
303
|
+
function suppressTamaguiDomWarnings() {
|
|
304
|
+
if (typeof window === "undefined") return;
|
|
305
|
+
var origError = console.error;
|
|
306
|
+
console.error = function () {
|
|
307
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
308
|
+
args[_key] = arguments[_key];
|
|
309
|
+
}
|
|
310
|
+
var msg = args.map(function (a) {
|
|
311
|
+
return typeof a === "string" ? a : "";
|
|
312
|
+
}).join(" ");
|
|
313
|
+
if (msg.includes("React does not recognize the") && tamaguiPropLeakPatterns.some(function (p) {
|
|
314
|
+
return msg.includes(p);
|
|
315
|
+
})) {
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
origError(...args);
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
suppressTamaguiDomWarnings();
|
|
322
|
+
function createPreview(options) {
|
|
323
|
+
var _themeConfig_defaultPreset;
|
|
324
|
+
var {
|
|
325
|
+
themeConfig,
|
|
326
|
+
i18n,
|
|
327
|
+
AppProvider,
|
|
328
|
+
decorators: extraDecorators = [],
|
|
329
|
+
parameters: extraParameters = {},
|
|
330
|
+
globalTypes: extraGlobalTypes = {}
|
|
331
|
+
} = options;
|
|
332
|
+
var enumKeys = Object.keys(knobOptions);
|
|
333
|
+
var generatedGlobalTypes = {};
|
|
334
|
+
var _iteratorNormalCompletion = true,
|
|
335
|
+
_didIteratorError = false,
|
|
336
|
+
_iteratorError = void 0;
|
|
337
|
+
try {
|
|
338
|
+
for (var _iterator = enumKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
339
|
+
var key = _step.value;
|
|
340
|
+
generatedGlobalTypes[key] = createControl(key);
|
|
341
|
+
}
|
|
342
|
+
} catch (err) {
|
|
343
|
+
_didIteratorError = true;
|
|
344
|
+
_iteratorError = err;
|
|
345
|
+
} finally {
|
|
346
|
+
try {
|
|
347
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
348
|
+
_iterator.return();
|
|
349
|
+
}
|
|
350
|
+
} finally {
|
|
351
|
+
if (_didIteratorError) {
|
|
352
|
+
throw _iteratorError;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
for (var _i = 0, _iter = ["hover", "press", "focus", "focusVisible"]; _i < _iter.length; _i++) {
|
|
357
|
+
var state = _iter[_i];
|
|
358
|
+
var _iteratorNormalCompletion1 = true,
|
|
359
|
+
_didIteratorError1 = false,
|
|
360
|
+
_iteratorError1 = void 0;
|
|
361
|
+
try {
|
|
362
|
+
for (var _iterator1 = stateKnobFields[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
|
|
363
|
+
var field = _step1.value;
|
|
364
|
+
var _knobOptions_field;
|
|
365
|
+
var stateKey = `${state}.${field}`;
|
|
366
|
+
var values = (_knobOptions_field = knobOptions[field]) !== null && _knobOptions_field !== void 0 ? _knobOptions_field : [];
|
|
367
|
+
var serialized = values.map(function (value) {
|
|
368
|
+
return value;
|
|
369
|
+
});
|
|
370
|
+
var labels = Object.fromEntries(serialized.map(function (v) {
|
|
371
|
+
return [v, v.replace("$", "")];
|
|
372
|
+
}));
|
|
373
|
+
generatedGlobalTypes[stateKey] = {
|
|
374
|
+
name: `${toTitleCase(state)} ${toTitleCase(field)}`,
|
|
375
|
+
description: `${state} override for ${field}`,
|
|
376
|
+
options: serialized,
|
|
377
|
+
control: {
|
|
378
|
+
type: "select",
|
|
379
|
+
labels
|
|
380
|
+
},
|
|
381
|
+
defaultValue: ""
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
} catch (err) {
|
|
385
|
+
_didIteratorError1 = true;
|
|
386
|
+
_iteratorError1 = err;
|
|
387
|
+
} finally {
|
|
388
|
+
try {
|
|
389
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
390
|
+
_iterator1.return();
|
|
391
|
+
}
|
|
392
|
+
} finally {
|
|
393
|
+
if (_didIteratorError1) {
|
|
394
|
+
throw _iteratorError1;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
var themeColorNames = ["", ...themeConfig.themeColors];
|
|
400
|
+
var themeSwatches = {};
|
|
401
|
+
var allThemes = themeConfig.tamagui.themes;
|
|
402
|
+
if (allThemes) {
|
|
403
|
+
var _iteratorNormalCompletion2 = true,
|
|
404
|
+
_didIteratorError2 = false,
|
|
405
|
+
_iteratorError2 = void 0;
|
|
406
|
+
try {
|
|
407
|
+
for (var _iterator2 = themeConfig.themeColors[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
408
|
+
var name = _step2.value;
|
|
409
|
+
var _allThemes_;
|
|
410
|
+
var theme = (_allThemes_ = allThemes[`light_${name}`]) !== null && _allThemes_ !== void 0 ? _allThemes_ : allThemes[name];
|
|
411
|
+
if (!theme) continue;
|
|
412
|
+
var token = theme.color7;
|
|
413
|
+
if (typeof token === "string") {
|
|
414
|
+
themeSwatches[name] = token;
|
|
415
|
+
} else if (token && (typeof token === "undefined" ? "undefined" : _type_of(token)) === "object" && "val" in token) {
|
|
416
|
+
themeSwatches[name] = String(token.val);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
} catch (err) {
|
|
420
|
+
_didIteratorError2 = true;
|
|
421
|
+
_iteratorError2 = err;
|
|
422
|
+
} finally {
|
|
423
|
+
try {
|
|
424
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
425
|
+
_iterator2.return();
|
|
426
|
+
}
|
|
427
|
+
} finally {
|
|
428
|
+
if (_didIteratorError2) {
|
|
429
|
+
throw _iteratorError2;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
generatedGlobalTypes.color = {
|
|
435
|
+
name: "Theme",
|
|
436
|
+
description: "Theme color palette",
|
|
437
|
+
options: themeColorNames,
|
|
438
|
+
control: {
|
|
439
|
+
type: "select",
|
|
440
|
+
labels: Object.fromEntries(themeColorNames.map(function (v) {
|
|
441
|
+
return [v, v || "(none)"];
|
|
442
|
+
}))
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
generatedGlobalTypes.scheme = {
|
|
446
|
+
name: "Scheme",
|
|
447
|
+
description: "Color scheme (light/dark/system)",
|
|
448
|
+
options: ["system", "light", "dark"],
|
|
449
|
+
control: {
|
|
450
|
+
type: "select"
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
generatedGlobalTypes.locale = {
|
|
454
|
+
name: "Locale",
|
|
455
|
+
description: "Controls internationalization language",
|
|
456
|
+
options: [...i18n.languages],
|
|
457
|
+
control: {
|
|
458
|
+
type: "select"
|
|
459
|
+
},
|
|
460
|
+
toolbar: {
|
|
461
|
+
title: "Locale",
|
|
462
|
+
items: [...i18n.languages],
|
|
463
|
+
dynamicTitle: true
|
|
464
|
+
}
|
|
465
|
+
};
|
|
466
|
+
var globalTypes = {
|
|
467
|
+
...generatedGlobalTypes,
|
|
468
|
+
...extraGlobalTypes
|
|
469
|
+
};
|
|
470
|
+
var initialGlobals = {
|
|
471
|
+
locale: import_platform.config.get("I18N_DEFAULT_LANGUAGE", i18n.defaultLanguage),
|
|
472
|
+
color: "",
|
|
473
|
+
scheme: "system",
|
|
474
|
+
// Publish registered preset names so the manager-side ThemePanel can
|
|
475
|
+
// render a preset selector without importing the theme package.
|
|
476
|
+
__presetNames: (0, import_theme.getPresetNames)(),
|
|
477
|
+
// Publish available theme color names so the ThemePanel can show only
|
|
478
|
+
// colors that actually have registered Tamagui sub-themes.
|
|
479
|
+
__themeColors: themeColorNames,
|
|
480
|
+
__themeSwatches: themeSwatches,
|
|
481
|
+
preset: (_themeConfig_defaultPreset = themeConfig.defaultPreset) !== null && _themeConfig_defaultPreset !== void 0 ? _themeConfig_defaultPreset : ""
|
|
482
|
+
};
|
|
483
|
+
var _iteratorNormalCompletion3 = true,
|
|
484
|
+
_didIteratorError3 = false,
|
|
485
|
+
_iteratorError3 = void 0;
|
|
486
|
+
try {
|
|
487
|
+
for (var _iterator3 = enumKeys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
|
488
|
+
var key1 = _step3.value;
|
|
489
|
+
if (!(key1 in initialGlobals)) {
|
|
490
|
+
initialGlobals[key1] = "";
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
} catch (err) {
|
|
494
|
+
_didIteratorError3 = true;
|
|
495
|
+
_iteratorError3 = err;
|
|
496
|
+
} finally {
|
|
497
|
+
try {
|
|
498
|
+
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
|
499
|
+
_iterator3.return();
|
|
500
|
+
}
|
|
501
|
+
} finally {
|
|
502
|
+
if (_didIteratorError3) {
|
|
503
|
+
throw _iteratorError3;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
for (var _i1 = 0, _iter1 = ["hover", "press", "focus", "focusVisible"]; _i1 < _iter1.length; _i1++) {
|
|
508
|
+
var state1 = _iter1[_i1];
|
|
509
|
+
var _iteratorNormalCompletion4 = true,
|
|
510
|
+
_didIteratorError4 = false,
|
|
511
|
+
_iteratorError4 = void 0;
|
|
512
|
+
try {
|
|
513
|
+
for (var _iterator4 = stateKnobFields[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
|
514
|
+
var field1 = _step4.value;
|
|
515
|
+
initialGlobals[`${state1}.${field1}`] = "";
|
|
516
|
+
}
|
|
517
|
+
} catch (err) {
|
|
518
|
+
_didIteratorError4 = true;
|
|
519
|
+
_iteratorError4 = err;
|
|
520
|
+
} finally {
|
|
521
|
+
try {
|
|
522
|
+
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
523
|
+
_iterator4.return();
|
|
524
|
+
}
|
|
525
|
+
} finally {
|
|
526
|
+
if (_didIteratorError4) {
|
|
527
|
+
throw _iteratorError4;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
var defaultParameters = {
|
|
533
|
+
actions: {
|
|
534
|
+
argTypesRegex: "^on[A-Z].*"
|
|
535
|
+
},
|
|
536
|
+
layout: "padded",
|
|
537
|
+
viewMode: "story",
|
|
538
|
+
controls: {
|
|
539
|
+
expanded: true,
|
|
540
|
+
hideNoControlsWarning: true,
|
|
541
|
+
matchers: {
|
|
542
|
+
color: /(background|color)$/i,
|
|
543
|
+
date: /Date$/
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
// Disable the built-in backgrounds addon — the CanvasBackground component
|
|
547
|
+
// manages the preview background via the Tamagui $background token so it
|
|
548
|
+
// stays in sync with the active color scheme.
|
|
549
|
+
backgrounds: {
|
|
550
|
+
disable: true
|
|
551
|
+
},
|
|
552
|
+
previewTabs: {
|
|
553
|
+
"storybook/docs/panel": {
|
|
554
|
+
hidden: true
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
a11y: {
|
|
558
|
+
test: false
|
|
559
|
+
},
|
|
560
|
+
docs: {
|
|
561
|
+
codePanel: true
|
|
562
|
+
},
|
|
563
|
+
darkMode: {
|
|
564
|
+
stylePreview: true
|
|
565
|
+
}
|
|
566
|
+
};
|
|
567
|
+
function FrameworkDecoratorInner(param) {
|
|
568
|
+
var {
|
|
569
|
+
Story,
|
|
570
|
+
context
|
|
571
|
+
} = param;
|
|
572
|
+
var _context_parameters;
|
|
573
|
+
var [knobs, setKnobs] = (0, import_theme.useTheme)();
|
|
574
|
+
var schemeGlobal = context.globals.scheme || "system";
|
|
575
|
+
var [resolvedScheme, setResolvedScheme] = (0, import_react.useState)(function () {
|
|
576
|
+
if (schemeGlobal === "light" || schemeGlobal === "dark") return schemeGlobal;
|
|
577
|
+
if (typeof window !== "undefined" && window.matchMedia) {
|
|
578
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
579
|
+
}
|
|
580
|
+
return "light";
|
|
581
|
+
});
|
|
582
|
+
(0, import_react.useEffect)(function () {
|
|
583
|
+
if (schemeGlobal === "light" || schemeGlobal === "dark") {
|
|
584
|
+
setResolvedScheme(schemeGlobal);
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
if (typeof window === "undefined" || !window.matchMedia) {
|
|
588
|
+
setResolvedScheme("light");
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
var mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
592
|
+
var handler = function handler2() {
|
|
593
|
+
return setResolvedScheme(mq.matches ? "dark" : "light");
|
|
594
|
+
};
|
|
595
|
+
handler();
|
|
596
|
+
mq.addEventListener("change", handler);
|
|
597
|
+
return function () {
|
|
598
|
+
return mq.removeEventListener("change", handler);
|
|
599
|
+
};
|
|
600
|
+
}, [schemeGlobal]);
|
|
601
|
+
var colorGlobal = context.globals.color || "";
|
|
602
|
+
var storyThemeParams = (_context_parameters = context.parameters) === null || _context_parameters === void 0 ? void 0 : _context_parameters.theme;
|
|
603
|
+
var activePresetName = context.globals.preset;
|
|
604
|
+
var activePreset = activePresetName ? (0, import_theme.getPreset)(activePresetName) : void 0;
|
|
605
|
+
var knobUpdate = (0, import_react.useMemo)(function () {
|
|
606
|
+
var result = {};
|
|
607
|
+
var stateKeys = /* @__PURE__ */new Set(["hover", "press", "focus", "focusVisible"]);
|
|
608
|
+
var _iteratorNormalCompletion5 = true,
|
|
609
|
+
_didIteratorError5 = false,
|
|
610
|
+
_iteratorError5 = void 0;
|
|
611
|
+
try {
|
|
612
|
+
for (var _iterator5 = Object.keys(knobs)[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
|
613
|
+
var key2 = _step5.value;
|
|
614
|
+
if (stateKeys.has(key2)) continue;
|
|
615
|
+
if (storyThemeParams && key2 in storyThemeParams) {
|
|
616
|
+
result[key2] = storyThemeParams[key2];
|
|
617
|
+
} else if (key2 in context.globals && context.globals[key2] !== void 0 && context.globals[key2] !== "") {
|
|
618
|
+
result[key2] = parseValue(context.globals[key2]);
|
|
619
|
+
} else if (activePreset && key2 in activePreset.knobs) {
|
|
620
|
+
result[key2] = activePreset.knobs[key2];
|
|
621
|
+
} else {
|
|
622
|
+
result[key2] = import_theme.defaultKnobs[key2];
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
} catch (err) {
|
|
626
|
+
_didIteratorError5 = true;
|
|
627
|
+
_iteratorError5 = err;
|
|
628
|
+
} finally {
|
|
629
|
+
try {
|
|
630
|
+
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
631
|
+
_iterator5.return();
|
|
632
|
+
}
|
|
633
|
+
} finally {
|
|
634
|
+
if (_didIteratorError5) {
|
|
635
|
+
throw _iteratorError5;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
var _iteratorNormalCompletion12 = true,
|
|
640
|
+
_didIteratorError12 = false,
|
|
641
|
+
_iteratorError12 = void 0;
|
|
642
|
+
try {
|
|
643
|
+
for (var _iterator12 = stateKeys[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
|
|
644
|
+
var state2 = _step12.value;
|
|
645
|
+
var stateObj = {};
|
|
646
|
+
var hasValues = false;
|
|
647
|
+
var _iteratorNormalCompletion22 = true,
|
|
648
|
+
_didIteratorError22 = false,
|
|
649
|
+
_iteratorError22 = void 0;
|
|
650
|
+
try {
|
|
651
|
+
for (var _iterator22 = stateKnobFields[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) {
|
|
652
|
+
var field2 = _step22.value;
|
|
653
|
+
var globalKey = `${state2}.${field2}`;
|
|
654
|
+
var val = context.globals[globalKey];
|
|
655
|
+
if (val) {
|
|
656
|
+
stateObj[field2] = val;
|
|
657
|
+
hasValues = true;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
} catch (err) {
|
|
661
|
+
_didIteratorError22 = true;
|
|
662
|
+
_iteratorError22 = err;
|
|
663
|
+
} finally {
|
|
664
|
+
try {
|
|
665
|
+
if (!_iteratorNormalCompletion22 && _iterator22.return != null) {
|
|
666
|
+
_iterator22.return();
|
|
667
|
+
}
|
|
668
|
+
} finally {
|
|
669
|
+
if (_didIteratorError22) {
|
|
670
|
+
throw _iteratorError22;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
if (hasValues) {
|
|
675
|
+
result[state2] = stateObj;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
} catch (err) {
|
|
679
|
+
_didIteratorError12 = true;
|
|
680
|
+
_iteratorError12 = err;
|
|
681
|
+
} finally {
|
|
682
|
+
try {
|
|
683
|
+
if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
|
|
684
|
+
_iterator12.return();
|
|
685
|
+
}
|
|
686
|
+
} finally {
|
|
687
|
+
if (_didIteratorError12) {
|
|
688
|
+
throw _iteratorError12;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
return result;
|
|
693
|
+
}, [knobs, context.globals, storyThemeParams, activePreset]);
|
|
694
|
+
(0, import_react.useEffect)(function () {
|
|
695
|
+
setKnobs(knobUpdate);
|
|
696
|
+
}, [knobUpdate, setKnobs]);
|
|
697
|
+
(0, import_react.useEffect)(function () {
|
|
698
|
+
i18n.instance.changeLanguage(context.globals.locale);
|
|
699
|
+
}, [context.globals.locale]);
|
|
700
|
+
var presetCtxValue = (0, import_react.useMemo)(function () {
|
|
701
|
+
return {
|
|
702
|
+
preset: {
|
|
703
|
+
...import_theme.defaultPreset,
|
|
704
|
+
theme: colorGlobal || import_theme.defaultPreset.theme,
|
|
705
|
+
knobs: {
|
|
706
|
+
...import_theme.defaultKnobs,
|
|
707
|
+
...knobUpdate
|
|
708
|
+
}
|
|
709
|
+
},
|
|
710
|
+
overrides: void 0
|
|
711
|
+
};
|
|
712
|
+
}, [knobUpdate, colorGlobal]);
|
|
713
|
+
var animationValue = presetCtxValue.preset.knobs.animation;
|
|
714
|
+
(0, import_react.useEffect)(function () {
|
|
715
|
+
var ms = animationValue === "none" ? "0ms" : animationValue === "quick" ? "100ms" : animationValue === "medium" ? "200ms" : animationValue === "slow" || animationValue === "lazy" ? "350ms" : animationValue === "bouncy" ? "300ms" : "200ms";
|
|
716
|
+
document.documentElement.style.setProperty("--mp-transition", ms);
|
|
717
|
+
}, [animationValue]);
|
|
718
|
+
var storyContent = /* @__PURE__ */(0, import_jsx_runtime.jsx)(CanvasBackground, {
|
|
719
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Story, {
|
|
720
|
+
...context
|
|
721
|
+
})
|
|
722
|
+
});
|
|
723
|
+
var oppositeScheme = resolvedScheme === "dark" ? "light" : "dark";
|
|
724
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.PresetContext.Provider, {
|
|
725
|
+
value: presetCtxValue,
|
|
726
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(AppProvider, {
|
|
727
|
+
themeConfig,
|
|
728
|
+
systemTheme: resolvedScheme,
|
|
729
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(AnimationNamesEmitter, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(FrappeDebugEmitter, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(BaseThemeColorEmitter, {}), colorGlobal ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Theme, {
|
|
730
|
+
name: colorGlobal,
|
|
731
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ThemeColorEmitter, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
732
|
+
event: accentColorsChannelEvent,
|
|
733
|
+
prefix: "accent"
|
|
734
|
+
}), storyContent]
|
|
735
|
+
}) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
736
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ThemeColorEmitter, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
737
|
+
event: accentColorsChannelEvent,
|
|
738
|
+
prefix: "accent"
|
|
739
|
+
}), storyContent]
|
|
740
|
+
}), /* Opposite scheme emitters */
|
|
741
|
+
/* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Theme, {
|
|
742
|
+
name: oppositeScheme,
|
|
743
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(OppositeThemeColorEmitter, {}), colorGlobal ? /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.Theme, {
|
|
744
|
+
name: colorGlobal,
|
|
745
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
746
|
+
event: baseOppositeChannelEvent
|
|
747
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
748
|
+
event: accentOppositeChannelEvent,
|
|
749
|
+
prefix: "accent"
|
|
750
|
+
})]
|
|
751
|
+
}) : /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
752
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
753
|
+
event: baseOppositeChannelEvent
|
|
754
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(ColorChannelEmitter, {
|
|
755
|
+
event: accentOppositeChannelEvent,
|
|
756
|
+
prefix: "accent"
|
|
757
|
+
})]
|
|
758
|
+
})]
|
|
759
|
+
})]
|
|
760
|
+
})
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
var frameworkDecorator = function frameworkDecorator2(Story, context) {
|
|
764
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_cookie.CookiesProvider, {
|
|
765
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(FrameworkDecoratorInner, {
|
|
766
|
+
Story,
|
|
767
|
+
context
|
|
768
|
+
})
|
|
769
|
+
});
|
|
770
|
+
};
|
|
771
|
+
return {
|
|
772
|
+
globalTypes,
|
|
773
|
+
initialGlobals,
|
|
774
|
+
parameters: {
|
|
775
|
+
...defaultParameters,
|
|
776
|
+
...extraParameters
|
|
777
|
+
},
|
|
778
|
+
decorators: [frameworkDecorator, ...extraDecorators]
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
//# sourceMappingURL=CreatePreview.native.js.map
|