@wix/cli-app 1.1.55 → 1.1.56

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 (129) hide show
  1. package/build/CreateVersionCommand-LU6LUBNT.js +269 -0
  2. package/build/{CreateVersionCommand-XTZT5DED.js.map → CreateVersionCommand-LU6LUBNT.js.map} +1 -1
  3. package/build/DevCommand-G2BIT4FY.js +1168 -0
  4. package/build/{DevCommand-Q5XLAGMG.js.map → DevCommand-G2BIT4FY.js.map} +1 -1
  5. package/build/GenerateCommand-XKWJ2FEG.js +12392 -0
  6. package/build/GenerateCommand-XKWJ2FEG.js.map +1 -0
  7. package/build/LogsCommand-HYGDI5KW.js +284 -0
  8. package/build/{LogsCommand-XJHE75L2.js.map → LogsCommand-HYGDI5KW.js.map} +1 -1
  9. package/build/PreviewCommand-6EMIKGQN.js +23 -0
  10. package/build/ServeCommand-YJ5RHQZ4.js +165 -0
  11. package/build/{ServeCommand-CPZOI7DC.js.map → ServeCommand-YJ5RHQZ4.js.map} +1 -1
  12. package/build/build-EC7LZLAY.js +3596 -0
  13. package/build/{build-D3GVJS75.js.map → build-EC7LZLAY.js.map} +1 -1
  14. package/build/build-Q5P6MZLW.js +97 -0
  15. package/build/{build-3RXHADZD.js.map → build-Q5P6MZLW.js.map} +1 -1
  16. package/build/chunk-3KMSVIRS.js +1323 -0
  17. package/build/{chunk-LJEYXY4V.js.map → chunk-3KMSVIRS.js.map} +1 -1
  18. package/build/chunk-FH6U3Y37.js +19 -0
  19. package/build/chunk-FH6U3Y37.js.map +1 -0
  20. package/build/chunk-GIUEJUXG.js +151 -0
  21. package/build/{chunk-6HSUK2A2.js.map → chunk-GIUEJUXG.js.map} +1 -1
  22. package/build/chunk-IJVKSYIY.js +222 -0
  23. package/build/chunk-IJVKSYIY.js.map +1 -0
  24. package/build/chunk-IMNXLCE5.js +51 -0
  25. package/build/{chunk-HDXLQ34N.js.map → chunk-IMNXLCE5.js.map} +1 -1
  26. package/build/chunk-IWDISZ2R.js +96 -0
  27. package/build/{chunk-K2A77MMN.js.map → chunk-IWDISZ2R.js.map} +1 -1
  28. package/build/chunk-JKI4MP27.js +32 -0
  29. package/build/{chunk-QOUZ6J7N.js.map → chunk-JKI4MP27.js.map} +1 -1
  30. package/build/chunk-JOVPQ7BW.js +183 -0
  31. package/build/{chunk-X4BLMM2K.js.map → chunk-JOVPQ7BW.js.map} +1 -1
  32. package/build/chunk-KCMEJP7H.js +897 -0
  33. package/build/{chunk-7VOKCPZP.js.map → chunk-KCMEJP7H.js.map} +1 -1
  34. package/build/chunk-NDFUPX6I.js +635 -0
  35. package/build/{chunk-GWU77DPO.js.map → chunk-NDFUPX6I.js.map} +1 -1
  36. package/build/chunk-NUUM6HPA.js +195 -0
  37. package/build/{chunk-C4SXZWXS.js.map → chunk-NUUM6HPA.js.map} +1 -1
  38. package/build/chunk-PYIAC2GK.js +66 -0
  39. package/build/{chunk-V4TR6DCM.js.map → chunk-PYIAC2GK.js.map} +1 -1
  40. package/build/chunk-QICLTOEP.js +46 -0
  41. package/build/{chunk-4BHNJVL2.js.map → chunk-QICLTOEP.js.map} +1 -1
  42. package/build/chunk-QLZPVGJV.js +29 -0
  43. package/build/{chunk-KG7BHEJG.js.map → chunk-QLZPVGJV.js.map} +1 -1
  44. package/build/chunk-QZOQAFHK.js +2197 -0
  45. package/build/chunk-QZOQAFHK.js.map +1 -0
  46. package/build/chunk-SP37PQ3I.js +38035 -0
  47. package/build/{chunk-N5D4TFKX.js.map → chunk-SP37PQ3I.js.map} +1 -1
  48. package/build/chunk-TSFNDZPX.js +39101 -0
  49. package/build/chunk-TSFNDZPX.js.map +1 -0
  50. package/build/chunk-TTW4MEC3.js +104 -0
  51. package/build/{chunk-FKBCPMYK.js.map → chunk-TTW4MEC3.js.map} +1 -1
  52. package/build/chunk-U4QPSXJP.js +45 -0
  53. package/build/{chunk-B4SDDVMV.js.map → chunk-U4QPSXJP.js.map} +1 -1
  54. package/build/chunk-WG365AHZ.js +23 -0
  55. package/build/{chunk-2FB5F5QF.js.map → chunk-WG365AHZ.js.map} +1 -1
  56. package/build/chunk-XU5JBKO6.js +29230 -0
  57. package/build/chunk-XU5JBKO6.js.map +1 -0
  58. package/build/cloudflare-runtime/entry.js +1 -1
  59. package/build/cloudflare-runtime/getRegisteredExtensions.js +1 -1
  60. package/build/devtools-YPSDP32D.js +3702 -0
  61. package/build/{devtools-4JFNYU2B.js.map → devtools-YPSDP32D.js.map} +1 -1
  62. package/build/esm-YQVNLOAI.js +22083 -0
  63. package/build/{esm-HBMYQBEO.js.map → esm-YQVNLOAI.js.map} +1 -1
  64. package/build/index.js +3252 -21
  65. package/build/index.js.map +1 -1
  66. package/build/platform-sdk/chunk-DGX4CFXG.js +2 -0
  67. package/build/platform-sdk/chunk-DGX4CFXG.js.map +1 -0
  68. package/build/platform-sdk/chunk-TN6HYRXL.js +2 -0
  69. package/build/platform-sdk/chunk-TN6HYRXL.js.map +1 -0
  70. package/build/platform-sdk/dashboard.js +1 -1
  71. package/build/platform-sdk/dashboard.js.map +1 -1
  72. package/build/platform-sdk/editor.js +5 -5
  73. package/build/platform-sdk/editor.js.map +1 -1
  74. package/build/platform-sdk/site.js +1 -1
  75. package/build/preview-HPJCC5SU.js +138 -0
  76. package/build/{preview-TM7JAWFS.js.map → preview-HPJCC5SU.js.map} +1 -1
  77. package/build/render-command-BJTVLIM5.js +117 -0
  78. package/build/{render-command-QEQ3L7OX.js.map → render-command-BJTVLIM5.js.map} +1 -1
  79. package/build/types.impl-CD4WWRUK.js +10 -0
  80. package/package.json +10 -5
  81. package/templates/custom-element/dependencies.json +1 -1
  82. package/templates/dashboard-modal/dependencies.json +1 -1
  83. package/templates/site-plugin/dependencies.json +1 -1
  84. package/build/CreateVersionCommand-XTZT5DED.js +0 -4
  85. package/build/DevCommand-Q5XLAGMG.js +0 -4
  86. package/build/GenerateCommand-HNFICZJA.js +0 -128
  87. package/build/GenerateCommand-HNFICZJA.js.map +0 -1
  88. package/build/LogsCommand-XJHE75L2.js +0 -4
  89. package/build/PreviewCommand-JKPFMGWV.js +0 -4
  90. package/build/ServeCommand-CPZOI7DC.js +0 -4
  91. package/build/build-3RXHADZD.js +0 -4
  92. package/build/build-D3GVJS75.js +0 -5
  93. package/build/chunk-2FB5F5QF.js +0 -4
  94. package/build/chunk-4BHNJVL2.js +0 -4
  95. package/build/chunk-5OZZ7R6I.js +0 -11
  96. package/build/chunk-5OZZ7R6I.js.map +0 -1
  97. package/build/chunk-6HSUK2A2.js +0 -4
  98. package/build/chunk-7VOKCPZP.js +0 -5
  99. package/build/chunk-B4SDDVMV.js +0 -4
  100. package/build/chunk-C4SXZWXS.js +0 -4
  101. package/build/chunk-FKBCPMYK.js +0 -11
  102. package/build/chunk-FMIXY6J5.js +0 -115
  103. package/build/chunk-FMIXY6J5.js.map +0 -1
  104. package/build/chunk-GWU77DPO.js +0 -4
  105. package/build/chunk-HDXLQ34N.js +0 -4
  106. package/build/chunk-JXE3LQ2S.js +0 -100
  107. package/build/chunk-JXE3LQ2S.js.map +0 -1
  108. package/build/chunk-K2A77MMN.js +0 -4
  109. package/build/chunk-KG7BHEJG.js +0 -4
  110. package/build/chunk-LJEYXY4V.js +0 -4
  111. package/build/chunk-N5D4TFKX.js +0 -280
  112. package/build/chunk-PCBMS46R.js +0 -4
  113. package/build/chunk-PCBMS46R.js.map +0 -1
  114. package/build/chunk-QOUZ6J7N.js +0 -4
  115. package/build/chunk-V4TR6DCM.js +0 -4
  116. package/build/chunk-WJTPY35F.js +0 -9
  117. package/build/chunk-WJTPY35F.js.map +0 -1
  118. package/build/chunk-X4BLMM2K.js +0 -4
  119. package/build/devtools-4JFNYU2B.js +0 -10
  120. package/build/esm-HBMYQBEO.js +0 -466
  121. package/build/platform-sdk/chunk-GZP4Z76C.js +0 -2
  122. package/build/platform-sdk/chunk-GZP4Z76C.js.map +0 -1
  123. package/build/platform-sdk/chunk-KGLNBMRO.js +0 -2
  124. package/build/platform-sdk/chunk-KGLNBMRO.js.map +0 -1
  125. package/build/preview-TM7JAWFS.js +0 -4
  126. package/build/render-command-QEQ3L7OX.js +0 -4
  127. package/build/types.impl-L2DPGJ77.js +0 -4
  128. /package/build/{PreviewCommand-JKPFMGWV.js.map → PreviewCommand-6EMIKGQN.js.map} +0 -0
  129. /package/build/{types.impl-L2DPGJ77.js.map → types.impl-CD4WWRUK.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DevCommand/index.ts","../src/components/DevCommand/DevCommand.tsx","../src/components/DevCommand/DevCommandScreens.tsx","../src/components/DevCommand/HomeScreen.tsx","../src/components/DevCommand/screen-state.ts","../src/components/Platform/PlatformSelector.tsx","../src/components/DevCommand/DashboardNumericViewer.tsx","../src/components/CloseScreen/CloseScreen.tsx","../src/components/DevCommand/DashboardScreen.tsx","../src/components/DevCommand/DashboardArrowViewer.tsx","../src/components/NumericViewer/index.ts","../src/components/NumericViewer/NumericViewer.tsx","../src/components/DevCommand/SiteSelectorScreen.tsx","../src/components/CloseScreen/index.tsx","../src/components/DevCommand/BackendScreen.tsx","../src/components/DevCommand/BackendNumericViewer.tsx","../src/components/DevCommand/BackendArrowViewer.tsx","../src/components/DevCommand/TunnelingConsent.tsx","../../cli-user-config/src/user-config.ts","../src/components/DevCommand/CustomElementsMigration.tsx","../src/components/DevCommand/RequiredAppsWarning.tsx","../src/components/DevCommand/DevScreenBorder.tsx"],"sourcesContent":["export { DevCommand } from './DevCommand.js';\nexport { DevEnvironmentProvider } from './DevEnvironment.js';\n","import React, { useMemo } from 'react';\nimport type { FC } from 'react';\nimport { SiteProvider } from '../../site/SiteProvider.js';\nimport { DevEnvironmentProvider } from './DevEnvironment.js';\nimport { DevCommandScreens } from './DevCommandScreens.js';\nimport { TunnelingConsent } from './TunnelingConsent.js';\nimport { CustomElementsMigration } from './CustomElementsMigration.js';\nimport { RequiredAppsWarning } from './RequiredAppsWarning.js';\nimport { DevScreenBorder } from './DevScreenBorder.js';\nimport { createLogger } from '../../vite/logger.js';\n\nexport const DevCommand: FC<{ https: boolean }> = ({ https }) => {\n const logger = useMemo(() => createLogger({ timestamp: true }), []);\n\n return (\n <SiteProvider>\n <TunnelingConsent>\n <DevEnvironmentProvider logger={logger} https={https}>\n <CustomElementsMigration>\n <RequiredAppsWarning>\n <DevScreenBorder>\n <DevCommandScreens />\n </DevScreenBorder>\n </RequiredAppsWarning>\n </CustomElementsMigration>\n </DevEnvironmentProvider>\n </TunnelingConsent>\n </SiteProvider>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { match } from 'variant';\nimport { HomeScreen } from './HomeScreen.js';\nimport { SiteSelectorScreen } from './SiteSelectorScreen.js';\nimport { ScreenState } from './screen-state.js';\nimport { DashboardScreen } from './DashboardScreen.js';\nimport { BackendScreen } from './BackendScreen.js';\n\nexport const DevCommandScreens: FC = () => {\n const [screen, setScreen] = useState<ScreenState>(ScreenState.Home());\n\n return match(screen, {\n Home: () => <HomeScreen onScreenChange={setScreen} />,\n SiteSelector: () => <SiteSelectorScreen onScreenChange={setScreen} />,\n DashboardScreen: ({ selectorType }) => (\n <DashboardScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n BackendScreen: ({ selectorType }) => (\n <BackendScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n });\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, Text, Link, useInput, Key } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { isType } from 'variant';\nimport { useSite } from '../../site/index.js';\nimport { ScreenState } from './screen-state.js';\nimport { PlatformSelector } from '../Platform/PlatformSelector.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport { usePlatform } from '../Platform/usePlatform.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const HomeScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { site } = useSite();\n const bi = useWixCliAppBi();\n const { hasSinglePlatform } = usePlatform();\n const { hasExtensions, dashboardExtensions } = useExtensions();\n const { backendComponents } = useBackendComponents();\n\n useInput(async (input) => {\n if (input === 'c') {\n bi.cliAction({\n question: t('dev_command.dev_site.change'),\n questionKey: 'dev_command.dev_site.change',\n action: 'change_site',\n key: input,\n });\n onScreenChange(ScreenState.SiteSelector());\n }\n });\n\n return (\n <>\n <Box gap={1}>\n <Trans\n i18nKey=\"dev_command.dev_site.current\"\n values={{ siteName: site.displayName }}\n components={[<Text bold skin=\"info\" />]}\n />\n\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"dev_command.dev_site.change\"\n components={[<Key value=\"C\" skin=\"secondary\" />]}\n />\n </Text>\n </Box>\n\n <Box paddingTop={1} paddingBottom={1} flexDirection=\"column\">\n {!hasExtensions() ? (\n <Trans\n i18nKey=\"general.platform.none\"\n // Original link is:\n // https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps\n components={[<Link url=\"https://wix.to/b7o4Ml0\" />]}\n />\n ) : (\n <>\n {hasSinglePlatform(PlatformType.Dashboard()) &&\n backendComponents.length === 0 &&\n dashboardExtensions.some(\n (dashboardExtension) =>\n !isType(dashboardExtension, 'DashboardModal')\n ) ? (\n <DashboardNumericViewer\n onViewMore={(selectorType) =>\n onScreenChange(\n ScreenState.DashboardScreen({\n selectorType,\n })\n )\n }\n />\n ) : (\n <>\n <Trans\n i18nKey=\"general.view_changes\"\n components={[<Text skin=\"secondary\" />]}\n />\n <PlatformSelector\n onMultipleDashboardExtensionSelection={() =>\n onScreenChange(ScreenState.DashboardScreen())\n }\n onMultipleBackendComponentSelection={() =>\n onScreenChange(ScreenState.BackendScreen())\n }\n />\n </>\n )}\n </>\n )}\n </Box>\n </>\n );\n};\n","import { fields, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport type { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { BackendScreenSelector } from './BackendScreen.js';\n\nexport const ScreenState = variant({\n Home: {},\n SiteSelector: {},\n DashboardScreen: fields<{ selectorType?: DashboardScreenSelector }>(),\n BackendScreen: fields<{ selectorType?: BackendScreenSelector }>(),\n});\n\nexport type ScreenState = VariantOf<typeof ScreenState>;\n","import React, { useCallback, useMemo } from 'react';\nimport type { FC } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { PointerSmallIcon, Key, useInput, Text, Box } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n useResolvePlatformDevUrl,\n} from '../extensions/utils.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport { usePlatform } from './usePlatform.js';\nimport { useSite } from '../../site/useSite.js';\n\ninterface PlatformOptionProps {\n inputKey: string;\n label: string;\n suffix?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst PlatformOption: FC<PlatformOptionProps> = ({\n label,\n inputKey,\n suffix,\n disabled,\n}) => {\n const getTextSkin = () => (disabled ? 'secondary' : 'standard');\n\n return (\n <Box>\n <Box marginRight={1}>\n <Box marginRight={1}>\n <Text skin={getTextSkin()}>\n <PointerSmallIcon /> <Key value={inputKey} /> -\n </Text>\n </Box>\n <Box gap={1}>\n <Text skin={getTextSkin()}>{label}</Text>\n </Box>\n </Box>\n <Text skin={getTextSkin()}>{suffix}</Text>\n </Box>\n );\n};\n\ninterface PlatformSelector {\n onMultipleDashboardExtensionSelection: () => void;\n onMultipleBackendComponentSelection: () => void;\n}\n\nexport const PlatformSelector: FC<PlatformSelector> = ({\n onMultipleDashboardExtensionSelection,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { isPlatformExists } = usePlatform();\n const { dashboardExtensions } = useExtensions();\n const resolvePlatformUrl = useResolvePlatformDevUrl();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const { site } = useSite();\n const openPage = useOpenPage();\n\n const openPlatform = useCallback(\n async (platformType: PlatformType) => {\n await openPage({\n title: platformType.type,\n url: resolvePlatformUrl(platformType),\n });\n },\n [openPage, resolvePlatformUrl]\n );\n\n useInput(async (input) => {\n if (input === 'd' && isPlatformExists(PlatformType.Dashboard())) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.dashboard'),\n key: input,\n });\n if (dashboardExtensions.length === 1) {\n await openPage({\n title: 'Dashboard',\n url: resolveDashboardExtensionUrl(dashboardExtensions[0]!),\n });\n } else {\n onMultipleDashboardExtensionSelection();\n }\n }\n if (input === 'e' && isPlatformExists(PlatformType.Editor())) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.editor'),\n key: input,\n });\n await openPlatform(PlatformType.Editor());\n }\n if (\n input === 's' &&\n site.viewUrl &&\n isPlatformExists(PlatformType.Site())\n ) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.site'),\n key: input,\n });\n await openPlatform(PlatformType.Site());\n }\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n // if (input === 'b' && model.backendComponents.length > 0) {\n // bi.cliAction({\n // question: t('general.view_changes'),\n // questionKey: 'general.view_changes',\n // action: t('general.platform.backend'),\n // key: input,\n // });\n // onMultipleBackendComponentSelection();\n // }\n });\n\n const dashboardOptionSuffix = useMemo(() => {\n if (dashboardExtensions.length === 0) {\n return null;\n }\n if (dashboardExtensions.length === 1) {\n return <Text skin=\"secondary\"> - {dashboardExtensions[0]!.route}</Text>;\n }\n return <Text>{String.fromCodePoint(0x25bc)}</Text>; // ▼\n }, [dashboardExtensions]);\n\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n {isPlatformExists(PlatformType.Site()) && (\n <PlatformOption\n inputKey=\"S\"\n label={\n site.viewUrl\n ? t('general.platform.site')\n : t('general.platform.unpublished_site')\n }\n disabled={!site.viewUrl}\n />\n )}\n {isPlatformExists(PlatformType.Editor()) && (\n <PlatformOption inputKey=\"E\" label={t('general.platform.editor')} />\n )}\n {isPlatformExists(PlatformType.Dashboard()) && (\n <PlatformOption\n inputKey=\"D\"\n label={t('general.platform.dashboard')}\n suffix={dashboardOptionSuffix}\n />\n )}\n {/*\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n {(hasComponentByType('Event') || hasComponentByType('ServicePlugin')) && (\n <PlatformOption\n inputKey=\"B\"\n label={t('general.platform.backend')}\n suffix={<Text>{String.fromCodePoint(0x25bc)}</Text>} // ▼\n />\n )} */}\n </Box>\n );\n};\n","import React, { useMemo, useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { lookup, match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n} from '../extensions/utils.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { NumericViewer } from '../NumericViewer/index.js';\nimport { NumericOption } from '../NumericViewer/NumericViewer.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\nconst MAX_EXTENSIONS = 9;\nconst MAX_DASHBOARD_PAGES = 3;\nconst MAX_PAGE_PLUGINS = 3;\nconst MAX_MENU_PLUGINS = 3;\n\ninterface Props {\n onViewMore: (dashboardScreenSelector: DashboardScreenSelector) => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose?: () => void;\n}\n\nexport const DashboardNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const bi = useWixCliAppBi();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const openPage = useOpenPage();\n\n const dashboardExtensions = useMemo(\n () => ({\n dashboardPages: getExtensions('DashboardPage'),\n dashboardMenuPlugins: getExtensions('DashboardMenuPlugin'),\n dashboardPlugins: getExtensions('DashboardPlugin'),\n }),\n [getExtensions]\n );\n\n const dashboardPagesData = dashboardExtensions.dashboardPages.slice(\n 0,\n dashboardExtensions.dashboardPages.length > MAX_DASHBOARD_PAGES\n ? MAX_DASHBOARD_PAGES - 1\n : dashboardExtensions.dashboardPages.length\n );\n\n const dashboardPagesShowMoreIndex =\n dashboardExtensions.dashboardPages.length > dashboardPagesData.length\n ? dashboardPagesData.length + 1\n : undefined;\n\n const dashboardPagesCount = Math.max(\n dashboardPagesData.length,\n dashboardPagesShowMoreIndex ?? 0\n );\n\n const maxMenuPlugins = Math.min(\n MAX_MENU_PLUGINS,\n Math.floor((MAX_EXTENSIONS - dashboardPagesCount) / 2)\n );\n\n const dashboardMenuPluginsData =\n dashboardExtensions.dashboardMenuPlugins.slice(\n 0,\n dashboardExtensions.dashboardMenuPlugins.length > maxMenuPlugins\n ? maxMenuPlugins - 1\n : dashboardExtensions.dashboardMenuPlugins.length\n );\n\n const dashboardMenuPluginsShowMoreIndex =\n dashboardExtensions.dashboardMenuPlugins.length >\n dashboardMenuPluginsData.length\n ? dashboardMenuPluginsData.length + dashboardPagesCount + 1\n : undefined;\n\n const dashboardMenuPluginsCount = Math.max(\n dashboardMenuPluginsData.length + dashboardPagesCount,\n dashboardMenuPluginsShowMoreIndex ?? 0\n );\n\n const maxPagePlugins = Math.min(\n MAX_PAGE_PLUGINS,\n MAX_EXTENSIONS - dashboardMenuPluginsCount\n );\n\n const dashboardPluginsData = dashboardExtensions.dashboardPlugins.slice(\n 0,\n dashboardExtensions.dashboardPlugins.length > maxPagePlugins\n ? maxPagePlugins - 1\n : dashboardExtensions.dashboardPlugins.length\n );\n\n const dashboardPluginsShowMoreIndex =\n dashboardExtensions.dashboardPlugins.length > dashboardPluginsData.length\n ? dashboardPluginsData.length + dashboardMenuPluginsCount + 1\n : undefined;\n\n const visibleItems: Array<\n NumericOption<DevCenterComponent<DashboardExtension>, DashboardExtension>\n > = [\n ...dashboardPagesData.map((page) =>\n NumericOption.Item({\n title: page.title,\n description: page.route,\n value: page,\n })\n ),\n ...(dashboardPagesShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPage' as DashboardExtension)]\n : []),\n ...dashboardMenuPluginsData.map((menuPlugin) =>\n NumericOption.Item({\n title: menuPlugin.title,\n description: menuPlugin.route,\n value: menuPlugin,\n })\n ),\n ...(dashboardMenuPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardMenuPlugin' as DashboardExtension)]\n : []),\n ...dashboardPluginsData.map((pagePlugin) =>\n NumericOption.Item({\n title: pagePlugin.title,\n description: pagePlugin.route,\n value: pagePlugin,\n })\n ),\n ...(dashboardPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPlugin' as DashboardExtension)]\n : []),\n ];\n\n const getLabelKey = (\n dashboardExtension: DevCenterComponent<DashboardExtension>\n ) => {\n return match(\n dashboardExtension,\n lookup({\n DashboardPage: 'general.dashboard_pages_viewer.title',\n DashboardMenuPlugin: 'general.dashboard_menu_plugins_viewer.title',\n DashboardPlugin: 'general.dashboard_plugins_viewer.title',\n DashboardModal: '', // NOTE: No key for this type\n })\n );\n };\n\n useInput(async (input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const itemIndex = inputNumber - 1;\n const item = visibleItems.at(itemIndex);\n if (item) {\n await match(item, {\n Item: async (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n questionKey: getLabelKey(item.value),\n action: item.title,\n key: input,\n });\n await handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n questionKey: 'general.numeric_viewer.show_more',\n action: 'view_more',\n key: input,\n });\n onViewMore(\n DashboardScreenSelector.Arrow({\n dashboardExtension: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl(dashboardExtension);\n await openPage({ url, title: dashboardExtension.title });\n onSelect?.(dashboardExtension);\n },\n [onSelect, openPage, resolveDashboardExtensionUrl]\n );\n\n const dashboardPages = visibleItems.slice(0, dashboardPagesCount);\n const dashboardMenuPlugins = visibleItems.slice(\n dashboardPagesCount,\n dashboardMenuPluginsCount\n );\n const dashboardPlugins = visibleItems.slice(dashboardMenuPluginsCount);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {dashboardPages.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.dashboard_pages_viewer.title\"\n items={dashboardPages}\n />\n )}\n {dashboardMenuPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardPagesCount}\n titleKey=\"general.dashboard_menu_plugins_viewer.title\"\n items={dashboardMenuPlugins}\n />\n )}\n {dashboardPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardMenuPluginsCount}\n titleKey=\"general.dashboard_plugins_viewer.title\"\n items={dashboardPlugins}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Key, Text, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\ninterface Props {\n onClose: () => void;\n}\n\nexport const CloseScreen: FC<Props> = ({ onClose }) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n\n useInput((_, key) => {\n if (key.escape) {\n bi.cliAction({\n question: t('general.close_screen'),\n questionKey: 'general.close_screen',\n action: 'close',\n key: 'esc',\n });\n onClose();\n }\n });\n\n return (\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"general.close_screen\"\n components={[<Key value=\"esc\" skin=\"secondary\" />]}\n />\n </Text>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { fields, match, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport { DashboardArrowViewer } from './DashboardArrowViewer.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\n\nexport const DashboardScreenSelector = variant({\n Arrow: fields<{\n dashboardExtension: DashboardExtension;\n }>(),\n Numeric: {},\n});\n\nexport type DashboardScreenSelector = VariantOf<typeof DashboardScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n initialSelectorType?: DashboardScreenSelector;\n}\n\nexport const DashboardScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = DashboardScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<DashboardScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ dashboardExtension }) => (\n <DashboardArrowViewer\n dashboardExtension={dashboardExtension}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <DashboardNumericViewer\n onViewMore={setSelectorType}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { match, lookup } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n} from '../extensions/utils.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\ninterface Props {\n dashboardExtension: DashboardExtension;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose: () => void;\n}\n\nexport const DashboardArrowViewer: FC<Props> = ({\n dashboardExtension,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const bi = useWixCliAppBi();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const openPage = useOpenPage();\n\n const getLabelKey = useCallback(\n () =>\n match(\n dashboardExtension,\n lookup({\n DashboardPlugin:\n 'dev_command.dashboard_page_plugin_screen.select_label',\n DashboardMenuPlugin:\n 'dev_command.dashboard_menu_plugin_screen.select_label',\n DashboardPage: 'dev_command.dashboard_pages_screen.select_label',\n DashboardModal: 'dev_command.dashboard_modal_screen.select_label',\n })\n ),\n [dashboardExtension]\n );\n\n const handleSubmit = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl(dashboardExtension);\n bi.cliAction({\n question: t(getLabelKey()),\n questionKey: getLabelKey(),\n action: dashboardExtension.title,\n key: 'enter',\n });\n await openPage({ url, title: dashboardExtension.title });\n onSelect?.(dashboardExtension);\n },\n [resolveDashboardExtensionUrl, bi, t, getLabelKey, openPage, onSelect]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<DevCenterComponent<DashboardExtension>>\n label={t(getLabelKey())}\n options={getExtensions(dashboardExtension).map(\n (dashboardExtensionInstance) => ({\n key: dashboardExtensionInstance.id,\n title: dashboardExtensionInstance.title,\n description: dashboardExtensionInstance.route,\n value: dashboardExtensionInstance,\n })\n )}\n onSubmit={({ value: dashboardExtensionInstance }) =>\n handleSubmit(dashboardExtensionInstance)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","export { NumericViewer, type NumericOption } from './NumericViewer.js';\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { Box, Text, Key, PointerSmallIcon } from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { variant, onTerms, fields, match, payload } from 'variant';\nimport type { TypeNames, GVariantOf } from 'variant';\n\nconst ListItem: FC<{\n itemNumber: number;\n children: ReactNode;\n}> = ({ itemNumber, children }) => {\n const keyValue = `${itemNumber}`;\n return (\n <Box flexDirection=\"row\" gap={1}>\n <Text>\n <PointerSmallIcon /> <Key value={keyValue} /> -\n </Text>\n {children}\n </Box>\n );\n};\n\nexport const NumericOption = variant(\n onTerms(({ I: _I, V }) => ({\n Item: fields<{ title: string; description?: string; value: typeof _I }>(),\n ViewMore: payload(V),\n }))\n);\n\nexport type NumericOption<\n I,\n V,\n TType extends TypeNames<typeof NumericOption> = undefined,\n> = GVariantOf<typeof NumericOption, TType, { I: I; V: V }>;\n\ninterface Props<I, V> {\n startIndex: number;\n titleKey: string;\n items: Array<NumericOption<I, V>>;\n}\n\nexport function NumericViewer<I, V>({\n startIndex,\n titleKey,\n items,\n}: Props<I, V>) {\n return (\n <Box flexDirection=\"column\">\n <Trans i18nKey={titleKey} />\n <Box paddingLeft={2} flexDirection=\"column\">\n {items.map((item, index) => (\n <ListItem\n key={startIndex + index + 1}\n itemNumber={startIndex + index + 1}\n >\n {match(item, {\n Item: ({ title, description }) => (\n <Box flexDirection=\"row\" gap={1}>\n <Text>{title}</Text>\n {description && <Text skin=\"secondary\">({description})</Text>}\n </Box>\n ),\n ViewMore: () => (\n <Trans i18nKey=\"general.numeric_viewer.show_more\" />\n ),\n })}\n </ListItem>\n ))}\n </Box>\n </Box>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Alert, Box, PointerIcon } from '@wix/cli-ui-kit';\nimport { ErrorViewer, useErrorReporter } from '@wix/cli-error-reporting';\nimport type { Site } from '@wix/site-list-client';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { SiteSelector } from '@wix/cli-site-selector';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../../model.js';\nimport { useSite } from '../../site/index.js';\nimport { CloseScreen } from '../CloseScreen/index.js';\nimport { ScreenState } from './screen-state.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const SiteSelectorScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const biLogger = useBiLogger();\n const { site, setSite } = useSite();\n const { reportError } = useErrorReporter();\n const [error, setError] = useState<unknown>(null);\n\n const handleError = useCallback(\n (error: unknown) => {\n reportError(error);\n setError(error);\n },\n [reportError, setError]\n );\n\n const handleSubmit = useCallback(\n async (site: Site) => {\n try {\n await setSite(site);\n onScreenChange(ScreenState.Home());\n } catch (e) {\n handleError(e);\n }\n },\n [setSite, onScreenChange, handleError]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box gap={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box flexDirection=\"column\">\n <SiteSelector\n appId={model.config.appId}\n biLogger={biLogger}\n onSubmit={handleSubmit}\n onError={handleError}\n />\n {error ? (\n <ErrorViewer\n error={error}\n systemErrorOverride={\n <Alert type=\"error\">{t('dev_command.site_selector.error')}</Alert>\n }\n />\n ) : null}\n </Box>\n <CloseScreen onClose={() => onScreenChange(ScreenState.Home())} />\n </Box>\n );\n};\n","export { CloseScreen } from './CloseScreen.js';\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { fields, match, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport { BackendNumericViewer } from './BackendNumericViewer.js';\nimport { BackendArrowViewer } from './BackendArrowViewer.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\nexport const BackendScreenSelector = variant({\n Arrow: fields<{\n backendComponentName: BackendComponentNames;\n }>(),\n Numeric: {},\n});\n\nexport type BackendScreenSelector = VariantOf<typeof BackendScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n initialSelectorType?: BackendScreenSelector;\n}\n\nexport const BackendScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = BackendScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<BackendScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ backendComponentName }) => (\n <BackendArrowViewer\n backendComponentName={backendComponentName}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <BackendNumericViewer\n onViewMore={setSelectorType}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { match, lookup } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport {\n NumericOption,\n NumericViewer,\n} from '../NumericViewer/NumericViewer.js';\nimport { BackendScreenSelector } from './BackendScreen.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n DevCenterComponent,\n} from '../../dev-center/components/dev-center-component.js';\n\nconst MAX_BACKEND_COMPONENT = 9;\nconst MAX_SERVICE_PLUGINS = 4;\nconst MAX_EVENTS = 5;\n\ninterface Props {\n onViewMore: (backendScreen: BackendScreenSelector) => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose?: () => void;\n}\n\nexport const BackendNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const servicePluginsData = backendComponentsByType.ServicePlugin.slice(\n 0,\n backendComponentsByType.ServicePlugin.length > MAX_SERVICE_PLUGINS\n ? MAX_SERVICE_PLUGINS - 1\n : backendComponentsByType.ServicePlugin.length\n );\n\n const servicePluginsShowMoreIndex =\n backendComponentsByType.ServicePlugin.length > servicePluginsData.length\n ? servicePluginsData.length + 1\n : undefined;\n\n const servicePluginsCount = Math.max(\n servicePluginsData.length,\n servicePluginsShowMoreIndex ?? 0\n );\n\n const maxBackendEvents = Math.min(\n MAX_EVENTS,\n MAX_BACKEND_COMPONENT - servicePluginsCount\n );\n\n const backendEventsData = backendComponentsByType.Event.slice(\n 0,\n backendComponentsByType.Event.length > maxBackendEvents\n ? maxBackendEvents - 1\n : backendComponentsByType.Event.length\n );\n\n const backendEventsShowMoreIndex =\n backendComponentsByType.Event.length > backendEventsData.length\n ? backendEventsData.length + servicePluginsCount + 1\n : undefined;\n\n const visibleItems: Array<\n NumericOption<BackendComponent, BackendComponentNames>\n > = [\n ...servicePluginsData.map(\n (servicePlugin: DevCenterComponent<'ServicePlugin'>) =>\n NumericOption.Item({\n title: servicePlugin.servicePlugin.name,\n value: servicePlugin,\n })\n ),\n ...(servicePluginsShowMoreIndex\n ? [NumericOption.ViewMore('ServicePlugin' as BackendComponentNames)]\n : []),\n ...backendEventsData.map((event: DevCenterComponent<'Event'>) =>\n NumericOption.Item({\n title: event.title,\n value: event,\n })\n ),\n ...(backendEventsShowMoreIndex\n ? [NumericOption.ViewMore('Event' as BackendComponentNames)]\n : []),\n ];\n\n const getLabelKey = (backendComponent: BackendComponent) => {\n return match(\n backendComponent,\n lookup({\n Api: 'general.backend_api_viewer.title',\n Event: 'general.backend_events_viewer.title',\n ServicePlugin: 'general.backend_plugin_viewer.title',\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const item = visibleItems.at(inputNumber - 1);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n questionKey: getLabelKey(item.value),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n questionKey: 'general.numeric_viewer.show_more',\n action: 'view_more',\n key: input,\n });\n onViewMore(\n BackendScreenSelector.Arrow({\n backendComponentName: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n (backendComponent: BackendComponent) => {\n onSelect?.(backendComponent);\n },\n [onSelect]\n );\n\n const backendPlugins = visibleItems.slice(0, servicePluginsCount);\n const backendEvents = visibleItems.slice(servicePluginsCount);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {backendPlugins.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.backend_plugin_viewer.title\"\n items={backendPlugins}\n />\n )}\n {backendEvents.length > 0 && (\n <NumericViewer\n startIndex={servicePluginsCount}\n titleKey=\"general.backend_events_viewer.title\"\n items={backendEvents}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport type { FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { isType, lookup, match } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\ninterface Props {\n backendComponentName: BackendComponentNames;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose: () => void;\n}\n\nexport const BackendArrowViewer: FC<Props> = ({\n backendComponentName,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const getLabelKey = useCallback(\n () =>\n match(\n backendComponentName,\n lookup({\n Api: 'dev_command.backend_apis_screen.select_label',\n Event: 'dev_command.backend_events_screen.select_label',\n ServicePlugin: 'dev_command.backend_plugins_screen.select_label',\n })\n ),\n [backendComponentName]\n );\n\n const getBackendComponentName = (backendComponent: BackendComponent) =>\n isType(backendComponent, 'ServicePlugin')\n ? backendComponent.servicePlugin.name\n : backendComponent.title;\n\n const handleSubmit = useCallback(\n (backendComponent: BackendComponent) => {\n bi.cliAction({\n question: t(getLabelKey()),\n questionKey: getLabelKey(),\n action: getBackendComponentName(backendComponent),\n key: 'enter',\n });\n onSelect?.(backendComponent);\n },\n [bi, getLabelKey, onSelect, t]\n );\n\n const options = useMemo(() => {\n return backendComponentsByType[backendComponentName].map(\n (backendComponent, index) => ({\n key: index.toString(),\n title: getBackendComponentName(backendComponent),\n value: backendComponent,\n })\n );\n }, [backendComponentsByType, backendComponentName]);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<BackendComponent>\n label={t(getLabelKey())}\n options={options}\n onSubmit={({ value: backendComponent }) =>\n handleSubmit(backendComponent)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { ConfirmInput, Text, useAsync, useExit } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { readUserConfig, updateUserConfig } from '@wix/cli-user-config';\nimport { match } from 'variant';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n children: ReactNode;\n}\n\nexport const TunnelingConsent: FC<Props> = ({ children }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { backendComponents } = useBackendComponents();\n const [approved, setApproved] = useState<boolean>();\n\n const { status } = useAsync(async () => {\n const config = await readUserConfig();\n\n if (config.tunneling) {\n setApproved(true);\n }\n\n return config;\n }, []);\n\n if (backendComponents.length === 0 || approved) {\n return children;\n }\n\n return (\n <>\n {match(status, {\n Success: () => (\n <ConfirmInput\n label={t('dev_command.tunneling.confirm')}\n initialValue={true}\n onSubmit={async (approved) => {\n setApproved(approved);\n await updateUserConfig({ tunneling: approved });\n if (!approved) {\n exit();\n }\n }}\n />\n ),\n Error: () => null,\n Loading: () => null,\n })}\n {approved === false && (\n <Text skin=\"error\">\n <Trans i18nKey=\"dev_command.tunneling.abort_dev\" />\n </Text>\n )}\n </>\n );\n};\n","import { join } from 'node:path';\nimport { getDataDirPath } from '@wix/cli-data-dir';\nimport { pathExists, readJson, writeJson } from '@wix/cli-fs';\nimport {\n userConfigSchema,\n USER_CONFIG_FILENAME,\n} from '@wix/cli-core-definitions';\nimport type { UserConfig } from '@wix/cli-core-definitions';\n\nfunction getUserConfigPath() {\n return join(getDataDirPath(), USER_CONFIG_FILENAME);\n}\n\nexport async function readUserConfig() {\n const configPath = getUserConfigPath();\n const isConfigExist = await pathExists(configPath);\n const json = isConfigExist ? await readJson(configPath) : {};\n return userConfigSchema.parse(json);\n}\n\nexport async function updateUserConfig(config: Partial<UserConfig>) {\n const currentConfig = await readUserConfig();\n const newConfig = {\n ...currentConfig,\n ...config,\n };\n\n const configPath = getUserConfigPath();\n await writeJson(configPath, newConfig);\n}\n","import { setTimeout } from 'node:timers/promises';\nimport React, { useCallback, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { match, isType } from 'variant';\nimport { openBrowser } from '@wix/user-browser';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { ComponentType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport {\n useAsync,\n Spinner,\n useAsyncCallback,\n useInput,\n Text,\n Key,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useARMClient } from '@wix/arm-client';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport type { CustomElement } from '@wix/cli-app-manifest';\nimport { useProjectModel } from '../../model.js';\nimport { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { createCustomElementConfig } from '../../app-manifest/create.js';\nimport { redirectWithCSMv2FTs } from '../extensions/utils.js';\nimport { useSite } from '../../site/useSite.js';\nimport { useArmTag } from '../../context/armTag.js';\n\n// You can find dummy-custom-element codebase at https://github.com/wix-private/wix-cli-internal/tree/9b2a26e76375313eabb735df459944f67d7002d7/packages/wix-cli-dummy-custom-element\nconst DUMMY_CUSTOM_ELEMENT_TAG_NAME = 'wix-cli-dummy-custom-element';\nconst DUMMY_CUSTOM_ELEMENT_URL =\n 'https://www.unpkg.com/@wix/cli-dummy-custom-element';\n\nconst AppUpdater: FC<{\n children: ReactNode;\n newCustomElements: Array<DevCenterComponent<'CustomElement'>>;\n}> = ({ children, newCustomElements }) => {\n const { model } = useProjectModel();\n const { reportError } = useErrorReporter();\n const { createComponents } = useARMClient();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const { site } = useSite();\n const { armTag } = useArmTag();\n\n const [isAppReinstalled, setAppReinstalledFlag] = useState(false);\n\n const prepareNewElements = useAsyncCallback(\n async () => {\n const componentConfigs = newCustomElements.map<CustomElement>(\n (customElement) => {\n const scriptUrl = DUMMY_CUSTOM_ELEMENT_URL;\n const config = createCustomElementConfig(customElement, scriptUrl);\n\n return {\n ...config,\n compData: {\n customElementWidget: {\n ...config.compData.customElementWidget,\n widgetData: {\n ...config.compData.customElementWidget.widgetData,\n tagName: DUMMY_CUSTOM_ELEMENT_TAG_NAME,\n },\n },\n },\n };\n }\n );\n\n await createComponents(\n model.config.appId,\n componentConfigs,\n model.config.projectId\n );\n const { customElementsCreationDelay } = getTestOverrides();\n const [{ data: signedAppMarketParams }] = await Promise.all([\n httpClient\n .post<string>(\n '/_serverless/app-market-json-web-token/json-web-token',\n {\n data: {\n data: JSON.stringify({\n appDefId: model.config.appId,\n version: 'latest',\n }),\n },\n }\n )\n .catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),\n cause: e,\n });\n }),\n setTimeout(customElementsCreationDelay ?? 5000),\n ]);\n const url = new URL(`https://wix.com/editor/${site.id}`);\n url.searchParams.append('openPanel', 'appMarket');\n url.searchParams.append('preferAppManager', 'true');\n url.searchParams.append('appMarketParams', signedAppMarketParams);\n url.searchParams.append('apps-override', armTag);\n\n await openBrowser(\n redirectWithCSMv2FTs(url, PlatformType.Editor()).toString()\n );\n },\n {\n onError: (error) => {\n reportError(error);\n },\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n void prepareNewElements.execute();\n }\n },\n [prepareNewElements]\n ),\n {\n isActive: isType(prepareNewElements.status, 'NotRequested'),\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n setAppReinstalledFlag(true);\n }\n },\n [setAppReinstalledFlag]\n ),\n {\n isActive:\n !isAppReinstalled &&\n (isType(prepareNewElements.status, 'Success') ||\n isType(prepareNewElements.status, 'Error')),\n }\n );\n\n if (isAppReinstalled) {\n return children;\n }\n\n return match(prepareNewElements.status, {\n Loading: () => <Spinner />,\n Success: () => {\n return (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.confirm_reinstall\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n );\n },\n Error: () => (\n <Alert type=\"error\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.reinstall_error\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n NotRequested: () => (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.warning\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n });\n};\n\nexport const CustomElementsMigration: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { getAppByVersion } = useDevCenterClient();\n const { model } = useProjectModel();\n const { t } = useTranslation();\n\n const customElementsCheck = useAsync(async () => {\n const localCustomElements = model.components.filter((component) =>\n isType(component, DevCenterComponent.CustomElement)\n );\n\n if (!localCustomElements.length) {\n return [];\n }\n\n const {\n data: { components },\n } = await getAppByVersion({\n appId: model.config.appId,\n });\n\n const existingCustomElements = components.filter(\n (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET\n );\n\n const newCustomElements = localCustomElements.filter(\n (localCustomElement) =>\n !existingCustomElements.some(\n (customElement) => customElement.compId === localCustomElement.id\n )\n );\n\n return newCustomElements;\n }, []);\n\n return match(customElementsCheck.status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('dev_command.custom_elements_migration.loading')} />\n ),\n Success: ({ result: newCustomElements }) =>\n newCustomElements.length ? (\n <AppUpdater newCustomElements={newCustomElements}>\n {children}\n </AppUpdater>\n ) : (\n children\n ),\n });\n};\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { useAsync, Spinner, Alert } from '@wix/cli-ui-kit';\nimport { match } from 'variant';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useMetasiteManagerClient } from '@wix/metasite-manager-client';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { useProjectModel } from '../../model.js';\nimport { useSite } from '../../site/useSite.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\n\nexport const RequiredAppsWarning: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { logger } = useDevEnvironment();\n const { site } = useSite();\n const { model } = useProjectModel();\n const { getRequiredApps } = useDevCenterClient();\n const { getSiteInstalledApps } = useMetasiteManagerClient();\n const { t } = useTranslation();\n\n const { status: requiredAppsStatus } = useAsync(async () => {\n const requiredApps = await getRequiredApps(model.config.appId);\n\n if (requiredApps.length === 0) {\n return;\n }\n\n const siteInstalledApps = await getSiteInstalledApps(site.id);\n\n const missingRequiredApps = requiredApps.filter(\n (requiredApp) => !siteInstalledApps.includes(requiredApp.id)\n );\n\n if (missingRequiredApps.length === 0) {\n return;\n }\n\n logger.warn(\n <Alert type=\"warning\">\n {t('dev_command.required_apps.warning', {\n requiredAppNames: missingRequiredApps\n .map((app) => app.name)\n .join(', '),\n })}\n </Alert>\n );\n }, []);\n\n return match(requiredAppsStatus, {\n Loading: () => <Spinner text={t('dev_command.required_apps.loading')} />,\n Error: () => null,\n Success: () => children,\n });\n};\n","import React from 'react';\nimport { Box } from '@wix/cli-ui-kit';\nimport type { FC, ReactNode } from 'react';\n\nexport const DevScreenBorder: FC<{ children: ReactNode }> = ({ children }) => {\n return (\n <Box\n flexDirection=\"column\"\n borderTop\n borderLeft={false}\n borderBottom={false}\n borderRight={false}\n borderStyle=\"round\"\n borderColor=\"blueBright\"\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":["init_esm_shims","init_esm_shims","import_react","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","init_esm_shims","import_variant","ScreenState","init_esm_shims","import_react","PlatformOption","label","inputKey","suffix","disabled","getTextSkin","React","Box_default","Text","PointerSmallIcon","Key","PlatformSelector","onMultipleDashboardExtensionSelection","t","useTranslation","bi","useWixCliAppBi","isPlatformExists","usePlatform","dashboardExtensions","useExtensions","resolvePlatformUrl","useResolvePlatformDevUrl","resolveDashboardExtensionUrl","useResolveDashboardExtensionDevUrl","site","useSite","openPage","useOpenPage","openPlatform","platformType","use_input_default","input","PlatformType","dashboardOptionSuffix","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","CloseScreen","onClose","t","useTranslation","bi","useWixCliAppBi","use_input_default","_","key","React","Text","Trans","Key","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","DashboardArrowViewer","dashboardExtension","onClose","onSelect","t","useTranslation","getExtensions","useExtensions","bi","useWixCliAppBi","resolveDashboardExtensionUrl","useResolveDashboardExtensionDevUrl","openPage","useOpenPage","getLabelKey","handleSubmit","url","React","Box_default","SelectInput","dashboardExtensionInstance","CloseScreen","DashboardScreenSelector","DashboardScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","React","dashboardExtension","DashboardArrowViewer","DashboardNumericViewer","init_esm_shims","init_esm_shims","import_react","import_variant","ListItem","itemNumber","children","keyValue","React","Box_default","Text","PointerSmallIcon","Key","NumericOption","_I","V","NumericViewer","startIndex","titleKey","items","Trans","item","index","title","description","MAX_EXTENSIONS","MAX_DASHBOARD_PAGES","MAX_PAGE_PLUGINS","MAX_MENU_PLUGINS","DashboardNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","getExtensions","useExtensions","bi","useWixCliAppBi","resolveDashboardExtensionUrl","useResolveDashboardExtensionDevUrl","openPage","useOpenPage","dashboardExtensions","dashboardPagesData","dashboardPagesShowMoreIndex","dashboardPagesCount","maxMenuPlugins","dashboardMenuPluginsData","dashboardMenuPluginsShowMoreIndex","dashboardMenuPluginsCount","maxPagePlugins","dashboardPluginsData","dashboardPluginsShowMoreIndex","visibleItems","page","NumericOption","menuPlugin","pagePlugin","getLabelKey","dashboardExtension","use_input_default","input","inputNumber","itemIndex","item","handleSelect","viewMore","DashboardScreenSelector","url","dashboardPages","dashboardMenuPlugins","dashboardPlugins","React","Box_default","NumericViewer","CloseScreen","HomeScreen","onScreenChange","t","useTranslation","site","useSite","bi","useWixCliAppBi","hasSinglePlatform","usePlatform","hasExtensions","dashboardExtensions","useExtensions","backendComponents","useBackendComponents","use_input_default","input","ScreenState","React","Box_default","Trans","Text","Key","PlatformType","dashboardExtension","DashboardNumericViewer","selectorType","PlatformSelector","Link","init_esm_shims","import_react","init_esm_shims","SiteSelectorScreen","onScreenChange","t","useTranslation","model","useProjectModel","biLogger","useBiLogger","site","setSite","useSite","reportError","useErrorReporter","error","setError","handleError","handleSubmit","ScreenState","e","React","Box_default","PointerIcon","Trans","SiteSelector","ErrorViewer","Alert","CloseScreen","init_esm_shims","import_react","import_variant","init_esm_shims","import_react","import_variant","MAX_BACKEND_COMPONENT","MAX_SERVICE_PLUGINS","MAX_EVENTS","BackendNumericViewer","onViewMore","onSelect","onClose","t","useTranslation","bi","useWixCliAppBi","backendComponentsByType","useBackendComponents","servicePluginsData","servicePluginsShowMoreIndex","servicePluginsCount","maxBackendEvents","backendEventsData","backendEventsShowMoreIndex","visibleItems","servicePlugin","NumericOption","event","getLabelKey","backendComponent","use_input_default","input","inputNumber","item","handleSelect","viewMore","BackendScreenSelector","backendPlugins","backendEvents","React","Box_default","NumericViewer","CloseScreen","init_esm_shims","import_react","import_variant","BackendArrowViewer","backendComponentName","onClose","onSelect","t","useTranslation","bi","useWixCliAppBi","backendComponentsByType","useBackendComponents","getLabelKey","getBackendComponentName","backendComponent","handleSubmit","options","index","React","Box_default","SelectInput","CloseScreen","BackendScreenSelector","BackendScreen","onClose","onSelect","initialSelectorType","selectorType","setSelectorType","React","backendComponentName","BackendArrowViewer","BackendNumericViewer","DevCommandScreens","screen","setScreen","ScreenState","React","HomeScreen","SiteSelectorScreen","selectorType","DashboardScreen","BackendScreen","init_esm_shims","import_react","init_esm_shims","join","getUserConfigPath","join","getDataDirPath","USER_CONFIG_FILENAME","readUserConfig","configPath","json","pathExists","readJson","userConfigSchema","updateUserConfig","config","newConfig","writeJson","import_variant","TunnelingConsent","children","exit","useExit","useTranslation","backendComponents","useBackendComponents","approved","setApproved","status","useAsync","config","readUserConfig","React","ConfirmInput","updateUserConfig","Text","Trans","init_esm_shims","import_react","import_variant","setTimeout","DUMMY_CUSTOM_ELEMENT_TAG_NAME","DUMMY_CUSTOM_ELEMENT_URL","AppUpdater","children","newCustomElements","model","useProjectModel","reportError","useErrorReporter","createComponents","useARMClient","httpClient","useHttpClient","site","useSite","armTag","useArmTag","isAppReinstalled","setAppReinstalledFlag","prepareNewElements","useAsyncCallback","componentConfigs","customElement","config","createCustomElementConfig","customElementsCreationDelay","getTestOverrides","signedAppMarketParams","e","CliError","CliErrorCode","setTimeout","url","openBrowser","redirectWithCSMv2FTs","PlatformType","error","use_input_default","input","key","React","Spinner","Alert","Text","Trans","Key","CustomElementsMigration","getAppByVersion","useDevCenterClient","t","useTranslation","customElementsCheck","useAsync","localCustomElements","component","DevCenterComponent","components","existingCustomElements","ComponentType","localCustomElement","init_esm_shims","import_react","import_variant","RequiredAppsWarning","children","logger","useDevEnvironment","site","useSite","model","useProjectModel","getRequiredApps","useDevCenterClient","getSiteInstalledApps","useMetasiteManagerClient","t","useTranslation","requiredAppsStatus","useAsync","requiredApps","siteInstalledApps","missingRequiredApps","requiredApp","React","Alert","app","Spinner","init_esm_shims","import_react","DevScreenBorder","children","React","Box_default","DevCommand","https","logger","createLogger","React","SiteProvider","TunnelingConsent","DevEnvironmentProvider","CustomElementsMigration","RequiredAppsWarning","DevScreenBorder","DevCommandScreens"]}
1
+ {"version":3,"sources":["../src/components/DevCommand/index.ts","../src/components/DevCommand/DevCommand.tsx","../src/components/DevCommand/DevCommandScreens.tsx","../src/components/DevCommand/HomeScreen.tsx","../src/components/DevCommand/screen-state.ts","../src/components/Platform/PlatformSelector.tsx","../src/components/DevCommand/DashboardNumericViewer.tsx","../src/components/CloseScreen/CloseScreen.tsx","../src/components/DevCommand/DashboardScreen.tsx","../src/components/DevCommand/DashboardArrowViewer.tsx","../src/components/NumericViewer/index.ts","../src/components/NumericViewer/NumericViewer.tsx","../src/components/DevCommand/SiteSelectorScreen.tsx","../src/components/CloseScreen/index.tsx","../src/components/DevCommand/BackendScreen.tsx","../src/components/DevCommand/BackendNumericViewer.tsx","../src/components/DevCommand/BackendArrowViewer.tsx","../src/components/DevCommand/TunnelingConsent.tsx","../../cli-user-config/src/user-config.ts","../src/components/DevCommand/CustomElementsMigration.tsx","../src/components/DevCommand/RequiredAppsWarning.tsx","../src/components/DevCommand/DevScreenBorder.tsx"],"sourcesContent":["export { DevCommand } from './DevCommand.js';\nexport { DevEnvironmentProvider } from './DevEnvironment.js';\n","import React, { useMemo } from 'react';\nimport type { FC } from 'react';\nimport { SiteProvider } from '../../site/SiteProvider.js';\nimport { DevEnvironmentProvider } from './DevEnvironment.js';\nimport { DevCommandScreens } from './DevCommandScreens.js';\nimport { TunnelingConsent } from './TunnelingConsent.js';\nimport { CustomElementsMigration } from './CustomElementsMigration.js';\nimport { RequiredAppsWarning } from './RequiredAppsWarning.js';\nimport { DevScreenBorder } from './DevScreenBorder.js';\nimport { createLogger } from '../../vite/logger.js';\n\nexport const DevCommand: FC<{ https: boolean }> = ({ https }) => {\n const logger = useMemo(() => createLogger({ timestamp: true }), []);\n\n return (\n <SiteProvider>\n <TunnelingConsent>\n <DevEnvironmentProvider logger={logger} https={https}>\n <CustomElementsMigration>\n <RequiredAppsWarning>\n <DevScreenBorder>\n <DevCommandScreens />\n </DevScreenBorder>\n </RequiredAppsWarning>\n </CustomElementsMigration>\n </DevEnvironmentProvider>\n </TunnelingConsent>\n </SiteProvider>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { match } from 'variant';\nimport { HomeScreen } from './HomeScreen.js';\nimport { SiteSelectorScreen } from './SiteSelectorScreen.js';\nimport { ScreenState } from './screen-state.js';\nimport { DashboardScreen } from './DashboardScreen.js';\nimport { BackendScreen } from './BackendScreen.js';\n\nexport const DevCommandScreens: FC = () => {\n const [screen, setScreen] = useState<ScreenState>(ScreenState.Home());\n\n return match(screen, {\n Home: () => <HomeScreen onScreenChange={setScreen} />,\n SiteSelector: () => <SiteSelectorScreen onScreenChange={setScreen} />,\n DashboardScreen: ({ selectorType }) => (\n <DashboardScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n BackendScreen: ({ selectorType }) => (\n <BackendScreen\n initialSelectorType={selectorType}\n onSelect={() => setScreen(ScreenState.Home())}\n onClose={() => setScreen(ScreenState.Home())}\n />\n ),\n });\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, Text, Link, useInput, Key } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { isType } from 'variant';\nimport { useSite } from '../../site/index.js';\nimport { ScreenState } from './screen-state.js';\nimport { PlatformSelector } from '../Platform/PlatformSelector.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport { usePlatform } from '../Platform/usePlatform.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const HomeScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { site } = useSite();\n const bi = useWixCliAppBi();\n const { hasSinglePlatform } = usePlatform();\n const { hasExtensions, dashboardExtensions } = useExtensions();\n const { backendComponents } = useBackendComponents();\n\n useInput(async (input) => {\n if (input === 'c') {\n bi.cliAction({\n question: t('dev_command.dev_site.change'),\n questionKey: 'dev_command.dev_site.change',\n action: 'change_site',\n key: input,\n });\n onScreenChange(ScreenState.SiteSelector());\n }\n });\n\n return (\n <>\n <Box gap={1}>\n <Trans\n i18nKey=\"dev_command.dev_site.current\"\n values={{ siteName: site.displayName }}\n components={[<Text bold skin=\"info\" />]}\n />\n\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"dev_command.dev_site.change\"\n components={[<Key value=\"C\" skin=\"secondary\" />]}\n />\n </Text>\n </Box>\n\n <Box paddingTop={1} paddingBottom={1} flexDirection=\"column\">\n {!hasExtensions() ? (\n <Trans\n i18nKey=\"general.platform.none\"\n // Original link is:\n // https://dev.wix.com/docs/build-apps/developer-tools/cli/get-started/about-the-wix-cli-for-apps\n components={[<Link url=\"https://wix.to/b7o4Ml0\" />]}\n />\n ) : (\n <>\n {hasSinglePlatform(PlatformType.Dashboard()) &&\n backendComponents.length === 0 &&\n dashboardExtensions.some(\n (dashboardExtension) =>\n !isType(dashboardExtension, 'DashboardModal')\n ) ? (\n <DashboardNumericViewer\n onViewMore={(selectorType) =>\n onScreenChange(\n ScreenState.DashboardScreen({\n selectorType,\n })\n )\n }\n />\n ) : (\n <>\n <Trans\n i18nKey=\"general.view_changes\"\n components={[<Text skin=\"secondary\" />]}\n />\n <PlatformSelector\n onMultipleDashboardExtensionSelection={() =>\n onScreenChange(ScreenState.DashboardScreen())\n }\n onMultipleBackendComponentSelection={() =>\n onScreenChange(ScreenState.BackendScreen())\n }\n />\n </>\n )}\n </>\n )}\n </Box>\n </>\n );\n};\n","import { fields, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport type { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { BackendScreenSelector } from './BackendScreen.js';\n\nexport const ScreenState = variant({\n Home: {},\n SiteSelector: {},\n DashboardScreen: fields<{ selectorType?: DashboardScreenSelector }>(),\n BackendScreen: fields<{ selectorType?: BackendScreenSelector }>(),\n});\n\nexport type ScreenState = VariantOf<typeof ScreenState>;\n","import React, { useCallback, useMemo } from 'react';\nimport type { FC } from 'react';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { PointerSmallIcon, Key, useInput, Text, Box } from '@wix/cli-ui-kit';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n useResolvePlatformDevUrl,\n} from '../extensions/utils.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport { usePlatform } from './usePlatform.js';\nimport { useSite } from '../../site/useSite.js';\n\ninterface PlatformOptionProps {\n inputKey: string;\n label: string;\n suffix?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst PlatformOption: FC<PlatformOptionProps> = ({\n label,\n inputKey,\n suffix,\n disabled,\n}) => {\n const getTextSkin = () => (disabled ? 'secondary' : 'standard');\n\n return (\n <Box>\n <Box marginRight={1}>\n <Box marginRight={1}>\n <Text skin={getTextSkin()}>\n <PointerSmallIcon /> <Key value={inputKey} /> -\n </Text>\n </Box>\n <Box gap={1}>\n <Text skin={getTextSkin()}>{label}</Text>\n </Box>\n </Box>\n <Text skin={getTextSkin()}>{suffix}</Text>\n </Box>\n );\n};\n\ninterface PlatformSelector {\n onMultipleDashboardExtensionSelection: () => void;\n onMultipleBackendComponentSelection: () => void;\n}\n\nexport const PlatformSelector: FC<PlatformSelector> = ({\n onMultipleDashboardExtensionSelection,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { isPlatformExists } = usePlatform();\n const { dashboardExtensions } = useExtensions();\n const resolvePlatformUrl = useResolvePlatformDevUrl();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const { site } = useSite();\n const openPage = useOpenPage();\n\n const openPlatform = useCallback(\n async (platformType: PlatformType) => {\n await openPage({\n title: platformType.type,\n url: resolvePlatformUrl(platformType),\n });\n },\n [openPage, resolvePlatformUrl]\n );\n\n useInput(async (input) => {\n if (input === 'd' && isPlatformExists(PlatformType.Dashboard())) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.dashboard'),\n key: input,\n });\n if (dashboardExtensions.length === 1) {\n await openPage({\n title: 'Dashboard',\n url: resolveDashboardExtensionUrl(dashboardExtensions[0]!),\n });\n } else {\n onMultipleDashboardExtensionSelection();\n }\n }\n if (input === 'e' && isPlatformExists(PlatformType.Editor())) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.editor'),\n key: input,\n });\n await openPlatform(PlatformType.Editor());\n }\n if (\n input === 's' &&\n site.viewUrl &&\n isPlatformExists(PlatformType.Site())\n ) {\n bi.cliAction({\n question: t('general.view_changes'),\n questionKey: 'general.view_changes',\n action: t('general.platform.site'),\n key: input,\n });\n await openPlatform(PlatformType.Site());\n }\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n // if (input === 'b' && model.backendComponents.length > 0) {\n // bi.cliAction({\n // question: t('general.view_changes'),\n // questionKey: 'general.view_changes',\n // action: t('general.platform.backend'),\n // key: input,\n // });\n // onMultipleBackendComponentSelection();\n // }\n });\n\n const dashboardOptionSuffix = useMemo(() => {\n if (dashboardExtensions.length === 0) {\n return null;\n }\n if (dashboardExtensions.length === 1) {\n return <Text skin=\"secondary\"> - {dashboardExtensions[0]!.route}</Text>;\n }\n return <Text>{String.fromCodePoint(0x25bc)}</Text>; // ▼\n }, [dashboardExtensions]);\n\n return (\n <Box paddingLeft={2} flexDirection=\"column\">\n {isPlatformExists(PlatformType.Site()) && (\n <PlatformOption\n inputKey=\"S\"\n label={\n site.viewUrl\n ? t('general.platform.site')\n : t('general.platform.unpublished_site')\n }\n disabled={!site.viewUrl}\n />\n )}\n {isPlatformExists(PlatformType.Editor()) && (\n <PlatformOption inputKey=\"E\" label={t('general.platform.editor')} />\n )}\n {isPlatformExists(PlatformType.Dashboard()) && (\n <PlatformOption\n inputKey=\"D\"\n label={t('general.platform.dashboard')}\n suffix={dashboardOptionSuffix}\n />\n )}\n {/*\n // TODO: Uncomment once https://jira.wixpress.com/browse/FEDINF-12234 is done\n {(hasComponentByType('Event') || hasComponentByType('ServicePlugin')) && (\n <PlatformOption\n inputKey=\"B\"\n label={t('general.platform.backend')}\n suffix={<Text>{String.fromCodePoint(0x25bc)}</Text>} // ▼\n />\n )} */}\n </Box>\n );\n};\n","import React, { useMemo, useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { lookup, match } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n} from '../extensions/utils.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { DashboardScreenSelector } from './DashboardScreen.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport { NumericViewer } from '../NumericViewer/index.js';\nimport { NumericOption } from '../NumericViewer/NumericViewer.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\nconst MAX_EXTENSIONS = 9;\nconst MAX_DASHBOARD_PAGES = 3;\nconst MAX_PAGE_PLUGINS = 3;\nconst MAX_MENU_PLUGINS = 3;\n\ninterface Props {\n onViewMore: (dashboardScreenSelector: DashboardScreenSelector) => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose?: () => void;\n}\n\nexport const DashboardNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const bi = useWixCliAppBi();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const openPage = useOpenPage();\n\n const dashboardExtensions = useMemo(\n () => ({\n dashboardPages: getExtensions('DashboardPage'),\n dashboardMenuPlugins: getExtensions('DashboardMenuPlugin'),\n dashboardPlugins: getExtensions('DashboardPlugin'),\n }),\n [getExtensions]\n );\n\n const dashboardPagesData = dashboardExtensions.dashboardPages.slice(\n 0,\n dashboardExtensions.dashboardPages.length > MAX_DASHBOARD_PAGES\n ? MAX_DASHBOARD_PAGES - 1\n : dashboardExtensions.dashboardPages.length\n );\n\n const dashboardPagesShowMoreIndex =\n dashboardExtensions.dashboardPages.length > dashboardPagesData.length\n ? dashboardPagesData.length + 1\n : undefined;\n\n const dashboardPagesCount = Math.max(\n dashboardPagesData.length,\n dashboardPagesShowMoreIndex ?? 0\n );\n\n const maxMenuPlugins = Math.min(\n MAX_MENU_PLUGINS,\n Math.floor((MAX_EXTENSIONS - dashboardPagesCount) / 2)\n );\n\n const dashboardMenuPluginsData =\n dashboardExtensions.dashboardMenuPlugins.slice(\n 0,\n dashboardExtensions.dashboardMenuPlugins.length > maxMenuPlugins\n ? maxMenuPlugins - 1\n : dashboardExtensions.dashboardMenuPlugins.length\n );\n\n const dashboardMenuPluginsShowMoreIndex =\n dashboardExtensions.dashboardMenuPlugins.length >\n dashboardMenuPluginsData.length\n ? dashboardMenuPluginsData.length + dashboardPagesCount + 1\n : undefined;\n\n const dashboardMenuPluginsCount = Math.max(\n dashboardMenuPluginsData.length + dashboardPagesCount,\n dashboardMenuPluginsShowMoreIndex ?? 0\n );\n\n const maxPagePlugins = Math.min(\n MAX_PAGE_PLUGINS,\n MAX_EXTENSIONS - dashboardMenuPluginsCount\n );\n\n const dashboardPluginsData = dashboardExtensions.dashboardPlugins.slice(\n 0,\n dashboardExtensions.dashboardPlugins.length > maxPagePlugins\n ? maxPagePlugins - 1\n : dashboardExtensions.dashboardPlugins.length\n );\n\n const dashboardPluginsShowMoreIndex =\n dashboardExtensions.dashboardPlugins.length > dashboardPluginsData.length\n ? dashboardPluginsData.length + dashboardMenuPluginsCount + 1\n : undefined;\n\n const visibleItems: Array<\n NumericOption<DevCenterComponent<DashboardExtension>, DashboardExtension>\n > = [\n ...dashboardPagesData.map((page) =>\n NumericOption.Item({\n title: page.title,\n description: page.route,\n value: page,\n })\n ),\n ...(dashboardPagesShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPage' as DashboardExtension)]\n : []),\n ...dashboardMenuPluginsData.map((menuPlugin) =>\n NumericOption.Item({\n title: menuPlugin.title,\n description: menuPlugin.route,\n value: menuPlugin,\n })\n ),\n ...(dashboardMenuPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardMenuPlugin' as DashboardExtension)]\n : []),\n ...dashboardPluginsData.map((pagePlugin) =>\n NumericOption.Item({\n title: pagePlugin.title,\n description: pagePlugin.route,\n value: pagePlugin,\n })\n ),\n ...(dashboardPluginsShowMoreIndex\n ? [NumericOption.ViewMore('DashboardPlugin' as DashboardExtension)]\n : []),\n ];\n\n const getLabelKey = (\n dashboardExtension: DevCenterComponent<DashboardExtension>\n ) => {\n return match(\n dashboardExtension,\n lookup({\n DashboardPage: 'general.dashboard_pages_viewer.title',\n DashboardMenuPlugin: 'general.dashboard_menu_plugins_viewer.title',\n DashboardPlugin: 'general.dashboard_plugins_viewer.title',\n DashboardModal: '', // NOTE: No key for this type\n })\n );\n };\n\n useInput(async (input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const itemIndex = inputNumber - 1;\n const item = visibleItems.at(itemIndex);\n if (item) {\n await match(item, {\n Item: async (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n questionKey: getLabelKey(item.value),\n action: item.title,\n key: input,\n });\n await handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n questionKey: 'general.numeric_viewer.show_more',\n action: 'view_more',\n key: input,\n });\n onViewMore(\n DashboardScreenSelector.Arrow({\n dashboardExtension: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl(dashboardExtension);\n await openPage({ url, title: dashboardExtension.title });\n onSelect?.(dashboardExtension);\n },\n [onSelect, openPage, resolveDashboardExtensionUrl]\n );\n\n const dashboardPages = visibleItems.slice(0, dashboardPagesCount);\n const dashboardMenuPlugins = visibleItems.slice(\n dashboardPagesCount,\n dashboardMenuPluginsCount\n );\n const dashboardPlugins = visibleItems.slice(dashboardMenuPluginsCount);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {dashboardPages.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.dashboard_pages_viewer.title\"\n items={dashboardPages}\n />\n )}\n {dashboardMenuPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardPagesCount}\n titleKey=\"general.dashboard_menu_plugins_viewer.title\"\n items={dashboardMenuPlugins}\n />\n )}\n {dashboardPlugins.length > 0 && (\n <NumericViewer\n startIndex={dashboardMenuPluginsCount}\n titleKey=\"general.dashboard_plugins_viewer.title\"\n items={dashboardPlugins}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Key, Text, useInput } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\ninterface Props {\n onClose: () => void;\n}\n\nexport const CloseScreen: FC<Props> = ({ onClose }) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n\n useInput((_, key) => {\n if (key.escape) {\n bi.cliAction({\n question: t('general.close_screen'),\n questionKey: 'general.close_screen',\n action: 'close',\n key: 'esc',\n });\n onClose();\n }\n });\n\n return (\n <Text skin=\"secondary\">\n <Trans\n i18nKey=\"general.close_screen\"\n components={[<Key value=\"esc\" skin=\"secondary\" />]}\n />\n </Text>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { fields, match, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport { DashboardArrowViewer } from './DashboardArrowViewer.js';\nimport { DashboardNumericViewer } from './DashboardNumericViewer.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\n\nexport const DashboardScreenSelector = variant({\n Arrow: fields<{\n dashboardExtension: DashboardExtension;\n }>(),\n Numeric: {},\n});\n\nexport type DashboardScreenSelector = VariantOf<typeof DashboardScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n initialSelectorType?: DashboardScreenSelector;\n}\n\nexport const DashboardScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = DashboardScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<DashboardScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ dashboardExtension }) => (\n <DashboardArrowViewer\n dashboardExtension={dashboardExtension}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <DashboardNumericViewer\n onViewMore={setSelectorType}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { match, lookup } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport type { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport {\n useOpenPage,\n useResolveDashboardExtensionDevUrl,\n} from '../extensions/utils.js';\nimport { useExtensions } from '../extensions/useExtensions.js';\nimport type { DashboardExtension } from '../extensions/useExtensions.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\n\ninterface Props {\n dashboardExtension: DashboardExtension;\n onSelect?: (page: DevCenterComponent<DashboardExtension>) => void;\n onClose: () => void;\n}\n\nexport const DashboardArrowViewer: FC<Props> = ({\n dashboardExtension,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const { getExtensions } = useExtensions();\n const bi = useWixCliAppBi();\n const resolveDashboardExtensionUrl = useResolveDashboardExtensionDevUrl();\n const openPage = useOpenPage();\n\n const getLabelKey = useCallback(\n () =>\n match(\n dashboardExtension,\n lookup({\n DashboardPlugin:\n 'dev_command.dashboard_page_plugin_screen.select_label',\n DashboardMenuPlugin:\n 'dev_command.dashboard_menu_plugin_screen.select_label',\n DashboardPage: 'dev_command.dashboard_pages_screen.select_label',\n DashboardModal: 'dev_command.dashboard_modal_screen.select_label',\n })\n ),\n [dashboardExtension]\n );\n\n const handleSubmit = useCallback(\n async (dashboardExtension: DevCenterComponent<DashboardExtension>) => {\n const url = resolveDashboardExtensionUrl(dashboardExtension);\n bi.cliAction({\n question: t(getLabelKey()),\n questionKey: getLabelKey(),\n action: dashboardExtension.title,\n key: 'enter',\n });\n await openPage({ url, title: dashboardExtension.title });\n onSelect?.(dashboardExtension);\n },\n [resolveDashboardExtensionUrl, bi, t, getLabelKey, openPage, onSelect]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<DevCenterComponent<DashboardExtension>>\n label={t(getLabelKey())}\n options={getExtensions(dashboardExtension).map(\n (dashboardExtensionInstance) => ({\n key: dashboardExtensionInstance.id,\n title: dashboardExtensionInstance.title,\n description: dashboardExtensionInstance.route,\n value: dashboardExtensionInstance,\n })\n )}\n onSubmit={({ value: dashboardExtensionInstance }) =>\n handleSubmit(dashboardExtensionInstance)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","export { NumericViewer, type NumericOption } from './NumericViewer.js';\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { Box, Text, Key, PointerSmallIcon } from '@wix/cli-ui-kit';\nimport { Trans } from '@wix/cli-i18n';\nimport { variant, onTerms, fields, match, payload } from 'variant';\nimport type { TypeNames, GVariantOf } from 'variant';\n\nconst ListItem: FC<{\n itemNumber: number;\n children: ReactNode;\n}> = ({ itemNumber, children }) => {\n const keyValue = `${itemNumber}`;\n return (\n <Box flexDirection=\"row\" gap={1}>\n <Text>\n <PointerSmallIcon /> <Key value={keyValue} /> -\n </Text>\n {children}\n </Box>\n );\n};\n\nexport const NumericOption = variant(\n onTerms(({ I: _I, V }) => ({\n Item: fields<{ title: string; description?: string; value: typeof _I }>(),\n ViewMore: payload(V),\n }))\n);\n\nexport type NumericOption<\n I,\n V,\n TType extends TypeNames<typeof NumericOption> = undefined,\n> = GVariantOf<typeof NumericOption, TType, { I: I; V: V }>;\n\ninterface Props<I, V> {\n startIndex: number;\n titleKey: string;\n items: Array<NumericOption<I, V>>;\n}\n\nexport function NumericViewer<I, V>({\n startIndex,\n titleKey,\n items,\n}: Props<I, V>) {\n return (\n <Box flexDirection=\"column\">\n <Trans i18nKey={titleKey} />\n <Box paddingLeft={2} flexDirection=\"column\">\n {items.map((item, index) => (\n <ListItem\n key={startIndex + index + 1}\n itemNumber={startIndex + index + 1}\n >\n {match(item, {\n Item: ({ title, description }) => (\n <Box flexDirection=\"row\" gap={1}>\n <Text>{title}</Text>\n {description && <Text skin=\"secondary\">({description})</Text>}\n </Box>\n ),\n ViewMore: () => (\n <Trans i18nKey=\"general.numeric_viewer.show_more\" />\n ),\n })}\n </ListItem>\n ))}\n </Box>\n </Box>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Alert, Box, PointerIcon } from '@wix/cli-ui-kit';\nimport { ErrorViewer, useErrorReporter } from '@wix/cli-error-reporting';\nimport type { Site } from '@wix/site-list-client';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { SiteSelector } from '@wix/cli-site-selector';\nimport { useBiLogger } from '@wix/cli-telemetry-react';\nimport { useProjectModel } from '../../model.js';\nimport { useSite } from '../../site/index.js';\nimport { CloseScreen } from '../CloseScreen/index.js';\nimport { ScreenState } from './screen-state.js';\n\ninterface Props {\n onScreenChange: (screen: ScreenState) => void;\n}\n\nexport const SiteSelectorScreen: FC<Props> = ({ onScreenChange }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const biLogger = useBiLogger();\n const { site, setSite } = useSite();\n const { reportError } = useErrorReporter();\n const [error, setError] = useState<unknown>(null);\n\n const handleError = useCallback(\n (error: unknown) => {\n reportError(error);\n setError(error);\n },\n [reportError, setError]\n );\n\n const handleSubmit = useCallback(\n async (site: Site) => {\n try {\n await setSite(site);\n onScreenChange(ScreenState.Home());\n } catch (e) {\n handleError(e);\n }\n },\n [setSite, onScreenChange, handleError]\n );\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box gap={1}>\n <PointerIcon />\n <Trans\n i18nKey=\"general.dev_site.current\"\n values={{ name: site.displayName }}\n />\n </Box>\n <Box flexDirection=\"column\">\n <SiteSelector\n appId={model.config.appId}\n biLogger={biLogger}\n onSubmit={handleSubmit}\n onError={handleError}\n />\n {error ? (\n <ErrorViewer\n error={error}\n systemErrorOverride={\n <Alert type=\"error\">{t('dev_command.site_selector.error')}</Alert>\n }\n />\n ) : null}\n </Box>\n <CloseScreen onClose={() => onScreenChange(ScreenState.Home())} />\n </Box>\n );\n};\n","export { CloseScreen } from './CloseScreen.js';\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { fields, match, variant } from 'variant';\nimport type { VariantOf } from 'variant';\nimport { BackendNumericViewer } from './BackendNumericViewer.js';\nimport { BackendArrowViewer } from './BackendArrowViewer.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\nexport const BackendScreenSelector = variant({\n Arrow: fields<{\n backendComponentName: BackendComponentNames;\n }>(),\n Numeric: {},\n});\n\nexport type BackendScreenSelector = VariantOf<typeof BackendScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n initialSelectorType?: BackendScreenSelector;\n}\n\nexport const BackendScreen: FC<Props> = ({\n onClose,\n onSelect,\n initialSelectorType = BackendScreenSelector.Numeric(),\n}) => {\n const [selectorType, setSelectorType] =\n useState<BackendScreenSelector>(initialSelectorType);\n\n return (\n <>\n {match(selectorType, {\n Arrow: ({ backendComponentName }) => (\n <BackendArrowViewer\n backendComponentName={backendComponentName}\n onSelect={onSelect}\n onClose={onClose}\n />\n ),\n Numeric: () => (\n <BackendNumericViewer\n onViewMore={setSelectorType}\n onClose={onClose}\n />\n ),\n })}\n </>\n );\n};\n","import React, { useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, useInput } from '@wix/cli-ui-kit';\nimport { match, lookup } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport {\n NumericOption,\n NumericViewer,\n} from '../NumericViewer/NumericViewer.js';\nimport { BackendScreenSelector } from './BackendScreen.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n DevCenterComponent,\n} from '../../dev-center/components/dev-center-component.js';\n\nconst MAX_BACKEND_COMPONENT = 9;\nconst MAX_SERVICE_PLUGINS = 4;\nconst MAX_EVENTS = 5;\n\ninterface Props {\n onViewMore: (backendScreen: BackendScreenSelector) => void;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose?: () => void;\n}\n\nexport const BackendNumericViewer: FC<Props> = ({\n onViewMore,\n onSelect,\n onClose,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const servicePluginsData = backendComponentsByType.ServicePlugin.slice(\n 0,\n backendComponentsByType.ServicePlugin.length > MAX_SERVICE_PLUGINS\n ? MAX_SERVICE_PLUGINS - 1\n : backendComponentsByType.ServicePlugin.length\n );\n\n const servicePluginsShowMoreIndex =\n backendComponentsByType.ServicePlugin.length > servicePluginsData.length\n ? servicePluginsData.length + 1\n : undefined;\n\n const servicePluginsCount = Math.max(\n servicePluginsData.length,\n servicePluginsShowMoreIndex ?? 0\n );\n\n const maxBackendEvents = Math.min(\n MAX_EVENTS,\n MAX_BACKEND_COMPONENT - servicePluginsCount\n );\n\n const backendEventsData = backendComponentsByType.Event.slice(\n 0,\n backendComponentsByType.Event.length > maxBackendEvents\n ? maxBackendEvents - 1\n : backendComponentsByType.Event.length\n );\n\n const backendEventsShowMoreIndex =\n backendComponentsByType.Event.length > backendEventsData.length\n ? backendEventsData.length + servicePluginsCount + 1\n : undefined;\n\n const visibleItems: Array<\n NumericOption<BackendComponent, BackendComponentNames>\n > = [\n ...servicePluginsData.map(\n (servicePlugin: DevCenterComponent<'ServicePlugin'>) =>\n NumericOption.Item({\n title: servicePlugin.servicePlugin.name,\n value: servicePlugin,\n })\n ),\n ...(servicePluginsShowMoreIndex\n ? [NumericOption.ViewMore('ServicePlugin' as BackendComponentNames)]\n : []),\n ...backendEventsData.map((event: DevCenterComponent<'Event'>) =>\n NumericOption.Item({\n title: event.title,\n value: event,\n })\n ),\n ...(backendEventsShowMoreIndex\n ? [NumericOption.ViewMore('Event' as BackendComponentNames)]\n : []),\n ];\n\n const getLabelKey = (backendComponent: BackendComponent) => {\n return match(\n backendComponent,\n lookup({\n Api: 'general.backend_api_viewer.title',\n Event: 'general.backend_events_viewer.title',\n ServicePlugin: 'general.backend_plugin_viewer.title',\n })\n );\n };\n\n useInput((input) => {\n const inputNumber = Number(input);\n if (inputNumber > 0 && inputNumber <= visibleItems.length) {\n const item = visibleItems.at(inputNumber - 1);\n if (item) {\n match(item, {\n Item: (item) => {\n bi.cliAction({\n question: t(getLabelKey(item.value)),\n questionKey: getLabelKey(item.value),\n action: item.title,\n key: input,\n });\n handleSelect(item.value);\n },\n ViewMore: (viewMore) => {\n bi.cliAction({\n question: t('general.numeric_viewer.show_more'),\n questionKey: 'general.numeric_viewer.show_more',\n action: 'view_more',\n key: input,\n });\n onViewMore(\n BackendScreenSelector.Arrow({\n backendComponentName: viewMore.payload,\n })\n );\n },\n });\n }\n }\n });\n\n const handleSelect = useCallback(\n (backendComponent: BackendComponent) => {\n onSelect?.(backendComponent);\n },\n [onSelect]\n );\n\n const backendPlugins = visibleItems.slice(0, servicePluginsCount);\n const backendEvents = visibleItems.slice(servicePluginsCount);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n {backendPlugins.length > 0 && (\n <NumericViewer\n startIndex={0}\n titleKey=\"general.backend_plugin_viewer.title\"\n items={backendPlugins}\n />\n )}\n {backendEvents.length > 0 && (\n <NumericViewer\n startIndex={servicePluginsCount}\n titleKey=\"general.backend_events_viewer.title\"\n items={backendEvents}\n />\n )}\n {onClose && <CloseScreen onClose={onClose} />}\n </Box>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport type { FC } from 'react';\nimport { Box, SelectInput } from '@wix/cli-ui-kit';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { isType, lookup, match } from 'variant';\nimport { CloseScreen } from '../CloseScreen/CloseScreen.js';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\nimport { useWixCliAppBi } from '../../bi/index.js';\nimport type {\n BackendComponent,\n BackendComponentNames,\n} from '../../dev-center/components/dev-center-component.js';\n\ninterface Props {\n backendComponentName: BackendComponentNames;\n onSelect?: (backendComponent: BackendComponent) => void;\n onClose: () => void;\n}\n\nexport const BackendArrowViewer: FC<Props> = ({\n backendComponentName,\n onClose,\n onSelect,\n}) => {\n const { t } = useTranslation();\n const bi = useWixCliAppBi();\n const { backendComponentsByType } = useBackendComponents();\n\n const getLabelKey = useCallback(\n () =>\n match(\n backendComponentName,\n lookup({\n Api: 'dev_command.backend_apis_screen.select_label',\n Event: 'dev_command.backend_events_screen.select_label',\n ServicePlugin: 'dev_command.backend_plugins_screen.select_label',\n })\n ),\n [backendComponentName]\n );\n\n const getBackendComponentName = (backendComponent: BackendComponent) =>\n isType(backendComponent, 'ServicePlugin')\n ? backendComponent.servicePlugin.name\n : backendComponent.title;\n\n const handleSubmit = useCallback(\n (backendComponent: BackendComponent) => {\n bi.cliAction({\n question: t(getLabelKey()),\n questionKey: getLabelKey(),\n action: getBackendComponentName(backendComponent),\n key: 'enter',\n });\n onSelect?.(backendComponent);\n },\n [bi, getLabelKey, onSelect, t]\n );\n\n const options = useMemo(() => {\n return backendComponentsByType[backendComponentName].map(\n (backendComponent, index) => ({\n key: index.toString(),\n title: getBackendComponentName(backendComponent),\n value: backendComponent,\n })\n );\n }, [backendComponentsByType, backendComponentName]);\n\n return (\n <Box flexDirection=\"column\" gap={1}>\n <Box flexDirection=\"column\">\n <SelectInput<BackendComponent>\n label={t(getLabelKey())}\n options={options}\n onSubmit={({ value: backendComponent }) =>\n handleSubmit(backendComponent)\n }\n />\n </Box>\n <CloseScreen onClose={onClose} />\n </Box>\n );\n};\n","import React, { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { ConfirmInput, Text, useAsync, useExit } from '@wix/cli-ui-kit';\nimport { Trans, useTranslation } from '@wix/cli-i18n';\nimport { readUserConfig, updateUserConfig } from '@wix/cli-user-config';\nimport { match } from 'variant';\nimport { useBackendComponents } from '../../backend/useBackendComponents.js';\n\ninterface Props {\n children: ReactNode;\n}\n\nexport const TunnelingConsent: FC<Props> = ({ children }) => {\n const exit = useExit();\n const { t } = useTranslation();\n const { backendComponents } = useBackendComponents();\n const [approved, setApproved] = useState<boolean>();\n\n const { status } = useAsync(async () => {\n const config = await readUserConfig();\n\n if (config.tunneling) {\n setApproved(true);\n }\n\n return config;\n }, []);\n\n if (backendComponents.length === 0 || approved) {\n return children;\n }\n\n return (\n <>\n {match(status, {\n Success: () => (\n <ConfirmInput\n label={t('dev_command.tunneling.confirm')}\n initialValue={true}\n onSubmit={async (approved) => {\n setApproved(approved);\n await updateUserConfig({ tunneling: approved });\n if (!approved) {\n exit();\n }\n }}\n />\n ),\n Error: () => null,\n Loading: () => null,\n })}\n {approved === false && (\n <Text skin=\"error\">\n <Trans i18nKey=\"dev_command.tunneling.abort_dev\" />\n </Text>\n )}\n </>\n );\n};\n","import { join } from 'node:path';\nimport { getDataDirPath } from '@wix/cli-data-dir';\nimport { pathExists, readJson, writeJson } from '@wix/cli-fs';\nimport {\n userConfigSchema,\n USER_CONFIG_FILENAME,\n} from '@wix/cli-core-definitions';\nimport type { UserConfig } from '@wix/cli-core-definitions';\n\nfunction getUserConfigPath() {\n return join(getDataDirPath(), USER_CONFIG_FILENAME);\n}\n\nexport async function readUserConfig() {\n const configPath = getUserConfigPath();\n const isConfigExist = await pathExists(configPath);\n const json = isConfigExist ? await readJson(configPath) : {};\n return userConfigSchema.parse(json);\n}\n\nexport async function updateUserConfig(config: Partial<UserConfig>) {\n const currentConfig = await readUserConfig();\n const newConfig = {\n ...currentConfig,\n ...config,\n };\n\n const configPath = getUserConfigPath();\n await writeJson(configPath, newConfig);\n}\n","import { setTimeout } from 'node:timers/promises';\nimport React, { useCallback, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { match, isType } from 'variant';\nimport { openBrowser } from '@wix/user-browser';\nimport { useTranslation, Trans } from '@wix/cli-i18n';\nimport { ComponentType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport {\n useAsync,\n Spinner,\n useAsyncCallback,\n useInput,\n Text,\n Key,\n Alert,\n} from '@wix/cli-ui-kit';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { getTestOverrides } from '@wix/cli-test-overrides';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useARMClient } from '@wix/arm-client';\nimport { useErrorReporter } from '@wix/cli-error-reporting';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport type { CustomElement } from '@wix/cli-app-manifest';\nimport { useProjectModel } from '../../model.js';\nimport { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport { createCustomElementConfig } from '../../app-manifest/create.js';\nimport { redirectWithCSMv2FTs } from '../extensions/utils.js';\nimport { useSite } from '../../site/useSite.js';\nimport { useArmTag } from '../../context/armTag.js';\n\n// You can find dummy-custom-element codebase at https://github.com/wix-private/wix-cli-internal/tree/9b2a26e76375313eabb735df459944f67d7002d7/packages/wix-cli-dummy-custom-element\nconst DUMMY_CUSTOM_ELEMENT_TAG_NAME = 'wix-cli-dummy-custom-element';\nconst DUMMY_CUSTOM_ELEMENT_URL =\n 'https://www.unpkg.com/@wix/cli-dummy-custom-element';\n\nconst AppUpdater: FC<{\n children: ReactNode;\n newCustomElements: Array<DevCenterComponent<'CustomElement'>>;\n}> = ({ children, newCustomElements }) => {\n const { model } = useProjectModel();\n const { reportError } = useErrorReporter();\n const { createComponents } = useARMClient();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const { site } = useSite();\n const { armTag } = useArmTag();\n\n const [isAppReinstalled, setAppReinstalledFlag] = useState(false);\n\n const prepareNewElements = useAsyncCallback(\n async () => {\n const componentConfigs = newCustomElements.map<CustomElement>(\n (customElement) => {\n const scriptUrl = DUMMY_CUSTOM_ELEMENT_URL;\n const config = createCustomElementConfig(customElement, scriptUrl);\n\n return {\n ...config,\n compData: {\n customElementWidget: {\n ...config.compData.customElementWidget,\n widgetData: {\n ...config.compData.customElementWidget.widgetData,\n tagName: DUMMY_CUSTOM_ELEMENT_TAG_NAME,\n },\n },\n },\n };\n }\n );\n\n await createComponents(\n model.config.appId,\n componentConfigs,\n model.config.projectId\n );\n const { customElementsCreationDelay } = getTestOverrides();\n const [{ data: signedAppMarketParams }] = await Promise.all([\n httpClient\n .post<string>(\n '/_serverless/app-market-json-web-token/json-web-token',\n {\n data: {\n data: JSON.stringify({\n appDefId: model.config.appId,\n version: 'latest',\n }),\n },\n }\n )\n .catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),\n cause: e,\n });\n }),\n setTimeout(customElementsCreationDelay ?? 5000),\n ]);\n const url = new URL(`https://wix.com/editor/${site.id}`);\n url.searchParams.append('openPanel', 'appMarket');\n url.searchParams.append('preferAppManager', 'true');\n url.searchParams.append('appMarketParams', signedAppMarketParams);\n url.searchParams.append('apps-override', armTag);\n\n await openBrowser(\n redirectWithCSMv2FTs(url, PlatformType.Editor()).toString()\n );\n },\n {\n onError: (error) => {\n reportError(error);\n },\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n void prepareNewElements.execute();\n }\n },\n [prepareNewElements]\n ),\n {\n isActive: isType(prepareNewElements.status, 'NotRequested'),\n }\n );\n\n useInput(\n useCallback(\n (input, key) => {\n if (key.return) {\n setAppReinstalledFlag(true);\n }\n },\n [setAppReinstalledFlag]\n ),\n {\n isActive:\n !isAppReinstalled &&\n (isType(prepareNewElements.status, 'Success') ||\n isType(prepareNewElements.status, 'Error')),\n }\n );\n\n if (isAppReinstalled) {\n return children;\n }\n\n return match(prepareNewElements.status, {\n Loading: () => <Spinner />,\n Success: () => {\n return (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.confirm_reinstall\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n );\n },\n Error: () => (\n <Alert type=\"error\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.reinstall_error\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n NotRequested: () => (\n <Alert type=\"warning\">\n <Text>\n <Trans\n i18nKey=\"dev_command.new_custom_element.warning\"\n components={[<Key value=\"enter\" />]}\n />\n </Text>\n </Alert>\n ),\n });\n};\n\nexport const CustomElementsMigration: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { getAppByVersion } = useDevCenterClient();\n const { model } = useProjectModel();\n const { t } = useTranslation();\n\n const customElementsCheck = useAsync(async () => {\n const localCustomElements = model.components.filter((component) =>\n isType(component, DevCenterComponent.CustomElement)\n );\n\n if (!localCustomElements.length) {\n return [];\n }\n\n const {\n data: { components },\n } = await getAppByVersion({\n appId: model.config.appId,\n });\n\n const existingCustomElements = components.filter(\n (component) => component.compType === ComponentType.CUSTOM_ELEMENT_WIDGET\n );\n\n const newCustomElements = localCustomElements.filter(\n (localCustomElement) =>\n !existingCustomElements.some(\n (customElement) => customElement.compId === localCustomElement.id\n )\n );\n\n return newCustomElements;\n }, []);\n\n return match(customElementsCheck.status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('dev_command.custom_elements_migration.loading')} />\n ),\n Success: ({ result: newCustomElements }) =>\n newCustomElements.length ? (\n <AppUpdater newCustomElements={newCustomElements}>\n {children}\n </AppUpdater>\n ) : (\n children\n ),\n });\n};\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { useAsync, Spinner, Alert } from '@wix/cli-ui-kit';\nimport { match } from 'variant';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useMetasiteManagerClient } from '@wix/metasite-manager-client';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { useProjectModel } from '../../model.js';\nimport { useSite } from '../../site/useSite.js';\nimport { useDevEnvironment } from './DevEnvironment.js';\n\nexport const RequiredAppsWarning: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { logger } = useDevEnvironment();\n const { site } = useSite();\n const { model } = useProjectModel();\n const { getRequiredApps } = useDevCenterClient();\n const { getSiteInstalledApps } = useMetasiteManagerClient();\n const { t } = useTranslation();\n\n const { status: requiredAppsStatus } = useAsync(async () => {\n const requiredApps = await getRequiredApps(model.config.appId);\n\n if (requiredApps.length === 0) {\n return;\n }\n\n const siteInstalledApps = await getSiteInstalledApps(site.id);\n\n const missingRequiredApps = requiredApps.filter(\n (requiredApp) => !siteInstalledApps.includes(requiredApp.id)\n );\n\n if (missingRequiredApps.length === 0) {\n return;\n }\n\n logger.warn(\n <Alert type=\"warning\">\n {t('dev_command.required_apps.warning', {\n requiredAppNames: missingRequiredApps\n .map((app) => app.name)\n .join(', '),\n })}\n </Alert>\n );\n }, []);\n\n return match(requiredAppsStatus, {\n Loading: () => <Spinner text={t('dev_command.required_apps.loading')} />,\n Error: () => null,\n Success: () => children,\n });\n};\n","import React from 'react';\nimport { Box } from '@wix/cli-ui-kit';\nimport type { FC, ReactNode } from 'react';\n\nexport const DevScreenBorder: FC<{ children: ReactNode }> = ({ children }) => {\n return (\n <Box\n flexDirection=\"column\"\n borderTop\n borderLeft={false}\n borderBottom={false}\n borderRight={false}\n borderStyle=\"round\"\n borderColor=\"blueBright\"\n >\n {children}\n </Box>\n );\n};\n"],"mappings":"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","names":["import_react","import_react","import_variant","import_react","import_variant","React","import_react","import_variant","import_react","React","import_react","import_variant","import_react","import_variant","dashboardExtension","React","React","import_react","import_variant","React","item","React","React","import_react","error","site","React","import_react","import_variant","import_react","import_variant","item","React","import_react","import_variant","React","React","React","import_react","import_variant","React","approved","import_react","import_variant","React","import_react","import_variant","React","import_react","React","React"]}