@usertour/helpers 0.0.1

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 (81) hide show
  1. package/README.md +68 -0
  2. package/dist/auth.cjs +161 -0
  3. package/dist/auth.d.cts +8 -0
  4. package/dist/auth.d.ts +8 -0
  5. package/dist/auth.js +15 -0
  6. package/dist/chunk-2AEGAICC.js +13 -0
  7. package/dist/chunk-3KG2HTZ3.js +79 -0
  8. package/dist/chunk-3ZGH3NRU.js +103 -0
  9. package/dist/chunk-64BFWPHJ.js +50 -0
  10. package/dist/chunk-BBPZYUJR.js +28 -0
  11. package/dist/chunk-FGFMTWFT.js +23 -0
  12. package/dist/chunk-FNQIIEWK.js +121 -0
  13. package/dist/chunk-FW54TSA3.js +41 -0
  14. package/dist/chunk-G5P7KULU.js +223 -0
  15. package/dist/chunk-GFH3VWOC.js +70 -0
  16. package/dist/chunk-H7VA3ML2.js +29 -0
  17. package/dist/chunk-USHOKNHQ.js +243 -0
  18. package/dist/chunk-VT24VOAZ.js +48 -0
  19. package/dist/chunk-XEO3YXBM.js +10 -0
  20. package/dist/chunk-ZNFXGN3M.js +25 -0
  21. package/dist/color.cjs +84 -0
  22. package/dist/color.d.cts +29 -0
  23. package/dist/color.d.ts +29 -0
  24. package/dist/color.js +11 -0
  25. package/dist/condition.cjs +157 -0
  26. package/dist/condition.d.cts +7 -0
  27. package/dist/condition.d.ts +7 -0
  28. package/dist/condition.js +11 -0
  29. package/dist/content-settings.cjs +76 -0
  30. package/dist/content-settings.d.cts +7 -0
  31. package/dist/content-settings.d.ts +7 -0
  32. package/dist/content-settings.js +11 -0
  33. package/dist/content.cjs +53 -0
  34. package/dist/content.d.cts +6 -0
  35. package/dist/content.d.ts +6 -0
  36. package/dist/content.js +9 -0
  37. package/dist/convert-settings.cjs +308 -0
  38. package/dist/convert-settings.d.cts +7 -0
  39. package/dist/convert-settings.d.ts +7 -0
  40. package/dist/convert-settings.js +13 -0
  41. package/dist/error.cjs +259 -0
  42. package/dist/error.d.cts +56 -0
  43. package/dist/error.d.ts +56 -0
  44. package/dist/error.js +37 -0
  45. package/dist/globals.cjs +64 -0
  46. package/dist/globals.d.cts +27 -0
  47. package/dist/globals.d.ts +27 -0
  48. package/dist/globals.js +29 -0
  49. package/dist/helper.cjs +111 -0
  50. package/dist/helper.d.cts +17 -0
  51. package/dist/helper.d.ts +17 -0
  52. package/dist/helper.js +23 -0
  53. package/dist/index.cjs +1165 -0
  54. package/dist/index.d.cts +18 -0
  55. package/dist/index.d.ts +18 -0
  56. package/dist/index.js +178 -0
  57. package/dist/is-url.cjs +49 -0
  58. package/dist/is-url.d.cts +14 -0
  59. package/dist/is-url.d.ts +14 -0
  60. package/dist/is-url.js +7 -0
  61. package/dist/settings.cjs +65 -0
  62. package/dist/settings.d.cts +5 -0
  63. package/dist/settings.d.ts +5 -0
  64. package/dist/settings.js +7 -0
  65. package/dist/storage.cjs +142 -0
  66. package/dist/storage.d.cts +25 -0
  67. package/dist/storage.d.ts +25 -0
  68. package/dist/storage.js +8 -0
  69. package/dist/type-utils.cjs +109 -0
  70. package/dist/type-utils.d.cts +18 -0
  71. package/dist/type-utils.d.ts +18 -0
  72. package/dist/type-utils.js +37 -0
  73. package/dist/utils.cjs +37 -0
  74. package/dist/utils.d.cts +8 -0
  75. package/dist/utils.d.ts +8 -0
  76. package/dist/utils.js +7 -0
  77. package/dist/vite-env.d.cjs +1 -0
  78. package/dist/vite-env.d.d.cts +1 -0
  79. package/dist/vite-env.d.d.ts +1 -0
  80. package/dist/vite-env.d.js +0 -0
  81. package/package.json +56 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,1165 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var __publicField = (obj, key, value) => {
31
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
32
+ return value;
33
+ };
34
+
35
+ // src/index.ts
36
+ var src_exports = {};
37
+ __export(src_exports, {
38
+ AbortController: () => AbortController,
39
+ ArrayProto: () => ArrayProto,
40
+ XMLHttpRequest: () => XMLHttpRequest,
41
+ absoluteUrl: () => absoluteUrl,
42
+ assignableWindow: () => assignableWindow,
43
+ autoStartConditions: () => autoStartConditions,
44
+ buildConfig: () => buildConfig,
45
+ cn: () => cn,
46
+ conditionsIsSame: () => conditionsIsSame,
47
+ convertSettings: () => convertSettings,
48
+ convertToCssVars: () => convertToCssVars,
49
+ cuid: () => cuid,
50
+ deepClone: () => deepClone,
51
+ defaultContentConfig: () => defaultContentConfig,
52
+ defaultStep: () => defaultStep,
53
+ document: () => document,
54
+ evalCode: () => evalCode,
55
+ fetch: () => fetch,
56
+ formatDate: () => formatDate,
57
+ generateAutoStateColors: () => generateAutoStateColors,
58
+ getAuthToken: () => getAuthToken,
59
+ getCodeError: () => getCodeError,
60
+ getContentError: () => getContentError,
61
+ getCurrentTimeError: () => getCurrentTimeError,
62
+ getElementError: () => getElementError,
63
+ getErrorMessage: () => getErrorMessage,
64
+ getNavitateError: () => getNavitateError,
65
+ getRandomColor: () => getRandomColor,
66
+ getSegmentError: () => getSegmentError,
67
+ getStepError: () => getStepError,
68
+ getTextFillError: () => getTextFillError,
69
+ getTextInputError: () => getTextInputError,
70
+ getUrlPatternError: () => getUrlPatternError,
71
+ getUserAttrError: () => getUserAttrError,
72
+ getWaitError: () => getWaitError,
73
+ hasActionError: () => hasActionError,
74
+ hasError: () => hasError,
75
+ hexToHSLString: () => hexToHSLString,
76
+ hexToRGBStr: () => hexToRGBStr,
77
+ hexToRgb: () => hexToRgb,
78
+ isArray: () => isArray,
79
+ isBoolean: () => isBoolean,
80
+ isDark: () => isDark,
81
+ isDate: () => isDate,
82
+ isDocument: () => isDocument,
83
+ isEmptyObject: () => isEmptyObject,
84
+ isEmptyString: () => isEmptyString,
85
+ isEqual: () => import_fast_deep_equal.default,
86
+ isFile: () => isFile,
87
+ isFormData: () => isFormData,
88
+ isFunction: () => isFunction,
89
+ isMatchUrlPattern: () => isMatchUrlPattern,
90
+ isNull: () => isNull,
91
+ isNullish: () => isNullish,
92
+ isNumber: () => isNumber,
93
+ isObject: () => isObject,
94
+ isPublishedAtLeastOneEnvironment: () => isPublishedAtLeastOneEnvironment,
95
+ isPublishedInAllEnvironments: () => isPublishedInAllEnvironments,
96
+ isString: () => isString,
97
+ isUint8Array: () => isUint8Array,
98
+ isUndefined: () => isUndefined,
99
+ isUrl: () => isUrl,
100
+ isValidSelector: () => isValidSelector,
101
+ location: () => location,
102
+ mergeThemeDefaultSettings: () => mergeThemeDefaultSettings,
103
+ nativeForEach: () => nativeForEach,
104
+ nativeIndexOf: () => nativeIndexOf,
105
+ navigator: () => navigator,
106
+ removeAuthToken: () => removeAuthToken,
107
+ setAuthToken: () => setAuthToken,
108
+ storage: () => storage,
109
+ userAgent: () => userAgent,
110
+ uuidV4: () => uuidV4,
111
+ window: () => win
112
+ });
113
+ module.exports = __toCommonJS(src_exports);
114
+
115
+ // src/convert-settings.ts
116
+ var import_types = require("@usertour/types");
117
+
118
+ // src/color.ts
119
+ var import_chroma_js = __toESM(require("chroma-js"), 1);
120
+ function hexToHSLString(hexColor) {
121
+ try {
122
+ const color = (0, import_chroma_js.default)(hexColor);
123
+ const [h, s, l] = color.hsl();
124
+ const hDeg = Math.round(h || 0);
125
+ const sPct = Math.round(s * 100);
126
+ const lPct = Math.round(l * 100);
127
+ return `${hDeg} ${sPct}% ${lPct}%`;
128
+ } catch (error) {
129
+ console.warn(`Failed to convert ${hexColor} to HSL string:`, error);
130
+ return "0 0% 0%";
131
+ }
132
+ }
133
+ var hexToRGBStr = (hex) => {
134
+ try {
135
+ const color = (0, import_chroma_js.default)(hex);
136
+ const [r, g, b] = color.rgb();
137
+ return `${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}`;
138
+ } catch (error) {
139
+ console.warn(`Failed to convert ${hex} to RGB string:`, error);
140
+ return "0, 0, 0";
141
+ }
142
+ };
143
+ function generateAutoStateColors(baseColor, brandColor, hoverRatio = 0.12, activeRatio = 0.24) {
144
+ const isBaseLight = (0, import_chroma_js.default)(baseColor).luminance() > 0.8;
145
+ const isBaseBrand = import_chroma_js.default.distance(baseColor, brandColor) < 10;
146
+ let hover;
147
+ let active;
148
+ if (isBaseBrand) {
149
+ hover = import_chroma_js.default.mix(baseColor, "#fff", hoverRatio, "rgb").hex();
150
+ active = import_chroma_js.default.mix(baseColor, "#fff", activeRatio, "rgb").hex();
151
+ } else if (isBaseLight) {
152
+ hover = import_chroma_js.default.mix(baseColor, brandColor, hoverRatio, "rgb").hex();
153
+ active = import_chroma_js.default.mix(baseColor, brandColor, activeRatio, "rgb").hex();
154
+ } else {
155
+ hover = import_chroma_js.default.mix(baseColor, brandColor, hoverRatio, "rgb").hex();
156
+ active = import_chroma_js.default.mix(baseColor, brandColor, activeRatio, "rgb").hex();
157
+ }
158
+ return { hover, active };
159
+ }
160
+
161
+ // src/convert-settings.ts
162
+ var import_deepmerge_ts = require("deepmerge-ts");
163
+
164
+ // src/type-utils.ts
165
+ var nativeIsArray = Array.isArray;
166
+ var ObjProto = Object.prototype;
167
+ var objToString = ObjProto.toString;
168
+ var objHasOwn = ObjProto.hasOwnProperty;
169
+ var isArray = nativeIsArray || ((obj) => objToString.call(obj) === "[object Array]");
170
+ var isUint8Array = (x) => objToString.call(x) === "[object Uint8Array]";
171
+ var isFunction = (f) => {
172
+ return typeof f === "function";
173
+ };
174
+ var isObject = (x) => {
175
+ return x === Object(x) && !isArray(x);
176
+ };
177
+ var isEmptyObject = (x) => {
178
+ if (isObject(x)) {
179
+ for (const key in x) {
180
+ if (objHasOwn.call(x, key)) {
181
+ return false;
182
+ }
183
+ }
184
+ return true;
185
+ }
186
+ return false;
187
+ };
188
+ var isUndefined = (x) => x === void 0;
189
+ var isString = (x) => {
190
+ return objToString.call(x) === "[object String]";
191
+ };
192
+ var isEmptyString = (x) => isString(x) && x.trim().length === 0;
193
+ var isNull = (x) => {
194
+ return x === null;
195
+ };
196
+ var isNullish = (x) => isUndefined(x) || isNull(x);
197
+ var isDate = (x) => {
198
+ return objToString.call(x) === "[object Date]";
199
+ };
200
+ var isNumber = (x) => {
201
+ return objToString.call(x) === "[object Number]";
202
+ };
203
+ var isBoolean = (x) => {
204
+ return objToString.call(x) === "[object Boolean]";
205
+ };
206
+ var isDocument = (x) => {
207
+ return x instanceof Document;
208
+ };
209
+ var isFormData = (x) => {
210
+ return x instanceof FormData;
211
+ };
212
+ var isFile = (x) => {
213
+ return x instanceof File;
214
+ };
215
+
216
+ // src/convert-settings.ts
217
+ var defaultFontFamily = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"';
218
+ var mergeThemeDefaultSettings = (settings) => {
219
+ return (0, import_deepmerge_ts.deepmerge)(import_types.defaultSettings, settings);
220
+ };
221
+ var convertSettings = (settings) => {
222
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
223
+ const data = mergeThemeDefaultSettings(settings);
224
+ if (settings.mainColor.hover === "Auto") {
225
+ data.mainColor.hover = settings.mainColor.autoHover;
226
+ }
227
+ if (settings.mainColor.active === "Auto") {
228
+ data.mainColor.active = settings.mainColor.autoActive;
229
+ }
230
+ if (settings.brandColor.hover === "Auto") {
231
+ data.brandColor.hover = settings.brandColor.autoHover;
232
+ }
233
+ if (settings.brandColor.active === "Auto") {
234
+ data.brandColor.active = settings.brandColor.autoActive;
235
+ }
236
+ if (settings.border.borderColor === "Auto") {
237
+ data.border.borderColor = settings.mainColor.color;
238
+ }
239
+ if (settings.buttons.primary.textColor.color === "Auto") {
240
+ data.buttons.primary.textColor.color = settings.brandColor.color;
241
+ }
242
+ if (settings.buttons.primary.textColor.hover === "Auto") {
243
+ data.buttons.primary.textColor.hover = settings.brandColor.color;
244
+ }
245
+ if (settings.buttons.primary.textColor.active === "Auto") {
246
+ data.buttons.primary.textColor.active = settings.brandColor.color;
247
+ }
248
+ if (settings.buttons.primary.backgroundColor.background === "Auto") {
249
+ data.buttons.primary.backgroundColor.background = settings.brandColor.background;
250
+ }
251
+ if (settings.buttons.primary.backgroundColor.hover === "Auto") {
252
+ data.buttons.primary.backgroundColor.hover = settings.brandColor.autoHover;
253
+ }
254
+ if (settings.buttons.primary.backgroundColor.active === "Auto") {
255
+ data.buttons.primary.backgroundColor.active = settings.brandColor.autoActive;
256
+ }
257
+ if (settings.buttons.primary.border.color.color === "Auto") {
258
+ data.buttons.primary.border.color.color = settings.brandColor.background;
259
+ }
260
+ if (settings.buttons.primary.border.color.hover === "Auto") {
261
+ data.buttons.primary.border.color.hover = settings.brandColor.autoHover;
262
+ }
263
+ if (settings.buttons.primary.border.color.active === "Auto") {
264
+ data.buttons.primary.border.color.active = settings.brandColor.autoActive;
265
+ }
266
+ if (settings.buttons.secondary.textColor.color === "Auto") {
267
+ data.buttons.secondary.textColor.color = settings.brandColor.background;
268
+ }
269
+ if (settings.buttons.secondary.textColor.hover === "Auto") {
270
+ data.buttons.secondary.textColor.hover = settings.brandColor.background;
271
+ }
272
+ if (settings.buttons.secondary.textColor.active === "Auto") {
273
+ data.buttons.secondary.textColor.active = settings.brandColor.background;
274
+ }
275
+ if (settings.buttons.secondary.backgroundColor.background === "Auto") {
276
+ data.buttons.secondary.backgroundColor.background = settings.mainColor.background;
277
+ }
278
+ if (settings.buttons.secondary.backgroundColor.hover === "Auto") {
279
+ data.buttons.secondary.backgroundColor.hover = settings.mainColor.autoHover;
280
+ }
281
+ if (settings.buttons.secondary.backgroundColor.active === "Auto") {
282
+ data.buttons.secondary.backgroundColor.active = settings.mainColor.autoActive;
283
+ }
284
+ if (settings.buttons.secondary.border.color.color === "Auto") {
285
+ data.buttons.secondary.border.color.color = settings.brandColor.background;
286
+ }
287
+ if (settings.buttons.secondary.border.color.hover === "Auto") {
288
+ data.buttons.secondary.border.color.hover = settings.brandColor.background;
289
+ }
290
+ if (settings.buttons.secondary.border.color.active === "Auto") {
291
+ data.buttons.secondary.border.color.active = settings.brandColor.background;
292
+ }
293
+ if (settings.font.linkColor === "Auto") {
294
+ data.font.linkColor = settings.brandColor.background;
295
+ }
296
+ if (settings.xbutton.color === "Auto") {
297
+ data.xbutton.color = settings.brandColor.background;
298
+ }
299
+ if (((_a = settings == null ? void 0 : settings.progress) == null ? void 0 : _a.color) === "Auto") {
300
+ data.progress.color = settings.brandColor.background;
301
+ }
302
+ if (((_b = settings == null ? void 0 : settings.launcherBeacon) == null ? void 0 : _b.color) === "Auto") {
303
+ data.launcherBeacon.color = settings.brandColor.background;
304
+ }
305
+ if (((_d = (_c = settings == null ? void 0 : settings.launcherIcon) == null ? void 0 : _c.color) == null ? void 0 : _d.color) === "Auto") {
306
+ data.launcherIcon.color.color = settings.brandColor.background;
307
+ }
308
+ if (((_f = (_e = settings == null ? void 0 : settings.launcherIcon) == null ? void 0 : _e.color) == null ? void 0 : _f.hover) === "Auto") {
309
+ data.launcherIcon.color.hover = settings.brandColor.autoHover;
310
+ }
311
+ if (((_h = (_g = settings == null ? void 0 : settings.launcherIcon) == null ? void 0 : _g.color) == null ? void 0 : _h.active) === "Auto") {
312
+ data.launcherIcon.color.active = settings.brandColor.autoActive;
313
+ }
314
+ if (((_j = (_i = settings.checklistLauncher) == null ? void 0 : _i.color) == null ? void 0 : _j.color) === "Auto") {
315
+ data.checklistLauncher.color.color = settings.brandColor.color;
316
+ }
317
+ if (((_l = (_k = settings.checklistLauncher) == null ? void 0 : _k.color) == null ? void 0 : _l.background) === "Auto") {
318
+ data.checklistLauncher.color.background = settings.brandColor.background;
319
+ }
320
+ if (((_n = (_m = settings.checklistLauncher) == null ? void 0 : _m.color) == null ? void 0 : _n.hover) === "Auto") {
321
+ data.checklistLauncher.color.hover = settings.brandColor.autoHover;
322
+ }
323
+ if (((_p = (_o = settings.checklistLauncher) == null ? void 0 : _o.color) == null ? void 0 : _p.active) === "Auto") {
324
+ data.checklistLauncher.color.active = settings.brandColor.autoActive;
325
+ }
326
+ if (((_r = (_q = settings.checklistLauncher) == null ? void 0 : _q.counter) == null ? void 0 : _r.color) === "Auto") {
327
+ data.checklistLauncher.counter.color = settings.brandColor.background;
328
+ }
329
+ if (((_t = (_s = settings.checklistLauncher) == null ? void 0 : _s.counter) == null ? void 0 : _t.background) === "Auto") {
330
+ data.checklistLauncher.counter.background = settings.brandColor.color;
331
+ }
332
+ if (((_u = settings.survey) == null ? void 0 : _u.color) === "Auto") {
333
+ data.survey.color = settings.brandColor.background;
334
+ }
335
+ if (settings.font.fontFamily === "System font") {
336
+ data.font.fontFamily = defaultFontFamily;
337
+ } else {
338
+ data.font.fontFamily += ", sans-serif;";
339
+ }
340
+ return data;
341
+ };
342
+ var convertToCssVars = (settings, type = "tooltip") => {
343
+ const cssMapping = {
344
+ "--usertour-background": hexToHSLString(settings.mainColor.background),
345
+ "--usertour-foreground": hexToHSLString(settings.mainColor.color),
346
+ "--usertour-brand-active-background-color": hexToHSLString(
347
+ settings.brandColor.autoActive
348
+ ),
349
+ "--usertour-brand-hover-background-color": hexToHSLString(
350
+ settings.brandColor.autoHover
351
+ ),
352
+ "--usertour-font-family": settings.font.fontFamily,
353
+ "--usertour-font-size": `${settings.font.fontSize}px`,
354
+ "--usertour-main-background-color": settings.mainColor.background,
355
+ "--usertour-main-foreground-color": settings.mainColor.color,
356
+ "--usertour-main-hover-background-color": hexToHSLString(
357
+ settings.mainColor.autoHover
358
+ ),
359
+ "--usertour-main-active-background-color": hexToHSLString(
360
+ settings.mainColor.autoActive
361
+ ),
362
+ "--usertour-line-height": `${settings.font.lineHeight}px`,
363
+ "--usertour-widget-popper-border-radius": `${settings.border.borderRadius}px`,
364
+ "--usertour-font-weight-normal": settings.font.fontWeightNormal,
365
+ "--usertour-font-weight-bold": settings.font.fontWeightBold,
366
+ "--usertour-h1-font-size": `${settings.font.h1FontSize}px`,
367
+ "--usertour-h2-font-size": `${settings.font.h2FontSize}px`,
368
+ "--usertour-link-color": hexToHSLString(settings.font.linkColor),
369
+ "--usertour-widget-popper-border-width": settings.border.borderWidthEnabled ? `${settings.border.borderWidth}px` : "0px",
370
+ "--usertour-widget-popper-border-color": settings.border.borderColor,
371
+ "--usertour-button-border-radius": `${settings.buttons.borderRadius}px`,
372
+ "--usertour-button-height": `${settings.buttons.height}px`,
373
+ "--usertour-button-min-width": `${settings.buttons.minWidth}px`,
374
+ "--usertour-button-px": `${settings.buttons.px}px`,
375
+ "--usertour-primary": settings.buttons.primary.backgroundColor.background,
376
+ "--usertour-primary-hover": settings.buttons.primary.backgroundColor.hover,
377
+ "--usertour-primary-active": settings.buttons.primary.backgroundColor.active,
378
+ "--usertour-primary-foreground": settings.buttons.primary.textColor.color,
379
+ "--usertour-primary-foreground-hover": settings.buttons.primary.textColor.hover,
380
+ "--usertour-primary-foreground-active": settings.buttons.primary.textColor.active,
381
+ "--usertour-primary-border-width": settings.buttons.primary.border.enabled ? `${settings.buttons.primary.border.borderWidth}px` : "0px",
382
+ "--usertour-primary-border-color": settings.buttons.primary.border.color.color,
383
+ "--usertour-primary-border-hover": settings.buttons.primary.border.color.hover,
384
+ "--usertour-primary-border-active": settings.buttons.primary.border.color.active,
385
+ "--usertour-primary-font-weight": settings.buttons.primary.fontWeight,
386
+ "--usertour-secondary": settings.buttons.secondary.backgroundColor.background,
387
+ "--usertour-secondary-hover": settings.buttons.secondary.backgroundColor.hover,
388
+ "--usertour-secondary-active": settings.buttons.secondary.backgroundColor.active,
389
+ "--usertour-secondary-foreground": settings.buttons.secondary.textColor.color,
390
+ "--usertour-secondary-foreground-hover": settings.buttons.secondary.textColor.hover,
391
+ "--usertour-secondary-foreground-active": settings.buttons.secondary.textColor.active,
392
+ "--usertour-secondary-border-width": settings.buttons.secondary.border.enabled ? `${settings.buttons.secondary.border.borderWidth}px` : "0px",
393
+ "--usertour-secondary-border-color": settings.buttons.secondary.border.color.color,
394
+ "--usertour-secondary-border-hover": settings.buttons.secondary.border.color.hover,
395
+ "--usertour-secondary-border-active": settings.buttons.secondary.border.color.active,
396
+ "--usertour-secondary-font-weight": settings.buttons.secondary.fontWeight,
397
+ "--usertour-backdrop-color-rgb": hexToRGBStr(settings.backdrop.color),
398
+ "--usertour-backdrop-highlight-inset": settings.backdrop.highlight.type === "inside" ? "inset" : null,
399
+ "--usertour-backdrop-highlight-color-rgb": hexToRGBStr(settings.backdrop.highlight.color),
400
+ "--usertour-backdrop-highlight-opacity": settings.backdrop.highlight.opacity / 100,
401
+ "--usertour-backdrop-highlight-radius": `${settings.backdrop.highlight.radius}px`,
402
+ "--usertour-backdrop-highlight-spread": `${settings.backdrop.highlight.spread}px`,
403
+ "--usertour-backdrop-opacity": settings.backdrop.opacity / 100,
404
+ "--usertour-progress-bar-color": settings.progress.color,
405
+ "--usertour-progress-bar-height": `${settings.progress.height}px`,
406
+ "--usertour-narrow-progress-bar-height": `${settings.progress.narrowHeight}px`,
407
+ "--usertour-squared-progress-bar-height": `${settings.progress.chainSquaredHeight}px`,
408
+ "--usertour-rounded-progress-bar-height": `${settings.progress.chainRoundedHeight}px`,
409
+ "--usertour-dotted-progress-bar-height": `${settings.progress.dotsHeight}px`,
410
+ "--usertour-numbered-progress-bar-height": `${settings.progress.numberedHeight}px`,
411
+ "--usertour-widget-popper-padding": type === "modal" ? `${settings.modal.padding}px` : void 0,
412
+ "--usertour-xbutton": settings.xbutton.color,
413
+ "--usertour-widget-launcher-icon-color": settings.launcherIcon.color.color,
414
+ "--usertour-widget-launcher-icon-hover-color": settings.launcherIcon.color.hover,
415
+ "--usertour-widget-launcher-icon-active-color": settings.launcherIcon.color.active,
416
+ "--usertour-widget-launcher-icon-size": `${settings.launcherIcon.size}px`,
417
+ "--usertour-widget-beacon-color": settings.launcherBeacon.color,
418
+ "--usertour-widget-launcher-icon-opacity": settings.launcherIcon.opacity / 100,
419
+ "--usertour-widget-popper-padding-top": "2px",
420
+ "--usertour-widget-popper-padding-bottom": "2px",
421
+ "--usertour-checklist-trigger-active-background-color": settings.checklistLauncher.color.active,
422
+ "--usertour-checklist-trigger-background-color": settings.checklistLauncher.color.background,
423
+ "--usertour-checklist-trigger-border-radius": `${settings.checklistLauncher.borderRadius}px`,
424
+ "--usertour-checklist-trigger-counter-background-color": settings.checklistLauncher.counter.background,
425
+ "--usertour-checklist-trigger-counter-font-color": settings.checklistLauncher.counter.color,
426
+ "--usertour-checklist-trigger-font-color-rgb": settings.checklistLauncher.color.color,
427
+ "--usertour-checklist-trigger-font-color": settings.checklistLauncher.color.color,
428
+ "--usertour-checklist-trigger-font-weight": settings.checklistLauncher.fontWeight,
429
+ "--usertour-checkmark-background-color": settings.checklist.checkmarkColor,
430
+ "--usertour-checklist-trigger-height": `${settings.checklistLauncher.height}px`,
431
+ "--usertour-checklist-trigger-hover-background-color": settings.checklistLauncher.color.hover,
432
+ "--usertour-question-color": hexToHSLString(settings.survey.color)
433
+ };
434
+ let css = "";
435
+ for (const key in cssMapping) {
436
+ const value = cssMapping[key];
437
+ if (!isUndefined(value)) {
438
+ css += `${key}:${value};`;
439
+ }
440
+ }
441
+ return css;
442
+ };
443
+
444
+ // src/condition.ts
445
+ var import_fast_deep_equal = __toESM(require("fast-deep-equal"), 1);
446
+ var parseUrl = (url) => {
447
+ const urlPatterns = url.match(/^(([a-z\d]+):\/\/)?([^/?#]+)?(\/[^?#]*)?(\?([^#]*))?(#.*)?$/i);
448
+ if (!urlPatterns) {
449
+ return null;
450
+ }
451
+ const [, , scheme = "", domain = "", path = "", , query = "", fragment = ""] = urlPatterns;
452
+ return { scheme, domain, path, query, fragment };
453
+ };
454
+ var replaceWildcard = (input, s1, s2) => {
455
+ const withSpecialWords = replaceSpecialWords(input);
456
+ const withWildcard = withSpecialWords.replace(/\\\*/g, `${s1}*`);
457
+ if (!s2) {
458
+ return withWildcard;
459
+ }
460
+ return withWildcard.replace(/:[a-z0-9_]+/g, `[^${s2}]+`);
461
+ };
462
+ var replaceSpecialWords = (str) => {
463
+ return str.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
464
+ };
465
+ var parsePattern = (pattern) => {
466
+ if (!pattern || !pattern.trim()) {
467
+ return null;
468
+ }
469
+ const _pattern = parseUrl(pattern);
470
+ if (!_pattern) {
471
+ console.error("Invalid URL pattern:", pattern);
472
+ return null;
473
+ }
474
+ const { scheme, domain, path, query, fragment } = _pattern;
475
+ const _scheme = scheme ? replaceSpecialWords(scheme) : "[a-z\\d]+";
476
+ const _domain = domain ? replaceWildcard(domain, "[^/]", ".") : "[^/]*";
477
+ const _fragment = fragment ? replaceWildcard(fragment, ".", "/") : "(#.*)?";
478
+ const _path = path ? replaceWildcard(path, "[^?#]", "/") : "/[^?#]*";
479
+ let _query = "(\\?[^#]*)?";
480
+ if (query) {
481
+ new URLSearchParams(query).forEach((value, key) => {
482
+ const _str = value === "" ? "=?" : value === "*" ? "(=[^&#]*)?" : `=${replaceWildcard(value, "[^#]")}`;
483
+ _query += `(?=.*[?&]${replaceSpecialWords(key)}${_str}([&#]|$))`;
484
+ });
485
+ _query += "\\?[^#]*";
486
+ }
487
+ return new RegExp(`^${_scheme}://${_domain}(:\\d+)?${_path}${_query}${_fragment}$`);
488
+ };
489
+ var isMatchUrlPattern = (_url, includes, excludes) => {
490
+ const isMatchIncludesConditions = includes.length > 0 ? includes.some((_include) => {
491
+ const reg = parsePattern(_include);
492
+ if (reg) {
493
+ return reg.test(_url);
494
+ }
495
+ return false;
496
+ }) : true;
497
+ const isMatchExcludesConditions = excludes.length > 0 ? excludes.some((_exclude) => {
498
+ const reg = parsePattern(_exclude);
499
+ if (reg) {
500
+ return reg.test(_url);
501
+ }
502
+ return false;
503
+ }) : false;
504
+ return isMatchIncludesConditions && !isMatchExcludesConditions;
505
+ };
506
+ var compareConditionsItem = (item1, item2) => {
507
+ const { data = {}, ...others1 } = item1;
508
+ const { data: data2 = {}, ...others2 } = item2;
509
+ if (!(0, import_fast_deep_equal.default)(others2, others1)) {
510
+ return false;
511
+ }
512
+ for (const key in data) {
513
+ if (!(0, import_fast_deep_equal.default)(data[key], data2[key])) {
514
+ return false;
515
+ }
516
+ }
517
+ return true;
518
+ };
519
+ var conditionsIsSame = (rr1, rr2) => {
520
+ const r1 = [...rr1];
521
+ const r2 = [...rr2];
522
+ if (r1.length === 0 && r2.length === 0) {
523
+ return true;
524
+ }
525
+ if (r1.length !== r2.length) {
526
+ return false;
527
+ }
528
+ const group1 = r1.filter((item) => item.type === "group");
529
+ const group2 = r2.filter((item) => item.type === "group");
530
+ if (group1.length !== group2.length) {
531
+ return false;
532
+ }
533
+ for (let index = 0; index < r1.length; index++) {
534
+ const item1 = r1[index];
535
+ const item2 = r2[index];
536
+ if (!item1 || !item2) {
537
+ return false;
538
+ }
539
+ if (item1.type === "group") {
540
+ if (!item2.conditions) {
541
+ return false;
542
+ }
543
+ const c1 = item1.conditions;
544
+ const c2 = item2.conditions;
545
+ if (item1.operators !== item2.operators) {
546
+ return false;
547
+ }
548
+ if (!conditionsIsSame(c1, c2)) {
549
+ return false;
550
+ }
551
+ } else {
552
+ if (!compareConditionsItem(item1, item2)) {
553
+ return false;
554
+ }
555
+ }
556
+ }
557
+ return true;
558
+ };
559
+
560
+ // src/content-settings.ts
561
+ var import_types2 = require("@usertour/types");
562
+ var import_deepmerge_ts2 = require("deepmerge-ts");
563
+ var rulesSetting = {
564
+ // frequency: {
565
+ // frequency: Frequency.ONCE,
566
+ // every: { duration: 0, times: 1, unit: FrequencyUnits.MINUTES },
567
+ // atLeast: { duration: 0, unit: FrequencyUnits.MINUTES },
568
+ // },
569
+ startIfNotComplete: false,
570
+ priority: import_types2.ContentPriority.MEDIUM,
571
+ wait: 0
572
+ };
573
+ var hideRulesSetting = {};
574
+ var defaultContentConfig = {
575
+ enabledAutoStartRules: false,
576
+ enabledHideRules: false,
577
+ autoStartRules: [],
578
+ hideRules: [],
579
+ autoStartRulesSetting: rulesSetting,
580
+ hideRulesSetting
581
+ };
582
+ var autoStartConditions = {
583
+ ...defaultContentConfig,
584
+ enabledAutoStartRules: true,
585
+ autoStartRules: [
586
+ {
587
+ data: { excludes: [], includes: ["/*"] },
588
+ type: "current-page",
589
+ operators: "and"
590
+ }
591
+ ]
592
+ };
593
+ var buildConfig = (config) => {
594
+ return {
595
+ ...defaultContentConfig,
596
+ ...config,
597
+ autoStartRulesSetting: (0, import_deepmerge_ts2.deepmerge)(
598
+ defaultContentConfig.autoStartRulesSetting,
599
+ (config == null ? void 0 : config.autoStartRulesSetting) || {}
600
+ ),
601
+ hideRulesSetting: (config == null ? void 0 : config.hideRulesSetting) || {}
602
+ };
603
+ };
604
+
605
+ // src/error.ts
606
+ var import_types3 = require("@usertour/types");
607
+ var isValidSelector = (selector) => {
608
+ if (!selector) {
609
+ return false;
610
+ }
611
+ if (selector.type === "auto" && !selector.selectors) {
612
+ return false;
613
+ }
614
+ if (selector.type === "manual" && !selector.customSelector) {
615
+ return false;
616
+ }
617
+ return true;
618
+ };
619
+ var getUserAttrError = (data, attributes) => {
620
+ const ret = { showError: false, errorInfo: "" };
621
+ const item = attributes.find((item2) => item2.id === (data == null ? void 0 : data.attrId));
622
+ if (!(data == null ? void 0 : data.attrId) || !item) {
623
+ ret.showError = true;
624
+ ret.errorInfo = "Please select a attribute";
625
+ } else if ((data == null ? void 0 : data.logic) === "between" && (!(data == null ? void 0 : data.value) || !(data == null ? void 0 : data.value2))) {
626
+ ret.showError = true;
627
+ ret.errorInfo = "Please enter a value";
628
+ } else if ((item == null ? void 0 : item.dataType) !== import_types3.AttributeDataType.Boolean) {
629
+ if (data.logic !== "any" && data.logic !== "empty") {
630
+ if ((item == null ? void 0 : item.dataType) === import_types3.AttributeDataType.List) {
631
+ if (!data.listValues || data.listValues.length === 0) {
632
+ ret.showError = true;
633
+ ret.errorInfo = "Please enter a value";
634
+ }
635
+ } else {
636
+ if (!data.value || data.value === "") {
637
+ ret.showError = true;
638
+ ret.errorInfo = "Please enter a value";
639
+ }
640
+ }
641
+ }
642
+ }
643
+ return ret;
644
+ };
645
+ var getUrlPatternError = (data) => {
646
+ const ret = { showError: false, errorInfo: "" };
647
+ const hasExcludes = data.excludes && data.excludes.length > 0;
648
+ const hasIncludes = data.includes && data.includes.length > 0;
649
+ if (!hasExcludes && !hasIncludes) {
650
+ ret.showError = true;
651
+ ret.errorInfo = "Enter at least one URL pattern";
652
+ }
653
+ return ret;
654
+ };
655
+ var getCurrentTimeError = (data) => {
656
+ const ret = { showError: false, errorInfo: "" };
657
+ if (!data.startDate && !data.endDate) {
658
+ ret.showError = true;
659
+ ret.errorInfo = "Either start or end time be filled in";
660
+ }
661
+ return ret;
662
+ };
663
+ var getWaitError = (data) => {
664
+ const ret = { showError: false, errorInfo: "" };
665
+ if (data.second === void 0) {
666
+ ret.showError = true;
667
+ ret.errorInfo = "Enter wait time";
668
+ }
669
+ return ret;
670
+ };
671
+ var getElementError = (data) => {
672
+ const ret = { showError: false, errorInfo: "" };
673
+ if (!isValidSelector(data.elementData)) {
674
+ ret.showError = true;
675
+ ret.errorInfo = "Please select an element";
676
+ }
677
+ return ret;
678
+ };
679
+ var getTextInputError = (data) => {
680
+ const ret = { showError: false, errorInfo: "" };
681
+ if (data.logic !== "any" && data.logic !== "empty" && data.value === "") {
682
+ ret.showError = true;
683
+ ret.errorInfo = "Please enter a value";
684
+ } else if (!isValidSelector(data.elementData)) {
685
+ ret.showError = true;
686
+ ret.errorInfo = "Please select an element";
687
+ }
688
+ return ret;
689
+ };
690
+ var getTextFillError = (data) => {
691
+ const ret = { showError: false, errorInfo: "" };
692
+ if (!isValidSelector(data.elementData)) {
693
+ ret.showError = true;
694
+ ret.errorInfo = "Please select an element";
695
+ }
696
+ return ret;
697
+ };
698
+ var getSegmentError = (data) => {
699
+ const ret = { showError: false, errorInfo: "" };
700
+ if (!data.segmentId) {
701
+ ret.showError = true;
702
+ ret.errorInfo = "Please select an segment";
703
+ }
704
+ return ret;
705
+ };
706
+ var getContentError = (data) => {
707
+ const ret = { showError: false, errorInfo: "" };
708
+ if (!data.contentId) {
709
+ ret.showError = true;
710
+ ret.errorInfo = "Please select a flow";
711
+ }
712
+ return ret;
713
+ };
714
+ var getStepError = (data) => {
715
+ const ret = { showError: false, errorInfo: "" };
716
+ if (!data.stepCvid) {
717
+ ret.showError = true;
718
+ ret.errorInfo = "Please select a step";
719
+ }
720
+ return ret;
721
+ };
722
+ var getNavitateError = (data) => {
723
+ const ret = { showError: false, errorInfo: "" };
724
+ if (!data.value || data.value === "") {
725
+ ret.showError = true;
726
+ ret.errorInfo = "Enter the navigator url";
727
+ }
728
+ return ret;
729
+ };
730
+ var getCodeError = (data) => {
731
+ const ret = { showError: false, errorInfo: "" };
732
+ if (!data.value) {
733
+ ret.showError = true;
734
+ ret.errorInfo = "Enter the code ";
735
+ }
736
+ return ret;
737
+ };
738
+ var errorHandlerMapping = {
739
+ "current-page": getUrlPatternError,
740
+ "user-attr": getUserAttrError,
741
+ time: getCurrentTimeError,
742
+ wait: getWaitError,
743
+ element: getElementError,
744
+ "text-input": getTextInputError,
745
+ "text-fill": getTextFillError,
746
+ segment: getSegmentError,
747
+ content: getContentError
748
+ };
749
+ var hasError = (conds, attributes) => {
750
+ for (const cond of conds) {
751
+ const condType = cond.type;
752
+ const condErroFn = errorHandlerMapping[condType];
753
+ if (condErroFn) {
754
+ const { showError } = condErroFn(cond.data, attributes);
755
+ if (showError) {
756
+ return true;
757
+ }
758
+ }
759
+ if (cond.conditions) {
760
+ if (hasError(cond.conditions, attributes) === true) {
761
+ return true;
762
+ }
763
+ }
764
+ }
765
+ return false;
766
+ };
767
+ var errorActionHandlerMapping = {
768
+ [import_types3.ContentActionsItemType.STEP_GOTO]: getStepError,
769
+ [import_types3.ContentActionsItemType.PAGE_NAVIGATE]: getNavitateError,
770
+ [import_types3.ContentActionsItemType.FLOW_START]: getContentError,
771
+ [import_types3.ContentActionsItemType.JAVASCRIPT_EVALUATE]: getCodeError
772
+ };
773
+ var hasActionError = (conds) => {
774
+ for (const cond of conds) {
775
+ const condType = cond.type;
776
+ const condErroFn = errorActionHandlerMapping[condType];
777
+ if (condErroFn) {
778
+ const { showError } = condErroFn(cond.data);
779
+ if (showError) {
780
+ return true;
781
+ }
782
+ }
783
+ if (cond.conditions) {
784
+ if (hasActionError(cond.conditions) === true) {
785
+ return true;
786
+ }
787
+ }
788
+ }
789
+ return false;
790
+ };
791
+ function isErrorWithMessage(error) {
792
+ return typeof error === "object" && error !== null && "message" in error && typeof error.message === "string";
793
+ }
794
+ function toErrorWithMessage(maybeError) {
795
+ if (isErrorWithMessage(maybeError))
796
+ return maybeError;
797
+ try {
798
+ return new Error(JSON.stringify(maybeError));
799
+ } catch {
800
+ return new Error(String(maybeError));
801
+ }
802
+ }
803
+ function getErrorMessage(error) {
804
+ return toErrorWithMessage(error).message;
805
+ }
806
+
807
+ // src/globals.ts
808
+ var win = typeof window !== "undefined" ? window : void 0;
809
+ var global = typeof globalThis !== "undefined" ? globalThis : win;
810
+ var ArrayProto = Array.prototype;
811
+ var nativeForEach = ArrayProto.forEach;
812
+ var nativeIndexOf = ArrayProto.indexOf;
813
+ var navigator = global == null ? void 0 : global.navigator;
814
+ var document = global == null ? void 0 : global.document;
815
+ var location = global == null ? void 0 : global.location;
816
+ var fetch = global == null ? void 0 : global.fetch;
817
+ var XMLHttpRequest = (global == null ? void 0 : global.XMLHttpRequest) && "withCredentials" in new global.XMLHttpRequest() ? global.XMLHttpRequest : void 0;
818
+ var AbortController = global == null ? void 0 : global.AbortController;
819
+ var userAgent = navigator == null ? void 0 : navigator.userAgent;
820
+ var assignableWindow = win != null ? win : {};
821
+
822
+ // src/storage.ts
823
+ var AppStorage = class {
824
+ constructor(prefix, defaultExpire) {
825
+ __publicField(this, "prefix", "USERTOUR@0.0.1");
826
+ __publicField(this, "defaultExpire", 5);
827
+ __publicField(this, "setStorage", (type, key, inputValue, inputExpire = -1) => {
828
+ var _a, _b;
829
+ const value = inputValue === "" || inputValue === void 0 ? null : inputValue;
830
+ const expire = Number.isNaN(inputExpire) ? this.defaultExpire : inputExpire;
831
+ const data = {
832
+ value,
833
+ time: Date.now(),
834
+ expire
835
+ };
836
+ try {
837
+ const stringifyData = JSON.stringify(data);
838
+ (_b = (_a = win) == null ? void 0 : _a[type]) == null ? void 0 : _b.setItem(this.autoAddPrefix(key), stringifyData);
839
+ } catch (e) {
840
+ console.error(`[APP_STORAGE] setStorage error: ${e}`);
841
+ }
842
+ });
843
+ __publicField(this, "getStorage", (type, key) => {
844
+ var _a, _b, _c, _d;
845
+ const prefixKey = this.autoAddPrefix(key);
846
+ if (!((_b = (_a = win) == null ? void 0 : _a[type]) == null ? void 0 : _b.getItem(prefixKey))) {
847
+ return void 0;
848
+ }
849
+ let storage2 = void 0;
850
+ try {
851
+ const stringifyData = (_d = (_c = win) == null ? void 0 : _c[type]) == null ? void 0 : _d.getItem(prefixKey);
852
+ if (stringifyData === null || stringifyData === void 0) {
853
+ return void 0;
854
+ }
855
+ storage2 = JSON.parse(stringifyData);
856
+ } catch (e) {
857
+ console.error(`[APP_STORAGE] getStorage error: ${e}`);
858
+ return void 0;
859
+ }
860
+ const nowTime = Date.now();
861
+ if (storage2 === void 0) {
862
+ return void 0;
863
+ }
864
+ if (storage2.expire > -1 && storage2.expire * 60 * 1e3 < nowTime - storage2.time) {
865
+ this.removeStorage(type, key);
866
+ return void 0;
867
+ }
868
+ this.setStorage(type, key, storage2.value, storage2.expire);
869
+ return storage2.value;
870
+ });
871
+ __publicField(this, "clearStorage", (type) => {
872
+ var _a, _b;
873
+ (_b = (_a = win) == null ? void 0 : _a[type]) == null ? void 0 : _b.clear();
874
+ });
875
+ __publicField(this, "removeStorage", (type, key) => {
876
+ var _a, _b;
877
+ (_b = (_a = win) == null ? void 0 : _a[type]) == null ? void 0 : _b.removeItem(this.autoAddPrefix(key));
878
+ });
879
+ __publicField(this, "setLocalStorage", (key, value, expire) => {
880
+ this.setStorage("localStorage", key, value, expire);
881
+ });
882
+ __publicField(this, "getLocalStorage", (key) => {
883
+ return this.getStorage("localStorage", key);
884
+ });
885
+ __publicField(this, "clearLocalStorage", () => {
886
+ this.clearStorage("localStorage");
887
+ });
888
+ __publicField(this, "removeLocalStorage", (key) => {
889
+ this.removeStorage("localStorage", key);
890
+ });
891
+ __publicField(this, "setSessionStorage", (key, value, expire) => {
892
+ this.setStorage("sessionStorage", key, value, expire);
893
+ });
894
+ __publicField(this, "getSessionStorage", (key) => {
895
+ return this.getStorage("sessionStorage", key);
896
+ });
897
+ __publicField(this, "clearSessionStorage", () => {
898
+ this.clearStorage("sessionStorage");
899
+ });
900
+ __publicField(this, "removeSessionStorage", (key) => {
901
+ this.removeStorage("sessionStorage", key);
902
+ });
903
+ if (prefix !== void 0) {
904
+ this.prefix = prefix;
905
+ }
906
+ if (defaultExpire !== void 0) {
907
+ this.defaultExpire = defaultExpire;
908
+ }
909
+ }
910
+ autoAddPrefix(key) {
911
+ return `${this.prefix}/${key}`;
912
+ }
913
+ };
914
+
915
+ // src/auth.ts
916
+ var storage = new AppStorage("USERTOUR@0.0.1", 5);
917
+ var TOKEN_NAME = "token";
918
+ var getAuthToken = () => {
919
+ return storage.getLocalStorage(TOKEN_NAME);
920
+ };
921
+ var removeAuthToken = () => {
922
+ return storage.removeLocalStorage(TOKEN_NAME);
923
+ };
924
+ var setAuthToken = (token, expire) => {
925
+ storage.setLocalStorage(TOKEN_NAME, token, expire);
926
+ };
927
+
928
+ // src/settings.ts
929
+ var defaultStep = {
930
+ name: "step",
931
+ type: "tooltip",
932
+ sequence: 0,
933
+ setting: {
934
+ height: 0,
935
+ width: 250,
936
+ skippable: true,
937
+ enabledBackdrop: false,
938
+ enabledBlockTarget: false,
939
+ explicitCompletionStep: false,
940
+ align: "center",
941
+ side: "bottom",
942
+ sideOffset: 0,
943
+ alignOffset: 0,
944
+ alignType: "auto",
945
+ position: "center",
946
+ positionOffsetX: 0,
947
+ positionOffsetY: 0
948
+ },
949
+ data: [
950
+ {
951
+ type: "paragraph",
952
+ children: [{ text: "" }]
953
+ }
954
+ ],
955
+ target: {
956
+ selectors: null,
957
+ content: "",
958
+ sequence: "1st",
959
+ precision: "stricter",
960
+ isDynamicContent: false,
961
+ customSelector: "",
962
+ type: "auto"
963
+ }
964
+ };
965
+
966
+ // src/is-url.ts
967
+ var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
968
+ var localhostDomainRE = /^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/;
969
+ var nonLocalhostDomainRE = /^[^\s\.]+\.\S{2,}$/;
970
+ function isUrl(string) {
971
+ if (typeof string !== "string") {
972
+ return false;
973
+ }
974
+ const match = string.match(protocolAndDomainRE);
975
+ if (!match) {
976
+ return false;
977
+ }
978
+ const everythingAfterProtocol = match[1];
979
+ if (!everythingAfterProtocol) {
980
+ return false;
981
+ }
982
+ if (localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol)) {
983
+ return true;
984
+ }
985
+ return false;
986
+ }
987
+
988
+ // src/content.ts
989
+ var isPublishedInAllEnvironments = (content, environmentList, version) => {
990
+ const isPublishedInAllEnvironments2 = environmentList == null ? void 0 : environmentList.every(
991
+ (env) => {
992
+ var _a;
993
+ return (_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.find(
994
+ (item) => item.published && item.publishedVersionId === (version == null ? void 0 : version.id) && item.environment.id === env.id
995
+ );
996
+ }
997
+ );
998
+ const isPublishedInOneEnvironment = (content == null ? void 0 : content.published) && (content == null ? void 0 : content.publishedVersionId) === (version == null ? void 0 : version.id) && environmentList && (environmentList == null ? void 0 : environmentList.length) === 1;
999
+ return (content == null ? void 0 : content.contentOnEnvironments) && (content == null ? void 0 : content.contentOnEnvironments.length) > 0 ? Boolean(isPublishedInAllEnvironments2) : Boolean(isPublishedInOneEnvironment);
1000
+ };
1001
+ var isPublishedAtLeastOneEnvironment = (content) => {
1002
+ var _a;
1003
+ if ((content == null ? void 0 : content.contentOnEnvironments) && ((_a = content == null ? void 0 : content.contentOnEnvironments) == null ? void 0 : _a.length) > 0) {
1004
+ return true;
1005
+ }
1006
+ if ((content == null ? void 0 : content.published) && (content == null ? void 0 : content.publishedVersionId)) {
1007
+ return true;
1008
+ }
1009
+ return false;
1010
+ };
1011
+
1012
+ // src/utils.ts
1013
+ var deepClone = (obj) => {
1014
+ try {
1015
+ return structuredClone(obj);
1016
+ } catch (error) {
1017
+ console.warn("structuredClone failed, falling back to JSON method:", error);
1018
+ return JSON.parse(JSON.stringify(obj));
1019
+ }
1020
+ };
1021
+
1022
+ // src/helper.ts
1023
+ var import_clsx = require("clsx");
1024
+ var import_tailwind_merge = require("tailwind-merge");
1025
+ var import_uuid = require("uuid");
1026
+ var import_cuid2 = require("@paralleldrive/cuid2");
1027
+ function cn(...inputs) {
1028
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
1029
+ }
1030
+ var cuid = () => {
1031
+ return (0, import_cuid2.createId)();
1032
+ };
1033
+ function formatDate(input) {
1034
+ const date = new Date(input);
1035
+ return date.toLocaleDateString("en-US", {
1036
+ month: "long",
1037
+ day: "numeric",
1038
+ year: "numeric"
1039
+ });
1040
+ }
1041
+ function absoluteUrl(path) {
1042
+ return `${path}`;
1043
+ }
1044
+ var uuidV4 = () => {
1045
+ return (0, import_uuid.v4)();
1046
+ };
1047
+ function hexToRgb(hex) {
1048
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
1049
+ return result ? {
1050
+ r: Number.parseInt(result[1], 16),
1051
+ g: Number.parseInt(result[2], 16),
1052
+ b: Number.parseInt(result[3], 16)
1053
+ } : null;
1054
+ }
1055
+ var isDark = (hex) => {
1056
+ const rgb = hexToRgb(hex);
1057
+ if (!rgb) {
1058
+ return null;
1059
+ }
1060
+ const { r, g, b } = rgb;
1061
+ if (r * 0.299 + g * 0.587 + b * 0.114 > 186) {
1062
+ return true;
1063
+ }
1064
+ return false;
1065
+ };
1066
+ var evalCode = (code) => {
1067
+ try {
1068
+ return eval(code);
1069
+ } catch (error) {
1070
+ console.error("Usertour.js: Error evaluating code:", error);
1071
+ return null;
1072
+ }
1073
+ };
1074
+ var getRandomColor = () => {
1075
+ const colors = [
1076
+ "bg-red-500",
1077
+ "bg-orange-500",
1078
+ "bg-yellow-500",
1079
+ "bg-green-500",
1080
+ "bg-teal-500",
1081
+ "bg-blue-500",
1082
+ "bg-indigo-500",
1083
+ "bg-purple-500",
1084
+ "bg-pink-500",
1085
+ "bg-rose-500"
1086
+ ];
1087
+ return colors[Math.floor(Math.random() * colors.length)];
1088
+ };
1089
+ // Annotate the CommonJS export names for ESM import in node:
1090
+ 0 && (module.exports = {
1091
+ AbortController,
1092
+ ArrayProto,
1093
+ XMLHttpRequest,
1094
+ absoluteUrl,
1095
+ assignableWindow,
1096
+ autoStartConditions,
1097
+ buildConfig,
1098
+ cn,
1099
+ conditionsIsSame,
1100
+ convertSettings,
1101
+ convertToCssVars,
1102
+ cuid,
1103
+ deepClone,
1104
+ defaultContentConfig,
1105
+ defaultStep,
1106
+ document,
1107
+ evalCode,
1108
+ fetch,
1109
+ formatDate,
1110
+ generateAutoStateColors,
1111
+ getAuthToken,
1112
+ getCodeError,
1113
+ getContentError,
1114
+ getCurrentTimeError,
1115
+ getElementError,
1116
+ getErrorMessage,
1117
+ getNavitateError,
1118
+ getRandomColor,
1119
+ getSegmentError,
1120
+ getStepError,
1121
+ getTextFillError,
1122
+ getTextInputError,
1123
+ getUrlPatternError,
1124
+ getUserAttrError,
1125
+ getWaitError,
1126
+ hasActionError,
1127
+ hasError,
1128
+ hexToHSLString,
1129
+ hexToRGBStr,
1130
+ hexToRgb,
1131
+ isArray,
1132
+ isBoolean,
1133
+ isDark,
1134
+ isDate,
1135
+ isDocument,
1136
+ isEmptyObject,
1137
+ isEmptyString,
1138
+ isEqual,
1139
+ isFile,
1140
+ isFormData,
1141
+ isFunction,
1142
+ isMatchUrlPattern,
1143
+ isNull,
1144
+ isNullish,
1145
+ isNumber,
1146
+ isObject,
1147
+ isPublishedAtLeastOneEnvironment,
1148
+ isPublishedInAllEnvironments,
1149
+ isString,
1150
+ isUint8Array,
1151
+ isUndefined,
1152
+ isUrl,
1153
+ isValidSelector,
1154
+ location,
1155
+ mergeThemeDefaultSettings,
1156
+ nativeForEach,
1157
+ nativeIndexOf,
1158
+ navigator,
1159
+ removeAuthToken,
1160
+ setAuthToken,
1161
+ storage,
1162
+ userAgent,
1163
+ uuidV4,
1164
+ window
1165
+ });