andoncloud-widget-preview 1.5.1 → 1.5.2
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/dist/assets/.gitkeep +0 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,7 @@ const Dashboard = ({ apiUrl, lang, filters, widgetName, widgetDisplayName, getWi
|
|
|
50
50
|
id: widgetId,
|
|
51
51
|
Widget,
|
|
52
52
|
title: widgetDisplayName(lang),
|
|
53
|
+
getDisplayName: widgetDisplayName,
|
|
53
54
|
getTitle: getWidgetTitle,
|
|
54
55
|
customTitle: widgetCustomTitle,
|
|
55
56
|
thumbnail: widgetThumbnail,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["en","pl","AndonCloudApp","locales"],"sources":["../src/locales/en/translation.json","../src/locales/pl/translation.json","../src/locales/index.ts","../src/components/Dashboard/index.tsx","../src/components/Routing.tsx","../src/components/WidgetPreview/styles.ts","../src/components/WidgetPreview/WidgetPreviewContent.tsx","../src/components/WidgetPreview/index.tsx","../src/index.tsx"],"sourcesContent":["","","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","import 'react-grid-layout/css/styles.css';\nimport 'react-resizable/css/styles.css';\n\nimport React, { useState } from 'react';\nimport ReactGridLayout, { useContainerWidth } from 'react-grid-layout';\n\nimport { Box } from '@mui/material';\nimport { WidgetCard } from 'andoncloud-dashboard-toolkit';\nimport { useLoginStatus } from 'andoncloud-sdk';\nimport getUuid from 'uuid-by-string';\n\nimport { DashboardProps } from '@/types';\n\nconst Dashboard: React.FC<DashboardProps> = ({\n apiUrl,\n lang,\n filters,\n widgetName,\n widgetDisplayName,\n getWidgetTitle,\n widgetCustomTitle,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n sidePanelOpened,\n updateSidePanelProps,\n editMode,\n}) => {\n const { status } = useLoginStatus();\n const { width, containerRef, mounted } = useContainerWidth();\n const [settingsModalOpened, setSettingsModalOpened] = useState<boolean>(false);\n const widgetId = getUuid(widgetName);\n\n return (\n <Box ref={containerRef}>\n {mounted && (\n <ReactGridLayout\n className=\"layout\"\n width={width}\n layout={[{ i: widgetId, x: 0, y: 0, w: widgetWidth || 3, h: widgetHeight || 4 }]}\n dragConfig={{ handle: '.draggable-handle' }}\n >\n {status === 'connected' && (\n <WidgetCard\n key={widgetId}\n id={widgetId}\n Widget={Widget}\n title={widgetDisplayName(lang)}\n getTitle={getWidgetTitle}\n customTitle={widgetCustomTitle}\n thumbnail={widgetThumbnail}\n url={apiUrl}\n lang={lang}\n filters={filters}\n requiredFeatures={widgetRequiredFeatures}\n extraPermissions={widgetExtraPermissions}\n openSettingsModal={settingsModalOpened}\n onSettingsModalOpened={() => setSettingsModalOpened(true)}\n onSettingsModalClosed={() => setSettingsModalOpened(false)}\n sidePanelOpened={sidePanelOpened || false}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n version={widgetVersion}\n />\n )}\n </ReactGridLayout>\n )}\n </Box>\n );\n};\n\nexport default Dashboard;\n","import React from 'react';\nimport { Navigate, useRoutes } from 'react-router-dom';\n\nimport { useLoginStatus } from 'andoncloud-sdk';\n\nimport { DashboardProps } from '@/types';\n\nimport Dashboard from './Dashboard';\n\nconst routes = (\n isLoggedIn: boolean,\n {\n apiUrl,\n lang,\n filters,\n getWidgetTitle,\n widgetCustomTitle,\n widgetName,\n widgetDisplayName,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n sidePanelOpened,\n updateSidePanelProps,\n editMode,\n }: DashboardProps,\n) => [\n {\n path: '/',\n element: isLoggedIn ? (\n <Dashboard\n apiUrl={apiUrl}\n lang={lang}\n filters={filters}\n getWidgetTitle={getWidgetTitle}\n widgetCustomTitle={widgetCustomTitle}\n widgetName={widgetName}\n widgetDisplayName={widgetDisplayName}\n widgetWidth={widgetWidth}\n widgetHeight={widgetHeight}\n widgetThumbnail={widgetThumbnail}\n widgetRequiredFeatures={widgetRequiredFeatures}\n widgetExtraPermissions={widgetExtraPermissions}\n widgetVersion={widgetVersion}\n Widget={Widget}\n sidePanelOpened={sidePanelOpened}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n />\n ) : (\n <Navigate to=\"/login\" />\n ),\n },\n];\n\nconst Routing: React.FC<DashboardProps> = (dashboardProps) => {\n const { status } = useLoginStatus();\n\n return useRoutes(routes(status === 'connected', dashboardProps));\n};\n\nexport default Routing;\n","import { Theme } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nexport const styles = {\n filtersContainer: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n filterDisclaimer: (theme: Theme) => ({\n flexShrink: 0,\n maxWidth: theme.spacing(22),\n marginLeft: theme.spacing(2),\n padding: theme.spacing(0.5, 1, 0.5, 2.5),\n textIndent: theme.spacing(-1.5),\n fontSize: '0.75rem',\n lineHeight: 1.3,\n color: theme.palette.warning.main,\n borderRadius: theme.spacing(0.75),\n backgroundColor: alpha(theme.palette.common.black, 0.2),\n }),\n};\n","import { useEffect, useState } from 'react';\n\nimport { Box, Typography } from '@mui/material';\nimport { BaseWidgetData, BaseWidgetSettings, DashboardFilters, FilterValues, Shift, useGqlClients } from 'andoncloud-dashboard-toolkit';\nimport {\n Container,\n HeaderProps,\n refreshUserData,\n setLocale,\n sidePanelDefaultProps,\n SidePanelProps,\n} from 'andoncloud-sdk';\nimport { useTranslation } from 'react-i18next';\n\nimport { WidgetPreviewProps } from '@/types';\n\nimport Routing from '../Routing';\n\nimport { styles } from './styles';\n\nconst WidgetPreviewContent = <WD extends BaseWidgetData = BaseWidgetData, WS extends BaseWidgetSettings = BaseWidgetSettings>({\n apiUrl,\n widgetName,\n widgetDisplayName,\n getWidgetTitle,\n widgetCustomTitle,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n}: Omit<WidgetPreviewProps<WD, WS>, 'baseUrl' | 'locales'>) => {\n // -- Translation --\n const { t, i18n } = useTranslation();\n\n // -- Local state --\n const [filters, setFilters] = useState<FilterValues | undefined>();\n const [shifts, setShifts] = useState<Shift[]>([]);\n const [editMode, setEditMode] = useState(true);\n const [sidePanelProps, setSidePanelProps] = useState<SidePanelProps>(sidePanelDefaultProps);\n\n // -- Data layer --\n const lang = (i18n.language || 'en') as 'en' | 'pl';\n const { graphqlSdk } = useGqlClients({ url: apiUrl, wsUrl: '', lang });\n\n useEffect(() => {\n if (!graphqlSdk) return;\n graphqlSdk\n .shifts()\n .then((data) => setShifts(data.shifts))\n .catch(() => {});\n }, [graphqlSdk]);\n\n // handlers\n const handleFeatureRequest = async (): Promise<boolean> => {\n await refreshUserData();\n return true;\n };\n\n const updateSidePanelProps = ({ onClose: onCloseCallback, ...updatedProps }: Partial<SidePanelProps>) => {\n setSidePanelProps((current) => ({\n ...(updatedProps.open ? sidePanelDefaultProps : current),\n ...updatedProps,\n onClose: () => {\n setSidePanelProps((current) => ({ ...current, open: false }));\n onCloseCallback?.();\n },\n }));\n };\n\n const navItems = [\n {\n label: editMode\n ? t('widgetPreview.saveChanges')\n : t('widgetPreview.editMode'),\n action: () => setEditMode((current) => !current),\n },\n ];\n\n const menuItems = [\n {\n label: t('widgetPreview.changeLanguage'),\n action: () => setLocale(lang === 'pl' ? 'en' : 'pl'),\n },\n ];\n\n const headerProps: HeaderProps = {\n position: 'fixed',\n leadingText: widgetDisplayName(lang),\n content: (\n <Box sx={styles.filtersContainer}>\n <DashboardFilters\n initialValues={filters}\n onChange={setFilters}\n shifts={shifts}\n onFeatureRequest={handleFeatureRequest}\n />\n <Typography variant=\"caption\" sx={styles.filterDisclaimer}>\n {t('widgetPreview.filterDisclaimer')}\n </Typography>\n </Box>\n ),\n navProps: {\n items: navItems,\n },\n menuProps: {\n items: menuItems,\n buttonColor: 'white',\n },\n };\n\n return (\n <Container\n headerProps={headerProps}\n sidebarMenuProps={{\n enabled: true,\n items: [],\n }}\n sidePanelProps={sidePanelProps}\n styles={{\n overflowY: 'auto',\n }}\n >\n <Routing\n apiUrl={apiUrl}\n lang={lang}\n filters={filters}\n getWidgetTitle={getWidgetTitle}\n widgetCustomTitle={widgetCustomTitle}\n widgetName={widgetName}\n widgetDisplayName={widgetDisplayName}\n widgetWidth={widgetWidth}\n widgetHeight={widgetHeight}\n widgetThumbnail={widgetThumbnail}\n widgetRequiredFeatures={widgetRequiredFeatures}\n widgetExtraPermissions={widgetExtraPermissions}\n widgetVersion={widgetVersion}\n Widget={Widget}\n sidePanelOpened={sidePanelProps.open || false}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n />\n </Container>\n );\n};\n\nexport { WidgetPreviewContent };\n","import { BaseWidgetData, BaseWidgetSettings } from 'andoncloud-dashboard-toolkit';\nimport {\n App as AndonCloudApp,\n AuthProps,\n I18nProps,\n} from 'andoncloud-sdk';\n\nimport { WidgetPreviewProps } from '@/types';\n\nimport { WidgetPreviewContent } from './WidgetPreviewContent';\n\nconst WidgetPreview = <WD extends BaseWidgetData = BaseWidgetData, WS extends BaseWidgetSettings = BaseWidgetSettings>({\n baseUrl,\n locales,\n ...contentProps\n}: WidgetPreviewProps<WD, WS>) => {\n const authProps: AuthProps = {\n redirectPath: '/',\n clientId: 'sample-app-client-id',\n grantType: 'password',\n };\n\n const i18nProps: I18nProps = {\n locales,\n };\n\n return (\n <AndonCloudApp baseUrl={baseUrl} authProps={authProps} i18nProps={i18nProps}>\n <WidgetPreviewContent {...contentProps} />\n </AndonCloudApp>\n );\n};\n\nexport default WidgetPreview;\n","import { registerTranslations } from 'andoncloud-sdk';\n\nimport locales from './locales';\n\nregisterTranslations(locales);\n\nexport { default as WidgetPreview } from './components/WidgetPreview';\n\nexport type { WidgetPreviewProps } from './types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["en","pl","AndonCloudApp","locales"],"sources":["../src/locales/en/translation.json","../src/locales/pl/translation.json","../src/locales/index.ts","../src/components/Dashboard/index.tsx","../src/components/Routing.tsx","../src/components/WidgetPreview/styles.ts","../src/components/WidgetPreview/WidgetPreviewContent.tsx","../src/components/WidgetPreview/index.tsx","../src/index.tsx"],"sourcesContent":["","","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","import 'react-grid-layout/css/styles.css';\nimport 'react-resizable/css/styles.css';\n\nimport React, { useState } from 'react';\nimport ReactGridLayout, { useContainerWidth } from 'react-grid-layout';\n\nimport { Box } from '@mui/material';\nimport { WidgetCard } from 'andoncloud-dashboard-toolkit';\nimport { useLoginStatus } from 'andoncloud-sdk';\nimport getUuid from 'uuid-by-string';\n\nimport { DashboardProps } from '@/types';\n\nconst Dashboard: React.FC<DashboardProps> = ({\n apiUrl,\n lang,\n filters,\n widgetName,\n widgetDisplayName,\n getWidgetTitle,\n widgetCustomTitle,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n sidePanelOpened,\n updateSidePanelProps,\n editMode,\n}) => {\n const { status } = useLoginStatus();\n const { width, containerRef, mounted } = useContainerWidth();\n const [settingsModalOpened, setSettingsModalOpened] = useState<boolean>(false);\n const widgetId = getUuid(widgetName);\n\n return (\n <Box ref={containerRef}>\n {mounted && (\n <ReactGridLayout\n className=\"layout\"\n width={width}\n layout={[{ i: widgetId, x: 0, y: 0, w: widgetWidth || 3, h: widgetHeight || 4 }]}\n dragConfig={{ handle: '.draggable-handle' }}\n >\n {status === 'connected' && (\n <WidgetCard\n key={widgetId}\n id={widgetId}\n Widget={Widget}\n title={widgetDisplayName(lang)}\n getDisplayName={widgetDisplayName}\n getTitle={getWidgetTitle}\n customTitle={widgetCustomTitle}\n thumbnail={widgetThumbnail}\n url={apiUrl}\n lang={lang}\n filters={filters}\n requiredFeatures={widgetRequiredFeatures}\n extraPermissions={widgetExtraPermissions}\n openSettingsModal={settingsModalOpened}\n onSettingsModalOpened={() => setSettingsModalOpened(true)}\n onSettingsModalClosed={() => setSettingsModalOpened(false)}\n sidePanelOpened={sidePanelOpened || false}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n version={widgetVersion}\n />\n )}\n </ReactGridLayout>\n )}\n </Box>\n );\n};\n\nexport default Dashboard;\n","import React from 'react';\nimport { Navigate, useRoutes } from 'react-router-dom';\n\nimport { useLoginStatus } from 'andoncloud-sdk';\n\nimport { DashboardProps } from '@/types';\n\nimport Dashboard from './Dashboard';\n\nconst routes = (\n isLoggedIn: boolean,\n {\n apiUrl,\n lang,\n filters,\n getWidgetTitle,\n widgetCustomTitle,\n widgetName,\n widgetDisplayName,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n sidePanelOpened,\n updateSidePanelProps,\n editMode,\n }: DashboardProps,\n) => [\n {\n path: '/',\n element: isLoggedIn ? (\n <Dashboard\n apiUrl={apiUrl}\n lang={lang}\n filters={filters}\n getWidgetTitle={getWidgetTitle}\n widgetCustomTitle={widgetCustomTitle}\n widgetName={widgetName}\n widgetDisplayName={widgetDisplayName}\n widgetWidth={widgetWidth}\n widgetHeight={widgetHeight}\n widgetThumbnail={widgetThumbnail}\n widgetRequiredFeatures={widgetRequiredFeatures}\n widgetExtraPermissions={widgetExtraPermissions}\n widgetVersion={widgetVersion}\n Widget={Widget}\n sidePanelOpened={sidePanelOpened}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n />\n ) : (\n <Navigate to=\"/login\" />\n ),\n },\n];\n\nconst Routing: React.FC<DashboardProps> = (dashboardProps) => {\n const { status } = useLoginStatus();\n\n return useRoutes(routes(status === 'connected', dashboardProps));\n};\n\nexport default Routing;\n","import { Theme } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nexport const styles = {\n filtersContainer: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n filterDisclaimer: (theme: Theme) => ({\n flexShrink: 0,\n maxWidth: theme.spacing(22),\n marginLeft: theme.spacing(2),\n padding: theme.spacing(0.5, 1, 0.5, 2.5),\n textIndent: theme.spacing(-1.5),\n fontSize: '0.75rem',\n lineHeight: 1.3,\n color: theme.palette.warning.main,\n borderRadius: theme.spacing(0.75),\n backgroundColor: alpha(theme.palette.common.black, 0.2),\n }),\n};\n","import { useEffect, useState } from 'react';\n\nimport { Box, Typography } from '@mui/material';\nimport { BaseWidgetData, BaseWidgetSettings, DashboardFilters, FilterValues, Shift, useGqlClients } from 'andoncloud-dashboard-toolkit';\nimport {\n Container,\n HeaderProps,\n refreshUserData,\n setLocale,\n sidePanelDefaultProps,\n SidePanelProps,\n} from 'andoncloud-sdk';\nimport { useTranslation } from 'react-i18next';\n\nimport { WidgetPreviewProps } from '@/types';\n\nimport Routing from '../Routing';\n\nimport { styles } from './styles';\n\nconst WidgetPreviewContent = <WD extends BaseWidgetData = BaseWidgetData, WS extends BaseWidgetSettings = BaseWidgetSettings>({\n apiUrl,\n widgetName,\n widgetDisplayName,\n getWidgetTitle,\n widgetCustomTitle,\n widgetWidth,\n widgetHeight,\n widgetThumbnail,\n widgetRequiredFeatures,\n widgetExtraPermissions,\n widgetVersion,\n Widget,\n}: Omit<WidgetPreviewProps<WD, WS>, 'baseUrl' | 'locales'>) => {\n // -- Translation --\n const { t, i18n } = useTranslation();\n\n // -- Local state --\n const [filters, setFilters] = useState<FilterValues | undefined>();\n const [shifts, setShifts] = useState<Shift[]>([]);\n const [editMode, setEditMode] = useState(true);\n const [sidePanelProps, setSidePanelProps] = useState<SidePanelProps>(sidePanelDefaultProps);\n\n // -- Data layer --\n const lang = (i18n.language || 'en') as 'en' | 'pl';\n const { graphqlSdk } = useGqlClients({ url: apiUrl, wsUrl: '', lang });\n\n useEffect(() => {\n if (!graphqlSdk) return;\n graphqlSdk\n .shifts()\n .then((data) => setShifts(data.shifts))\n .catch(() => {});\n }, [graphqlSdk]);\n\n // handlers\n const handleFeatureRequest = async (): Promise<boolean> => {\n await refreshUserData();\n return true;\n };\n\n const updateSidePanelProps = ({ onClose: onCloseCallback, ...updatedProps }: Partial<SidePanelProps>) => {\n setSidePanelProps((current) => ({\n ...(updatedProps.open ? sidePanelDefaultProps : current),\n ...updatedProps,\n onClose: () => {\n setSidePanelProps((current) => ({ ...current, open: false }));\n onCloseCallback?.();\n },\n }));\n };\n\n const navItems = [\n {\n label: editMode\n ? t('widgetPreview.saveChanges')\n : t('widgetPreview.editMode'),\n action: () => setEditMode((current) => !current),\n },\n ];\n\n const menuItems = [\n {\n label: t('widgetPreview.changeLanguage'),\n action: () => setLocale(lang === 'pl' ? 'en' : 'pl'),\n },\n ];\n\n const headerProps: HeaderProps = {\n position: 'fixed',\n leadingText: widgetDisplayName(lang),\n content: (\n <Box sx={styles.filtersContainer}>\n <DashboardFilters\n initialValues={filters}\n onChange={setFilters}\n shifts={shifts}\n onFeatureRequest={handleFeatureRequest}\n />\n <Typography variant=\"caption\" sx={styles.filterDisclaimer}>\n {t('widgetPreview.filterDisclaimer')}\n </Typography>\n </Box>\n ),\n navProps: {\n items: navItems,\n },\n menuProps: {\n items: menuItems,\n buttonColor: 'white',\n },\n };\n\n return (\n <Container\n headerProps={headerProps}\n sidebarMenuProps={{\n enabled: true,\n items: [],\n }}\n sidePanelProps={sidePanelProps}\n styles={{\n overflowY: 'auto',\n }}\n >\n <Routing\n apiUrl={apiUrl}\n lang={lang}\n filters={filters}\n getWidgetTitle={getWidgetTitle}\n widgetCustomTitle={widgetCustomTitle}\n widgetName={widgetName}\n widgetDisplayName={widgetDisplayName}\n widgetWidth={widgetWidth}\n widgetHeight={widgetHeight}\n widgetThumbnail={widgetThumbnail}\n widgetRequiredFeatures={widgetRequiredFeatures}\n widgetExtraPermissions={widgetExtraPermissions}\n widgetVersion={widgetVersion}\n Widget={Widget}\n sidePanelOpened={sidePanelProps.open || false}\n updateSidePanelProps={updateSidePanelProps}\n editMode={editMode}\n />\n </Container>\n );\n};\n\nexport { WidgetPreviewContent };\n","import { BaseWidgetData, BaseWidgetSettings } from 'andoncloud-dashboard-toolkit';\nimport {\n App as AndonCloudApp,\n AuthProps,\n I18nProps,\n} from 'andoncloud-sdk';\n\nimport { WidgetPreviewProps } from '@/types';\n\nimport { WidgetPreviewContent } from './WidgetPreviewContent';\n\nconst WidgetPreview = <WD extends BaseWidgetData = BaseWidgetData, WS extends BaseWidgetSettings = BaseWidgetSettings>({\n baseUrl,\n locales,\n ...contentProps\n}: WidgetPreviewProps<WD, WS>) => {\n const authProps: AuthProps = {\n redirectPath: '/',\n clientId: 'sample-app-client-id',\n grantType: 'password',\n };\n\n const i18nProps: I18nProps = {\n locales,\n };\n\n return (\n <AndonCloudApp baseUrl={baseUrl} authProps={authProps} i18nProps={i18nProps}>\n <WidgetPreviewContent {...contentProps} />\n </AndonCloudApp>\n );\n};\n\nexport default WidgetPreview;\n","import { registerTranslations } from 'andoncloud-sdk';\n\nimport locales from './locales';\n\nregisterTranslations(locales);\n\nexport { default as WidgetPreview } from './components/WidgetPreview';\n\nexport type { WidgetPreviewProps } from './types';\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "andoncloud-widget-preview",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "AndonCloud widget preview",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"lint": "eslint --ext .ts,.tsx --quiet --fix .",
|
|
18
18
|
"lint:ci": "eslint --ext .ts,.tsx --quiet .",
|
|
19
19
|
"prepare": "run-s build",
|
|
20
|
+
"prestart": "npm run build",
|
|
20
21
|
"start": "run-p build:watch start:sandbox",
|
|
21
22
|
"start:sandbox": "cd sandbox && npm run start",
|
|
22
23
|
"test": "cypress run --component",
|