@wix/cli-app 1.1.60 → 1.1.62

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 (102) hide show
  1. package/build/{CreateVersionCommand-Z6F5IKH5.js → CreateVersionCommand-IEF6U34E.js} +15 -15
  2. package/build/{DevCommand-YFEZ4QV5.js → DevCommand-SOODXUEP.js} +438 -299
  3. package/build/DevCommand-SOODXUEP.js.map +1 -0
  4. package/build/{GenerateCommand-KCV4YDNN.js → GenerateCommand-ARNW73TM.js} +108 -43
  5. package/build/{GenerateCommand-KCV4YDNN.js.map → GenerateCommand-ARNW73TM.js.map} +1 -1
  6. package/build/{LogsCommand-VBMGVYNU.js → LogsCommand-7TW36YZX.js} +5 -5
  7. package/build/PreviewCommand-ZZKRP2GF.js +23 -0
  8. package/build/{ReleaseCommand-5F3FPBXT.js → ReleaseCommand-SB2WWSVP.js} +15 -15
  9. package/build/{ServeCommand-G4FF4PT3.js → ServeCommand-GZKF6AN3.js} +14 -14
  10. package/build/{build-XZI3USNB.js → build-LHCSCFBM.js} +38 -9
  11. package/build/build-LHCSCFBM.js.map +1 -0
  12. package/build/{chunk-QVGYU6D4.js → chunk-2DRVDGHR.js} +5 -5
  13. package/build/chunk-2DRVDGHR.js.map +1 -0
  14. package/build/{chunk-USAOCISL.js → chunk-4WKSS3PU.js} +4 -4
  15. package/build/{chunk-CNZ3Q5PF.js → chunk-5R5H3Y2D.js} +105 -161
  16. package/build/chunk-5R5H3Y2D.js.map +1 -0
  17. package/build/chunk-6IX6CDWB.js +27644 -0
  18. package/build/chunk-6IX6CDWB.js.map +1 -0
  19. package/build/{chunk-VZJZSWRE.js → chunk-6US7335E.js} +3 -3
  20. package/build/{chunk-WRWNJYKZ.js → chunk-A3FHJ4EK.js} +3 -3
  21. package/build/{chunk-PKSGXFYA.js → chunk-HKX5ODUN.js} +3 -3
  22. package/build/{chunk-HUWYF2ET.js → chunk-KCNEUOW2.js} +8 -8
  23. package/build/{chunk-O42QDBJU.js → chunk-KJR4P55M.js} +3 -3
  24. package/build/{chunk-5QZS3HT7.js → chunk-KVM6MGID.js} +3 -3
  25. package/build/{chunk-VXE3IWKR.js → chunk-LMFNRK6X.js} +2 -2
  26. package/build/{chunk-DGTJGIY2.js → chunk-LULKQBSP.js} +5125 -2917
  27. package/build/chunk-LULKQBSP.js.map +1 -0
  28. package/build/{chunk-IG6IV6VM.js → chunk-MTEB33GR.js} +3 -3
  29. package/build/{chunk-36W5H7IG.js → chunk-PM4M3SGC.js} +195 -177
  30. package/build/chunk-PM4M3SGC.js.map +1 -0
  31. package/build/{chunk-4VTDNX5T.js → chunk-UE7LDQKD.js} +2 -2
  32. package/build/{chunk-2PTCXTKF.js → chunk-UZXKDHQZ.js} +5 -5
  33. package/build/{chunk-WRPV7SLY.js → chunk-V75TFIXI.js} +193 -20
  34. package/build/chunk-V75TFIXI.js.map +1 -0
  35. package/build/{chunk-7CGRTCDC.js → chunk-YW2RBPPY.js} +3 -3
  36. package/build/{chunk-QZOQAFHK.js → chunk-ZR3N5INU.js} +8 -8
  37. package/build/chunk-ZR3N5INU.js.map +1 -0
  38. package/build/cloudflare-runtime/entry.js +7157 -52
  39. package/build/cloudflare-runtime/getRegisteredExtensions.js +7095 -15
  40. package/build/index.js +20 -20
  41. package/build/platform-sdk/chunk-3U6QUCP3.js +2 -0
  42. package/build/platform-sdk/chunk-3U6QUCP3.js.map +1 -0
  43. package/build/platform-sdk/{chunk-QV4VBCJB.js → chunk-FLUCZ5U6.js} +2 -2
  44. package/build/platform-sdk/chunk-VXQAZIAE.js +2 -0
  45. package/build/platform-sdk/{chunk-EERHWVVD.js.map → chunk-VXQAZIAE.js.map} +1 -1
  46. package/build/platform-sdk/chunk-ZM5O3GFB.js +2 -0
  47. package/build/platform-sdk/chunk-ZM5O3GFB.js.map +1 -0
  48. package/build/platform-sdk/dashboard.js +1 -1
  49. package/build/platform-sdk/dashboard.js.map +1 -1
  50. package/build/platform-sdk/editor.js +2 -2
  51. package/build/platform-sdk/editor.js.map +1 -1
  52. package/build/platform-sdk/sdk-context.js +1 -1
  53. package/build/platform-sdk/sdk-context.js.map +1 -1
  54. package/build/platform-sdk/site.js +1 -1
  55. package/build/platform-sdk/site.js.map +1 -1
  56. package/build/platform-sdk/web-methods.js +1 -1
  57. package/build/platform-sdk/web-methods.js.map +1 -1
  58. package/build/{preview-VAHHFTRZ.js → preview-ZAKEXAJH.js} +13 -13
  59. package/build/{render-command-3AYSQXHN.js → render-command-XMQH723O.js} +6 -6
  60. package/package.json +8 -6
  61. package/schemas/custom-element.json +1 -1
  62. package/templates/custom-element/files/element.module.css.ejs +18 -5
  63. package/templates/custom-element/files/element.tsx.ejs +8 -5
  64. package/templates/custom-element/files/panel.tsx.ejs +25 -12
  65. package/templates/web-method/dependencies.json +5 -0
  66. package/templates/web-method/files/placeholder.ts.ejs +9 -2
  67. package/build/DevCommand-YFEZ4QV5.js.map +0 -1
  68. package/build/PreviewCommand-3OMHWDW6.js +0 -23
  69. package/build/build-XZI3USNB.js.map +0 -1
  70. package/build/chunk-36W5H7IG.js.map +0 -1
  71. package/build/chunk-CNZ3Q5PF.js.map +0 -1
  72. package/build/chunk-DGTJGIY2.js.map +0 -1
  73. package/build/chunk-FTC5AK3Y.js +0 -1367
  74. package/build/chunk-FTC5AK3Y.js.map +0 -1
  75. package/build/chunk-QVGYU6D4.js.map +0 -1
  76. package/build/chunk-QZOQAFHK.js.map +0 -1
  77. package/build/chunk-WRPV7SLY.js.map +0 -1
  78. package/build/platform-sdk/chunk-42XIZ4MH.js +0 -2
  79. package/build/platform-sdk/chunk-42XIZ4MH.js.map +0 -1
  80. package/build/platform-sdk/chunk-7EYXEF6M.js +0 -2
  81. package/build/platform-sdk/chunk-7EYXEF6M.js.map +0 -1
  82. package/build/platform-sdk/chunk-EERHWVVD.js +0 -2
  83. /package/build/{CreateVersionCommand-Z6F5IKH5.js.map → CreateVersionCommand-IEF6U34E.js.map} +0 -0
  84. /package/build/{LogsCommand-VBMGVYNU.js.map → LogsCommand-7TW36YZX.js.map} +0 -0
  85. /package/build/{PreviewCommand-3OMHWDW6.js.map → PreviewCommand-ZZKRP2GF.js.map} +0 -0
  86. /package/build/{ReleaseCommand-5F3FPBXT.js.map → ReleaseCommand-SB2WWSVP.js.map} +0 -0
  87. /package/build/{ServeCommand-G4FF4PT3.js.map → ServeCommand-GZKF6AN3.js.map} +0 -0
  88. /package/build/{chunk-USAOCISL.js.map → chunk-4WKSS3PU.js.map} +0 -0
  89. /package/build/{chunk-VZJZSWRE.js.map → chunk-6US7335E.js.map} +0 -0
  90. /package/build/{chunk-WRWNJYKZ.js.map → chunk-A3FHJ4EK.js.map} +0 -0
  91. /package/build/{chunk-PKSGXFYA.js.map → chunk-HKX5ODUN.js.map} +0 -0
  92. /package/build/{chunk-HUWYF2ET.js.map → chunk-KCNEUOW2.js.map} +0 -0
  93. /package/build/{chunk-O42QDBJU.js.map → chunk-KJR4P55M.js.map} +0 -0
  94. /package/build/{chunk-5QZS3HT7.js.map → chunk-KVM6MGID.js.map} +0 -0
  95. /package/build/{chunk-VXE3IWKR.js.map → chunk-LMFNRK6X.js.map} +0 -0
  96. /package/build/{chunk-IG6IV6VM.js.map → chunk-MTEB33GR.js.map} +0 -0
  97. /package/build/{chunk-4VTDNX5T.js.map → chunk-UE7LDQKD.js.map} +0 -0
  98. /package/build/{chunk-2PTCXTKF.js.map → chunk-UZXKDHQZ.js.map} +0 -0
  99. /package/build/{chunk-7CGRTCDC.js.map → chunk-YW2RBPPY.js.map} +0 -0
  100. /package/build/platform-sdk/{chunk-QV4VBCJB.js.map → chunk-FLUCZ5U6.js.map} +0 -0
  101. /package/build/{preview-VAHHFTRZ.js.map → preview-ZAKEXAJH.js.map} +0 -0
  102. /package/build/{render-command-3AYSQXHN.js.map → render-command-XMQH723O.js.map} +0 -0
@@ -2,16 +2,15 @@ import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
3
  import {
4
4
  useWixCliAppBi
5
- } from "./chunk-PKSGXFYA.js";
5
+ } from "./chunk-HKX5ODUN.js";
6
6
  import {
7
7
  SiteProvider,
8
8
  SiteSelector,
9
- useMetasiteManagerClient,
10
9
  usePlatform
11
- } from "./chunk-CNZ3Q5PF.js";
10
+ } from "./chunk-5R5H3Y2D.js";
12
11
  import {
13
12
  createLogger
14
- } from "./chunk-4VTDNX5T.js";
13
+ } from "./chunk-UE7LDQKD.js";
15
14
  import {
16
15
  DevEnvironmentProvider,
17
16
  redirectWithCSMv2FTs,
@@ -22,25 +21,27 @@ import {
22
21
  useResolveDashboardExtensionDevUrl,
23
22
  useResolvePlatformDevUrl,
24
23
  useSite
25
- } from "./chunk-FTC5AK3Y.js";
24
+ } from "./chunk-6IX6CDWB.js";
26
25
  import {
27
26
  useBackendComponents
28
- } from "./chunk-WRWNJYKZ.js";
29
- import "./chunk-USAOCISL.js";
30
- import "./chunk-QZOQAFHK.js";
31
- import "./chunk-5QZS3HT7.js";
27
+ } from "./chunk-A3FHJ4EK.js";
28
+ import "./chunk-4WKSS3PU.js";
29
+ import "./chunk-ZR3N5INU.js";
30
+ import "./chunk-KVM6MGID.js";
32
31
  import {
33
32
  createCustomElementConfig
34
- } from "./chunk-WRPV7SLY.js";
35
- import "./chunk-VXE3IWKR.js";
33
+ } from "./chunk-V75TFIXI.js";
34
+ import "./chunk-LMFNRK6X.js";
36
35
  import {
37
36
  ComponentType,
38
37
  DevCenterComponent,
39
38
  ErrorViewer,
40
39
  PlatformType,
40
+ SiteAuthProvider,
41
+ TimeoutError,
41
42
  USER_CONFIG_FILENAME,
42
43
  getDataDirPath,
43
- openBrowser,
44
+ pWaitFor,
44
45
  pathExists,
45
46
  readJson,
46
47
  useBiLogger,
@@ -51,7 +52,7 @@ import {
51
52
  useProjectModel,
52
53
  userConfigSchema,
53
54
  writeJson
54
- } from "./chunk-DGTJGIY2.js";
55
+ } from "./chunk-LULKQBSP.js";
55
56
  import {
56
57
  Alert,
57
58
  Box_default,
@@ -73,8 +74,9 @@ import {
73
74
  useAsyncCallback,
74
75
  useExit,
75
76
  useTranslation,
76
- use_input_default
77
- } from "./chunk-36W5H7IG.js";
77
+ use_input_default,
78
+ z
79
+ } from "./chunk-PM4M3SGC.js";
78
80
  import {
79
81
  __toESM,
80
82
  init_esm_shims
@@ -85,17 +87,17 @@ init_esm_shims();
85
87
 
86
88
  // src/components/DevCommand/DevCommand.tsx
87
89
  init_esm_shims();
88
- var import_react17 = __toESM(require_react(), 1);
90
+ var import_react19 = __toESM(require_react(), 1);
89
91
 
90
92
  // src/components/DevCommand/DevCommandScreens.tsx
91
93
  init_esm_shims();
92
- var import_react12 = __toESM(require_react(), 1);
93
- var import_variant10 = __toESM(require_lib(), 1);
94
+ var import_react14 = __toESM(require_react(), 1);
95
+ var import_variant12 = __toESM(require_lib(), 1);
94
96
 
95
97
  // src/components/DevCommand/HomeScreen.tsx
96
98
  init_esm_shims();
97
- var import_react7 = __toESM(require_react(), 1);
98
- var import_variant6 = __toESM(require_lib(), 1);
99
+ var import_react9 = __toESM(require_react(), 1);
100
+ var import_variant8 = __toESM(require_lib(), 1);
99
101
 
100
102
  // src/components/DevCommand/screen-state.ts
101
103
  init_esm_shims();
@@ -109,7 +111,249 @@ var ScreenState = (0, import_variant.variant)({
109
111
 
110
112
  // src/components/Platform/PlatformSelector.tsx
111
113
  init_esm_shims();
114
+ var import_react3 = __toESM(require_react(), 1);
115
+
116
+ // src/components/DevCommand/EditorInstallation.tsx
117
+ init_esm_shims();
118
+ var import_react2 = __toESM(require_react(), 1);
119
+ var import_variant3 = __toESM(require_lib(), 1);
120
+
121
+ // src/components/DevCommand/CustomElementsMigration.tsx
122
+ init_esm_shims();
112
123
  var import_react = __toESM(require_react(), 1);
124
+ var import_variant2 = __toESM(require_lib(), 1);
125
+ var CustomElementsMigrationContext = (0, import_react.createContext)(null);
126
+ function useCustomElementsMigration() {
127
+ const context = (0, import_react.useContext)(CustomElementsMigrationContext);
128
+ if (context == null) {
129
+ throw new Error(
130
+ "useCustomElementsMigration() cannot be used without an <CustomElementsMigrationContext.Provider>"
131
+ );
132
+ }
133
+ return context;
134
+ }
135
+ var DUMMY_CUSTOM_ELEMENT_TAG_NAME = "wix-cli-dummy-custom-element";
136
+ var DUMMY_CUSTOM_ELEMENT_URL = "https://www.unpkg.com/@wix/cli-dummy-custom-element";
137
+ var CustomElementsMigration = ({ children }) => {
138
+ const { getAppByVersion } = useDevCenterClient();
139
+ const { model } = useProjectModel();
140
+ const { t } = useTranslation();
141
+ const { createComponents } = useARMClient();
142
+ const prepareNewElements = (0, import_react.useCallback)(
143
+ async (newCustomElements) => {
144
+ const componentConfigs = newCustomElements.map(
145
+ (customElement) => {
146
+ const config = createCustomElementConfig(
147
+ customElement,
148
+ DUMMY_CUSTOM_ELEMENT_URL
149
+ );
150
+ return {
151
+ ...config,
152
+ compData: {
153
+ customElementWidget: {
154
+ ...config.compData.customElementWidget,
155
+ widgetData: {
156
+ ...config.compData.customElementWidget.widgetData,
157
+ tagName: DUMMY_CUSTOM_ELEMENT_TAG_NAME
158
+ }
159
+ }
160
+ }
161
+ };
162
+ }
163
+ );
164
+ await createComponents(
165
+ model.config.appId,
166
+ componentConfigs,
167
+ model.config.projectId
168
+ );
169
+ },
170
+ [model.config.appId, model.config.projectId, createComponents]
171
+ );
172
+ const customElementsMigration = useAsync(async () => {
173
+ const localCustomElements = model.components.filter(
174
+ (component) => (0, import_variant2.isType)(component, DevCenterComponent.CustomElement)
175
+ );
176
+ if (!localCustomElements.length) {
177
+ return false;
178
+ }
179
+ const {
180
+ data: { components }
181
+ } = await getAppByVersion({
182
+ appId: model.config.appId
183
+ });
184
+ const existingCustomElements = components.filter(
185
+ (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET
186
+ );
187
+ const newCustomElements = localCustomElements.filter(
188
+ (localCustomElement) => !existingCustomElements.some(
189
+ (customElement) => customElement.compId === localCustomElement.id
190
+ )
191
+ );
192
+ if (newCustomElements.length) {
193
+ await prepareNewElements(newCustomElements);
194
+ return true;
195
+ }
196
+ return false;
197
+ }, [model.components]);
198
+ return (0, import_variant2.match)(customElementsMigration.status, {
199
+ Error: () => null,
200
+ Loading: () => /* @__PURE__ */ import_react.default.createElement(Spinner, { text: t("dev_command.custom_elements_migration.loading") }),
201
+ Success: ({ result: addedSitePresence }) => /* @__PURE__ */ import_react.default.createElement(
202
+ CustomElementsMigrationContext.Provider,
203
+ {
204
+ value: {
205
+ addedSitePresence
206
+ }
207
+ },
208
+ children
209
+ )
210
+ });
211
+ };
212
+
213
+ // src/components/DevCommand/EditorInstallation.tsx
214
+ function isAbortError(error) {
215
+ return error && typeof error === "object" && "name" in error && error.name === "AbortError";
216
+ }
217
+ var EditorInstallationContext = (0, import_react2.createContext)(
218
+ null
219
+ );
220
+ function useEditorInstallation() {
221
+ const context = (0, import_react2.useContext)(EditorInstallationContext);
222
+ if (context == null) {
223
+ throw new Error(
224
+ "useEditorInstallation() cannot be used without an <EditorInstallationProvider>"
225
+ );
226
+ }
227
+ return context;
228
+ }
229
+ var EditorInstallationStatus = (0, import_variant3.variant)({
230
+ CheckInstallation: {},
231
+ NotInstalled: (0, import_variant3.fields)(),
232
+ WaitForInstallation: (0, import_variant3.fields)(),
233
+ Installed: {}
234
+ });
235
+ var CheckEditorInstallation = ({ onReady }) => {
236
+ const { model } = useProjectModel();
237
+ const { isAppInstalledInEditor } = useDevCenterClient();
238
+ const { reportError } = useErrorReporter();
239
+ const checkAppInstalledState = useAsyncCallback(
240
+ async ({ signal }, shouldWait = false) => {
241
+ const { appId } = model.config;
242
+ const { pollInterval } = getTestOverrides();
243
+ try {
244
+ if (shouldWait) {
245
+ await pWaitFor(() => isAppInstalledInEditor(appId), {
246
+ // Polling interval is set to 6.5 seconds to avoid rate limiting (429)
247
+ interval: pollInterval ?? 6500,
248
+ timeout: {
249
+ milliseconds: 60 * 1e3 * 2,
250
+ signal
251
+ }
252
+ });
253
+ return true;
254
+ }
255
+ return await isAppInstalledInEditor(appId);
256
+ } catch (error) {
257
+ if (!isAbortError(error) && !(error instanceof TimeoutError)) {
258
+ reportError(
259
+ new CliError({
260
+ cause: error,
261
+ code: CliErrorCode.WaitForEditorInstallationStateFailure()
262
+ })
263
+ );
264
+ }
265
+ return false;
266
+ }
267
+ }
268
+ );
269
+ useAsync(async () => {
270
+ onReady(checkAppInstalledState.execute);
271
+ }, []);
272
+ return null;
273
+ };
274
+ var EditorInstallation = ({ children }) => {
275
+ const { t } = useTranslation();
276
+ const { model } = useProjectModel();
277
+ const httpClient = useHttpClient({ type: "backoffice" });
278
+ const { isPlatformExists } = usePlatform();
279
+ const { site } = useSite();
280
+ const { armTag } = useArmTag();
281
+ const openPage = useOpenPage();
282
+ const { addedSitePresence } = useCustomElementsMigration();
283
+ const resolvePlatformUrl = useResolvePlatformDevUrl();
284
+ const [editorInstallationStatus, setEditorInstallationStatus] = (0, import_react2.useState)(
285
+ EditorInstallationStatus.CheckInstallation()
286
+ );
287
+ const openEditor = (0, import_react2.useCallback)(async () => {
288
+ const platformType = PlatformType.Editor();
289
+ const installationUrl = (0, import_variant3.match)(
290
+ editorInstallationStatus,
291
+ (0, import_variant3.partial)({
292
+ NotInstalled: ({ installationUrl: installationUrl2 }) => installationUrl2,
293
+ WaitForInstallation: ({ installationUrl: installationUrl2 }) => installationUrl2,
294
+ default: () => resolvePlatformUrl(platformType)
295
+ })
296
+ );
297
+ await openPage({ title: platformType.type, url: installationUrl });
298
+ if ((0, import_variant3.isType)(editorInstallationStatus, "NotInstalled")) {
299
+ setEditorInstallationStatus(
300
+ EditorInstallationStatus.WaitForInstallation({ installationUrl })
301
+ );
302
+ const isInstalled = await editorInstallationStatus.checkInstalledState(true);
303
+ if (isInstalled) {
304
+ setEditorInstallationStatus(EditorInstallationStatus.Installed());
305
+ } else {
306
+ setEditorInstallationStatus(editorInstallationStatus);
307
+ }
308
+ }
309
+ }, [openPage, resolvePlatformUrl, editorInstallationStatus]);
310
+ const buildInstallationUrl = (0, import_react2.useCallback)(async () => {
311
+ const { data: signedAppMarketParams } = await httpClient.post("/_serverless/app-market-json-web-token/json-web-token", {
312
+ data: {
313
+ data: JSON.stringify({
314
+ appDefId: model.config.appId,
315
+ version: "latest"
316
+ })
317
+ }
318
+ }).catch((e) => {
319
+ throw new CliError({
320
+ code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),
321
+ cause: e
322
+ });
323
+ });
324
+ const url = new URL(`https://wix.com/editor/${site.id}`);
325
+ url.searchParams.append("openPanel", "appMarket");
326
+ url.searchParams.append("preferAppManager", "true");
327
+ url.searchParams.append("appMarketParams", signedAppMarketParams);
328
+ url.searchParams.append("apps-override", armTag);
329
+ return redirectWithCSMv2FTs(url, PlatformType.Editor()).toString();
330
+ }, [httpClient, model.config.appId, site.id, armTag]);
331
+ const { status, execute } = useAsyncCallback(
332
+ async (_, checkInstalledState) => {
333
+ if (isPlatformExists(PlatformType.Editor())) {
334
+ const isInstalled = addedSitePresence ? false : await checkInstalledState();
335
+ if (!isInstalled) {
336
+ const installationUrl = await buildInstallationUrl();
337
+ return setEditorInstallationStatus(
338
+ EditorInstallationStatus.NotInstalled({
339
+ installationUrl,
340
+ checkInstalledState
341
+ })
342
+ );
343
+ }
344
+ }
345
+ return setEditorInstallationStatus(EditorInstallationStatus.Installed());
346
+ }
347
+ );
348
+ return /* @__PURE__ */ import_react2.default.createElement(EditorInstallationContext.Provider, { value: { openEditor } }, !(0, import_variant3.isType)(editorInstallationStatus, "Installed") && /* @__PURE__ */ import_react2.default.createElement(SiteAuthProvider, { siteId: site.id }, /* @__PURE__ */ import_react2.default.createElement(CheckEditorInstallation, { onReady: execute })), (0, import_variant3.match)(status, {
349
+ NotRequested: () => null,
350
+ Loading: () => /* @__PURE__ */ import_react2.default.createElement(Spinner, { text: t("general.loading") }),
351
+ Error: () => null,
352
+ Success: () => children
353
+ }));
354
+ };
355
+
356
+ // src/components/Platform/PlatformSelector.tsx
113
357
  var PlatformOption = ({
114
358
  label,
115
359
  inputKey,
@@ -117,7 +361,7 @@ var PlatformOption = ({
117
361
  disabled
118
362
  }) => {
119
363
  const getTextSkin = () => disabled ? "secondary" : "standard";
120
- return /* @__PURE__ */ import_react.default.createElement(Box_default, null, /* @__PURE__ */ import_react.default.createElement(Box_default, { marginRight: 1 }, /* @__PURE__ */ import_react.default.createElement(Box_default, { marginRight: 1 }, /* @__PURE__ */ import_react.default.createElement(Text, { skin: getTextSkin() }, /* @__PURE__ */ import_react.default.createElement(PointerSmallIcon, null), " ", /* @__PURE__ */ import_react.default.createElement(Key, { value: inputKey }), " -")), /* @__PURE__ */ import_react.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react.default.createElement(Text, { skin: getTextSkin() }, label))), /* @__PURE__ */ import_react.default.createElement(Text, { skin: getTextSkin() }, suffix));
364
+ return /* @__PURE__ */ import_react3.default.createElement(Box_default, null, /* @__PURE__ */ import_react3.default.createElement(Box_default, { marginRight: 1 }, /* @__PURE__ */ import_react3.default.createElement(Box_default, { marginRight: 1 }, /* @__PURE__ */ import_react3.default.createElement(Text, { skin: getTextSkin() }, /* @__PURE__ */ import_react3.default.createElement(PointerSmallIcon, null), " ", /* @__PURE__ */ import_react3.default.createElement(Key, { value: inputKey }), " -")), /* @__PURE__ */ import_react3.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react3.default.createElement(Text, { skin: getTextSkin() }, label))), /* @__PURE__ */ import_react3.default.createElement(Text, { skin: getTextSkin() }, suffix));
121
365
  };
122
366
  var PlatformSelector = ({
123
367
  onMultipleDashboardExtensionSelection
@@ -125,12 +369,13 @@ var PlatformSelector = ({
125
369
  const { t } = useTranslation();
126
370
  const bi = useWixCliAppBi();
127
371
  const { isPlatformExists } = usePlatform();
372
+ const { openEditor } = useEditorInstallation();
128
373
  const { dashboardExtensions } = useExtensions();
129
374
  const resolvePlatformUrl = useResolvePlatformDevUrl();
130
375
  const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();
131
376
  const { site } = useSite();
132
377
  const openPage = useOpenPage();
133
- const openPlatform = (0, import_react.useCallback)(
378
+ const openPlatform = (0, import_react3.useCallback)(
134
379
  async (platformType) => {
135
380
  await openPage({
136
381
  title: platformType.type,
@@ -163,7 +408,7 @@ var PlatformSelector = ({
163
408
  action: t("general.platform.editor"),
164
409
  key: input
165
410
  });
166
- await openPlatform(PlatformType.Editor());
411
+ await openEditor();
167
412
  }
168
413
  if (input === "s" && site.viewUrl && isPlatformExists(PlatformType.Site())) {
169
414
  bi.cliAction({
@@ -175,23 +420,23 @@ var PlatformSelector = ({
175
420
  await openPlatform(PlatformType.Site());
176
421
  }
177
422
  });
178
- const dashboardOptionSuffix = (0, import_react.useMemo)(() => {
423
+ const dashboardOptionSuffix = (0, import_react3.useMemo)(() => {
179
424
  if (dashboardExtensions.length === 0) {
180
425
  return null;
181
426
  }
182
427
  if (dashboardExtensions.length === 1) {
183
- return /* @__PURE__ */ import_react.default.createElement(Text, { skin: "secondary" }, " - ", dashboardExtensions[0].route);
428
+ return /* @__PURE__ */ import_react3.default.createElement(Text, { skin: "secondary" }, " - ", dashboardExtensions[0].route);
184
429
  }
185
- return /* @__PURE__ */ import_react.default.createElement(Text, null, String.fromCodePoint(9660));
430
+ return /* @__PURE__ */ import_react3.default.createElement(Text, null, String.fromCodePoint(9660));
186
431
  }, [dashboardExtensions]);
187
- return /* @__PURE__ */ import_react.default.createElement(Box_default, { paddingLeft: 2, flexDirection: "column" }, isPlatformExists(PlatformType.Site()) && /* @__PURE__ */ import_react.default.createElement(
432
+ return /* @__PURE__ */ import_react3.default.createElement(Box_default, { paddingLeft: 2, flexDirection: "column" }, isPlatformExists(PlatformType.Site()) && /* @__PURE__ */ import_react3.default.createElement(
188
433
  PlatformOption,
189
434
  {
190
435
  inputKey: "S",
191
436
  label: site.viewUrl ? t("general.platform.site") : t("general.platform.unpublished_site"),
192
437
  disabled: !site.viewUrl
193
438
  }
194
- ), isPlatformExists(PlatformType.Editor()) && /* @__PURE__ */ import_react.default.createElement(PlatformOption, { inputKey: "E", label: t("general.platform.editor") }), isPlatformExists(PlatformType.Dashboard()) && /* @__PURE__ */ import_react.default.createElement(
439
+ ), isPlatformExists(PlatformType.Editor()) && /* @__PURE__ */ import_react3.default.createElement(PlatformOption, { inputKey: "E", label: t("general.platform.editor") }), isPlatformExists(PlatformType.Dashboard()) && /* @__PURE__ */ import_react3.default.createElement(
195
440
  PlatformOption,
196
441
  {
197
442
  inputKey: "D",
@@ -203,12 +448,12 @@ var PlatformSelector = ({
203
448
 
204
449
  // src/components/DevCommand/DashboardNumericViewer.tsx
205
450
  init_esm_shims();
206
- var import_react6 = __toESM(require_react(), 1);
207
- var import_variant5 = __toESM(require_lib(), 1);
451
+ var import_react8 = __toESM(require_react(), 1);
452
+ var import_variant7 = __toESM(require_lib(), 1);
208
453
 
209
454
  // src/components/CloseScreen/CloseScreen.tsx
210
455
  init_esm_shims();
211
- var import_react2 = __toESM(require_react(), 1);
456
+ var import_react4 = __toESM(require_react(), 1);
212
457
  var CloseScreen = ({ onClose }) => {
213
458
  const { t } = useTranslation();
214
459
  const bi = useWixCliAppBi();
@@ -223,24 +468,24 @@ var CloseScreen = ({ onClose }) => {
223
468
  onClose();
224
469
  }
225
470
  });
226
- return /* @__PURE__ */ import_react2.default.createElement(Text, { skin: "secondary" }, /* @__PURE__ */ import_react2.default.createElement(
471
+ return /* @__PURE__ */ import_react4.default.createElement(Text, { skin: "secondary" }, /* @__PURE__ */ import_react4.default.createElement(
227
472
  Trans,
228
473
  {
229
474
  i18nKey: "general.close_screen",
230
- components: [/* @__PURE__ */ import_react2.default.createElement(Key, { value: "esc", skin: "secondary" })]
475
+ components: [/* @__PURE__ */ import_react4.default.createElement(Key, { value: "esc", skin: "secondary" })]
231
476
  }
232
477
  ));
233
478
  };
234
479
 
235
480
  // src/components/DevCommand/DashboardScreen.tsx
236
481
  init_esm_shims();
237
- var import_react4 = __toESM(require_react(), 1);
238
- var import_variant3 = __toESM(require_lib(), 1);
482
+ var import_react6 = __toESM(require_react(), 1);
483
+ var import_variant5 = __toESM(require_lib(), 1);
239
484
 
240
485
  // src/components/DevCommand/DashboardArrowViewer.tsx
241
486
  init_esm_shims();
242
- var import_react3 = __toESM(require_react(), 1);
243
- var import_variant2 = __toESM(require_lib(), 1);
487
+ var import_react5 = __toESM(require_react(), 1);
488
+ var import_variant4 = __toESM(require_lib(), 1);
244
489
  var DashboardArrowViewer = ({
245
490
  dashboardExtension,
246
491
  onClose,
@@ -251,10 +496,10 @@ var DashboardArrowViewer = ({
251
496
  const bi = useWixCliAppBi();
252
497
  const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();
253
498
  const openPage = useOpenPage();
254
- const getLabelKey = (0, import_react3.useCallback)(
255
- () => (0, import_variant2.match)(
499
+ const getLabelKey = (0, import_react5.useCallback)(
500
+ () => (0, import_variant4.match)(
256
501
  dashboardExtension,
257
- (0, import_variant2.lookup)({
502
+ (0, import_variant4.lookup)({
258
503
  DashboardPlugin: "dev_command.dashboard_page_plugin_screen.select_label",
259
504
  DashboardMenuPlugin: "dev_command.dashboard_menu_plugin_screen.select_label",
260
505
  DashboardPage: "dev_command.dashboard_pages_screen.select_label",
@@ -263,7 +508,7 @@ var DashboardArrowViewer = ({
263
508
  ),
264
509
  [dashboardExtension]
265
510
  );
266
- const handleSubmit = (0, import_react3.useCallback)(
511
+ const handleSubmit = (0, import_react5.useCallback)(
267
512
  async (dashboardExtension2) => {
268
513
  const url = resolveDashboardExtensionUrl(dashboardExtension2);
269
514
  bi.cliAction({
@@ -277,7 +522,7 @@ var DashboardArrowViewer = ({
277
522
  },
278
523
  [resolveDashboardExtensionUrl, bi, t, getLabelKey, openPage, onSelect]
279
524
  );
280
- return /* @__PURE__ */ import_react3.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react3.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react3.default.createElement(
525
+ return /* @__PURE__ */ import_react5.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react5.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react5.default.createElement(
281
526
  SelectInput,
282
527
  {
283
528
  label: t(getLabelKey()),
@@ -291,12 +536,12 @@ var DashboardArrowViewer = ({
291
536
  ),
292
537
  onSubmit: ({ value: dashboardExtensionInstance }) => handleSubmit(dashboardExtensionInstance)
293
538
  }
294
- )), /* @__PURE__ */ import_react3.default.createElement(CloseScreen, { onClose }));
539
+ )), /* @__PURE__ */ import_react5.default.createElement(CloseScreen, { onClose }));
295
540
  };
296
541
 
297
542
  // src/components/DevCommand/DashboardScreen.tsx
298
- var DashboardScreenSelector = (0, import_variant3.variant)({
299
- Arrow: (0, import_variant3.fields)(),
543
+ var DashboardScreenSelector = (0, import_variant5.variant)({
544
+ Arrow: (0, import_variant5.fields)(),
300
545
  Numeric: {}
301
546
  });
302
547
  var DashboardScreen = ({
@@ -304,9 +549,9 @@ var DashboardScreen = ({
304
549
  onSelect,
305
550
  initialSelectorType = DashboardScreenSelector.Numeric()
306
551
  }) => {
307
- const [selectorType, setSelectorType] = (0, import_react4.useState)(initialSelectorType);
308
- return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, (0, import_variant3.match)(selectorType, {
309
- Arrow: ({ dashboardExtension }) => /* @__PURE__ */ import_react4.default.createElement(
552
+ const [selectorType, setSelectorType] = (0, import_react6.useState)(initialSelectorType);
553
+ return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, (0, import_variant5.match)(selectorType, {
554
+ Arrow: ({ dashboardExtension }) => /* @__PURE__ */ import_react6.default.createElement(
310
555
  DashboardArrowViewer,
311
556
  {
312
557
  dashboardExtension,
@@ -314,7 +559,7 @@ var DashboardScreen = ({
314
559
  onClose
315
560
  }
316
561
  ),
317
- Numeric: () => /* @__PURE__ */ import_react4.default.createElement(
562
+ Numeric: () => /* @__PURE__ */ import_react6.default.createElement(
318
563
  DashboardNumericViewer,
319
564
  {
320
565
  onViewMore: setSelectorType,
@@ -330,16 +575,16 @@ init_esm_shims();
330
575
 
331
576
  // src/components/NumericViewer/NumericViewer.tsx
332
577
  init_esm_shims();
333
- var import_react5 = __toESM(require_react(), 1);
334
- var import_variant4 = __toESM(require_lib(), 1);
578
+ var import_react7 = __toESM(require_react(), 1);
579
+ var import_variant6 = __toESM(require_lib(), 1);
335
580
  var ListItem = ({ itemNumber, children }) => {
336
581
  const keyValue = `${itemNumber}`;
337
- return /* @__PURE__ */ import_react5.default.createElement(Box_default, { flexDirection: "row", gap: 1 }, /* @__PURE__ */ import_react5.default.createElement(Text, null, /* @__PURE__ */ import_react5.default.createElement(PointerSmallIcon, null), " ", /* @__PURE__ */ import_react5.default.createElement(Key, { value: keyValue }), " -"), children);
582
+ return /* @__PURE__ */ import_react7.default.createElement(Box_default, { flexDirection: "row", gap: 1 }, /* @__PURE__ */ import_react7.default.createElement(Text, null, /* @__PURE__ */ import_react7.default.createElement(PointerSmallIcon, null), " ", /* @__PURE__ */ import_react7.default.createElement(Key, { value: keyValue }), " -"), children);
338
583
  };
339
- var NumericOption = (0, import_variant4.variant)(
340
- (0, import_variant4.onTerms)(({ I: _I, V }) => ({
341
- Item: (0, import_variant4.fields)(),
342
- ViewMore: (0, import_variant4.payload)(V)
584
+ var NumericOption = (0, import_variant6.variant)(
585
+ (0, import_variant6.onTerms)(({ I: _I, V }) => ({
586
+ Item: (0, import_variant6.fields)(),
587
+ ViewMore: (0, import_variant6.payload)(V)
343
588
  }))
344
589
  );
345
590
  function NumericViewer({
@@ -347,15 +592,15 @@ function NumericViewer({
347
592
  titleKey,
348
593
  items
349
594
  }) {
350
- return /* @__PURE__ */ import_react5.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react5.default.createElement(Trans, { i18nKey: titleKey }), /* @__PURE__ */ import_react5.default.createElement(Box_default, { paddingLeft: 2, flexDirection: "column" }, items.map((item, index) => /* @__PURE__ */ import_react5.default.createElement(
595
+ return /* @__PURE__ */ import_react7.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react7.default.createElement(Trans, { i18nKey: titleKey }), /* @__PURE__ */ import_react7.default.createElement(Box_default, { paddingLeft: 2, flexDirection: "column" }, items.map((item, index) => /* @__PURE__ */ import_react7.default.createElement(
351
596
  ListItem,
352
597
  {
353
598
  key: startIndex + index + 1,
354
599
  itemNumber: startIndex + index + 1
355
600
  },
356
- (0, import_variant4.match)(item, {
357
- Item: ({ title, description }) => /* @__PURE__ */ import_react5.default.createElement(Box_default, { flexDirection: "row", gap: 1 }, /* @__PURE__ */ import_react5.default.createElement(Text, null, title), description && /* @__PURE__ */ import_react5.default.createElement(Text, { skin: "secondary" }, "(", description, ")")),
358
- ViewMore: () => /* @__PURE__ */ import_react5.default.createElement(Trans, { i18nKey: "general.numeric_viewer.show_more" })
601
+ (0, import_variant6.match)(item, {
602
+ Item: ({ title, description }) => /* @__PURE__ */ import_react7.default.createElement(Box_default, { flexDirection: "row", gap: 1 }, /* @__PURE__ */ import_react7.default.createElement(Text, null, title), description && /* @__PURE__ */ import_react7.default.createElement(Text, { skin: "secondary" }, "(", description, ")")),
603
+ ViewMore: () => /* @__PURE__ */ import_react7.default.createElement(Trans, { i18nKey: "general.numeric_viewer.show_more" })
359
604
  })
360
605
  ))));
361
606
  }
@@ -375,7 +620,7 @@ var DashboardNumericViewer = ({
375
620
  const bi = useWixCliAppBi();
376
621
  const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();
377
622
  const openPage = useOpenPage();
378
- const dashboardExtensions = (0, import_react6.useMemo)(
623
+ const dashboardExtensions = (0, import_react8.useMemo)(
379
624
  () => ({
380
625
  dashboardPages: getExtensions("DashboardPage"),
381
626
  dashboardMenuPlugins: getExtensions("DashboardMenuPlugin"),
@@ -441,9 +686,9 @@ var DashboardNumericViewer = ({
441
686
  ...dashboardPluginsShowMoreIndex ? [NumericOption.ViewMore("DashboardPlugin")] : []
442
687
  ];
443
688
  const getLabelKey = (dashboardExtension) => {
444
- return (0, import_variant5.match)(
689
+ return (0, import_variant7.match)(
445
690
  dashboardExtension,
446
- (0, import_variant5.lookup)({
691
+ (0, import_variant7.lookup)({
447
692
  DashboardPage: "general.dashboard_pages_viewer.title",
448
693
  DashboardMenuPlugin: "general.dashboard_menu_plugins_viewer.title",
449
694
  DashboardPlugin: "general.dashboard_plugins_viewer.title",
@@ -458,7 +703,7 @@ var DashboardNumericViewer = ({
458
703
  const itemIndex = inputNumber - 1;
459
704
  const item = visibleItems.at(itemIndex);
460
705
  if (item) {
461
- await (0, import_variant5.match)(item, {
706
+ await (0, import_variant7.match)(item, {
462
707
  Item: async (item2) => {
463
708
  bi.cliAction({
464
709
  question: t(getLabelKey(item2.value)),
@@ -485,7 +730,7 @@ var DashboardNumericViewer = ({
485
730
  }
486
731
  }
487
732
  });
488
- const handleSelect = (0, import_react6.useCallback)(
733
+ const handleSelect = (0, import_react8.useCallback)(
489
734
  async (dashboardExtension) => {
490
735
  const url = resolveDashboardExtensionUrl(dashboardExtension);
491
736
  await openPage({ url, title: dashboardExtension.title });
@@ -499,28 +744,28 @@ var DashboardNumericViewer = ({
499
744
  dashboardMenuPluginsCount
500
745
  );
501
746
  const dashboardPlugins = visibleItems.slice(dashboardMenuPluginsCount);
502
- return /* @__PURE__ */ import_react6.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, dashboardPages.length > 0 && /* @__PURE__ */ import_react6.default.createElement(
747
+ return /* @__PURE__ */ import_react8.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, dashboardPages.length > 0 && /* @__PURE__ */ import_react8.default.createElement(
503
748
  NumericViewer,
504
749
  {
505
750
  startIndex: 0,
506
751
  titleKey: "general.dashboard_pages_viewer.title",
507
752
  items: dashboardPages
508
753
  }
509
- ), dashboardMenuPlugins.length > 0 && /* @__PURE__ */ import_react6.default.createElement(
754
+ ), dashboardMenuPlugins.length > 0 && /* @__PURE__ */ import_react8.default.createElement(
510
755
  NumericViewer,
511
756
  {
512
757
  startIndex: dashboardPagesCount,
513
758
  titleKey: "general.dashboard_menu_plugins_viewer.title",
514
759
  items: dashboardMenuPlugins
515
760
  }
516
- ), dashboardPlugins.length > 0 && /* @__PURE__ */ import_react6.default.createElement(
761
+ ), dashboardPlugins.length > 0 && /* @__PURE__ */ import_react8.default.createElement(
517
762
  NumericViewer,
518
763
  {
519
764
  startIndex: dashboardMenuPluginsCount,
520
765
  titleKey: "general.dashboard_plugins_viewer.title",
521
766
  items: dashboardPlugins
522
767
  }
523
- ), onClose && /* @__PURE__ */ import_react6.default.createElement(CloseScreen, { onClose }));
768
+ ), onClose && /* @__PURE__ */ import_react8.default.createElement(CloseScreen, { onClose }));
524
769
  };
525
770
 
526
771
  // src/components/DevCommand/HomeScreen.tsx
@@ -542,28 +787,28 @@ var HomeScreen = ({ onScreenChange }) => {
542
787
  onScreenChange(ScreenState.SiteSelector());
543
788
  }
544
789
  });
545
- return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react7.default.createElement(
790
+ return /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react9.default.createElement(
546
791
  Trans,
547
792
  {
548
793
  i18nKey: "dev_command.dev_site.current",
549
794
  values: { siteName: site.displayName },
550
- components: [/* @__PURE__ */ import_react7.default.createElement(Text, { bold: true, skin: "info" })]
795
+ components: [/* @__PURE__ */ import_react9.default.createElement(Text, { bold: true, skin: "info" })]
551
796
  }
552
- ), /* @__PURE__ */ import_react7.default.createElement(Text, { skin: "secondary" }, /* @__PURE__ */ import_react7.default.createElement(
797
+ ), /* @__PURE__ */ import_react9.default.createElement(Text, { skin: "secondary" }, /* @__PURE__ */ import_react9.default.createElement(
553
798
  Trans,
554
799
  {
555
800
  i18nKey: "dev_command.dev_site.change",
556
- components: [/* @__PURE__ */ import_react7.default.createElement(Key, { value: "C", skin: "secondary" })]
801
+ components: [/* @__PURE__ */ import_react9.default.createElement(Key, { value: "C", skin: "secondary" })]
557
802
  }
558
- ))), /* @__PURE__ */ import_react7.default.createElement(Box_default, { paddingTop: 1, paddingBottom: 1, flexDirection: "column" }, !hasExtensions() ? /* @__PURE__ */ import_react7.default.createElement(
803
+ ))), /* @__PURE__ */ import_react9.default.createElement(Box_default, { paddingTop: 1, paddingBottom: 1, flexDirection: "column" }, !hasExtensions() ? /* @__PURE__ */ import_react9.default.createElement(
559
804
  Trans,
560
805
  {
561
806
  i18nKey: "general.platform.none",
562
- components: [/* @__PURE__ */ import_react7.default.createElement(Link, { url: "https://wix.to/b7o4Ml0" })]
807
+ components: [/* @__PURE__ */ import_react9.default.createElement(Link, { url: "https://wix.to/b7o4Ml0" })]
563
808
  }
564
- ) : /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, hasSinglePlatform(PlatformType.Dashboard()) && backendComponents.length === 0 && dashboardExtensions.some(
565
- (dashboardExtension) => !(0, import_variant6.isType)(dashboardExtension, "DashboardModal")
566
- ) ? /* @__PURE__ */ import_react7.default.createElement(
809
+ ) : /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, hasSinglePlatform(PlatformType.Dashboard()) && backendComponents.length === 0 && dashboardExtensions.some(
810
+ (dashboardExtension) => !(0, import_variant8.isType)(dashboardExtension, "DashboardModal")
811
+ ) ? /* @__PURE__ */ import_react9.default.createElement(
567
812
  DashboardNumericViewer,
568
813
  {
569
814
  onViewMore: (selectorType) => onScreenChange(
@@ -572,13 +817,13 @@ var HomeScreen = ({ onScreenChange }) => {
572
817
  })
573
818
  )
574
819
  }
575
- ) : /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement(
820
+ ) : /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement(
576
821
  Trans,
577
822
  {
578
823
  i18nKey: "general.view_changes",
579
- components: [/* @__PURE__ */ import_react7.default.createElement(Text, { skin: "secondary" })]
824
+ components: [/* @__PURE__ */ import_react9.default.createElement(Text, { skin: "secondary" })]
580
825
  }
581
- ), /* @__PURE__ */ import_react7.default.createElement(
826
+ ), /* @__PURE__ */ import_react9.default.createElement(
582
827
  PlatformSelector,
583
828
  {
584
829
  onMultipleDashboardExtensionSelection: () => onScreenChange(ScreenState.DashboardScreen()),
@@ -589,7 +834,7 @@ var HomeScreen = ({ onScreenChange }) => {
589
834
 
590
835
  // src/components/DevCommand/SiteSelectorScreen.tsx
591
836
  init_esm_shims();
592
- var import_react8 = __toESM(require_react(), 1);
837
+ var import_react10 = __toESM(require_react(), 1);
593
838
 
594
839
  // src/components/CloseScreen/index.tsx
595
840
  init_esm_shims();
@@ -601,15 +846,15 @@ var SiteSelectorScreen = ({ onScreenChange }) => {
601
846
  const biLogger = useBiLogger();
602
847
  const { site, setSite } = useSite();
603
848
  const { reportError } = useErrorReporter();
604
- const [error, setError] = (0, import_react8.useState)(null);
605
- const handleError = (0, import_react8.useCallback)(
849
+ const [error, setError] = (0, import_react10.useState)(null);
850
+ const handleError = (0, import_react10.useCallback)(
606
851
  (error2) => {
607
852
  reportError(error2);
608
853
  setError(error2);
609
854
  },
610
855
  [reportError, setError]
611
856
  );
612
- const handleSubmit = (0, import_react8.useCallback)(
857
+ const handleSubmit = (0, import_react10.useCallback)(
613
858
  async (site2) => {
614
859
  try {
615
860
  await setSite(site2);
@@ -620,13 +865,13 @@ var SiteSelectorScreen = ({ onScreenChange }) => {
620
865
  },
621
866
  [setSite, onScreenChange, handleError]
622
867
  );
623
- return /* @__PURE__ */ import_react8.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react8.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react8.default.createElement(PointerIcon, null), /* @__PURE__ */ import_react8.default.createElement(
868
+ return /* @__PURE__ */ import_react10.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react10.default.createElement(Box_default, { gap: 1 }, /* @__PURE__ */ import_react10.default.createElement(PointerIcon, null), /* @__PURE__ */ import_react10.default.createElement(
624
869
  Trans,
625
870
  {
626
871
  i18nKey: "general.dev_site.current",
627
872
  values: { name: site.displayName }
628
873
  }
629
- )), /* @__PURE__ */ import_react8.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react8.default.createElement(
874
+ )), /* @__PURE__ */ import_react10.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react10.default.createElement(
630
875
  SiteSelector,
631
876
  {
632
877
  appId: model.config.appId,
@@ -634,24 +879,24 @@ var SiteSelectorScreen = ({ onScreenChange }) => {
634
879
  onSubmit: handleSubmit,
635
880
  onError: handleError
636
881
  }
637
- ), error ? /* @__PURE__ */ import_react8.default.createElement(
882
+ ), error ? /* @__PURE__ */ import_react10.default.createElement(
638
883
  ErrorViewer,
639
884
  {
640
885
  error,
641
- systemErrorOverride: /* @__PURE__ */ import_react8.default.createElement(Alert, { type: "error" }, t("dev_command.site_selector.error"))
886
+ systemErrorOverride: /* @__PURE__ */ import_react10.default.createElement(Alert, { type: "error" }, t("dev_command.site_selector.error"))
642
887
  }
643
- ) : null), /* @__PURE__ */ import_react8.default.createElement(CloseScreen, { onClose: () => onScreenChange(ScreenState.Home()) }));
888
+ ) : null), /* @__PURE__ */ import_react10.default.createElement(CloseScreen, { onClose: () => onScreenChange(ScreenState.Home()) }));
644
889
  };
645
890
 
646
891
  // src/components/DevCommand/BackendScreen.tsx
647
892
  init_esm_shims();
648
- var import_react11 = __toESM(require_react(), 1);
649
- var import_variant9 = __toESM(require_lib(), 1);
893
+ var import_react13 = __toESM(require_react(), 1);
894
+ var import_variant11 = __toESM(require_lib(), 1);
650
895
 
651
896
  // src/components/DevCommand/BackendNumericViewer.tsx
652
897
  init_esm_shims();
653
- var import_react9 = __toESM(require_react(), 1);
654
- var import_variant7 = __toESM(require_lib(), 1);
898
+ var import_react11 = __toESM(require_react(), 1);
899
+ var import_variant9 = __toESM(require_lib(), 1);
655
900
  var MAX_BACKEND_COMPONENT = 9;
656
901
  var MAX_SERVICE_PLUGINS = 4;
657
902
  var MAX_EVENTS = 5;
@@ -698,9 +943,9 @@ var BackendNumericViewer = ({
698
943
  ...backendEventsShowMoreIndex ? [NumericOption.ViewMore("Event")] : []
699
944
  ];
700
945
  const getLabelKey = (backendComponent) => {
701
- return (0, import_variant7.match)(
946
+ return (0, import_variant9.match)(
702
947
  backendComponent,
703
- (0, import_variant7.lookup)({
948
+ (0, import_variant9.lookup)({
704
949
  Api: "general.backend_api_viewer.title",
705
950
  Event: "general.backend_events_viewer.title",
706
951
  ServicePlugin: "general.backend_plugin_viewer.title"
@@ -712,7 +957,7 @@ var BackendNumericViewer = ({
712
957
  if (inputNumber > 0 && inputNumber <= visibleItems.length) {
713
958
  const item = visibleItems.at(inputNumber - 1);
714
959
  if (item) {
715
- (0, import_variant7.match)(item, {
960
+ (0, import_variant9.match)(item, {
716
961
  Item: (item2) => {
717
962
  bi.cliAction({
718
963
  question: t(getLabelKey(item2.value)),
@@ -739,7 +984,7 @@ var BackendNumericViewer = ({
739
984
  }
740
985
  }
741
986
  });
742
- const handleSelect = (0, import_react9.useCallback)(
987
+ const handleSelect = (0, import_react11.useCallback)(
743
988
  (backendComponent) => {
744
989
  onSelect?.(backendComponent);
745
990
  },
@@ -747,27 +992,27 @@ var BackendNumericViewer = ({
747
992
  );
748
993
  const backendPlugins = visibleItems.slice(0, servicePluginsCount);
749
994
  const backendEvents = visibleItems.slice(servicePluginsCount);
750
- return /* @__PURE__ */ import_react9.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, backendPlugins.length > 0 && /* @__PURE__ */ import_react9.default.createElement(
995
+ return /* @__PURE__ */ import_react11.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, backendPlugins.length > 0 && /* @__PURE__ */ import_react11.default.createElement(
751
996
  NumericViewer,
752
997
  {
753
998
  startIndex: 0,
754
999
  titleKey: "general.backend_plugin_viewer.title",
755
1000
  items: backendPlugins
756
1001
  }
757
- ), backendEvents.length > 0 && /* @__PURE__ */ import_react9.default.createElement(
1002
+ ), backendEvents.length > 0 && /* @__PURE__ */ import_react11.default.createElement(
758
1003
  NumericViewer,
759
1004
  {
760
1005
  startIndex: servicePluginsCount,
761
1006
  titleKey: "general.backend_events_viewer.title",
762
1007
  items: backendEvents
763
1008
  }
764
- ), onClose && /* @__PURE__ */ import_react9.default.createElement(CloseScreen, { onClose }));
1009
+ ), onClose && /* @__PURE__ */ import_react11.default.createElement(CloseScreen, { onClose }));
765
1010
  };
766
1011
 
767
1012
  // src/components/DevCommand/BackendArrowViewer.tsx
768
1013
  init_esm_shims();
769
- var import_react10 = __toESM(require_react(), 1);
770
- var import_variant8 = __toESM(require_lib(), 1);
1014
+ var import_react12 = __toESM(require_react(), 1);
1015
+ var import_variant10 = __toESM(require_lib(), 1);
771
1016
  var BackendArrowViewer = ({
772
1017
  backendComponentName,
773
1018
  onClose,
@@ -776,10 +1021,10 @@ var BackendArrowViewer = ({
776
1021
  const { t } = useTranslation();
777
1022
  const bi = useWixCliAppBi();
778
1023
  const { backendComponentsByType } = useBackendComponents();
779
- const getLabelKey = (0, import_react10.useCallback)(
780
- () => (0, import_variant8.match)(
1024
+ const getLabelKey = (0, import_react12.useCallback)(
1025
+ () => (0, import_variant10.match)(
781
1026
  backendComponentName,
782
- (0, import_variant8.lookup)({
1027
+ (0, import_variant10.lookup)({
783
1028
  Api: "dev_command.backend_apis_screen.select_label",
784
1029
  Event: "dev_command.backend_events_screen.select_label",
785
1030
  ServicePlugin: "dev_command.backend_plugins_screen.select_label"
@@ -787,8 +1032,8 @@ var BackendArrowViewer = ({
787
1032
  ),
788
1033
  [backendComponentName]
789
1034
  );
790
- const getBackendComponentName = (backendComponent) => (0, import_variant8.isType)(backendComponent, "ServicePlugin") ? backendComponent.servicePlugin.name : backendComponent.title;
791
- const handleSubmit = (0, import_react10.useCallback)(
1035
+ const getBackendComponentName = (backendComponent) => (0, import_variant10.isType)(backendComponent, "ServicePlugin") ? backendComponent.servicePlugin.name : backendComponent.title;
1036
+ const handleSubmit = (0, import_react12.useCallback)(
792
1037
  (backendComponent) => {
793
1038
  bi.cliAction({
794
1039
  question: t(getLabelKey()),
@@ -800,7 +1045,7 @@ var BackendArrowViewer = ({
800
1045
  },
801
1046
  [bi, getLabelKey, onSelect, t]
802
1047
  );
803
- const options = (0, import_react10.useMemo)(() => {
1048
+ const options = (0, import_react12.useMemo)(() => {
804
1049
  return backendComponentsByType[backendComponentName].map(
805
1050
  (backendComponent, index) => ({
806
1051
  key: index.toString(),
@@ -809,19 +1054,19 @@ var BackendArrowViewer = ({
809
1054
  })
810
1055
  );
811
1056
  }, [backendComponentsByType, backendComponentName]);
812
- return /* @__PURE__ */ import_react10.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react10.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react10.default.createElement(
1057
+ return /* @__PURE__ */ import_react12.default.createElement(Box_default, { flexDirection: "column", gap: 1 }, /* @__PURE__ */ import_react12.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react12.default.createElement(
813
1058
  SelectInput,
814
1059
  {
815
1060
  label: t(getLabelKey()),
816
1061
  options,
817
1062
  onSubmit: ({ value: backendComponent }) => handleSubmit(backendComponent)
818
1063
  }
819
- )), /* @__PURE__ */ import_react10.default.createElement(CloseScreen, { onClose }));
1064
+ )), /* @__PURE__ */ import_react12.default.createElement(CloseScreen, { onClose }));
820
1065
  };
821
1066
 
822
1067
  // src/components/DevCommand/BackendScreen.tsx
823
- var BackendScreenSelector = (0, import_variant9.variant)({
824
- Arrow: (0, import_variant9.fields)(),
1068
+ var BackendScreenSelector = (0, import_variant11.variant)({
1069
+ Arrow: (0, import_variant11.fields)(),
825
1070
  Numeric: {}
826
1071
  });
827
1072
  var BackendScreen = ({
@@ -829,9 +1074,9 @@ var BackendScreen = ({
829
1074
  onSelect,
830
1075
  initialSelectorType = BackendScreenSelector.Numeric()
831
1076
  }) => {
832
- const [selectorType, setSelectorType] = (0, import_react11.useState)(initialSelectorType);
833
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, (0, import_variant9.match)(selectorType, {
834
- Arrow: ({ backendComponentName }) => /* @__PURE__ */ import_react11.default.createElement(
1077
+ const [selectorType, setSelectorType] = (0, import_react13.useState)(initialSelectorType);
1078
+ return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, (0, import_variant11.match)(selectorType, {
1079
+ Arrow: ({ backendComponentName }) => /* @__PURE__ */ import_react13.default.createElement(
835
1080
  BackendArrowViewer,
836
1081
  {
837
1082
  backendComponentName,
@@ -839,7 +1084,7 @@ var BackendScreen = ({
839
1084
  onClose
840
1085
  }
841
1086
  ),
842
- Numeric: () => /* @__PURE__ */ import_react11.default.createElement(
1087
+ Numeric: () => /* @__PURE__ */ import_react13.default.createElement(
843
1088
  BackendNumericViewer,
844
1089
  {
845
1090
  onViewMore: setSelectorType,
@@ -851,11 +1096,11 @@ var BackendScreen = ({
851
1096
 
852
1097
  // src/components/DevCommand/DevCommandScreens.tsx
853
1098
  var DevCommandScreens = () => {
854
- const [screen, setScreen] = (0, import_react12.useState)(ScreenState.Home());
855
- return (0, import_variant10.match)(screen, {
856
- Home: () => /* @__PURE__ */ import_react12.default.createElement(HomeScreen, { onScreenChange: setScreen }),
857
- SiteSelector: () => /* @__PURE__ */ import_react12.default.createElement(SiteSelectorScreen, { onScreenChange: setScreen }),
858
- DashboardScreen: ({ selectorType }) => /* @__PURE__ */ import_react12.default.createElement(
1099
+ const [screen, setScreen] = (0, import_react14.useState)(ScreenState.Home());
1100
+ return (0, import_variant12.match)(screen, {
1101
+ Home: () => /* @__PURE__ */ import_react14.default.createElement(HomeScreen, { onScreenChange: setScreen }),
1102
+ SiteSelector: () => /* @__PURE__ */ import_react14.default.createElement(SiteSelectorScreen, { onScreenChange: setScreen }),
1103
+ DashboardScreen: ({ selectorType }) => /* @__PURE__ */ import_react14.default.createElement(
859
1104
  DashboardScreen,
860
1105
  {
861
1106
  initialSelectorType: selectorType,
@@ -863,7 +1108,7 @@ var DevCommandScreens = () => {
863
1108
  onClose: () => setScreen(ScreenState.Home())
864
1109
  }
865
1110
  ),
866
- BackendScreen: ({ selectorType }) => /* @__PURE__ */ import_react12.default.createElement(
1111
+ BackendScreen: ({ selectorType }) => /* @__PURE__ */ import_react14.default.createElement(
867
1112
  BackendScreen,
868
1113
  {
869
1114
  initialSelectorType: selectorType,
@@ -876,7 +1121,7 @@ var DevCommandScreens = () => {
876
1121
 
877
1122
  // src/components/DevCommand/TunnelingConsent.tsx
878
1123
  init_esm_shims();
879
- var import_react13 = __toESM(require_react(), 1);
1124
+ var import_react15 = __toESM(require_react(), 1);
880
1125
 
881
1126
  // ../cli-user-config/src/user-config.ts
882
1127
  init_esm_shims();
@@ -901,12 +1146,12 @@ async function updateUserConfig(config) {
901
1146
  }
902
1147
 
903
1148
  // src/components/DevCommand/TunnelingConsent.tsx
904
- var import_variant11 = __toESM(require_lib(), 1);
1149
+ var import_variant13 = __toESM(require_lib(), 1);
905
1150
  var TunnelingConsent = ({ children }) => {
906
1151
  const exit = useExit();
907
1152
  const { t } = useTranslation();
908
1153
  const { backendComponents } = useBackendComponents();
909
- const [approved, setApproved] = (0, import_react13.useState)();
1154
+ const [approved, setApproved] = (0, import_react15.useState)();
910
1155
  const { status } = useAsync(async () => {
911
1156
  const config = await readUserConfig();
912
1157
  if (config.tunneling) {
@@ -917,8 +1162,8 @@ var TunnelingConsent = ({ children }) => {
917
1162
  if (backendComponents.length === 0 || approved) {
918
1163
  return children;
919
1164
  }
920
- return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, (0, import_variant11.match)(status, {
921
- Success: () => /* @__PURE__ */ import_react13.default.createElement(
1165
+ return /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, (0, import_variant13.match)(status, {
1166
+ Success: () => /* @__PURE__ */ import_react15.default.createElement(
922
1167
  ConfirmInput,
923
1168
  {
924
1169
  label: t("dev_command.tunneling.confirm"),
@@ -934,177 +1179,71 @@ var TunnelingConsent = ({ children }) => {
934
1179
  ),
935
1180
  Error: () => null,
936
1181
  Loading: () => null
937
- }), approved === false && /* @__PURE__ */ import_react13.default.createElement(Text, { skin: "error" }, /* @__PURE__ */ import_react13.default.createElement(Trans, { i18nKey: "dev_command.tunneling.abort_dev" })));
1182
+ }), approved === false && /* @__PURE__ */ import_react15.default.createElement(Text, { skin: "error" }, /* @__PURE__ */ import_react15.default.createElement(Trans, { i18nKey: "dev_command.tunneling.abort_dev" })));
938
1183
  };
939
1184
 
940
- // src/components/DevCommand/CustomElementsMigration.tsx
1185
+ // src/components/DevCommand/RequiredAppsWarning.tsx
941
1186
  init_esm_shims();
942
- var import_react14 = __toESM(require_react(), 1);
943
- var import_variant12 = __toESM(require_lib(), 1);
944
- import { setTimeout } from "node:timers/promises";
945
- var DUMMY_CUSTOM_ELEMENT_TAG_NAME = "wix-cli-dummy-custom-element";
946
- var DUMMY_CUSTOM_ELEMENT_URL = "https://www.unpkg.com/@wix/cli-dummy-custom-element";
947
- var AppUpdater = ({ children, newCustomElements }) => {
948
- const { model } = useProjectModel();
949
- const { reportError } = useErrorReporter();
950
- const { createComponents } = useARMClient();
951
- const httpClient = useHttpClient({ type: "backoffice" });
952
- const { site } = useSite();
953
- const { armTag } = useArmTag();
954
- const [isAppReinstalled, setAppReinstalledFlag] = (0, import_react14.useState)(false);
955
- const prepareNewElements = useAsyncCallback(
956
- async () => {
957
- const componentConfigs = newCustomElements.map(
958
- (customElement) => {
959
- const scriptUrl = DUMMY_CUSTOM_ELEMENT_URL;
960
- const config = createCustomElementConfig(customElement, scriptUrl);
961
- return {
962
- ...config,
963
- compData: {
964
- customElementWidget: {
965
- ...config.compData.customElementWidget,
966
- widgetData: {
967
- ...config.compData.customElementWidget.widgetData,
968
- tagName: DUMMY_CUSTOM_ELEMENT_TAG_NAME
969
- }
970
- }
971
- }
972
- };
973
- }
974
- );
975
- await createComponents(
976
- model.config.appId,
977
- componentConfigs,
978
- model.config.projectId
979
- );
980
- const { customElementsCreationDelay } = getTestOverrides();
981
- const [{ data: signedAppMarketParams }] = await Promise.all([
982
- httpClient.post(
983
- "/_serverless/app-market-json-web-token/json-web-token",
984
- {
985
- data: {
986
- data: JSON.stringify({
987
- appDefId: model.config.appId,
988
- version: "latest"
989
- })
990
- }
991
- }
992
- ).catch((e) => {
993
- throw new CliError({
994
- code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),
995
- cause: e
996
- });
997
- }),
998
- setTimeout(customElementsCreationDelay ?? 5e3)
999
- ]);
1000
- const url = new URL(`https://wix.com/editor/${site.id}`);
1001
- url.searchParams.append("openPanel", "appMarket");
1002
- url.searchParams.append("preferAppManager", "true");
1003
- url.searchParams.append("appMarketParams", signedAppMarketParams);
1004
- url.searchParams.append("apps-override", armTag);
1005
- await openBrowser(
1006
- redirectWithCSMv2FTs(url, PlatformType.Editor()).toString()
1007
- );
1008
- },
1009
- {
1010
- onError: (error) => {
1011
- reportError(error);
1012
- }
1013
- }
1014
- );
1015
- use_input_default(
1016
- (0, import_react14.useCallback)(
1017
- (input, key) => {
1018
- if (key.return) {
1019
- void prepareNewElements.execute();
1020
- }
1021
- },
1022
- [prepareNewElements]
1023
- ),
1024
- {
1025
- isActive: (0, import_variant12.isType)(prepareNewElements.status, "NotRequested")
1026
- }
1027
- );
1028
- use_input_default(
1029
- (0, import_react14.useCallback)(
1030
- (input, key) => {
1031
- if (key.return) {
1032
- setAppReinstalledFlag(true);
1033
- }
1034
- },
1035
- [setAppReinstalledFlag]
1036
- ),
1037
- {
1038
- isActive: !isAppReinstalled && ((0, import_variant12.isType)(prepareNewElements.status, "Success") || (0, import_variant12.isType)(prepareNewElements.status, "Error"))
1039
- }
1040
- );
1041
- if (isAppReinstalled) {
1042
- return children;
1187
+ var import_react17 = __toESM(require_react(), 1);
1188
+ var import_variant14 = __toESM(require_lib(), 1);
1189
+
1190
+ // ../metasite-manager-client/src/index.ts
1191
+ init_esm_shims();
1192
+
1193
+ // ../metasite-manager-client/src/useMetasiteManagerClient.ts
1194
+ init_esm_shims();
1195
+ var import_react16 = __toESM(require_react(), 1);
1196
+
1197
+ // ../metasite-manager-client/src/metasite-manager-client.ts
1198
+ init_esm_shims();
1199
+
1200
+ // ../metasite-manager-client/src/schemas.ts
1201
+ init_esm_shims();
1202
+ var clientSpecMapSchema = z.record(
1203
+ z.object({
1204
+ appDefinitionId: z.string().optional(),
1205
+ permissions: z.object({ revoked: z.boolean() }).optional()
1206
+ })
1207
+ );
1208
+
1209
+ // ../metasite-manager-client/src/metasite-manager-client.ts
1210
+ var MetasiteManagerClient = class {
1211
+ constructor(httpClient) {
1212
+ this.httpClient = httpClient;
1043
1213
  }
1044
- return (0, import_variant12.match)(prepareNewElements.status, {
1045
- Loading: () => /* @__PURE__ */ import_react14.default.createElement(Spinner, null),
1046
- Success: () => {
1047
- return /* @__PURE__ */ import_react14.default.createElement(Alert, { type: "warning" }, /* @__PURE__ */ import_react14.default.createElement(Text, null, /* @__PURE__ */ import_react14.default.createElement(
1048
- Trans,
1049
- {
1050
- i18nKey: "dev_command.new_custom_element.confirm_reinstall",
1051
- components: [/* @__PURE__ */ import_react14.default.createElement(Key, { value: "enter" })]
1052
- }
1053
- )));
1054
- },
1055
- Error: () => /* @__PURE__ */ import_react14.default.createElement(Alert, { type: "error" }, /* @__PURE__ */ import_react14.default.createElement(Text, null, /* @__PURE__ */ import_react14.default.createElement(
1056
- Trans,
1057
- {
1058
- i18nKey: "dev_command.new_custom_element.reinstall_error",
1059
- components: [/* @__PURE__ */ import_react14.default.createElement(Key, { value: "enter" })]
1060
- }
1061
- ))),
1062
- NotRequested: () => /* @__PURE__ */ import_react14.default.createElement(Alert, { type: "warning" }, /* @__PURE__ */ import_react14.default.createElement(Text, null, /* @__PURE__ */ import_react14.default.createElement(
1063
- Trans,
1064
- {
1065
- i18nKey: "dev_command.new_custom_element.warning",
1066
- components: [/* @__PURE__ */ import_react14.default.createElement(Key, { value: "enter" }), /* @__PURE__ */ import_react14.default.createElement(Text, { bold: true, skin: "info" })]
1067
- }
1068
- )))
1069
- });
1070
- };
1071
- var CustomElementsMigration = ({ children }) => {
1072
- const { getAppByVersion } = useDevCenterClient();
1073
- const { model } = useProjectModel();
1074
- const { t } = useTranslation();
1075
- const customElementsCheck = useAsync(async () => {
1076
- const localCustomElements = model.components.filter(
1077
- (component) => (0, import_variant12.isType)(component, DevCenterComponent.CustomElement)
1078
- );
1079
- if (!localCustomElements.length) {
1080
- return [];
1214
+ getClientSpecMap = async (metaSiteId) => {
1215
+ try {
1216
+ const { data } = await this.httpClient.request({
1217
+ url: `/_api/msm/v1/meta-site/editor-client-spec-map/${metaSiteId}`
1218
+ });
1219
+ return clientSpecMapSchema.parse(data);
1220
+ } catch (e) {
1221
+ throw new CliError({
1222
+ code: CliErrorCode.FailedToGetClientSpecMap(),
1223
+ cause: e
1224
+ });
1081
1225
  }
1082
- const {
1083
- data: { components }
1084
- } = await getAppByVersion({
1085
- appId: model.config.appId
1086
- });
1087
- const existingCustomElements = components.filter(
1088
- (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET
1089
- );
1090
- const newCustomElements = localCustomElements.filter(
1091
- (localCustomElement) => !existingCustomElements.some(
1092
- (customElement) => customElement.compId === localCustomElement.id
1093
- )
1094
- );
1095
- return newCustomElements;
1096
- }, []);
1097
- return (0, import_variant12.match)(customElementsCheck.status, {
1098
- Error: () => null,
1099
- Loading: () => /* @__PURE__ */ import_react14.default.createElement(Spinner, { text: t("dev_command.custom_elements_migration.loading") }),
1100
- Success: ({ result: newCustomElements }) => newCustomElements.length ? /* @__PURE__ */ import_react14.default.createElement(AppUpdater, { newCustomElements }, children) : children
1101
- });
1226
+ };
1227
+ getSiteInstalledApps = async (metaSiteId) => {
1228
+ try {
1229
+ const clientSpecMap = await this.getClientSpecMap(metaSiteId);
1230
+ return Object.values(clientSpecMap).filter((spec) => spec.appDefinitionId && !spec.permissions?.revoked).map((spec) => spec.appDefinitionId);
1231
+ } catch (e) {
1232
+ throw new CliError({
1233
+ code: CliErrorCode.FailedToGetSiteInstalledApps(),
1234
+ cause: e
1235
+ });
1236
+ }
1237
+ };
1102
1238
  };
1103
1239
 
1240
+ // ../metasite-manager-client/src/useMetasiteManagerClient.ts
1241
+ function useMetasiteManagerClient() {
1242
+ const httpClient = useHttpClient({ type: "general" });
1243
+ return (0, import_react16.useMemo)(() => new MetasiteManagerClient(httpClient), [httpClient]);
1244
+ }
1245
+
1104
1246
  // src/components/DevCommand/RequiredAppsWarning.tsx
1105
- init_esm_shims();
1106
- var import_react15 = __toESM(require_react(), 1);
1107
- var import_variant13 = __toESM(require_lib(), 1);
1108
1247
  var RequiredAppsWarning = ({ children }) => {
1109
1248
  const { logger } = useDevEnvironment();
1110
1249
  const { site } = useSite();
@@ -1125,13 +1264,13 @@ var RequiredAppsWarning = ({ children }) => {
1125
1264
  return;
1126
1265
  }
1127
1266
  logger.warn(
1128
- /* @__PURE__ */ import_react15.default.createElement(Alert, { type: "warning" }, t("dev_command.required_apps.warning", {
1267
+ /* @__PURE__ */ import_react17.default.createElement(Alert, { type: "warning" }, t("dev_command.required_apps.warning", {
1129
1268
  requiredAppNames: missingRequiredApps.map((app) => app.name).join(", ")
1130
1269
  }))
1131
1270
  );
1132
1271
  }, []);
1133
- return (0, import_variant13.match)(requiredAppsStatus, {
1134
- Loading: () => /* @__PURE__ */ import_react15.default.createElement(Spinner, { text: t("dev_command.required_apps.loading") }),
1272
+ return (0, import_variant14.match)(requiredAppsStatus, {
1273
+ Loading: () => /* @__PURE__ */ import_react17.default.createElement(Spinner, { text: t("dev_command.required_apps.loading") }),
1135
1274
  Error: () => null,
1136
1275
  Success: () => children
1137
1276
  });
@@ -1139,9 +1278,9 @@ var RequiredAppsWarning = ({ children }) => {
1139
1278
 
1140
1279
  // src/components/DevCommand/DevScreenBorder.tsx
1141
1280
  init_esm_shims();
1142
- var import_react16 = __toESM(require_react(), 1);
1281
+ var import_react18 = __toESM(require_react(), 1);
1143
1282
  var DevScreenBorder = ({ children }) => {
1144
- return /* @__PURE__ */ import_react16.default.createElement(
1283
+ return /* @__PURE__ */ import_react18.default.createElement(
1145
1284
  Box_default,
1146
1285
  {
1147
1286
  flexDirection: "column",
@@ -1158,11 +1297,11 @@ var DevScreenBorder = ({ children }) => {
1158
1297
 
1159
1298
  // src/components/DevCommand/DevCommand.tsx
1160
1299
  var DevCommand = ({ https }) => {
1161
- const logger = (0, import_react17.useMemo)(() => createLogger({ timestamp: true }), []);
1162
- return /* @__PURE__ */ import_react17.default.createElement(SiteProvider, null, /* @__PURE__ */ import_react17.default.createElement(TunnelingConsent, null, /* @__PURE__ */ import_react17.default.createElement(DevEnvironmentProvider, { logger, https }, /* @__PURE__ */ import_react17.default.createElement(CustomElementsMigration, null, /* @__PURE__ */ import_react17.default.createElement(RequiredAppsWarning, null, /* @__PURE__ */ import_react17.default.createElement(DevScreenBorder, null, /* @__PURE__ */ import_react17.default.createElement(DevCommandScreens, null)))))));
1300
+ const logger = (0, import_react19.useMemo)(() => createLogger({ timestamp: true }), []);
1301
+ return /* @__PURE__ */ import_react19.default.createElement(SiteProvider, null, /* @__PURE__ */ import_react19.default.createElement(TunnelingConsent, null, /* @__PURE__ */ import_react19.default.createElement(DevEnvironmentProvider, { logger, https }, /* @__PURE__ */ import_react19.default.createElement(CustomElementsMigration, null, /* @__PURE__ */ import_react19.default.createElement(EditorInstallation, null, /* @__PURE__ */ import_react19.default.createElement(RequiredAppsWarning, null, /* @__PURE__ */ import_react19.default.createElement(DevScreenBorder, null, /* @__PURE__ */ import_react19.default.createElement(DevCommandScreens, null))))))));
1163
1302
  };
1164
1303
  export {
1165
1304
  DevCommand,
1166
1305
  DevEnvironmentProvider
1167
1306
  };
1168
- //# sourceMappingURL=DevCommand-YFEZ4QV5.js.map
1307
+ //# sourceMappingURL=DevCommand-SOODXUEP.js.map