bitboss-ui 0.2.8 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/index101.js +3 -3
  2. package/dist/index103.js +2 -2
  3. package/dist/index109.js +1 -1
  4. package/dist/index11.js +2 -2
  5. package/dist/index111.js +5 -5
  6. package/dist/index113.js +1 -1
  7. package/dist/index116.js +1 -1
  8. package/dist/index117.js +1 -1
  9. package/dist/index118.js +1 -1
  10. package/dist/index119.js +1 -1
  11. package/dist/index121.js +1 -1
  12. package/dist/index125.js +1 -1
  13. package/dist/index126.js +1 -1
  14. package/dist/index128.js +2 -2
  15. package/dist/index15.js +8 -8
  16. package/dist/index17.js +9 -9
  17. package/dist/index19.js +3 -3
  18. package/dist/index195.js +351 -2
  19. package/dist/index195.js.map +1 -1
  20. package/dist/index196.js +134 -2
  21. package/dist/index196.js.map +1 -1
  22. package/dist/index197.js +5 -4
  23. package/dist/index197.js.map +1 -1
  24. package/dist/index198.js +19 -3
  25. package/dist/index198.js.map +1 -1
  26. package/dist/index199.js +2 -35
  27. package/dist/index199.js.map +1 -1
  28. package/dist/index200.js +2 -6
  29. package/dist/index200.js.map +1 -1
  30. package/dist/index201.js +171 -336
  31. package/dist/index201.js.map +1 -1
  32. package/dist/index202.js +23 -134
  33. package/dist/index202.js.map +1 -1
  34. package/dist/index203.js +369 -5
  35. package/dist/index203.js.map +1 -1
  36. package/dist/index204.js +3 -19
  37. package/dist/index204.js.map +1 -1
  38. package/dist/index205.js +3 -2
  39. package/dist/index205.js.map +1 -1
  40. package/dist/index206.js +16 -2
  41. package/dist/index206.js.map +1 -1
  42. package/dist/index207.js +14 -184
  43. package/dist/index207.js.map +1 -1
  44. package/dist/index208.js +20 -23
  45. package/dist/index208.js.map +1 -1
  46. package/dist/index209.js +27 -367
  47. package/dist/index209.js.map +1 -1
  48. package/dist/index21.js +2 -2
  49. package/dist/index210.js +8 -3
  50. package/dist/index210.js.map +1 -1
  51. package/dist/index211.js +3 -3
  52. package/dist/index211.js.map +1 -1
  53. package/dist/index212.js +32 -232
  54. package/dist/index212.js.map +1 -1
  55. package/dist/index213.js +6 -2
  56. package/dist/index213.js.map +1 -1
  57. package/dist/index214.js +2 -10
  58. package/dist/index214.js.map +1 -1
  59. package/dist/index215.js +4 -2
  60. package/dist/index215.js.map +1 -1
  61. package/dist/index216.js +235 -16
  62. package/dist/index216.js.map +1 -1
  63. package/dist/index217.js +10 -16
  64. package/dist/index217.js.map +1 -1
  65. package/dist/index218.js +2 -20
  66. package/dist/index218.js.map +1 -1
  67. package/dist/index219.js +2 -29
  68. package/dist/index219.js.map +1 -1
  69. package/dist/index220.js +2 -8
  70. package/dist/index220.js.map +1 -1
  71. package/dist/index221.js +27 -8
  72. package/dist/index221.js.map +1 -1
  73. package/dist/index222.js +12 -115
  74. package/dist/index222.js.map +1 -1
  75. package/dist/index223.js +8 -27
  76. package/dist/index223.js.map +1 -1
  77. package/dist/index224.js +115 -12
  78. package/dist/index224.js.map +1 -1
  79. package/dist/index225.js +1 -1
  80. package/dist/index226.js +6 -4
  81. package/dist/index226.js.map +1 -1
  82. package/dist/index227.js +2 -435
  83. package/dist/index227.js.map +1 -1
  84. package/dist/index228.js +294 -88
  85. package/dist/index228.js.map +1 -1
  86. package/dist/index229.js +2 -6
  87. package/dist/index229.js.map +1 -1
  88. package/dist/index23.js +1 -1
  89. package/dist/index230.js +2 -2
  90. package/dist/index231.js +116 -294
  91. package/dist/index231.js.map +1 -1
  92. package/dist/index232.js +106 -2
  93. package/dist/index232.js.map +1 -1
  94. package/dist/index233.js +224 -2
  95. package/dist/index233.js.map +1 -1
  96. package/dist/index234.js +246 -105
  97. package/dist/index234.js.map +1 -1
  98. package/dist/index235.js +2 -106
  99. package/dist/index235.js.map +1 -1
  100. package/dist/index236.js +2 -200
  101. package/dist/index236.js.map +1 -1
  102. package/dist/index237.js +2 -2
  103. package/dist/index237.js.map +1 -1
  104. package/dist/index238.js +2 -2
  105. package/dist/index238.js.map +1 -1
  106. package/dist/index239.js +2 -69
  107. package/dist/index239.js.map +1 -1
  108. package/dist/index240.js +4 -162
  109. package/dist/index240.js.map +1 -1
  110. package/dist/index241.js +435 -2
  111. package/dist/index241.js.map +1 -1
  112. package/dist/index242.js +83 -218
  113. package/dist/index242.js.map +1 -1
  114. package/dist/index243.js +161 -257
  115. package/dist/index243.js.map +1 -1
  116. package/dist/index244.js +2 -2
  117. package/dist/index245.js +69 -2
  118. package/dist/index245.js.map +1 -1
  119. package/dist/index246.js +2 -2
  120. package/dist/index246.js.map +1 -1
  121. package/dist/index247.js +200 -2
  122. package/dist/index247.js.map +1 -1
  123. package/dist/index248.js +1 -1
  124. package/dist/index25.js +2 -2
  125. package/dist/index252.js +3 -2
  126. package/dist/index252.js.map +1 -1
  127. package/dist/index253.js +2 -3
  128. package/dist/index253.js.map +1 -1
  129. package/dist/index29.js +3 -3
  130. package/dist/index31.js +6 -6
  131. package/dist/index33.js +2 -2
  132. package/dist/index35.js +2 -2
  133. package/dist/index47.js +1 -1
  134. package/dist/index49.js +1 -1
  135. package/dist/index65.js +5 -5
  136. package/dist/index69.js +2 -2
  137. package/dist/index72.js +1 -1
  138. package/dist/index75.js +1 -1
  139. package/dist/index79.js +4 -4
  140. package/dist/index8.js +64 -65
  141. package/dist/index8.js.map +1 -1
  142. package/dist/index81.js +1 -1
  143. package/dist/style.css +1 -1
  144. package/package.json +1 -1
package/dist/index8.js CHANGED
@@ -1,46 +1,46 @@
1
- import { reactive as L, watch as d, toValue as Y, computed as m, provide as D } from "vue";
1
+ import { reactive as L, watch as f, toValue as Y, computed as y, provide as D } from "vue";
2
2
  import { mapValues as G } from "./index127.js";
3
3
  import { useStepper as H } from "./index128.js";
4
4
  import { useRoute as Q } from "./index129.js";
5
5
  import { useRouter as X } from "./index130.js";
6
- import { isNotNil as p } from "./index124.js";
6
+ import { isNotNil as l } from "./index124.js";
7
7
  const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[\s\S]+))/, J = (i) => {
8
- var r, a;
8
+ var r, u;
9
9
  const e = i.match(R);
10
- return ((r = e == null ? void 0 : e.groups) == null ? void 0 : r.step) ?? ((a = e == null ? void 0 : e.groups) == null ? void 0 : a.step2) ?? null;
11
- }, ue = (i) => {
10
+ return ((r = e == null ? void 0 : e.groups) == null ? void 0 : r.step) ?? ((u = e == null ? void 0 : e.groups) == null ? void 0 : u.step2) ?? null;
11
+ }, ne = (i) => {
12
12
  if (!i.name)
13
13
  throw new Error(
14
14
  "You need to provide a unique name for the current wizard instance to be used to save data"
15
15
  );
16
- const e = Q(), r = X(), a = i.useNavigation ?? !0, q = i.navigationMode ?? "query", b = i.persist ?? !0;
17
- if (a && (!e.value || !r))
16
+ const e = Q(), r = X(), u = i.useNavigation ?? !0, q = i.navigationMode ?? "query", b = i.persist ?? !0;
17
+ if (u && (!e.value || !r))
18
18
  throw new Error(
19
19
  "Navigation is enabled but could not retrieve the router instance in useWizard."
20
20
  );
21
- const n = L(
21
+ const a = L(
22
22
  b && sessionStorage.getItem(i.name) ? Object.assign(
23
23
  {},
24
24
  i.initialState,
25
25
  JSON.parse(sessionStorage.getItem(i.name))
26
26
  ) : i.initialState
27
27
  );
28
- b && d(n, () => {
29
- sessionStorage.setItem(i.name, JSON.stringify(n));
28
+ b && f(a, () => {
29
+ sessionStorage.setItem(i.name, JSON.stringify(a));
30
30
  });
31
- const W = Y(i.steps), o = m(
31
+ const W = Y(i.steps), o = y(
32
32
  () => Object.entries(W).reduce(
33
- (t, [s, u]) => (u.condition && !u.condition(n) || (t[s] = { ...u, key: s }), t),
33
+ (t, [s, n]) => (n.condition && !n.condition(a) || (t[s] = { ...n, key: s }), t),
34
34
  {}
35
35
  )
36
- ), S = m(
36
+ ), m = y(
37
37
  () => G(o.value, (t) => ({
38
38
  ...t,
39
- isValid: t.isValid ? t.isValid(n) : !0
39
+ isValid: t.isValid ? t.isValid(a) : !0
40
40
  }))
41
41
  );
42
- let c = null;
43
- if (a && p(e.value)) {
42
+ let p = null;
43
+ if (u && l(e.value)) {
44
44
  let t = null;
45
45
  if (q === "query")
46
46
  e.value.query.step && (t = e.value.query.step);
@@ -48,24 +48,24 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
48
48
  const s = J(e.value.fullPath);
49
49
  s && (t = s);
50
50
  }
51
- c = t;
51
+ p = t;
52
52
  }
53
- if (c)
53
+ if (p)
54
54
  for (const t in o.value) {
55
- if (t === c)
55
+ if (t === p)
56
56
  break;
57
- const s = S.value[t];
57
+ const s = m.value[t];
58
58
  if (!s || !s.isValid) {
59
- c = null;
59
+ p = null;
60
60
  break;
61
61
  }
62
62
  }
63
63
  const {
64
- steps: g,
64
+ steps: S,
65
65
  current: T,
66
66
  goToNext: V,
67
67
  goToPrevious: N,
68
- goTo: v,
68
+ goTo: d,
69
69
  index: $,
70
70
  at: O,
71
71
  get: x,
@@ -81,15 +81,15 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
81
81
  previous: M,
82
82
  stepNames: U
83
83
  } = H(
84
- S,
85
- c || Object.values(o.value)[0].key
86
- ), l = m(() => Object.keys(o.value)[$.value]);
84
+ m,
85
+ p || Object.values(o.value)[0].key
86
+ ), c = y(() => Object.keys(o.value)[$.value]);
87
87
  if (D(Z, {
88
88
  goToNext: V,
89
89
  goToPrevious: N,
90
90
  current: T,
91
- data: n,
92
- steps: g,
91
+ data: a,
92
+ steps: S,
93
93
  at: O,
94
94
  get: x,
95
95
  goBackTo: k,
@@ -103,18 +103,18 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
103
103
  next: I,
104
104
  previous: M,
105
105
  stepNames: U
106
- }), a)
106
+ }), u)
107
107
  if (q === "query")
108
- d(
109
- l,
108
+ f(
109
+ c,
110
110
  () => {
111
- p(r) && p(e.value) && r.push({
111
+ l(r) && l(e.value) && r.push({
112
112
  ...e,
113
- query: { ...e.value.query, step: l.value ?? null }
113
+ query: { ...e.value.query, step: c.value ?? null }
114
114
  });
115
115
  },
116
116
  { immediate: !0 }
117
- ), d(
117
+ ), f(
118
118
  () => {
119
119
  var t;
120
120
  return (t = e.value) == null ? void 0 : t.query.step;
@@ -123,39 +123,39 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
123
123
  if (t) {
124
124
  const s = t;
125
125
  if (s in o.value) {
126
- const u = s, f = Object.keys(o.value);
127
- f.slice(
126
+ const n = s, v = Object.keys(o.value);
127
+ v.slice(
128
128
  0,
129
- f.indexOf(u)
129
+ v.indexOf(n)
130
130
  ).every(
131
131
  (B) => {
132
- var y;
133
- return (y = S.value[B]) == null ? void 0 : y.isValid;
132
+ var g;
133
+ return (g = m.value[B]) == null ? void 0 : g.isValid;
134
134
  }
135
- ) && v(u);
135
+ ) && d(n);
136
136
  }
137
137
  } else
138
- v(g.value[0]);
138
+ d(S.value[0]);
139
139
  }
140
140
  );
141
141
  else {
142
- const t = m(() => {
143
- if (p(e.value))
142
+ const t = y(() => {
143
+ if (l(e.value))
144
144
  return J(e.value.fullPath);
145
145
  });
146
- d(
147
- l,
148
- () => {
149
- p(e.value) && p(r) && (e.value.path.includes("step") ? r.push({
146
+ f(
147
+ c,
148
+ (s) => {
149
+ l(e.value) && l(r) && (e.value.path.includes("step") ? r.push({
150
150
  query: e.value.query,
151
151
  path: e.value.path.replace(
152
152
  R,
153
- `step/${l.value}`
153
+ `step/${s}`
154
154
  )
155
155
  }) : r.push({
156
156
  query: e.value.query,
157
157
  // Normalizes paths with / and without
158
- path: (e.value.path + `/step/${l.value}`).replace(
158
+ path: (e.value.path + `/step/${s}`).replace(
159
159
  "//",
160
160
  "/"
161
161
  ),
@@ -163,36 +163,35 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
163
163
  }));
164
164
  },
165
165
  { immediate: !0, flush: "post" }
166
- ), d(
166
+ ), f(
167
167
  () => t.value,
168
168
  (s) => {
169
- if (s) {
170
- const u = s;
171
- if (u in o.value) {
172
- const f = u, h = Object.keys(o.value);
169
+ if (s && s !== c.value) {
170
+ const n = s;
171
+ if (n in o.value) {
172
+ const v = n, h = Object.keys(o.value);
173
173
  h.slice(
174
174
  0,
175
- h.indexOf(f)
175
+ h.indexOf(v)
176
176
  ).every(
177
- (y) => {
177
+ (g) => {
178
178
  var E;
179
- return (E = o.value[y]) == null ? void 0 : E.isValid;
179
+ return (E = o.value[g]) == null ? void 0 : E.isValid;
180
180
  }
181
- ) && v(f);
181
+ ) && d(v);
182
182
  }
183
- } else
184
- v(g.value[0]);
183
+ }
185
184
  }
186
185
  );
187
186
  }
188
187
  return {
189
- steps: g,
188
+ steps: S,
190
189
  current: T,
191
190
  goToNext: V,
192
191
  goToPrevious: N,
193
- goTo: v,
194
- key: l,
195
- data: n,
192
+ goTo: d,
193
+ key: c,
194
+ data: a,
196
195
  at: O,
197
196
  get: x,
198
197
  goBackTo: k,
@@ -209,7 +208,7 @@ const Z = Symbol(), R = /((step\/)(?<step>[\s\S]+?)(?=[/?]))|((step\/)(?<step2>[
209
208
  };
210
209
  };
211
210
  export {
212
- ue as useWizard,
211
+ ne as useWizard,
213
212
  Z as wizardInjectionKey
214
213
  };
215
214
  //# sourceMappingURL=index8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index8.js","sources":["../src/composables/useWizard.ts"],"sourcesContent":["import { computed, provide, reactive, watch, toValue } from \"vue\";\nimport { mapValues } from \"@/utilities/functions/mapValues\";\nimport { useStepper } from \"@vueuse/core\";\nimport { useRoute } from \"./useRoute\";\nimport { useRouter } from \"./useRouter\";\nimport type { ComputedRef, MaybeRef } from \"vue\";\nimport { isNotNil } from \"@/utilities/functions/isNotNil\";\n\nexport const wizardInjectionKey = Symbol();\nexport type Step<U> = {\n /**\n * Function that accepts a state object and returns a boolean.\n * When step are accessed at the end of the pipeline the result\n * is provided so you don't have to run the function yourself.\n * It determines if the validation has passed for the step.\n */\n isValid?: (state: U) => boolean;\n /**\n * Function that accepts a state object and returns a boolean.\n * When step are accessed at the end of the pipeline the result\n * is provided so you don't have to run the function yourself.\n * Steps that do not pass the condition are removed.\n */\n condition?: (state: U) => boolean;\n [key: string]: any;\n};\nexport type WizardState<T extends Record<string, any>> = Pick<\n ReturnType<typeof useWizard<T>>,\n | \"data\"\n | \"goToNext\"\n | \"goToPrevious\"\n | \"current\"\n | \"steps\"\n | \"at\"\n | \"get\"\n | \"goBackTo\"\n | \"isAfter\"\n | \"isBefore\"\n | \"isCurrent\"\n | \"isFirst\"\n | \"isLast\"\n | \"isNext\"\n | \"isPrevious\"\n | \"next\"\n | \"previous\"\n | \"stepNames\"\n>;\n\nconst regexMatchStep =\n /((step\\/)(?<step>[\\s\\S]+?)(?=[/?]))|((step\\/)(?<step2>[\\s\\S]+))/;\n/**\n * With a url that follows the rule xyz.com/anything/step/:nameofthestep[/?query]\n * will match the :nameofthestep substring\n */\nconst extractStepFromUrl = (url: string) => {\n const match = url.match(regexMatchStep);\n return match?.groups?.step ?? match?.groups?.step2 ?? null;\n};\nexport const useWizard = <T extends object>(params: {\n /**\n * The steps definition for the wizard\n */\n steps: MaybeRef<Record<string, Step<T>>>;\n /**\n * Name of the wizard used to persist state\n */\n name: string;\n /**\n * Initial set of data to be made available throughout\n */\n initialState: T;\n /**\n * When navogation is enabled, to whether use the query parameters or an entire substring of the URL like xyz/steps/....\n * The latter useful with nuxt so you can leverage the automatic import of components based on the URL.\n */\n navigationMode?: \"query\" | \"route\";\n /**\n * Whether to use navigation at all. When disabled no query or URL is changed.\n */\n useNavigation?: boolean;\n /**\n *\n */\n persist?: boolean;\n}) => {\n if (!params.name) {\n throw new Error(\n \"You need to provide a unique name for the current wizard instance to be used to save data\"\n );\n }\n const route = useRoute();\n const router = useRouter();\n\n const useNavigation = params.useNavigation ?? true;\n const navigationMode = params.navigationMode ?? \"query\";\n const persist = params.persist ?? true;\n\n if (useNavigation && (!route.value || !router)) {\n throw new Error(\n \"Navigation is enabled but could not retrieve the router instance in useWizard.\"\n );\n }\n\n /**\n * Initial state is either read from session storage or the one provided\n */\n const innerState = reactive<typeof params.initialState>(\n persist && sessionStorage.getItem(params.name)\n ? Object.assign(\n {},\n params.initialState,\n JSON.parse(sessionStorage.getItem(params.name)!)\n )\n : params.initialState\n );\n\n if (persist) {\n /**\n * Every time the state changes save it to sessionStorage\n */\n watch(innerState, () => {\n sessionStorage.setItem(params.name, JSON.stringify(innerState));\n });\n }\n\n /**\n * Steps can be passed as ref so we need to unwrap them\n */\n const unwrappedSteps = toValue(params.steps);\n const filteredSteps = computed(() =>\n Object.entries(unwrappedSteps).reduce(\n (acc: typeof unwrappedSteps, [key, step]) => {\n if (step.condition) {\n if (!step.condition(innerState as T)) {\n return acc;\n }\n }\n acc[key] = { ...step, key };\n return acc;\n },\n {}\n )\n );\n\n /**\n * Steps can have a isValid function that receives the current state\n * but we don't want to have to call it every single time so we call it once here\n */\n const mappedSteps = computed(() =>\n mapValues(filteredSteps.value, (step) => {\n return {\n ...step,\n isValid: step.isValid ? step.isValid(innerState as T) : true,\n };\n })\n );\n\n /**\n * Get the initial step from the query.\n * If it exists check that every step before it is also valid\n * so user cannot manually jump by changing the URL\n */\n let initialStep = null;\n if (useNavigation && isNotNil(route.value)) {\n let step: string | null = null;\n if (navigationMode === \"query\") {\n if (route.value.query.step) {\n step = route.value.query.step as string;\n }\n } else {\n const stepFromUrl = extractStepFromUrl(route.value.fullPath);\n if (stepFromUrl) {\n step = stepFromUrl;\n }\n }\n initialStep = step;\n }\n\n if (initialStep) {\n for (const stepName in filteredSteps.value) {\n if (stepName === initialStep) break;\n const current = mappedSteps.value[stepName];\n if (!current || !current.isValid) {\n initialStep = null;\n break;\n }\n }\n }\n\n /**\n * Define the state of the wizard\n * A few data come from useStepper\n */\n const {\n steps,\n current,\n goToNext,\n goToPrevious,\n goTo,\n index,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n } = useStepper(\n mappedSteps as any,\n initialStep || Object.values(filteredSteps.value)[0].key\n );\n\n const key = computed(() => Object.keys(filteredSteps.value)[index.value]);\n\n /**\n * Complete state object\n */\n const state = {\n goToNext,\n goToPrevious,\n current: current as ComputedRef<Step<T> & { isValid: boolean }>,\n data: innerState,\n steps,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n };\n\n provide(wizardInjectionKey, state);\n\n if (useNavigation) {\n if (navigationMode === \"query\") {\n /**\n * Every time the current step changes update route\n */\n watch(\n key,\n () => {\n if (isNotNil(router) && isNotNil(route.value)) {\n router.push({\n ...route,\n query: { ...route.value.query, step: key.value ?? null },\n });\n }\n },\n { immediate: true }\n );\n\n /**\n * Every time the route changes align the current step to the route\n */\n watch(\n () => route.value?.query.step,\n (value) => {\n if (value) {\n const stepAsString = value as string;\n if (stepAsString in filteredSteps.value) {\n const stepAsKey = stepAsString;\n const stepKeys = Object.keys(filteredSteps.value);\n const stepsPriorToTarget = stepKeys.slice(\n 0,\n stepKeys.indexOf(stepAsKey)\n );\n const allValid = stepsPriorToTarget.every(\n (key) => mappedSteps.value[key]?.isValid\n );\n if (allValid) {\n goTo(stepAsKey);\n }\n }\n } else {\n goTo(steps.value[0]);\n }\n }\n );\n } else {\n const stepFromUrl = computed(() => {\n if (isNotNil(route.value)) {\n return extractStepFromUrl(route.value.fullPath);\n }\n });\n\n /**\n * Every time the current step changes update route\n */\n watch(\n key,\n () => {\n if (isNotNil(route.value) && isNotNil(router)) {\n if (route.value.path.includes(\"step\")) {\n router.push({\n query: route.value.query,\n path: route.value.path.replace(\n regexMatchStep,\n `step/${key.value}`\n ),\n });\n } else {\n router.push({\n query: route.value.query,\n // Normalizes paths with / and without\n path: (route.value.path + `/step/${key.value}`).replace(\n \"//\",\n \"/\"\n ),\n replace: true,\n });\n }\n }\n },\n { immediate: true, flush: 'post' }\n );\n\n /**\n * Every time the route changes align the current step to the route\n */\n watch(\n () => stepFromUrl.value,\n (value) => {\n if (value) {\n const stepAsString = value as string;\n if (stepAsString in filteredSteps.value) {\n const stepAsKey = stepAsString;\n const stepKeys = Object.keys(filteredSteps.value);\n const stepsPriorToTarget = stepKeys.slice(\n 0,\n stepKeys.indexOf(stepAsKey)\n );\n const allValid = stepsPriorToTarget.every(\n (key) => filteredSteps.value[key]?.isValid\n );\n if (allValid) {\n goTo(stepAsKey);\n }\n }\n } else {\n goTo(steps.value[0]);\n }\n }\n );\n }\n }\n\n return {\n steps,\n current: current as ComputedRef<Step<T> & { isValid: boolean }>,\n goToNext,\n goToPrevious,\n goTo,\n key,\n data: innerState,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n };\n};\n"],"names":["wizardInjectionKey","regexMatchStep","extractStepFromUrl","url","match","_a","_b","useWizard","params","route","useRoute","router","useRouter","useNavigation","navigationMode","persist","innerState","reactive","watch","unwrappedSteps","toValue","filteredSteps","computed","acc","key","step","mappedSteps","mapValues","initialStep","isNotNil","stepFromUrl","stepName","current","steps","goToNext","goToPrevious","goTo","index","at","get","goBackTo","isAfter","isBefore","isCurrent","isFirst","isLast","isNext","isPrevious","next","previous","stepNames","useStepper","provide","value","stepAsString","stepAsKey","stepKeys"],"mappings":"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"}
1
+ {"version":3,"file":"index8.js","sources":["../src/composables/useWizard.ts"],"sourcesContent":["import { computed, provide, reactive, watch, toValue } from \"vue\";\nimport { mapValues } from \"@/utilities/functions/mapValues\";\nimport { useStepper } from \"@vueuse/core\";\nimport { useRoute } from \"./useRoute\";\nimport { useRouter } from \"./useRouter\";\nimport type { ComputedRef, MaybeRef } from \"vue\";\nimport { isNotNil } from \"@/utilities/functions/isNotNil\";\n\nexport const wizardInjectionKey = Symbol();\nexport type Step<U> = {\n /**\n * Function that accepts a state object and returns a boolean.\n * When step are accessed at the end of the pipeline the result\n * is provided so you don't have to run the function yourself.\n * It determines if the validation has passed for the step.\n */\n isValid?: (state: U) => boolean;\n /**\n * Function that accepts a state object and returns a boolean.\n * When step are accessed at the end of the pipeline the result\n * is provided so you don't have to run the function yourself.\n * Steps that do not pass the condition are removed.\n */\n condition?: (state: U) => boolean;\n [key: string]: any;\n};\nexport type WizardState<T extends Record<string, any>> = Pick<\n ReturnType<typeof useWizard<T>>,\n | \"data\"\n | \"goToNext\"\n | \"goToPrevious\"\n | \"current\"\n | \"steps\"\n | \"at\"\n | \"get\"\n | \"goBackTo\"\n | \"isAfter\"\n | \"isBefore\"\n | \"isCurrent\"\n | \"isFirst\"\n | \"isLast\"\n | \"isNext\"\n | \"isPrevious\"\n | \"next\"\n | \"previous\"\n | \"stepNames\"\n>;\n\nconst regexMatchStep =\n /((step\\/)(?<step>[\\s\\S]+?)(?=[/?]))|((step\\/)(?<step2>[\\s\\S]+))/;\n/**\n * With a url that follows the rule xyz.com/anything/step/:nameofthestep[/?query]\n * will match the :nameofthestep substring\n */\nconst extractStepFromUrl = (url: string) => {\n const match = url.match(regexMatchStep);\n return match?.groups?.step ?? match?.groups?.step2 ?? null;\n};\nexport const useWizard = <T extends object>(params: {\n /**\n * The steps definition for the wizard\n */\n steps: MaybeRef<Record<string, Step<T>>>;\n /**\n * Name of the wizard used to persist state\n */\n name: string;\n /**\n * Initial set of data to be made available throughout\n */\n initialState: T;\n /**\n * When navogation is enabled, to whether use the query parameters or an entire substring of the URL like xyz/steps/....\n * The latter useful with nuxt so you can leverage the automatic import of components based on the URL.\n */\n navigationMode?: \"query\" | \"route\";\n /**\n * Whether to use navigation at all. When disabled no query or URL is changed.\n */\n useNavigation?: boolean;\n /**\n *\n */\n persist?: boolean;\n}) => {\n if (!params.name) {\n throw new Error(\n \"You need to provide a unique name for the current wizard instance to be used to save data\"\n );\n }\n const route = useRoute();\n const router = useRouter();\n\n const useNavigation = params.useNavigation ?? true;\n const navigationMode = params.navigationMode ?? \"query\";\n const persist = params.persist ?? true;\n\n if (useNavigation && (!route.value || !router)) {\n throw new Error(\n \"Navigation is enabled but could not retrieve the router instance in useWizard.\"\n );\n }\n\n /**\n * Initial state is either read from session storage or the one provided\n */\n const innerState = reactive<typeof params.initialState>(\n persist && sessionStorage.getItem(params.name)\n ? Object.assign(\n {},\n params.initialState,\n JSON.parse(sessionStorage.getItem(params.name)!)\n )\n : params.initialState\n );\n\n if (persist) {\n /**\n * Every time the state changes save it to sessionStorage\n */\n watch(innerState, () => {\n sessionStorage.setItem(params.name, JSON.stringify(innerState));\n });\n }\n\n /**\n * Steps can be passed as ref so we need to unwrap them\n */\n const unwrappedSteps = toValue(params.steps);\n const filteredSteps = computed(() =>\n Object.entries(unwrappedSteps).reduce(\n (acc: typeof unwrappedSteps, [key, step]) => {\n if (step.condition) {\n if (!step.condition(innerState as T)) {\n return acc;\n }\n }\n acc[key] = { ...step, key };\n return acc;\n },\n {}\n )\n );\n\n /**\n * Steps can have a isValid function that receives the current state\n * but we don't want to have to call it every single time so we call it once here\n */\n const mappedSteps = computed(() =>\n mapValues(filteredSteps.value, (step) => {\n return {\n ...step,\n isValid: step.isValid ? step.isValid(innerState as T) : true,\n };\n })\n );\n\n /**\n * Get the initial step from the query.\n * If it exists check that every step before it is also valid\n * so user cannot manually jump by changing the URL\n */\n let initialStep = null;\n if (useNavigation && isNotNil(route.value)) {\n let step: string | null = null;\n if (navigationMode === \"query\") {\n if (route.value.query.step) {\n step = route.value.query.step as string;\n }\n } else {\n const stepFromUrl = extractStepFromUrl(route.value.fullPath);\n if (stepFromUrl) {\n step = stepFromUrl;\n }\n }\n initialStep = step;\n }\n\n if (initialStep) {\n for (const stepName in filteredSteps.value) {\n if (stepName === initialStep) break;\n const current = mappedSteps.value[stepName];\n if (!current || !current.isValid) {\n initialStep = null;\n break;\n }\n }\n }\n\n /**\n * Define the state of the wizard\n * A few data come from useStepper\n */\n const {\n steps,\n current,\n goToNext,\n goToPrevious,\n goTo,\n index,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n } = useStepper(\n mappedSteps as any,\n initialStep || Object.values(filteredSteps.value)[0].key\n );\n\n const key = computed(() => Object.keys(filteredSteps.value)[index.value]);\n\n /**\n * Complete state object\n */\n const state = {\n goToNext,\n goToPrevious,\n current: current as ComputedRef<Step<T> & { isValid: boolean }>,\n data: innerState,\n steps,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n };\n\n provide(wizardInjectionKey, state);\n\n if (useNavigation) {\n if (navigationMode === \"query\") {\n /**\n * Every time the current step changes update route\n */\n watch(\n key,\n () => {\n if (isNotNil(router) && isNotNil(route.value)) {\n router.push({\n ...route,\n query: { ...route.value.query, step: key.value ?? null },\n });\n }\n },\n { immediate: true }\n );\n\n /**\n * Every time the route changes align the current step to the route\n */\n watch(\n () => route.value?.query.step,\n (value) => {\n if (value) {\n const stepAsString = value as string;\n if (stepAsString in filteredSteps.value) {\n const stepAsKey = stepAsString;\n const stepKeys = Object.keys(filteredSteps.value);\n const stepsPriorToTarget = stepKeys.slice(\n 0,\n stepKeys.indexOf(stepAsKey)\n );\n const allValid = stepsPriorToTarget.every(\n (key) => mappedSteps.value[key]?.isValid\n );\n if (allValid) {\n goTo(stepAsKey);\n }\n }\n } else {\n goTo(steps.value[0]);\n }\n }\n );\n } else {\n const stepFromUrl = computed(() => {\n if (isNotNil(route.value)) {\n return extractStepFromUrl(route.value.fullPath);\n }\n });\n\n /**\n * Every time the current step changes update route\n */\n watch(\n key,\n (value) => {\n if (isNotNil(route.value) && isNotNil(router)) {\n if (route.value.path.includes(\"step\")) {\n router.push({\n query: route.value.query,\n path: route.value.path.replace(\n regexMatchStep,\n `step/${value}`\n ),\n });\n } else {\n router.push({\n query: route.value.query,\n // Normalizes paths with / and without\n path: (route.value.path + `/step/${value}`).replace(\n \"//\",\n \"/\"\n ),\n replace: true,\n });\n }\n }\n },\n { immediate: true, flush: 'post' }\n );\n\n /**\n * Every time the route changes align the current step to the route\n */\n watch(\n () => stepFromUrl.value,\n (value) => {\n if (value && value !== key.value) {\n const stepAsString = value as string;\n if (stepAsString in filteredSteps.value) {\n const stepAsKey = stepAsString;\n const stepKeys = Object.keys(filteredSteps.value);\n const stepsPriorToTarget = stepKeys.slice(\n 0,\n stepKeys.indexOf(stepAsKey)\n );\n const allValid = stepsPriorToTarget.every(\n (key) => filteredSteps.value[key]?.isValid\n );\n if (allValid) {\n goTo(stepAsKey);\n }\n }\n }\n }\n );\n }\n }\n\n return {\n steps,\n current: current as ComputedRef<Step<T> & { isValid: boolean }>,\n goToNext,\n goToPrevious,\n goTo,\n key,\n data: innerState,\n at,\n get,\n goBackTo,\n isAfter,\n isBefore,\n isCurrent,\n isFirst,\n isLast,\n isNext,\n isPrevious,\n next,\n previous,\n stepNames,\n };\n};\n"],"names":["wizardInjectionKey","regexMatchStep","extractStepFromUrl","url","match","_a","_b","useWizard","params","route","useRoute","router","useRouter","useNavigation","navigationMode","persist","innerState","reactive","watch","unwrappedSteps","toValue","filteredSteps","computed","acc","key","step","mappedSteps","mapValues","initialStep","isNotNil","stepFromUrl","stepName","current","steps","goToNext","goToPrevious","goTo","index","at","get","goBackTo","isAfter","isBefore","isCurrent","isFirst","isLast","isNext","isPrevious","next","previous","stepNames","useStepper","provide","value","stepAsString","stepAsKey","stepKeys"],"mappings":"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"}
package/dist/index81.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as a, computed as l, openBlock as s, createElementBlock as n, normalizeClass as m, createElementVNode as i, normalizeStyle as c } from "vue";
2
- import { clamp as p } from "./index195.js";
2
+ import { clamp as p } from "./index218.js";
3
3
  import { getAsPercentageBetween as d } from "./index121.js";
4
4
  const v = /* @__PURE__ */ a({
5
5
  __name: "BbProgress",