@juo/blocks 1.1.0-alpha.3 → 1.2.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.
Files changed (76) hide show
  1. package/dist/{ExtensionRoot-BG6hs_XY.js → ExtensionRoot-BixerQDc.js} +5 -2
  2. package/dist/{bridge-CnXNIOor.js → bridge-CIUKbSJR.js} +22 -35
  3. package/dist/core.js +106 -913
  4. package/dist/editor/bridge.d.ts +2 -3
  5. package/dist/editor/bridge.d.ts.map +1 -1
  6. package/dist/editor/components.d.ts.map +1 -1
  7. package/dist/editor/messages.d.ts +4 -12
  8. package/dist/editor/messages.d.ts.map +1 -1
  9. package/dist/editor.js +22 -21
  10. package/dist/flows/WorkflowService.d.ts.map +1 -1
  11. package/dist/{juo-workflow-COsYWku6.js → juo-workflow-BvTgGZQj.js} +5 -4
  12. package/dist/main.d.ts +1 -0
  13. package/dist/main.d.ts.map +1 -1
  14. package/dist/preact/block.d.ts.map +1 -1
  15. package/dist/preact.js +2 -3
  16. package/dist/react/block.d.ts.map +1 -1
  17. package/dist/react.js +2 -3
  18. package/dist/registry.d.ts +22 -0
  19. package/dist/registry.d.ts.map +1 -0
  20. package/dist/services/customer/customerService.d.ts +3 -6
  21. package/dist/services/customer/customerService.d.ts.map +1 -1
  22. package/dist/services/customer/index.d.ts +2 -4
  23. package/dist/services/customer/index.d.ts.map +1 -1
  24. package/dist/services/customer/types.d.ts +8 -12
  25. package/dist/services/customer/types.d.ts.map +1 -1
  26. package/dist/services/index.d.ts +0 -3
  27. package/dist/services/index.d.ts.map +1 -1
  28. package/dist/services/login/index.d.ts +0 -1
  29. package/dist/services/login/index.d.ts.map +1 -1
  30. package/dist/services/login/loginService.d.ts +0 -2
  31. package/dist/services/login/loginService.d.ts.map +1 -1
  32. package/dist/services/product/types.d.ts +0 -2
  33. package/dist/services/product/types.d.ts.map +1 -1
  34. package/dist/services/subscription/adapter.d.ts +2 -19
  35. package/dist/services/subscription/adapter.d.ts.map +1 -1
  36. package/dist/services/subscription/index.d.ts +1 -1
  37. package/dist/services/subscription/index.d.ts.map +1 -1
  38. package/dist/services/subscription/subscriptionService.d.ts +2 -1
  39. package/dist/services/subscription/subscriptionService.d.ts.map +1 -1
  40. package/dist/services/subscription/types.d.ts +7 -28
  41. package/dist/services/subscription/types.d.ts.map +1 -1
  42. package/dist/{theme-state-C4EFId8j.js → theme-state-DMyDKxtl.js} +24 -38
  43. package/dist/theme-state.d.ts +3 -13
  44. package/dist/theme-state.d.ts.map +1 -1
  45. package/dist/utils/index.d.ts +0 -6
  46. package/dist/utils/index.d.ts.map +1 -1
  47. package/dist/vue/block.d.ts.map +1 -1
  48. package/dist/vue.js +8 -5
  49. package/dist/web-components/ExtensionRoot.d.ts.map +1 -1
  50. package/dist/web-components-editor.js +4 -4
  51. package/dist/web-components-runtime.js +3 -3
  52. package/package.json +1 -1
  53. package/dist/services/customer/adapter.d.ts +0 -13
  54. package/dist/services/customer/adapter.d.ts.map +0 -1
  55. package/dist/services/order/adapter.d.ts +0 -12
  56. package/dist/services/order/adapter.d.ts.map +0 -1
  57. package/dist/services/order/index.d.ts +0 -5
  58. package/dist/services/order/index.d.ts.map +0 -1
  59. package/dist/services/order/orderService.d.ts +0 -7
  60. package/dist/services/order/orderService.d.ts.map +0 -1
  61. package/dist/services/order/types.d.ts +0 -25
  62. package/dist/services/order/types.d.ts.map +0 -1
  63. package/dist/services/router/index.d.ts +0 -3
  64. package/dist/services/router/index.d.ts.map +0 -1
  65. package/dist/services/router/routerService.d.ts +0 -5
  66. package/dist/services/router/routerService.d.ts.map +0 -1
  67. package/dist/services/router/types.d.ts +0 -25
  68. package/dist/services/router/types.d.ts.map +0 -1
  69. package/dist/services/schedules/adapter.d.ts +0 -20
  70. package/dist/services/schedules/adapter.d.ts.map +0 -1
  71. package/dist/services/schedules/index.d.ts +0 -5
  72. package/dist/services/schedules/index.d.ts.map +0 -1
  73. package/dist/services/schedules/schedulesService.d.ts +0 -10
  74. package/dist/services/schedules/schedulesService.d.ts.map +0 -1
  75. package/dist/services/schedules/types.d.ts +0 -45
  76. package/dist/services/schedules/types.d.ts.map +0 -1
package/dist/core.js CHANGED
@@ -1,9 +1,9 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { c as createContext, d, w, E, u } from "./theme-state-C4EFId8j.js";
5
- import { B, n, C, D, S, T, a, b, e, f, k, l, g, h, i, m, p, o, q, r, s, t, v, j } from "./theme-state-C4EFId8j.js";
6
- import { T as T2, W, c, b as b2, a as a2, g as g2, h as h2 } from "./juo-workflow-COsYWku6.js";
4
+ import { c as createContext, d, w, r as registerBlock, E, u } from "./theme-state-DMyDKxtl.js";
5
+ import { B, C, a, D, S, T, b, e, f, g, h, i, j, k, l, m, n, o, p, s, q, t, v } from "./theme-state-DMyDKxtl.js";
6
+ import { T as T2, W, c, a as a2, b as b2, g as g2, h as h2 } from "./juo-workflow-BvTgGZQj.js";
7
7
  function createState() {
8
8
  const discountCode = d(null);
9
9
  const products = d([]);
@@ -72,6 +72,73 @@ function createState() {
72
72
  };
73
73
  }
74
74
  const StateContext = createContext("state");
75
+ function isLocalhostOrigin(origin) {
76
+ try {
77
+ const url = new URL(origin);
78
+ return ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
79
+ } catch {
80
+ return false;
81
+ }
82
+ }
83
+ function isLocalhostUrl(url) {
84
+ try {
85
+ const parsed = new URL(url);
86
+ return ["localhost", "127.0.0.1", "[::1]"].includes(parsed.hostname);
87
+ } catch {
88
+ return false;
89
+ }
90
+ }
91
+ function waitForDevBlocksUrl(timeout = 5e3) {
92
+ return new Promise((resolve) => {
93
+ const timer = setTimeout(() => {
94
+ window.removeEventListener("message", handler);
95
+ resolve(null);
96
+ }, timeout);
97
+ function handler(event) {
98
+ var _a, _b, _c;
99
+ if (!isLocalhostOrigin(event.origin)) return;
100
+ if (((_a = event.data) == null ? void 0 : _a.type) !== "PROVIDE_DEV_BLOCKS_URL") return;
101
+ const url = (_c = (_b = event.data) == null ? void 0 : _b.payload) == null ? void 0 : _c.url;
102
+ if (typeof url !== "string" || !isLocalhostUrl(url)) return;
103
+ clearTimeout(timer);
104
+ window.removeEventListener("message", handler);
105
+ resolve(url);
106
+ }
107
+ window.addEventListener("message", handler);
108
+ window.parent.postMessage(
109
+ { type: "PREVIEW_READY", timestamp: Date.now() },
110
+ "*"
111
+ );
112
+ });
113
+ }
114
+ async function loadBlockRegistry(options = {}) {
115
+ const { distributedRegistryUrl } = options;
116
+ if (distributedRegistryUrl) {
117
+ await import(
118
+ /* @vite-ignore */
119
+ distributedRegistryUrl
120
+ ).then((module) => {
121
+ if (typeof module !== "object" || module == null) {
122
+ console.warn("Distributed registry module is invalid");
123
+ return;
124
+ }
125
+ if ("registerBlocks" in module && typeof module.registerBlocks === "function") {
126
+ module.registerBlocks();
127
+ } else {
128
+ Object.entries(module).forEach(([_, item]) => {
129
+ if (typeof item === "object" && item != null) {
130
+ registerBlock(item);
131
+ }
132
+ });
133
+ }
134
+ }).catch(
135
+ (err) => console.warn(
136
+ `Distributed registry ${distributedRegistryUrl} not available`,
137
+ err
138
+ )
139
+ );
140
+ }
141
+ }
75
142
  const PARAMS = {
76
143
  DELETGATED_TOKEN: "delegated-token",
77
144
  REDIRECT_TO: "redirect-to",
@@ -415,18 +482,7 @@ function createLoginService(init) {
415
482
  return { _tag: "Success", data: void 0 };
416
483
  },
417
484
  isAuthenticated: auth.isAuthenticated,
418
- getToken: () => auth.getToken(),
419
- async getAuthHeaders() {
420
- const delegated = auth.getDelegatedToken();
421
- if (delegated) {
422
- return { "X-Delegated-Token": delegated };
423
- }
424
- const token = await auth.getToken();
425
- if (token) {
426
- return { Authorization: `Bearer ${token}` };
427
- }
428
- return {};
429
- }
485
+ getToken: () => auth.getToken()
430
486
  };
431
487
  return service;
432
488
  }
@@ -676,32 +732,6 @@ function createMockSubscriptionAdapter() {
676
732
  updatedAt: "2024-10-10T00:00:00Z"
677
733
  }
678
734
  ];
679
- const mockUpsellProducts = [
680
- {
681
- id: "upsell-1",
682
- variantId: "upsell-v-1",
683
- title: "Retinol Night Cream",
684
- imageUrl: "https://images.unsplash.com/photo-1617897903246-719242758050?w=200",
685
- price: { amount: "38.00", currencyCode: "USD" },
686
- description: "Anti-aging night treatment"
687
- },
688
- {
689
- id: "upsell-2",
690
- variantId: "upsell-v-2",
691
- title: "SPF 50 Day Shield",
692
- imageUrl: "https://images.unsplash.com/photo-1556228578-8c89e6adf883?w=200",
693
- price: { amount: "24.00", currencyCode: "USD" },
694
- description: "Lightweight daily sun protection"
695
- },
696
- {
697
- id: "upsell-3",
698
- variantId: "upsell-v-3",
699
- title: "Collagen Eye Patches",
700
- imageUrl: "https://images.unsplash.com/photo-1512290923902-8a9f81dc236c?w=200",
701
- price: { amount: "18.00", currencyCode: "USD" },
702
- description: "Depuffing under-eye treatment"
703
- }
704
- ];
705
735
  return {
706
736
  async getById(id) {
707
737
  await new Promise((resolve) => setTimeout(resolve, 300));
@@ -778,9 +808,7 @@ function createMockSubscriptionAdapter() {
778
808
  data: {
779
809
  ...subscription,
780
810
  items: subscription.items.map((item) => ({ ...item })),
781
- discounts: subscription.discounts.map((discount) => ({
782
- ...discount
783
- }))
811
+ discounts: subscription.discounts.map((discount) => ({ ...discount }))
784
812
  }
785
813
  };
786
814
  },
@@ -802,9 +830,7 @@ function createMockSubscriptionAdapter() {
802
830
  data: {
803
831
  ...subscription,
804
832
  items: subscription.items.map((item) => ({ ...item })),
805
- discounts: subscription.discounts.map((discount) => ({
806
- ...discount
807
- }))
833
+ discounts: subscription.discounts.map((discount) => ({ ...discount }))
808
834
  }
809
835
  };
810
836
  },
@@ -826,9 +852,7 @@ function createMockSubscriptionAdapter() {
826
852
  data: {
827
853
  ...subscription,
828
854
  items: subscription.items.map((item) => ({ ...item })),
829
- discounts: subscription.discounts.map((discount) => ({
830
- ...discount
831
- }))
855
+ discounts: subscription.discounts.map((discount) => ({ ...discount }))
832
856
  }
833
857
  };
834
858
  },
@@ -850,9 +874,7 @@ function createMockSubscriptionAdapter() {
850
874
  data: {
851
875
  ...subscription,
852
876
  items: subscription.items.map((item) => ({ ...item })),
853
- discounts: subscription.discounts.map((discount) => ({
854
- ...discount
855
- }))
877
+ discounts: subscription.discounts.map((discount) => ({ ...discount }))
856
878
  }
857
879
  };
858
880
  },
@@ -874,9 +896,7 @@ function createMockSubscriptionAdapter() {
874
896
  data: {
875
897
  ...subscription,
876
898
  items: subscription.items.map((item) => ({ ...item })),
877
- discounts: subscription.discounts.map((discount) => ({
878
- ...discount
879
- }))
899
+ discounts: subscription.discounts.map((discount) => ({ ...discount }))
880
900
  }
881
901
  };
882
902
  },
@@ -910,316 +930,6 @@ function createMockSubscriptionAdapter() {
910
930
  var _a;
911
931
  await new Promise((resolve) => setTimeout(resolve, 300));
912
932
  return { _tag: "Success", data: ((_a = mockSubscriptions[0]) == null ? void 0 : _a.id) ?? null };
913
- },
914
- async getDeliveryFrequencies() {
915
- await new Promise((resolve) => setTimeout(resolve, 200));
916
- return {
917
- _tag: "Success",
918
- data: [
919
- {
920
- id: "plan_1",
921
- name: "Monthly",
922
- billingPolicy: { intervalCount: 1, interval: "MONTH" },
923
- deliveryPolicy: { intervalCount: 1, interval: "MONTH" }
924
- },
925
- {
926
- id: "plan_2",
927
- name: "Every 2 months",
928
- billingPolicy: { intervalCount: 2, interval: "MONTH" },
929
- deliveryPolicy: { intervalCount: 2, interval: "MONTH" }
930
- }
931
- ]
932
- };
933
- },
934
- async getUpsellProducts() {
935
- await new Promise((resolve) => setTimeout(resolve, 300));
936
- return { _tag: "Success", data: [...mockUpsellProducts] };
937
- },
938
- async addUpsellProduct() {
939
- await new Promise((resolve) => setTimeout(resolve, 400));
940
- return { _tag: "Success", data: void 0 };
941
- },
942
- async changeFrequency(params) {
943
- await new Promise((resolve) => setTimeout(resolve, 300));
944
- const subscription = mockSubscriptions.find(
945
- (sub) => sub.id === params.subscriptionId
946
- );
947
- if (!subscription) {
948
- return { _tag: "Failure", error: "Subscription not found" };
949
- }
950
- subscription.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
951
- return {
952
- _tag: "Success",
953
- data: { ...subscription }
954
- };
955
- }
956
- };
957
- }
958
- function createApiSubscriptionAdapter(fetcher) {
959
- return {
960
- async search(options) {
961
- try {
962
- const params = new URLSearchParams();
963
- if (options == null ? void 0 : options.filters) {
964
- params.set("filters", JSON.stringify(options.filters));
965
- }
966
- if (options == null ? void 0 : options.pagination) {
967
- if ("after" in options.pagination) {
968
- params.set("after", options.pagination.after);
969
- } else if ("before" in options.pagination) {
970
- params.set("before", options.pagination.before);
971
- }
972
- }
973
- const query = params.toString() ? `?${params.toString()}` : "";
974
- const res = await fetcher(`/customer/v1/subscriptions${query}`);
975
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
976
- const body = await res.json();
977
- body.data.forEach((sub) => {
978
- if (sub.nextDeliveryDate) {
979
- sub.nextDeliveryDate = new Date(sub.nextDeliveryDate);
980
- }
981
- sub.items.forEach((item) => {
982
- if (item.nextDeliveryDate) {
983
- item.nextDeliveryDate = new Date(item.nextDeliveryDate);
984
- }
985
- });
986
- });
987
- const data = {
988
- items: body.data,
989
- pageInfo: {
990
- hasNextPage: body.hasNextPage,
991
- hasPrevPage: body.hasPrevPage,
992
- startCursor: body.startCursor,
993
- endCursor: body.endCursor
994
- }
995
- };
996
- return { _tag: "Success", data };
997
- } catch (e2) {
998
- return { _tag: "Failure", error: e2 };
999
- }
1000
- },
1001
- async getById(id) {
1002
- try {
1003
- const res = await fetcher(`/customer/v1/subscriptions/${id}`);
1004
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1005
- const data = await res.json();
1006
- if (data.nextDeliveryDate)
1007
- data.nextDeliveryDate = new Date(data.nextDeliveryDate);
1008
- return { _tag: "Success", data };
1009
- } catch (e2) {
1010
- return { _tag: "Failure", error: e2 };
1011
- }
1012
- },
1013
- async addItem({ subscriptionId, item }) {
1014
- try {
1015
- const res = await fetcher(
1016
- `/customer/v1/subscriptions/${subscriptionId}/items`,
1017
- {
1018
- method: "POST",
1019
- headers: { "Content-Type": "application/json" },
1020
- body: JSON.stringify(item)
1021
- }
1022
- );
1023
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1024
- return { _tag: "Success", data: void 0 };
1025
- } catch (e2) {
1026
- return { _tag: "Failure", error: e2 };
1027
- }
1028
- },
1029
- async removeItem({ subscriptionId, itemId }) {
1030
- try {
1031
- const res = await fetcher(
1032
- `/customer/v1/subscriptions/${subscriptionId}/items/${itemId}`,
1033
- { method: "DELETE" }
1034
- );
1035
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1036
- return { _tag: "Success", data: void 0 };
1037
- } catch (e2) {
1038
- return { _tag: "Failure", error: e2 };
1039
- }
1040
- },
1041
- async addDiscount({ subscriptionId, code }) {
1042
- try {
1043
- const res = await fetcher(
1044
- `/customer/v1/subscriptions/${subscriptionId}/discounts`,
1045
- {
1046
- method: "POST",
1047
- headers: { "Content-Type": "application/json" },
1048
- body: JSON.stringify({ code })
1049
- }
1050
- );
1051
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1052
- return { _tag: "Success", data: void 0 };
1053
- } catch (e2) {
1054
- return { _tag: "Failure", error: e2 };
1055
- }
1056
- },
1057
- async removeDiscount({ subscriptionId, discountId }) {
1058
- try {
1059
- const res = await fetcher(
1060
- `/customer/v1/subscriptions/${subscriptionId}/discounts/${discountId}`,
1061
- { method: "DELETE" }
1062
- );
1063
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1064
- return { _tag: "Success", data: void 0 };
1065
- } catch (e2) {
1066
- return { _tag: "Failure", error: e2 };
1067
- }
1068
- },
1069
- async reschedule({ subscriptionId, newDate }) {
1070
- try {
1071
- const res = await fetcher(
1072
- `/customer/v1/subscriptions/${subscriptionId}/reschedule`,
1073
- {
1074
- method: "POST",
1075
- headers: { "Content-Type": "application/json" },
1076
- body: JSON.stringify({ newDate })
1077
- }
1078
- );
1079
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1080
- const data = await res.json();
1081
- if (data.nextDeliveryDate)
1082
- data.nextDeliveryDate = new Date(data.nextDeliveryDate);
1083
- return { _tag: "Success", data };
1084
- } catch (e2) {
1085
- return { _tag: "Failure", error: e2 };
1086
- }
1087
- },
1088
- async resume({ subscriptionId }) {
1089
- try {
1090
- const res = await fetcher(
1091
- `/customer/v1/subscriptions/${subscriptionId}/resume`,
1092
- { method: "POST" }
1093
- );
1094
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1095
- const data = await res.json();
1096
- return { _tag: "Success", data };
1097
- } catch (e2) {
1098
- return { _tag: "Failure", error: e2 };
1099
- }
1100
- },
1101
- async pause({ subscriptionId }) {
1102
- try {
1103
- const res = await fetcher(
1104
- `/customer/v1/subscriptions/${subscriptionId}/pause`,
1105
- { method: "POST" }
1106
- );
1107
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1108
- const data = await res.json();
1109
- return { _tag: "Success", data };
1110
- } catch (e2) {
1111
- return { _tag: "Failure", error: e2 };
1112
- }
1113
- },
1114
- async reactivate({ subscriptionId }) {
1115
- try {
1116
- const res = await fetcher(
1117
- `/customer/v1/subscriptions/${subscriptionId}/reactivate`,
1118
- { method: "POST" }
1119
- );
1120
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1121
- const data = await res.json();
1122
- return { _tag: "Success", data };
1123
- } catch (e2) {
1124
- return { _tag: "Failure", error: e2 };
1125
- }
1126
- },
1127
- async cancel({ subscriptionId, reason }) {
1128
- try {
1129
- const res = await fetcher(
1130
- `/customer/v1/subscriptions/${subscriptionId}/cancel`,
1131
- {
1132
- method: "POST",
1133
- headers: { "Content-Type": "application/json" },
1134
- body: JSON.stringify({ reason })
1135
- }
1136
- );
1137
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1138
- const data = await res.json();
1139
- return { _tag: "Success", data };
1140
- } catch (e2) {
1141
- return { _tag: "Failure", error: e2 };
1142
- }
1143
- },
1144
- async getAvailablePlans({ subscriptionId }) {
1145
- try {
1146
- const res = await fetcher(
1147
- `/customer/v1/subscriptions/${subscriptionId}/plans`
1148
- );
1149
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1150
- const data = await res.json();
1151
- return { _tag: "Success", data: data.items };
1152
- } catch (e2) {
1153
- return { _tag: "Failure", error: e2 };
1154
- }
1155
- },
1156
- async getDefaultSubscriptionId() {
1157
- var _a;
1158
- try {
1159
- const res = await fetcher(`/customer/v1/subscriptions?limit=1`);
1160
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1161
- const body = await res.json();
1162
- return { _tag: "Success", data: ((_a = body.data[0]) == null ? void 0 : _a.id) ?? null };
1163
- } catch (e2) {
1164
- return { _tag: "Failure", error: e2 };
1165
- }
1166
- },
1167
- async getDeliveryFrequencies({ subscriptionId }) {
1168
- try {
1169
- const res = await fetcher(
1170
- `/customer/v1/subscriptions/${subscriptionId}/frequencies`
1171
- );
1172
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1173
- const data = await res.json();
1174
- return { _tag: "Success", data: data.items };
1175
- } catch (e2) {
1176
- return { _tag: "Failure", error: e2 };
1177
- }
1178
- },
1179
- async getUpsellProducts({ subscriptionId }) {
1180
- try {
1181
- const res = await fetcher(
1182
- `/customer/v1/subscriptions/${subscriptionId}/upsells`
1183
- );
1184
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1185
- const data = await res.json();
1186
- return { _tag: "Success", data: data.items };
1187
- } catch (e2) {
1188
- return { _tag: "Failure", error: e2 };
1189
- }
1190
- },
1191
- async addUpsellProduct({ subscriptionId, variantId, quantity, oneTime }) {
1192
- try {
1193
- const res = await fetcher(
1194
- `/customer/v1/subscriptions/${subscriptionId}/upsells`,
1195
- {
1196
- method: "POST",
1197
- headers: { "Content-Type": "application/json" },
1198
- body: JSON.stringify({ variantId, quantity, oneTime })
1199
- }
1200
- );
1201
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1202
- return { _tag: "Success", data: void 0 };
1203
- } catch (e2) {
1204
- return { _tag: "Failure", error: e2 };
1205
- }
1206
- },
1207
- async changeFrequency({ subscriptionId, sellingPlanId }) {
1208
- try {
1209
- const res = await fetcher(
1210
- `/customer/v1/subscriptions/${subscriptionId}/frequency`,
1211
- {
1212
- method: "POST",
1213
- headers: { "Content-Type": "application/json" },
1214
- body: JSON.stringify({ sellingPlanId })
1215
- }
1216
- );
1217
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1218
- const data = await res.json();
1219
- return { _tag: "Success", data };
1220
- } catch (e2) {
1221
- return { _tag: "Failure", error: e2 };
1222
- }
1223
933
  }
1224
934
  };
1225
935
  }
@@ -1245,24 +955,9 @@ function getCurrentSubscriptionId() {
1245
955
  }
1246
956
  function createSubscriptionService(adapter) {
1247
957
  const current = d(null);
1248
- const hasPendingBilling = d(false);
1249
- return {
1250
- current,
1251
- hasPendingBilling,
1252
- async search(options) {
1253
- const result = await adapter.search(options);
1254
- if (result._tag === "Success") {
1255
- current.value = result.data.items[0] ?? null;
1256
- }
1257
- return result;
1258
- },
1259
- async getById(id) {
1260
- const result = await adapter.getById(id);
1261
- if (result._tag === "Success" && result.data) {
1262
- current.value = result.data;
1263
- }
1264
- return result;
1265
- },
958
+ const service = {
959
+ search: adapter.search,
960
+ getById: adapter.getById,
1266
961
  getCurrentSubscriptionId,
1267
962
  addItem: (subscriptionId, item) => adapter.addItem({ subscriptionId, item }),
1268
963
  removeItem: (subscriptionId, itemId) => adapter.removeItem({ subscriptionId, itemId }),
@@ -1275,508 +970,16 @@ function createSubscriptionService(adapter) {
1275
970
  cancel: (subscriptionId, reason) => adapter.cancel({ subscriptionId, reason }),
1276
971
  getAvailablePlans: (subscriptionId) => adapter.getAvailablePlans({ subscriptionId }),
1277
972
  getDefaultSubscriptionId: () => adapter.getDefaultSubscriptionId(),
1278
- getDeliveryFrequencies: (params) => adapter.getDeliveryFrequencies ? adapter.getDeliveryFrequencies(params) : Promise.resolve({ _tag: "Success", data: [] }),
1279
- getUpsellProducts: (params) => adapter.getUpsellProducts ? adapter.getUpsellProducts(params) : Promise.resolve({ _tag: "Success", data: [] }),
1280
- addUpsellProduct: (params) => adapter.addUpsellProduct ? adapter.addUpsellProduct(params) : Promise.resolve({ _tag: "Success", data: void 0 }),
1281
- changeFrequency: (params) => adapter.changeFrequency ? adapter.changeFrequency(params) : Promise.resolve({ _tag: "Failure", error: "Not implemented" })
1282
- };
1283
- }
1284
- function createMockCustomerAdapter() {
1285
- let customers = [
1286
- {
1287
- id: "customer-1",
1288
- name: "Customer 1",
1289
- metadata: { mealCount: 3 }
1290
- },
1291
- {
1292
- id: "customer-2",
1293
- name: "Customer 2",
1294
- metadata: { mealCount: 4 }
1295
- }
1296
- ];
1297
- return {
1298
- async getCurrent() {
1299
- return { _tag: "Success", data: customers[0] ?? null };
1300
- },
1301
- async getAll() {
1302
- return { _tag: "Success", data: [...customers] };
1303
- },
1304
- async getById(id) {
1305
- return {
1306
- _tag: "Success",
1307
- data: customers.find((c2) => c2.id === id) ?? null
1308
- };
1309
- },
1310
- async create(data) {
1311
- const customer = { id: `customer-${Date.now()}`, ...data };
1312
- customers = [...customers, customer];
1313
- return { _tag: "Success", data: customer };
1314
- },
1315
- async update(id, data) {
1316
- const existing = customers.find((c2) => c2.id === id);
1317
- if (!existing) return { _tag: "Failure", error: "Customer not found" };
1318
- const updated = { ...existing, ...data };
1319
- customers = customers.map((c2) => c2.id === id ? updated : c2);
1320
- return { _tag: "Success", data: updated };
1321
- },
1322
- async remove(id) {
1323
- customers = customers.filter((c2) => c2.id !== id);
1324
- return { _tag: "Success", data: void 0 };
1325
- }
1326
- };
1327
- }
1328
- function createApiCustomerAdapter(fetcher) {
1329
- return {
1330
- async getCurrent() {
1331
- try {
1332
- const res = await fetcher("/customer/v1/customer");
1333
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1334
- const data = await res.json();
1335
- return { _tag: "Success", data };
1336
- } catch (e2) {
1337
- return { _tag: "Failure", error: e2 };
1338
- }
1339
- },
1340
- async getAll() {
1341
- try {
1342
- const res = await fetcher("/customer/v1/customers");
1343
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1344
- const data = await res.json();
1345
- return { _tag: "Success", data };
1346
- } catch (e2) {
1347
- return { _tag: "Failure", error: e2 };
1348
- }
1349
- },
1350
- async getById(id) {
1351
- try {
1352
- const res = await fetcher(`/customer/v1/customers/${id}`);
1353
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1354
- const data = await res.json();
1355
- return { _tag: "Success", data };
1356
- } catch (e2) {
1357
- return { _tag: "Failure", error: e2 };
1358
- }
1359
- },
1360
- async create(data) {
1361
- try {
1362
- const res = await fetcher("/customer/v1/customers", {
1363
- method: "POST",
1364
- headers: { "Content-Type": "application/json" },
1365
- body: JSON.stringify(data)
1366
- });
1367
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1368
- const created = await res.json();
1369
- return { _tag: "Success", data: created };
1370
- } catch (e2) {
1371
- return { _tag: "Failure", error: e2 };
1372
- }
1373
- },
1374
- async update(id, data) {
1375
- try {
1376
- const res = await fetcher(`/customer/v1/customers/${id}`, {
1377
- method: "PATCH",
1378
- headers: { "Content-Type": "application/json" },
1379
- body: JSON.stringify(data)
1380
- });
1381
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1382
- const updated = await res.json();
1383
- return { _tag: "Success", data: updated };
1384
- } catch (e2) {
1385
- return { _tag: "Failure", error: e2 };
1386
- }
1387
- },
1388
- async remove(id) {
1389
- try {
1390
- const res = await fetcher(`/customer/v1/customers/${id}`, {
1391
- method: "DELETE"
1392
- });
1393
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1394
- return { _tag: "Success", data: void 0 };
1395
- } catch (e2) {
1396
- return { _tag: "Failure", error: e2 };
1397
- }
1398
- }
973
+ current
1399
974
  };
975
+ return service;
1400
976
  }
1401
977
  const CustomerServiceContext = createContext("services/customer");
1402
- function createCustomerService(adapter) {
1403
- return {
1404
- getCurrent: () => adapter.getCurrent(),
1405
- getAll: () => adapter.getAll(),
1406
- getById: (id) => adapter.getById(id),
1407
- create: (data) => adapter.create(data),
1408
- update: (id, data) => adapter.update(id, data),
1409
- remove: (id) => adapter.remove(id)
1410
- };
1411
- }
1412
- function createMockOrderAdapter() {
1413
- let orders = [
1414
- {
1415
- id: "order-1",
1416
- customerId: "customer-1",
1417
- items: [],
1418
- deliveryDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3).toISOString().split("T")[0] ?? null,
1419
- status: "pending"
1420
- },
1421
- {
1422
- id: "order-2",
1423
- customerId: "customer-1",
1424
- items: [
1425
- { id: "item-1", productId: "p1", variantId: "v1", quantity: 1 },
1426
- { id: "item-2", productId: "p2", variantId: "v2", quantity: 2 }
1427
- ],
1428
- deliveryDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1e3).toISOString().split("T")[0] ?? null,
1429
- status: "delivered"
1430
- },
1431
- {
1432
- id: "order-3",
1433
- customerId: "customer-1",
1434
- items: [
1435
- { id: "item-3", productId: "p1", variantId: "v1", quantity: 1 }
1436
- ],
1437
- deliveryDate: new Date(Date.now() - 60 * 24 * 60 * 60 * 1e3).toISOString().split("T")[0] ?? null,
1438
- status: "delivered"
1439
- },
1440
- {
1441
- id: "order-4",
1442
- customerId: "customer-1",
1443
- items: [],
1444
- deliveryDate: new Date(Date.now() - 90 * 24 * 60 * 60 * 1e3).toISOString().split("T")[0] ?? null,
1445
- status: "skipped"
1446
- }
1447
- ];
1448
- return {
1449
- async getUpcoming() {
1450
- return {
1451
- _tag: "Success",
1452
- data: orders.filter((o2) => o2.status === "pending")
1453
- };
1454
- },
1455
- async getHistory() {
1456
- return {
1457
- _tag: "Success",
1458
- data: orders.filter((o2) => o2.status === "delivered" || o2.status === "skipped").sort((a3, b3) => (b3.deliveryDate ?? "").localeCompare(a3.deliveryDate ?? ""))
1459
- };
1460
- },
1461
- async getById(id) {
1462
- return {
1463
- _tag: "Success",
1464
- data: orders.find((o2) => o2.id === id) ?? null
1465
- };
1466
- },
1467
- async updateItems(orderId, items) {
1468
- const order = orders.find((o2) => o2.id === orderId);
1469
- if (!order) return { _tag: "Failure", error: "Order not found" };
1470
- const updated = {
1471
- ...order,
1472
- items: items.map((item, i2) => ({
1473
- id: `item-${Date.now()}-${i2}`,
1474
- ...item
1475
- }))
1476
- };
1477
- orders = orders.map((o2) => o2.id === orderId ? updated : o2);
1478
- return { _tag: "Success", data: updated };
1479
- },
1480
- async skip(orderId) {
1481
- const order = orders.find((o2) => o2.id === orderId);
1482
- if (!order) return { _tag: "Failure", error: "Order not found" };
1483
- const updated = { ...order, status: "skipped" };
1484
- orders = orders.map((o2) => o2.id === orderId ? updated : o2);
1485
- return { _tag: "Success", data: updated };
1486
- }
1487
- };
1488
- }
1489
- function createApiOrderAdapter(fetcher) {
1490
- return {
1491
- async getUpcoming() {
1492
- try {
1493
- const res = await fetcher("/customer/v1/orders?status=pending");
1494
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1495
- const body = await res.json();
1496
- return { _tag: "Success", data: body.orders };
1497
- } catch (e2) {
1498
- return { _tag: "Failure", error: e2 };
1499
- }
1500
- },
1501
- async getHistory() {
1502
- try {
1503
- const res = await fetcher("/customer/v1/orders?status=delivered,skipped");
1504
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1505
- const body = await res.json();
1506
- return { _tag: "Success", data: body.orders };
1507
- } catch (e2) {
1508
- return { _tag: "Failure", error: e2 };
1509
- }
1510
- },
1511
- async getById(id) {
1512
- try {
1513
- const res = await fetcher(`/customer/v1/orders/${id}`);
1514
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1515
- const data = await res.json();
1516
- return { _tag: "Success", data };
1517
- } catch (e2) {
1518
- return { _tag: "Failure", error: e2 };
1519
- }
1520
- },
1521
- async updateItems(orderId, items) {
1522
- try {
1523
- const res = await fetcher(`/customer/v1/orders/${orderId}/items`, {
1524
- method: "PUT",
1525
- headers: { "Content-Type": "application/json" },
1526
- body: JSON.stringify({ items })
1527
- });
1528
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1529
- const data = await res.json();
1530
- return { _tag: "Success", data };
1531
- } catch (e2) {
1532
- return { _tag: "Failure", error: e2 };
1533
- }
1534
- },
1535
- async skip(orderId) {
1536
- try {
1537
- const res = await fetcher(`/customer/v1/orders/${orderId}/skip`, {
1538
- method: "POST"
1539
- });
1540
- if (!res.ok) return { _tag: "Failure", error: await res.text() };
1541
- const data = await res.json();
1542
- return { _tag: "Success", data };
1543
- } catch (e2) {
1544
- return { _tag: "Failure", error: e2 };
1545
- }
1546
- }
1547
- };
1548
- }
1549
- const OrderServiceContext = createContext("services/order");
1550
- function createOrderService(adapter) {
1551
- return {
1552
- getUpcoming: () => adapter.getUpcoming(),
1553
- getHistory: () => adapter.getHistory(),
1554
- getById: (id) => adapter.getById(id),
1555
- updateItems: (orderId, items) => adapter.updateItems(orderId, items),
1556
- skip: (orderId) => adapter.skip(orderId)
1557
- };
1558
- }
1559
- function futureDateStr(daysFromNow) {
1560
- const d2 = /* @__PURE__ */ new Date();
1561
- d2.setDate(d2.getDate() + daysFromNow);
1562
- return d2.toISOString().split("T")[0] ?? "";
1563
- }
1564
- function createMockSchedulesAdapter() {
1565
- let orders = [
1566
- {
1567
- id: "schedule-order-1",
1568
- subscriptionId: "sub_1",
1569
- deliveryDate: futureDateStr(7),
1570
- items: [
1571
- {
1572
- id: "si-1",
1573
- productId: "p-beauty-1",
1574
- variantId: "v-beauty-1",
1575
- quantity: 1,
1576
- title: "Rose Face Serum",
1577
- imageUrl: "https://images.unsplash.com/photo-1611930022073-b7a4ba5fcccd?w=200"
1578
- },
1579
- {
1580
- id: "si-2",
1581
- productId: "p-beauty-2",
1582
- variantId: "v-beauty-2",
1583
- quantity: 1,
1584
- title: "Vitamin C Moisturizer",
1585
- imageUrl: "https://images.unsplash.com/photo-1556228578-8c89e6adf883?w=200"
1586
- }
1587
- ],
1588
- status: "scheduled"
1589
- },
1590
- {
1591
- id: "schedule-order-2",
1592
- subscriptionId: "sub_1",
1593
- deliveryDate: futureDateStr(35),
1594
- items: [
1595
- {
1596
- id: "si-3",
1597
- productId: "p-beauty-1",
1598
- variantId: "v-beauty-1",
1599
- quantity: 1,
1600
- title: "Rose Face Serum",
1601
- imageUrl: "https://images.unsplash.com/photo-1611930022073-b7a4ba5fcccd?w=200"
1602
- },
1603
- {
1604
- id: "si-4",
1605
- productId: "p-beauty-3",
1606
- variantId: "v-beauty-3",
1607
- quantity: 1,
1608
- title: "Hyaluronic Acid Serum",
1609
- imageUrl: "https://images.unsplash.com/photo-1621232201696-ba6c9db10a97?w=200"
1610
- }
1611
- ],
1612
- status: "scheduled"
1613
- }
1614
- ];
1615
- let adjustments = [];
1616
- return {
1617
- async getUpcomingOrders(count) {
1618
- await new Promise((r2) => setTimeout(r2, 200));
1619
- return { _tag: "Success", data: orders.slice(0, count) };
1620
- },
1621
- async getAdjustments() {
1622
- await new Promise((r2) => setTimeout(r2, 200));
1623
- return { _tag: "Success", data: [...adjustments] };
1624
- },
1625
- async skipOrder({ subscriptionId }) {
1626
- await new Promise((r2) => setTimeout(r2, 300));
1627
- const order = orders.find(
1628
- (o2) => o2.subscriptionId === subscriptionId && o2.status === "scheduled"
1629
- );
1630
- if (!order) return { _tag: "Failure", error: "No scheduled order found" };
1631
- orders = orders.map(
1632
- (o2) => o2.id === order.id ? { ...o2, status: "skipped" } : o2
1633
- );
1634
- const adj = {
1635
- id: `adj-${Date.now()}`,
1636
- subscriptionId,
1637
- type: "skip"
1638
- };
1639
- adjustments = [...adjustments, adj];
1640
- return { _tag: "Success", data: void 0 };
1641
- },
1642
- async changeDateAdjustment({ subscriptionId, newDate }) {
1643
- await new Promise((r2) => setTimeout(r2, 300));
1644
- const order = orders.find(
1645
- (o2) => o2.subscriptionId === subscriptionId && o2.status === "scheduled"
1646
- );
1647
- if (!order) return { _tag: "Failure", error: "No scheduled order found" };
1648
- orders = orders.map(
1649
- (o2) => o2.id === order.id ? { ...o2, deliveryDate: newDate } : o2
1650
- );
1651
- const adj = {
1652
- id: `adj-${Date.now()}`,
1653
- subscriptionId,
1654
- type: "date_change",
1655
- newDate
1656
- };
1657
- adjustments = [...adjustments, adj];
1658
- return { _tag: "Success", data: void 0 };
1659
- },
1660
- async removeAdjustment({ adjustmentId }) {
1661
- await new Promise((r2) => setTimeout(r2, 200));
1662
- adjustments = adjustments.filter((a3) => a3.id !== adjustmentId);
1663
- return { _tag: "Success", data: void 0 };
1664
- }
1665
- };
1666
- }
1667
- function createApiSchedulesAdapter(fetcher) {
1668
- return {
1669
- async getUpcomingOrders(count) {
1670
- try {
1671
- const res = await fetcher(
1672
- `/customer/v1/schedules?count=${count}`
1673
- );
1674
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1675
- const data = await res.json();
1676
- return { _tag: "Success", data: data.orders };
1677
- } catch (e2) {
1678
- return { _tag: "Failure", error: e2 };
1679
- }
1680
- },
1681
- async getAdjustments() {
1682
- try {
1683
- const res = await fetcher(`/customer/v1/schedules/adjustments`);
1684
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1685
- const data = await res.json();
1686
- return { _tag: "Success", data: data.items };
1687
- } catch (e2) {
1688
- return { _tag: "Failure", error: e2 };
1689
- }
1690
- },
1691
- async skipOrder(params) {
1692
- try {
1693
- const res = await fetcher(`/customer/v1/schedules/adjustments`, {
1694
- method: "POST",
1695
- headers: { "Content-Type": "application/json" },
1696
- body: JSON.stringify({ action: "skip", ...params })
1697
- });
1698
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1699
- return { _tag: "Success", data: void 0 };
1700
- } catch (e2) {
1701
- return { _tag: "Failure", error: e2 };
1702
- }
1703
- },
1704
- async changeDateAdjustment(params) {
1705
- try {
1706
- const res = await fetcher(`/customer/v1/schedules/adjustments`, {
1707
- method: "POST",
1708
- headers: { "Content-Type": "application/json" },
1709
- body: JSON.stringify({ action: "date_change", ...params })
1710
- });
1711
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1712
- return { _tag: "Success", data: void 0 };
1713
- } catch (e2) {
1714
- return { _tag: "Failure", error: e2 };
1715
- }
1716
- },
1717
- async removeAdjustment({ adjustmentId }) {
1718
- try {
1719
- const res = await fetcher(
1720
- `/customer/v1/schedules/adjustments/${adjustmentId}`,
1721
- { method: "DELETE" }
1722
- );
1723
- if (!res.ok) return { _tag: "Failure", error: `HTTP ${res.status}` };
1724
- return { _tag: "Success", data: void 0 };
1725
- } catch (e2) {
1726
- return { _tag: "Failure", error: e2 };
1727
- }
1728
- }
1729
- };
1730
- }
1731
- const SchedulesServiceContext = createContext("services/schedules");
1732
- function createSchedulesService(adapter, opts) {
1733
- const upcoming = d([]);
1734
- async function refreshUpcoming() {
1735
- const count = Math.max(upcoming.value.length, 3);
1736
- const result = await adapter.getUpcomingOrders(count);
1737
- if (result._tag === "Success") {
1738
- upcoming.value = result.data;
1739
- }
1740
- }
1741
- return {
1742
- upcoming,
1743
- hasPendingBilling: opts.hasPendingBilling,
1744
- async getUpcomingOrder() {
1745
- const result = await adapter.getUpcomingOrders(1);
1746
- if (result._tag === "Failure") return result;
1747
- upcoming.value = result.data;
1748
- return { _tag: "Success", data: result.data[0] ?? null };
1749
- },
1750
- async getUpcomingOrders(count) {
1751
- const result = await adapter.getUpcomingOrders(count);
1752
- if (result._tag === "Success") {
1753
- upcoming.value = result.data;
1754
- }
1755
- return result;
1756
- },
1757
- async getAdjustments() {
1758
- return adapter.getAdjustments();
1759
- },
1760
- async skipOrder(params) {
1761
- const result = await adapter.skipOrder(params);
1762
- if (result._tag === "Success") {
1763
- await refreshUpcoming();
1764
- }
1765
- return result;
1766
- },
1767
- async changeDateAdjustment(params) {
1768
- const result = await adapter.changeDateAdjustment(params);
1769
- if (result._tag === "Success") {
1770
- await refreshUpcoming();
1771
- }
1772
- return result;
1773
- },
1774
- async removeAdjustment(params) {
1775
- return adapter.removeAdjustment(params);
1776
- }
1777
- };
978
+ function createCustomerService() {
979
+ const current = d(null);
980
+ const service = { current };
981
+ return service;
1778
982
  }
1779
- const RouterServiceContext = createContext("services/router");
1780
983
  const MOCK_FLOWS = {
1781
984
  cancellation: [
1782
985
  {
@@ -2031,15 +1234,12 @@ export {
2031
1234
  AuthenticationError,
2032
1235
  AuthenticationErrorReason,
2033
1236
  B as BlockWrapperEvent,
2034
- n as ContextProvideEvent,
2035
- C as ContextRequestEvent,
1237
+ C as ContextProvideEvent,
1238
+ a as ContextRequestEvent,
2036
1239
  CustomerServiceContext,
2037
1240
  D as DEFAULT_GLOBAL_STYLES,
2038
1241
  LoginServiceContext,
2039
- OrderServiceContext,
2040
1242
  ProductServiceContext,
2041
- RouterServiceContext,
2042
- SchedulesServiceContext,
2043
1243
  S as SelectedBlockContext,
2044
1244
  u as Signal,
2045
1245
  StateContext,
@@ -2048,47 +1248,40 @@ export {
2048
1248
  T2 as TranslationContext,
2049
1249
  W as WorkflowServiceContext,
2050
1250
  w as computed,
2051
- createApiCustomerAdapter,
2052
- createApiOrderAdapter,
2053
- createApiSchedulesAdapter,
2054
- createApiSubscriptionAdapter,
2055
- a as createBlockInstance,
2056
- b as createBlockInstanceFromJSON,
2057
- e as createBlockInstanceFromObject,
2058
- f as createCeRenderer,
1251
+ b as createBlockInstance,
1252
+ e as createBlockInstanceFromJSON,
1253
+ f as createBlockInstanceFromObject,
1254
+ g as createCeRenderer,
2059
1255
  createContext,
2060
1256
  createCustomerService,
2061
- createMockCustomerAdapter,
2062
- createMockOrderAdapter,
2063
1257
  createMockProductAdapter,
2064
- createMockSchedulesAdapter,
2065
1258
  createMockSubscriptionAdapter,
2066
1259
  createMockWorkflowApiAdapter,
2067
- createOrderService,
2068
1260
  createProductService,
2069
- createSchedulesService,
2070
- k as createSelectedBlock,
1261
+ h as createSelectedBlock,
2071
1262
  createState,
2072
1263
  createSubscriptionService,
2073
- l as createThemeState,
1264
+ i as createThemeState,
2074
1265
  c as createTranslationService,
2075
- b2 as createWorkflowApiAdapter,
2076
- a2 as createWorkflowService,
2077
- g as defineBlock,
2078
- h as defineBlockRuntime,
1266
+ a2 as createWorkflowApiAdapter,
1267
+ b2 as createWorkflowService,
1268
+ j as defineBlock,
1269
+ k as defineBlockRuntime,
2079
1270
  E as effect,
2080
1271
  g2 as getDefaultBlockForAction,
2081
- i as getDefinedBlocks,
1272
+ l as getDefinedBlocks,
2082
1273
  h2 as hasDefaultBlockForAction,
2083
1274
  m as indexOverrides,
2084
- p as injectContext,
1275
+ n as injectContext,
1276
+ loadBlockRegistry,
2085
1277
  loginService,
2086
1278
  o as onRegisterBlock,
2087
- q as provideContext,
2088
- r as registerBlock,
1279
+ p as provideContext,
1280
+ registerBlock,
2089
1281
  s as serializeBlocks,
2090
1282
  d as signal,
2091
- t as subscribeContext,
2092
- v as untracked,
2093
- j as withWrapper
1283
+ q as subscribeContext,
1284
+ t as untracked,
1285
+ waitForDevBlocksUrl,
1286
+ v as withWrapper
2094
1287
  };