@wix/cli-app 1.1.60 → 1.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{CreateVersionCommand-Z6F5IKH5.js → CreateVersionCommand-IEF6U34E.js} +15 -15
- package/build/{DevCommand-YFEZ4QV5.js → DevCommand-SOODXUEP.js} +438 -299
- package/build/DevCommand-SOODXUEP.js.map +1 -0
- package/build/{GenerateCommand-KCV4YDNN.js → GenerateCommand-ARNW73TM.js} +108 -43
- package/build/{GenerateCommand-KCV4YDNN.js.map → GenerateCommand-ARNW73TM.js.map} +1 -1
- package/build/{LogsCommand-VBMGVYNU.js → LogsCommand-7TW36YZX.js} +5 -5
- package/build/PreviewCommand-ZZKRP2GF.js +23 -0
- package/build/{ReleaseCommand-5F3FPBXT.js → ReleaseCommand-SB2WWSVP.js} +15 -15
- package/build/{ServeCommand-G4FF4PT3.js → ServeCommand-GZKF6AN3.js} +14 -14
- package/build/{build-XZI3USNB.js → build-LHCSCFBM.js} +38 -9
- package/build/build-LHCSCFBM.js.map +1 -0
- package/build/{chunk-QVGYU6D4.js → chunk-2DRVDGHR.js} +5 -5
- package/build/chunk-2DRVDGHR.js.map +1 -0
- package/build/{chunk-USAOCISL.js → chunk-4WKSS3PU.js} +4 -4
- package/build/{chunk-CNZ3Q5PF.js → chunk-5R5H3Y2D.js} +105 -161
- package/build/chunk-5R5H3Y2D.js.map +1 -0
- package/build/chunk-6IX6CDWB.js +27644 -0
- package/build/chunk-6IX6CDWB.js.map +1 -0
- package/build/{chunk-VZJZSWRE.js → chunk-6US7335E.js} +3 -3
- package/build/{chunk-WRWNJYKZ.js → chunk-A3FHJ4EK.js} +3 -3
- package/build/{chunk-PKSGXFYA.js → chunk-HKX5ODUN.js} +3 -3
- package/build/{chunk-HUWYF2ET.js → chunk-KCNEUOW2.js} +8 -8
- package/build/{chunk-O42QDBJU.js → chunk-KJR4P55M.js} +3 -3
- package/build/{chunk-5QZS3HT7.js → chunk-KVM6MGID.js} +3 -3
- package/build/{chunk-VXE3IWKR.js → chunk-LMFNRK6X.js} +2 -2
- package/build/{chunk-DGTJGIY2.js → chunk-LULKQBSP.js} +5125 -2917
- package/build/chunk-LULKQBSP.js.map +1 -0
- package/build/{chunk-IG6IV6VM.js → chunk-MTEB33GR.js} +3 -3
- package/build/{chunk-36W5H7IG.js → chunk-PM4M3SGC.js} +195 -177
- package/build/chunk-PM4M3SGC.js.map +1 -0
- package/build/{chunk-4VTDNX5T.js → chunk-UE7LDQKD.js} +2 -2
- package/build/{chunk-2PTCXTKF.js → chunk-UZXKDHQZ.js} +5 -5
- package/build/{chunk-WRPV7SLY.js → chunk-V75TFIXI.js} +193 -20
- package/build/chunk-V75TFIXI.js.map +1 -0
- package/build/{chunk-7CGRTCDC.js → chunk-YW2RBPPY.js} +3 -3
- package/build/{chunk-QZOQAFHK.js → chunk-ZR3N5INU.js} +8 -8
- package/build/chunk-ZR3N5INU.js.map +1 -0
- package/build/cloudflare-runtime/entry.js +7157 -52
- package/build/cloudflare-runtime/getRegisteredExtensions.js +7095 -15
- package/build/index.js +20 -20
- package/build/platform-sdk/chunk-3U6QUCP3.js +2 -0
- package/build/platform-sdk/chunk-3U6QUCP3.js.map +1 -0
- package/build/platform-sdk/{chunk-QV4VBCJB.js → chunk-FLUCZ5U6.js} +2 -2
- package/build/platform-sdk/chunk-VXQAZIAE.js +2 -0
- package/build/platform-sdk/{chunk-EERHWVVD.js.map → chunk-VXQAZIAE.js.map} +1 -1
- package/build/platform-sdk/chunk-ZM5O3GFB.js +2 -0
- package/build/platform-sdk/chunk-ZM5O3GFB.js.map +1 -0
- package/build/platform-sdk/dashboard.js +1 -1
- package/build/platform-sdk/dashboard.js.map +1 -1
- package/build/platform-sdk/editor.js +2 -2
- package/build/platform-sdk/editor.js.map +1 -1
- package/build/platform-sdk/sdk-context.js +1 -1
- package/build/platform-sdk/sdk-context.js.map +1 -1
- package/build/platform-sdk/site.js +1 -1
- package/build/platform-sdk/site.js.map +1 -1
- package/build/platform-sdk/web-methods.js +1 -1
- package/build/platform-sdk/web-methods.js.map +1 -1
- package/build/{preview-VAHHFTRZ.js → preview-ZAKEXAJH.js} +13 -13
- package/build/{render-command-3AYSQXHN.js → render-command-XMQH723O.js} +6 -6
- package/package.json +8 -6
- package/schemas/custom-element.json +1 -1
- package/templates/custom-element/files/element.module.css.ejs +18 -5
- package/templates/custom-element/files/element.tsx.ejs +8 -5
- package/templates/custom-element/files/panel.tsx.ejs +25 -12
- package/templates/web-method/dependencies.json +5 -0
- package/templates/web-method/files/placeholder.ts.ejs +9 -2
- package/build/DevCommand-YFEZ4QV5.js.map +0 -1
- package/build/PreviewCommand-3OMHWDW6.js +0 -23
- package/build/build-XZI3USNB.js.map +0 -1
- package/build/chunk-36W5H7IG.js.map +0 -1
- package/build/chunk-CNZ3Q5PF.js.map +0 -1
- package/build/chunk-DGTJGIY2.js.map +0 -1
- package/build/chunk-FTC5AK3Y.js +0 -1367
- package/build/chunk-FTC5AK3Y.js.map +0 -1
- package/build/chunk-QVGYU6D4.js.map +0 -1
- package/build/chunk-QZOQAFHK.js.map +0 -1
- package/build/chunk-WRPV7SLY.js.map +0 -1
- package/build/platform-sdk/chunk-42XIZ4MH.js +0 -2
- package/build/platform-sdk/chunk-42XIZ4MH.js.map +0 -1
- package/build/platform-sdk/chunk-7EYXEF6M.js +0 -2
- package/build/platform-sdk/chunk-7EYXEF6M.js.map +0 -1
- package/build/platform-sdk/chunk-EERHWVVD.js +0 -2
- /package/build/{CreateVersionCommand-Z6F5IKH5.js.map → CreateVersionCommand-IEF6U34E.js.map} +0 -0
- /package/build/{LogsCommand-VBMGVYNU.js.map → LogsCommand-7TW36YZX.js.map} +0 -0
- /package/build/{PreviewCommand-3OMHWDW6.js.map → PreviewCommand-ZZKRP2GF.js.map} +0 -0
- /package/build/{ReleaseCommand-5F3FPBXT.js.map → ReleaseCommand-SB2WWSVP.js.map} +0 -0
- /package/build/{ServeCommand-G4FF4PT3.js.map → ServeCommand-GZKF6AN3.js.map} +0 -0
- /package/build/{chunk-USAOCISL.js.map → chunk-4WKSS3PU.js.map} +0 -0
- /package/build/{chunk-VZJZSWRE.js.map → chunk-6US7335E.js.map} +0 -0
- /package/build/{chunk-WRWNJYKZ.js.map → chunk-A3FHJ4EK.js.map} +0 -0
- /package/build/{chunk-PKSGXFYA.js.map → chunk-HKX5ODUN.js.map} +0 -0
- /package/build/{chunk-HUWYF2ET.js.map → chunk-KCNEUOW2.js.map} +0 -0
- /package/build/{chunk-O42QDBJU.js.map → chunk-KJR4P55M.js.map} +0 -0
- /package/build/{chunk-5QZS3HT7.js.map → chunk-KVM6MGID.js.map} +0 -0
- /package/build/{chunk-VXE3IWKR.js.map → chunk-LMFNRK6X.js.map} +0 -0
- /package/build/{chunk-IG6IV6VM.js.map → chunk-MTEB33GR.js.map} +0 -0
- /package/build/{chunk-4VTDNX5T.js.map → chunk-UE7LDQKD.js.map} +0 -0
- /package/build/{chunk-2PTCXTKF.js.map → chunk-UZXKDHQZ.js.map} +0 -0
- /package/build/{chunk-7CGRTCDC.js.map → chunk-YW2RBPPY.js.map} +0 -0
- /package/build/platform-sdk/{chunk-QV4VBCJB.js.map → chunk-FLUCZ5U6.js.map} +0 -0
- /package/build/{preview-VAHHFTRZ.js.map → preview-ZAKEXAJH.js.map} +0 -0
- /package/build/{render-command-3AYSQXHN.js.map → render-command-XMQH723O.js.map} +0 -0
|
@@ -0,0 +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/EditorInstallation.tsx","../src/components/DevCommand/CustomElementsMigration.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/RequiredAppsWarning.tsx","../../metasite-manager-client/src/index.ts","../../metasite-manager-client/src/useMetasiteManagerClient.ts","../../metasite-manager-client/src/metasite-manager-client.ts","../../metasite-manager-client/src/schemas.ts","../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';\nimport { EditorInstallation } from './EditorInstallation.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 <EditorInstallation>\n <RequiredAppsWarning>\n <DevScreenBorder>\n <DevCommandScreens />\n </DevScreenBorder>\n </RequiredAppsWarning>\n </EditorInstallation>\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';\nimport { useEditorInstallation } from '../DevCommand/EditorInstallation.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 { openEditor } = useEditorInstallation();\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\n await openEditor();\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, { useCallback, useState, createContext, useContext } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport pWaitFor, { TimeoutError } from 'p-wait-for';\nimport { Spinner, useAsync, useAsyncCallback } 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 { useErrorReporter } from '@wix/cli-error-reporting';\nimport { CliError, CliErrorCode } from '@wix/cli-error';\nimport { PlatformType } from '@wix/cli-app-definitions';\nimport { SiteAuthProvider } from '@wix/cli-auth';\nimport { useTranslation } from '@wix/cli-i18n';\nimport type { VariantOf } from 'variant';\nimport { fields, isType, match, partial, variant } from 'variant';\nimport { useProjectModel } from '../../model.js';\nimport {\n redirectWithCSMv2FTs,\n useOpenPage,\n useResolvePlatformDevUrl,\n} from '../extensions/utils.js';\nimport { useSite } from '../../site/useSite.js';\nimport { useArmTag } from '../../context/armTag.js';\nimport { usePlatform } from '../Platform/usePlatform.js';\nimport { useCustomElementsMigration } from './CustomElementsMigration.js';\n\nfunction isAbortError(error: unknown) {\n return (\n error &&\n typeof error === 'object' &&\n 'name' in error &&\n error.name === 'AbortError'\n );\n}\n\ninterface EditorInstallationState {\n openEditor: () => Promise<void>;\n}\n\nconst EditorInstallationContext = createContext<EditorInstallationState | null>(\n null\n);\n\nexport function useEditorInstallation(): EditorInstallationState {\n const context = useContext(EditorInstallationContext);\n if (context == null) {\n throw new Error(\n 'useEditorInstallation() cannot be used without an <EditorInstallationProvider>'\n );\n }\n return context;\n}\n\nconst EditorInstallationStatus = variant({\n CheckInstallation: {},\n NotInstalled: fields<{\n installationUrl: string;\n checkInstalledState: CheckAppInstalledState;\n }>(),\n WaitForInstallation: fields<{ installationUrl: string }>(),\n Installed: {},\n});\n\ntype EditorInstallationStatus = VariantOf<typeof EditorInstallationStatus>;\n\ntype CheckAppInstalledState = (wait?: boolean) => Promise<boolean>;\n\nconst CheckEditorInstallation: FC<{\n onReady: (cb: CheckAppInstalledState) => void;\n}> = ({ onReady }) => {\n const { model } = useProjectModel();\n const { isAppInstalledInEditor } = useDevCenterClient();\n const { reportError } = useErrorReporter();\n\n const checkAppInstalledState = useAsyncCallback(\n async ({ signal }, shouldWait = false): Promise<boolean> => {\n const { appId } = model.config;\n const { pollInterval } = getTestOverrides();\n\n try {\n if (shouldWait) {\n await pWaitFor(() => isAppInstalledInEditor(appId), {\n // Polling interval is set to 6.5 seconds to avoid rate limiting (429)\n interval: pollInterval ?? 6500,\n timeout: {\n milliseconds: 60 * 1000 * 2,\n signal,\n },\n });\n\n return true;\n }\n\n return await isAppInstalledInEditor(appId);\n } catch (error) {\n if (!isAbortError(error) && !(error instanceof TimeoutError)) {\n reportError(\n new CliError({\n cause: error,\n code: CliErrorCode.WaitForEditorInstallationStateFailure(),\n })\n );\n }\n\n return false;\n }\n }\n );\n\n useAsync(async () => {\n onReady(checkAppInstalledState.execute);\n }, []);\n\n return null;\n};\n\nexport const EditorInstallation: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { t } = useTranslation();\n const { model } = useProjectModel();\n const httpClient = useHttpClient({ type: 'backoffice' });\n const { isPlatformExists } = usePlatform();\n const { site } = useSite();\n const { armTag } = useArmTag();\n const openPage = useOpenPage();\n const { addedSitePresence } = useCustomElementsMigration();\n const resolvePlatformUrl = useResolvePlatformDevUrl();\n const [editorInstallationStatus, setEditorInstallationStatus] =\n useState<EditorInstallationStatus>(\n EditorInstallationStatus.CheckInstallation()\n );\n\n const openEditor = useCallback(async () => {\n const platformType = PlatformType.Editor();\n\n const installationUrl = match(\n editorInstallationStatus,\n partial({\n NotInstalled: ({ installationUrl }) => installationUrl,\n WaitForInstallation: ({ installationUrl }) => installationUrl,\n default: () => resolvePlatformUrl(platformType),\n })\n );\n\n await openPage({ title: platformType.type, url: installationUrl });\n\n if (isType(editorInstallationStatus, 'NotInstalled')) {\n setEditorInstallationStatus(\n EditorInstallationStatus.WaitForInstallation({ installationUrl })\n );\n const isInstalled =\n await editorInstallationStatus.checkInstalledState(true);\n\n if (isInstalled) {\n setEditorInstallationStatus(EditorInstallationStatus.Installed());\n } else {\n setEditorInstallationStatus(editorInstallationStatus);\n }\n }\n }, [openPage, resolvePlatformUrl, editorInstallationStatus]);\n\n const buildInstallationUrl = useCallback(async () => {\n const { data: signedAppMarketParams } = await httpClient\n .post<string>('/_serverless/app-market-json-web-token/json-web-token', {\n data: {\n data: JSON.stringify({\n appDefId: model.config.appId,\n version: 'latest',\n }),\n },\n })\n .catch((e: unknown) => {\n throw new CliError({\n code: CliErrorCode.FailedToGenerateAppMarketQueryParam(),\n cause: e,\n });\n });\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 return redirectWithCSMv2FTs(url, PlatformType.Editor()).toString();\n }, [httpClient, model.config.appId, site.id, armTag]);\n\n const { status, execute } = useAsyncCallback(\n async (_, checkInstalledState: CheckAppInstalledState) => {\n if (isPlatformExists(PlatformType.Editor())) {\n const isInstalled = addedSitePresence\n ? false\n : await checkInstalledState();\n\n if (!isInstalled) {\n const installationUrl = await buildInstallationUrl();\n\n return setEditorInstallationStatus(\n EditorInstallationStatus.NotInstalled({\n installationUrl,\n checkInstalledState,\n })\n );\n }\n }\n\n return setEditorInstallationStatus(EditorInstallationStatus.Installed());\n }\n );\n\n return (\n <EditorInstallationContext.Provider value={{ openEditor }}>\n {!isType(editorInstallationStatus, 'Installed') && (\n <SiteAuthProvider siteId={site.id}>\n <CheckEditorInstallation onReady={execute} />\n </SiteAuthProvider>\n )}\n {match(status, {\n NotRequested: () => null,\n Loading: () => <Spinner text={t('general.loading')} />,\n Error: () => null,\n Success: () => children,\n })}\n </EditorInstallationContext.Provider>\n );\n};\n","import React, { createContext, useCallback, useContext } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { match, isType } from 'variant';\nimport { useTranslation } from '@wix/cli-i18n';\nimport { ComponentType } from '@wix/ambassador-devcenter-components-v1-component/types';\nimport { useAsync, Spinner } from '@wix/cli-ui-kit';\nimport { useDevCenterClient } from '@wix/dev-center-client';\nimport { useARMClient } from '@wix/arm-client';\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';\n\ninterface CustomElementsMigrationState {\n addedSitePresence: boolean;\n}\n\nconst CustomElementsMigrationContext =\n createContext<CustomElementsMigrationState | null>(null);\n\nexport function useCustomElementsMigration(): CustomElementsMigrationState {\n const context = useContext(CustomElementsMigrationContext);\n if (context == null) {\n throw new Error(\n 'useCustomElementsMigration() cannot be used without an <CustomElementsMigrationContext.Provider>'\n );\n }\n return context;\n}\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\nexport const CustomElementsMigration: FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const { getAppByVersion } = useDevCenterClient();\n const { model } = useProjectModel();\n const { t } = useTranslation();\n const { createComponents } = useARMClient();\n\n const prepareNewElements = useCallback(\n async (newCustomElements: Array<DevCenterComponent<'CustomElement'>>) => {\n const componentConfigs = newCustomElements.map<CustomElement>(\n (customElement) => {\n const config = createCustomElementConfig(\n customElement,\n DUMMY_CUSTOM_ELEMENT_URL\n );\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 },\n [model.config.appId, model.config.projectId, createComponents]\n );\n\n const customElementsMigration = useAsync(async () => {\n const localCustomElements = model.components.filter((component) =>\n isType(component, DevCenterComponent.CustomElement)\n );\n\n if (!localCustomElements.length) {\n return false;\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 if (newCustomElements.length) {\n await prepareNewElements(newCustomElements);\n return true;\n }\n\n return false;\n }, [model.components]);\n\n return match(customElementsMigration.status, {\n Error: () => null,\n Loading: () => (\n <Spinner text={t('dev_command.custom_elements_migration.loading')} />\n ),\n Success: ({ result: addedSitePresence }) => (\n <CustomElementsMigrationContext.Provider\n value={{\n addedSitePresence,\n }}\n >\n {children}\n </CustomElementsMigrationContext.Provider>\n ),\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 BackendViewerComponent,\n BackendViewerComponentNames,\n} from './backend-viewer.js';\n\nexport const BackendScreenSelector = variant({\n Arrow: fields<{\n backendComponentName: BackendViewerComponentNames;\n }>(),\n Numeric: {},\n});\n\nexport type BackendScreenSelector = VariantOf<typeof BackendScreenSelector>;\n\ninterface Props {\n onClose: () => void;\n onSelect?: (backendComponent: BackendViewerComponent) => 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 { DevCenterComponent } from '../../dev-center/components/dev-center-component.js';\nimport type {\n BackendViewerComponent,\n BackendViewerComponentNames,\n} from './backend-viewer.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: BackendViewerComponent) => 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<BackendViewerComponent, BackendViewerComponentNames>\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 BackendViewerComponentNames)]\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 BackendViewerComponentNames)]\n : []),\n ];\n\n const getLabelKey = (backendComponent: BackendViewerComponent) => {\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: BackendViewerComponent) => {\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 BackendViewerComponent,\n BackendViewerComponentNames,\n} from './backend-viewer.js';\n\ninterface Props {\n backendComponentName: BackendViewerComponentNames;\n onSelect?: (backendComponent: BackendViewerComponent) => 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: BackendViewerComponent) =>\n isType(backendComponent, 'ServicePlugin')\n ? backendComponent.servicePlugin.name\n : backendComponent.title;\n\n const handleSubmit = useCallback(\n (backendComponent: BackendViewerComponent) => {\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<BackendViewerComponent>\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 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","export { useMetasiteManagerClient } from './useMetasiteManagerClient.js';\n","import { useMemo } from 'react';\nimport { useHttpClient } from '@wix/cli-http-client-react';\nimport { MetasiteManagerClient } from './metasite-manager-client.js';\n\nexport function useMetasiteManagerClient(): MetasiteManagerClient {\n const httpClient = useHttpClient({ type: 'general' });\n return useMemo(() => new MetasiteManagerClient(httpClient), [httpClient]);\n}\n","import { CliError, CliErrorCode } from '@wix/cli-error';\nimport type { HttpClient } from '@wix/cli-http-client';\nimport { clientSpecMapSchema } from './schemas.js';\n\nexport class MetasiteManagerClient {\n constructor(private readonly httpClient: HttpClient) {}\n\n private getClientSpecMap = async (metaSiteId: string) => {\n try {\n const { data } = await this.httpClient.request({\n url: `/_api/msm/v1/meta-site/editor-client-spec-map/${metaSiteId}`,\n });\n\n return clientSpecMapSchema.parse(data);\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToGetClientSpecMap(),\n cause: e,\n });\n }\n };\n\n public getSiteInstalledApps = async (metaSiteId: string) => {\n try {\n const clientSpecMap = await this.getClientSpecMap(metaSiteId);\n\n return Object.values(clientSpecMap)\n .filter((spec) => spec.appDefinitionId && !spec.permissions?.revoked)\n .map((spec) => spec.appDefinitionId!);\n } catch (e) {\n throw new CliError({\n code: CliErrorCode.FailedToGetSiteInstalledApps(),\n cause: e,\n });\n }\n };\n}\n","import { z } from 'zod';\n\nexport const clientSpecMapSchema = z.record(\n z.object({\n appDefinitionId: z.string().optional(),\n permissions: z.object({ revoked: z.boolean() }).optional(),\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","import_react","import_react","import_variant","import_variant","React","installationUrl","React","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","import_react","React","import_react","React","React"]}
|
|
@@ -2,20 +2,20 @@ import { createRequire as _createRequire } from 'node:module';
|
|
|
2
2
|
const require = _createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
createI18nT
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-KJR4P55M.js";
|
|
6
|
+
import "./chunk-2DRVDGHR.js";
|
|
7
7
|
import {
|
|
8
8
|
useWixCliAppBi
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HKX5ODUN.js";
|
|
10
10
|
import {
|
|
11
11
|
useBackendComponents
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-A3FHJ4EK.js";
|
|
13
13
|
import {
|
|
14
14
|
execaCommand
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZR3N5INU.js";
|
|
16
16
|
import {
|
|
17
17
|
require_baseUniq
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LMFNRK6X.js";
|
|
19
19
|
import {
|
|
20
20
|
ComponentType,
|
|
21
21
|
DASHBOARD_MENU_PLUGINS_DIR,
|
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
uuidValidation,
|
|
68
68
|
writeJson,
|
|
69
69
|
writePackageJson
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-LULKQBSP.js";
|
|
71
71
|
import {
|
|
72
72
|
AsyncCallbackStatus,
|
|
73
73
|
Box_default,
|
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
ConfirmInput,
|
|
77
77
|
ErrorDetails,
|
|
78
78
|
InputLabel,
|
|
79
|
+
Learn,
|
|
79
80
|
Link,
|
|
80
81
|
SelectGroupsInput,
|
|
81
82
|
SelectInput,
|
|
@@ -91,7 +92,7 @@ import {
|
|
|
91
92
|
useAsyncCallback,
|
|
92
93
|
useTranslation,
|
|
93
94
|
z
|
|
94
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-PM4M3SGC.js";
|
|
95
96
|
import {
|
|
96
97
|
__commonJS,
|
|
97
98
|
__dirname,
|
|
@@ -9483,17 +9484,13 @@ var DASHBOARD_PAGE_TEMPLATE = path3.resolve(
|
|
|
9483
9484
|
);
|
|
9484
9485
|
async function generateDashboardPage(projectFolder, route, title, categoryId) {
|
|
9485
9486
|
const cwd = path3.join(getDashboardPagesDir(projectFolder), route);
|
|
9486
|
-
const
|
|
9487
|
+
const sidebarConfig = categoryId ? { categoryId } : void 0;
|
|
9488
|
+
const pageConfig = {
|
|
9487
9489
|
$schema: "https://dev.wix.com/wix-cli/schemas/dashboard-page.json",
|
|
9488
9490
|
id: randomUUID(),
|
|
9489
|
-
title
|
|
9491
|
+
title,
|
|
9492
|
+
sidebar: sidebarConfig
|
|
9490
9493
|
};
|
|
9491
|
-
const pageConfig = categoryId ? {
|
|
9492
|
-
...basePageConfig,
|
|
9493
|
-
sidebar: {
|
|
9494
|
-
categoryId
|
|
9495
|
-
}
|
|
9496
|
-
} : basePageConfig;
|
|
9497
9494
|
const pageConfigJSON = toJsonString(pageConfig, { spaces: 2 });
|
|
9498
9495
|
const relativeRoutePath = path3.join(DASHBOARD_PAGES_DIR, route, "page.tsx");
|
|
9499
9496
|
return await componentGenerator({
|
|
@@ -10005,7 +10002,7 @@ var GenerateDashboardPage = () => {
|
|
|
10005
10002
|
{
|
|
10006
10003
|
i18nKey: "generate_command.generation.learn_more",
|
|
10007
10004
|
values: { extensionType },
|
|
10008
|
-
components: [/* @__PURE__ */ import_react3.default.createElement(Link, { url: "https://wix.to/7W3nYUg" })]
|
|
10005
|
+
components: [/* @__PURE__ */ import_react3.default.createElement(Learn, null), /* @__PURE__ */ import_react3.default.createElement(Link, { url: "https://wix.to/7W3nYUg" })]
|
|
10009
10006
|
}
|
|
10010
10007
|
)));
|
|
10011
10008
|
};
|
|
@@ -10226,7 +10223,7 @@ var GenerateEmbeddedScript = () => {
|
|
|
10226
10223
|
{
|
|
10227
10224
|
i18nKey: "generate_command.generation.learn_more",
|
|
10228
10225
|
values: { extensionType },
|
|
10229
|
-
components: [/* @__PURE__ */ import_react4.default.createElement(Link, { url: "https://wix.to/CDGhNZG" })]
|
|
10226
|
+
components: [/* @__PURE__ */ import_react4.default.createElement(Learn, null), /* @__PURE__ */ import_react4.default.createElement(Link, { url: "https://wix.to/CDGhNZG" })]
|
|
10230
10227
|
}
|
|
10231
10228
|
)));
|
|
10232
10229
|
};
|
|
@@ -10321,7 +10318,7 @@ var GenerateSidebarCategory = () => {
|
|
|
10321
10318
|
{
|
|
10322
10319
|
i18nKey: "generate_command.generation.learn_more",
|
|
10323
10320
|
values: { extensionType },
|
|
10324
|
-
components: [/* @__PURE__ */ import_react5.default.createElement(Link, { url: "https://wix.to/7W3nYUg" })]
|
|
10321
|
+
components: [/* @__PURE__ */ import_react5.default.createElement(Learn, null), /* @__PURE__ */ import_react5.default.createElement(Link, { url: "https://wix.to/7W3nYUg" })]
|
|
10325
10322
|
}
|
|
10326
10323
|
)));
|
|
10327
10324
|
};
|
|
@@ -10340,23 +10337,29 @@ var CUSTOM_ELEMENT_TEMPLATE = path5.resolve(
|
|
|
10340
10337
|
__dirname,
|
|
10341
10338
|
"../templates/custom-element"
|
|
10342
10339
|
);
|
|
10343
|
-
async function generateCustomElement(projectFolder, folder, name) {
|
|
10340
|
+
async function generateCustomElement(projectFolder, folder, name, dashboardPageId) {
|
|
10344
10341
|
const readablePath = path5.join(SITE_WIDGETS_DIR, folder);
|
|
10345
10342
|
const cwd = path5.join(getSiteWidgetsDir(projectFolder), folder);
|
|
10343
|
+
const behaviorsConfig = dashboardPageId ? {
|
|
10344
|
+
dashboard: {
|
|
10345
|
+
dashboardPageComponentId: dashboardPageId
|
|
10346
|
+
}
|
|
10347
|
+
} : void 0;
|
|
10346
10348
|
const customElementConfig = {
|
|
10347
10349
|
$schema: "https://dev.wix.com/wix-cli/schemas/custom-element.json",
|
|
10348
10350
|
id: randomUUID4(),
|
|
10349
10351
|
name,
|
|
10350
10352
|
width: {
|
|
10351
|
-
defaultWidth:
|
|
10353
|
+
defaultWidth: 450,
|
|
10352
10354
|
allowStretch: true
|
|
10353
10355
|
},
|
|
10354
10356
|
height: {
|
|
10355
|
-
defaultHeight:
|
|
10357
|
+
defaultHeight: 250
|
|
10356
10358
|
},
|
|
10357
10359
|
installation: {
|
|
10358
10360
|
autoAddToSite: true
|
|
10359
|
-
}
|
|
10361
|
+
},
|
|
10362
|
+
behaviors: behaviorsConfig
|
|
10360
10363
|
};
|
|
10361
10364
|
const customElementConfigJSON = toJsonString(customElementConfig, {
|
|
10362
10365
|
spaces: 2
|
|
@@ -10380,20 +10383,32 @@ var GenerateCustomElement = () => {
|
|
|
10380
10383
|
const { model } = useProjectModel();
|
|
10381
10384
|
const [elementName, setElementName] = (0, import_react6.useState)();
|
|
10382
10385
|
const [elementFolder, setElementFolder] = (0, import_react6.useState)();
|
|
10386
|
+
const [linkDashboardPage, setLinkDashboardPage] = (0, import_react6.useState)();
|
|
10387
|
+
const [generationData, setGenerationData] = (0, import_react6.useState)();
|
|
10383
10388
|
const validateFolderName = useCustomElementDirectoryValidation("Site widget");
|
|
10384
10389
|
const validateName = useCustomElementNameValidation();
|
|
10390
|
+
const { getExtensions } = useExtensions();
|
|
10385
10391
|
const [finishedInstallation, setFinishedInstallation] = (0, import_react6.useState)(false);
|
|
10386
10392
|
const defaultElementFolder = (0, import_lodash3.kebabCase)(elementName);
|
|
10393
|
+
const dashboardPages = getExtensions("DashboardPage");
|
|
10394
|
+
const dashboardPagesOptions = dashboardPages.map(
|
|
10395
|
+
({ id, title }) => ({
|
|
10396
|
+
value: id,
|
|
10397
|
+
title
|
|
10398
|
+
})
|
|
10399
|
+
);
|
|
10400
|
+
const dashboardPagesExist = Boolean(dashboardPages.length);
|
|
10387
10401
|
const extensionType = t2("generate_command.flow.custom_element").toLowerCase();
|
|
10388
10402
|
const generationTask = useGenerationTask(async () => {
|
|
10389
|
-
if (
|
|
10403
|
+
if (generationData) {
|
|
10390
10404
|
return generateCustomElement(
|
|
10391
10405
|
model.projectFolder,
|
|
10392
|
-
|
|
10393
|
-
|
|
10406
|
+
generationData.folder,
|
|
10407
|
+
generationData.name,
|
|
10408
|
+
generationData.dashboardPageId
|
|
10394
10409
|
);
|
|
10395
10410
|
}
|
|
10396
|
-
}, [
|
|
10411
|
+
}, [generationData]);
|
|
10397
10412
|
return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(
|
|
10398
10413
|
TextInput,
|
|
10399
10414
|
{
|
|
@@ -10427,9 +10442,58 @@ var GenerateCustomElement = () => {
|
|
|
10427
10442
|
}
|
|
10428
10443
|
});
|
|
10429
10444
|
setElementFolder(value);
|
|
10445
|
+
if (!dashboardPagesExist) {
|
|
10446
|
+
setGenerationData({
|
|
10447
|
+
name: elementName,
|
|
10448
|
+
folder: value
|
|
10449
|
+
});
|
|
10450
|
+
}
|
|
10430
10451
|
},
|
|
10431
10452
|
validate: validateFolderName
|
|
10432
10453
|
}
|
|
10454
|
+
), elementName && elementFolder && dashboardPagesExist && /* @__PURE__ */ import_react6.default.createElement(
|
|
10455
|
+
ConfirmInput,
|
|
10456
|
+
{
|
|
10457
|
+
label: t2("generate_command.custom_element.link_dashboard_page"),
|
|
10458
|
+
onSubmit: (shouldLinkDashboardPage) => {
|
|
10459
|
+
bi.cliFlowStepAnswered({
|
|
10460
|
+
question: t2(
|
|
10461
|
+
"generate_command.custom_element.link_dashboard_page"
|
|
10462
|
+
),
|
|
10463
|
+
questionKey: "generate_command.custom_element.link_dashboard_page",
|
|
10464
|
+
answer: String(shouldLinkDashboardPage),
|
|
10465
|
+
additionalInfo: { extensionType }
|
|
10466
|
+
});
|
|
10467
|
+
setLinkDashboardPage(shouldLinkDashboardPage);
|
|
10468
|
+
if (!shouldLinkDashboardPage) {
|
|
10469
|
+
setGenerationData({
|
|
10470
|
+
name: elementName,
|
|
10471
|
+
folder: elementFolder
|
|
10472
|
+
});
|
|
10473
|
+
}
|
|
10474
|
+
}
|
|
10475
|
+
}
|
|
10476
|
+
), elementName && elementFolder && dashboardPagesExist && linkDashboardPage && /* @__PURE__ */ import_react6.default.createElement(
|
|
10477
|
+
SelectInput,
|
|
10478
|
+
{
|
|
10479
|
+
label: t2("generate_command.custom_element.choose_dashboard_page"),
|
|
10480
|
+
options: dashboardPagesOptions,
|
|
10481
|
+
onSubmit: (option) => {
|
|
10482
|
+
bi.cliFlowStepAnswered({
|
|
10483
|
+
question: t2(
|
|
10484
|
+
"generate_command.custom_element.choose_dashboard_page"
|
|
10485
|
+
),
|
|
10486
|
+
questionKey: "generate_command.custom_element.choose_dashboard_page",
|
|
10487
|
+
answer: option.title,
|
|
10488
|
+
additionalInfo: { extensionType }
|
|
10489
|
+
});
|
|
10490
|
+
setGenerationData({
|
|
10491
|
+
name: elementName,
|
|
10492
|
+
folder: elementFolder,
|
|
10493
|
+
dashboardPageId: option.value
|
|
10494
|
+
});
|
|
10495
|
+
}
|
|
10496
|
+
}
|
|
10433
10497
|
), (0, import_react6.useMemo)(
|
|
10434
10498
|
() => (0, import_variant10.match)(generationTask, {
|
|
10435
10499
|
Success: ({ hasUpdatedDependencies }) => {
|
|
@@ -10463,7 +10527,7 @@ var GenerateCustomElement = () => {
|
|
|
10463
10527
|
{
|
|
10464
10528
|
i18nKey: "generate_command.generation.learn_more",
|
|
10465
10529
|
values: { extensionType },
|
|
10466
|
-
components: [/* @__PURE__ */ import_react6.default.createElement(Link, { url: "https://wix.to/rEfCfbY" })]
|
|
10530
|
+
components: [/* @__PURE__ */ import_react6.default.createElement(Learn, null), /* @__PURE__ */ import_react6.default.createElement(Link, { url: "https://wix.to/rEfCfbY" })]
|
|
10467
10531
|
}
|
|
10468
10532
|
)));
|
|
10469
10533
|
};
|
|
@@ -10609,7 +10673,7 @@ var GenerateDashboardModal = () => {
|
|
|
10609
10673
|
{
|
|
10610
10674
|
i18nKey: "generate_command.generation.learn_more",
|
|
10611
10675
|
values: { extensionType },
|
|
10612
|
-
components: [/* @__PURE__ */ import_react7.default.createElement(Link, { url: "https://wix.to/zh5ZfMK" })]
|
|
10676
|
+
components: [/* @__PURE__ */ import_react7.default.createElement(Learn, null), /* @__PURE__ */ import_react7.default.createElement(Link, { url: "https://wix.to/zh5ZfMK" })]
|
|
10613
10677
|
}
|
|
10614
10678
|
)));
|
|
10615
10679
|
};
|
|
@@ -10802,7 +10866,7 @@ var GenerateServicePlugin = () => {
|
|
|
10802
10866
|
{
|
|
10803
10867
|
i18nKey: "generate_command.generation.learn_more",
|
|
10804
10868
|
values: { extensionType },
|
|
10805
|
-
components: [/* @__PURE__ */ import_react8.default.createElement(Link, { url: "https://wix.to/YWyluDf" })]
|
|
10869
|
+
components: [/* @__PURE__ */ import_react8.default.createElement(Learn, null), /* @__PURE__ */ import_react8.default.createElement(Link, { url: "https://wix.to/YWyluDf" })]
|
|
10806
10870
|
}
|
|
10807
10871
|
)));
|
|
10808
10872
|
};
|
|
@@ -11044,7 +11108,7 @@ var DashboardPluginGeneratedNote = ({ backofficeExtensionWidget }) => {
|
|
|
11044
11108
|
{
|
|
11045
11109
|
i18nKey: "generate_command.generation.learn_more",
|
|
11046
11110
|
values: { extensionType },
|
|
11047
|
-
components: [/* @__PURE__ */ import_react11.default.createElement(Link, { url: "https://wix.to/dFFuEki" })]
|
|
11111
|
+
components: [/* @__PURE__ */ import_react11.default.createElement(Learn, null), /* @__PURE__ */ import_react11.default.createElement(Link, { url: "https://wix.to/dFFuEki" })]
|
|
11048
11112
|
}
|
|
11049
11113
|
));
|
|
11050
11114
|
};
|
|
@@ -11483,7 +11547,7 @@ var DashboardMenuPluginGeneratedNote = ({ backofficeMenuItem }) => {
|
|
|
11483
11547
|
{
|
|
11484
11548
|
i18nKey: "generate_command.generation.learn_more",
|
|
11485
11549
|
values: { extensionType },
|
|
11486
|
-
components: [/* @__PURE__ */ import_react16.default.createElement(Link, { url: "https://wix.to/YwaogfU" })]
|
|
11550
|
+
components: [/* @__PURE__ */ import_react16.default.createElement(Learn, null), /* @__PURE__ */ import_react16.default.createElement(Link, { url: "https://wix.to/YwaogfU" })]
|
|
11487
11551
|
}
|
|
11488
11552
|
));
|
|
11489
11553
|
};
|
|
@@ -12053,7 +12117,7 @@ var SitePluginWizard = ({ placements }) => {
|
|
|
12053
12117
|
{
|
|
12054
12118
|
i18nKey: "generate_command.generation.learn_more",
|
|
12055
12119
|
values: { extensionType },
|
|
12056
|
-
components: [/* @__PURE__ */ import_react20.default.createElement(Link, { url: "https://wix.to/rEfCfbY" })]
|
|
12120
|
+
components: [/* @__PURE__ */ import_react20.default.createElement(Learn, null), /* @__PURE__ */ import_react20.default.createElement(Link, { url: "https://wix.to/rEfCfbY" })]
|
|
12057
12121
|
}
|
|
12058
12122
|
)));
|
|
12059
12123
|
};
|
|
@@ -12162,7 +12226,7 @@ var GenerateApi = () => {
|
|
|
12162
12226
|
{
|
|
12163
12227
|
i18nKey: "generate_command.generation.learn_more",
|
|
12164
12228
|
values: { extensionType },
|
|
12165
|
-
components: [/* @__PURE__ */ import_react22.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12229
|
+
components: [/* @__PURE__ */ import_react22.default.createElement(Learn, null), /* @__PURE__ */ import_react22.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12166
12230
|
}
|
|
12167
12231
|
)));
|
|
12168
12232
|
};
|
|
@@ -12256,7 +12320,7 @@ var GenerateEvent = () => {
|
|
|
12256
12320
|
{
|
|
12257
12321
|
i18nKey: "generate_command.generation.learn_more",
|
|
12258
12322
|
values: { extensionType },
|
|
12259
|
-
components: [/* @__PURE__ */ import_react23.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12323
|
+
components: [/* @__PURE__ */ import_react23.default.createElement(Learn, null), /* @__PURE__ */ import_react23.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12260
12324
|
}
|
|
12261
12325
|
)));
|
|
12262
12326
|
};
|
|
@@ -12278,7 +12342,8 @@ async function generateWebMethod(projectFolder, folderPath) {
|
|
|
12278
12342
|
cwd: projectFolder,
|
|
12279
12343
|
projectFolder,
|
|
12280
12344
|
data: {
|
|
12281
|
-
filePath
|
|
12345
|
+
filePath,
|
|
12346
|
+
fileName: path13.basename(filePath)
|
|
12282
12347
|
}
|
|
12283
12348
|
});
|
|
12284
12349
|
}
|
|
@@ -12363,7 +12428,7 @@ var GenerateWebMethod = () => {
|
|
|
12363
12428
|
{
|
|
12364
12429
|
i18nKey: "generate_command.generation.learn_more",
|
|
12365
12430
|
values: { extensionType },
|
|
12366
|
-
components: [/* @__PURE__ */ import_react24.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12431
|
+
components: [/* @__PURE__ */ import_react24.default.createElement(Learn, null), /* @__PURE__ */ import_react24.default.createElement(Link, { url: "https://wix.to/BEkD5a1" })]
|
|
12367
12432
|
}
|
|
12368
12433
|
)));
|
|
12369
12434
|
};
|
|
@@ -12435,11 +12500,11 @@ var GenerateCommand = () => {
|
|
|
12435
12500
|
title: t2("generate_command.flow.api.title"),
|
|
12436
12501
|
value: DevCenterGenerateFlow.Api()
|
|
12437
12502
|
},
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12503
|
+
{
|
|
12504
|
+
key: "web-method-module",
|
|
12505
|
+
title: t2("generate_command.flow.web_method.title"),
|
|
12506
|
+
value: DevCenterGenerateFlow.WebMethod()
|
|
12507
|
+
},
|
|
12443
12508
|
{
|
|
12444
12509
|
key: "event",
|
|
12445
12510
|
title: t2("generate_command.flow.event"),
|
|
@@ -12517,4 +12582,4 @@ ejs/lib/ejs.js:
|
|
|
12517
12582
|
* @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}
|
|
12518
12583
|
*)
|
|
12519
12584
|
*/
|
|
12520
|
-
//# sourceMappingURL=GenerateCommand-
|
|
12585
|
+
//# sourceMappingURL=GenerateCommand-ARNW73TM.js.map
|