sanity-plugin-workspace-home
3.0.173.0.18
dist/index.js.map~
dist/index.js.mapModified+1−1
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["DatabaseIcon","Box","Button","Card","Flex","Grid","Hotkeys","Stack","Text","isValidElement","useMemo","isValidElementType","useActiveWorkspace","WorkspaceSummary","styled","createIcon","Icon","React","ComponentType","ReactNode","undefined","MediaCard","WorkspacePreviewProps","workspace","index","query","WorkspacePreview","props","$","_c","icon","title","name","subtitle","dataset","setActiveWorkspace","t0","iconComponent","hotKeyIndex","t1","Boolean","t2","Symbol","for","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","String","t17","t18","t19","Box","Card","Container","Flex","Heading","Stack","Text","TextInput","useCallback","useEffect","useMemo","useRef","useState","useActiveWorkspace","useWorkspaces","styled","WorkspacePreview","TallCard","WorkspaceHome","$","_c","t0","workspaces","setActiveWorkspace","query","setQuery","searchInput","t1","Symbol","for","e","target","value","handleQuery","t2","t3","workspace","name","toLowerCase","includes","dataset","title","filter","filteredWorkspaces","t4","handleKeypress","event","current","document","activeElement","index","parseInt","key","length","window","addEventListener","removeEventListener","t5","t6","t7","t8","t9","t10","t11","workspace_0","index_0","map","t12","HomeIcon","definePlugin","Plugin","WorkspaceOptions","WorkspaceHome","workspaceHome","name","tools","title","icon","component","WorkspaceHomeConfigProps","projectId","dataset","workspaceHomeConfig","basePath","plugins"],"sources":["../src/components/WorkspacePreview.tsx","../src/components/WorkspaceHome.tsx","../src/index.ts"],"sourcesContent":["import {DatabaseIcon} from '@sanity/icons/Database'\nimport {Box, Button, Card, Flex, Grid, Hotkeys, Stack, Text} from '@sanity/ui'\nimport {isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useActiveWorkspace, type WorkspaceSummary} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst createIcon = (Icon: React.ComponentType | React.ReactNode) => {\n if (isValidElementType(Icon)) return <Icon />\n if (isValidElement(Icon)) return Icon\n return undefined\n}\n\nconst MediaCard = styled(Card)`\n width: 35px;\n height: 35px;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\nexport type WorkspacePreviewProps = {\n workspace: WorkspaceSummary\n index: number\n query: string\n}\n\nexport default function WorkspacePreview(props: WorkspacePreviewProps): React.JSX.Element {\n const {workspace, index, query} = props\n const {icon, title, name, subtitle, dataset} = workspace\n\n const {setActiveWorkspace} = useActiveWorkspace()\n const iconComponent = useMemo(() => createIcon(icon), [icon])\n\n // TODO: Favorites feature\n // get favorite workspace name from localStorage\n // const favoriteWorkspace = localStorage.getItem('favoriteWorkspace')\n // save local state to force re-render\n // const [isFavourite, setIsFavourite] = React.useState(favoriteWorkspace === name)\n\n // set favorite workspace name to localStorage\n // const setFavoriteWorkspace = useCallback(() => {\n // localStorage.setItem('favoriteWorkspace', name)\n // }, [name])\n\n const hotKeyIndex = index + 1 === 10 ? 0 : index + 1\n\n return (\n <Card borderTop={Boolean(index)} tone=\"default\">\n <Grid gridTemplateColumns={5} gap={[2, 3, 4, 4]} paddingY={1}>\n <Card gridColumnStart={1} gridColumnEnd={4}>\n <Stack>\n <Button mode=\"bleed\" tone=\"default\" onClick={() => setActiveWorkspace(name)}>\n <Flex align=\"center\" gap={[2, 3, 4, 4]}>\n {iconComponent ? <MediaCard>{createIcon(iconComponent)}</MediaCard> : null}\n <Box flex={1}>\n <Stack gap={[1, 2, 3, 3]}>\n <Text size={3} weight=\"semibold\" textOverflow=\"ellipsis\">\n {title || name}\n </Text>\n {subtitle ? <Text muted>{subtitle}</Text> : null}\n </Stack>\n </Box>\n </Flex>\n </Button>\n </Stack>\n </Card>\n <Card gridColumnStart={4} gridColumnEnd={5}>\n <Flex height=\"fill\" align=\"center\" gap={2}>\n <Text size={1} weight=\"semibold\">\n <DatabaseIcon />\n </Text>\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {dataset}\n </Text>\n </Flex>\n </Card>\n <Card paddingRight={[2, 3, 3, 3]}>\n <Flex height=\"fill\" align=\"center\" justify=\"flex-end\">\n {!query && hotKeyIndex < 10 ? (\n <Hotkeys keys={[String(hotKeyIndex)]} padding={2} />\n ) : null}\n </Flex>\n </Card>\n {/* <Button\n mode={isFavourite ? 'default' : 'bleed'}\n tone={isFavourite ? 'primary' : 'default'}\n icon={StarIcon}\n title=\"Favorite\"\n onClick={() => {\n setIsFavourite(!isFavourite)\n setFavoriteWorkspace()\n }}\n /> */}\n </Grid>\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Heading, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useActiveWorkspace, useWorkspaces} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport WorkspacePreview from './WorkspacePreview'\n\nconst TallCard = styled(Card)`\n min-height: 100%;\n`\n\nexport default function WorkspaceHome(): React.JSX.Element {\n const [, ...workspaces] = useWorkspaces()\n const {setActiveWorkspace} = useActiveWorkspace()\n\n // Handle search query\n const [query, setQuery] = useState('')\n const searchInput = useRef(null)\n const handleQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(e.target.value)\n },\n [setQuery],\n )\n\n // filter workspaces if name, dataset or title matches query\n const filteredWorkspaces = useMemo(() => {\n return workspaces.filter((workspace) => {\n return (\n workspace.name.toLowerCase().includes(query.toLowerCase()) ||\n workspace.dataset.toLowerCase().includes(query.toLowerCase()) ||\n workspace.title.toLowerCase().includes(query.toLowerCase())\n )\n })\n }, [workspaces, query])\n\n // Listen to keypress of workspace index\n useEffect(() => {\n const handleKeypress = (event: KeyboardEvent) => {\n // Ignore if search query exists or search input is focused\n if (query || searchInput.current === document.activeElement) {\n return\n }\n\n const index = parseInt(event.key, 10) - 1\n if (index >= 0 && index < workspaces.length) {\n setActiveWorkspace(workspaces[index]!.name)\n }\n }\n\n window.addEventListener('keypress', handleKeypress)\n\n return () => {\n window.removeEventListener('keypress', handleKeypress)\n }\n }, [query, workspaces, setActiveWorkspace])\n\n return (\n <TallCard tone=\"transparent\">\n <Flex direction=\"column\" padding={[4, 5, 6, 6]}>\n <Container>\n <Stack gap={4}>\n <Heading>Workspaces</Heading>\n <Card padding={[2, 3, 4, 4]} radius={3} shadow={2}>\n <Stack gap={3}>\n <Stack gap={2}>\n <Text size={1} weight=\"semibold\">\n Search\n </Text>\n <TextInput ref={searchInput} value={query} onChange={handleQuery} />\n </Stack>\n <Box>\n {filteredWorkspaces.map((workspace, index) => (\n <WorkspacePreview\n key={workspace.name}\n workspace={workspace}\n index={index}\n query={query}\n />\n ))}\n </Box>\n </Stack>\n </Card>\n </Stack>\n </Container>\n </Flex>\n </TallCard>\n )\n}\n","import {HomeIcon} from '@sanity/icons/Home'\nimport {definePlugin, type Plugin, type WorkspaceOptions} from 'sanity'\n\nimport WorkspaceHome from './components/WorkspaceHome'\n\nexport const workspaceHome: Plugin = definePlugin(() => {\n return {\n name: 'sanity-plugin-workspace-home',\n tools: [\n {\n title: 'Workspace Home',\n name: 'workspace-home',\n icon: HomeIcon,\n component: WorkspaceHome,\n },\n ],\n }\n})\n\ntype WorkspaceHomeConfigProps = {\n projectId: string\n dataset: string\n}\n\nexport const workspaceHomeConfig = ({\n projectId,\n dataset,\n}: WorkspaceHomeConfigProps): WorkspaceOptions => ({\n name: 'home',\n title: 'Home',\n basePath: '/home',\n projectId,\n dataset,\n icon: HomeIcon,\n plugins: [workspaceHome()],\n})\n"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["DatabaseIcon","Box","Button","Card","Flex","Grid","Hotkeys","Stack","Text","isValidElement","useMemo","isValidElementType","useActiveWorkspace","WorkspaceSummary","styled","createIcon","Icon","React","ComponentType","ReactNode","undefined","MediaCard","WorkspacePreviewProps","workspace","index","query","WorkspacePreview","props","$","_c","icon","title","name","subtitle","dataset","setActiveWorkspace","t0","iconComponent","hotKeyIndex","t1","Boolean","t2","Symbol","for","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","String","t17","t18","t19","Box","Card","Container","Flex","Heading","Stack","Text","TextInput","useCallback","useEffect","useMemo","useRef","useState","useActiveWorkspace","useWorkspaces","styled","WorkspacePreview","TallCard","WorkspaceHome","$","_c","t0","workspaces","setActiveWorkspace","query","setQuery","searchInput","t1","Symbol","for","e","target","value","handleQuery","t2","t3","workspace","name","toLowerCase","includes","dataset","title","filter","filteredWorkspaces","t4","handleKeypress","event","current","document","activeElement","index","parseInt","key","length","window","addEventListener","removeEventListener","t5","t6","t7","t8","t9","t10","t11","workspace_0","index_0","map","t12","HomeIcon","definePlugin","Plugin","WorkspaceOptions","WorkspaceHome","workspaceHome","name","tools","title","icon","component","WorkspaceHomeConfigProps","projectId","dataset","workspaceHomeConfig","basePath","plugins"],"sources":["../src/components/WorkspacePreview.tsx","../src/components/WorkspaceHome.tsx","../src/index.ts"],"sourcesContent":["import {DatabaseIcon} from '@sanity/icons/Database'\nimport {Box, Button, Card, Flex, Grid, Hotkeys, Stack, Text} from '@sanity/ui'\nimport {isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useActiveWorkspace, type WorkspaceSummary} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst createIcon = (Icon: React.ComponentType | React.ReactNode) => {\n if (isValidElementType(Icon)) return <Icon />\n if (isValidElement(Icon)) return Icon\n return undefined\n}\n\nconst MediaCard = styled(Card)`\n width: 35px;\n height: 35px;\n\n svg {\n width: 100%;\n height: 100%;\n }\n`\n\nexport type WorkspacePreviewProps = {\n workspace: WorkspaceSummary\n index: number\n query: string\n}\n\nexport default function WorkspacePreview(props: WorkspacePreviewProps): React.JSX.Element {\n const {workspace, index, query} = props\n const {icon, title, name, subtitle, dataset} = workspace\n\n const {setActiveWorkspace} = useActiveWorkspace()\n const iconComponent = useMemo(() => createIcon(icon), [icon])\n\n // TODO: Favorites feature\n // get favorite workspace name from localStorage\n // const favoriteWorkspace = localStorage.getItem('favoriteWorkspace')\n // save local state to force re-render\n // const [isFavourite, setIsFavourite] = React.useState(favoriteWorkspace === name)\n\n // set favorite workspace name to localStorage\n // const setFavoriteWorkspace = useCallback(() => {\n // localStorage.setItem('favoriteWorkspace', name)\n // }, [name])\n\n const hotKeyIndex = index + 1 === 10 ? 0 : index + 1\n\n return (\n <Card borderTop={Boolean(index)} tone=\"default\">\n <Grid gridTemplateColumns={5} gap={[2, 3, 4, 4]} paddingY={1}>\n <Card gridColumnStart={1} gridColumnEnd={4}>\n <Stack>\n <Button mode=\"bleed\" tone=\"default\" onClick={() => setActiveWorkspace(name)}>\n <Flex align=\"center\" gap={[2, 3, 4, 4]}>\n {iconComponent ? <MediaCard>{createIcon(iconComponent)}</MediaCard> : null}\n <Box flex={1}>\n <Stack gap={[1, 2, 3, 3]}>\n <Text size={3} weight=\"semibold\" textOverflow=\"ellipsis\">\n {title || name}\n </Text>\n {subtitle ? <Text muted>{subtitle}</Text> : null}\n </Stack>\n </Box>\n </Flex>\n </Button>\n </Stack>\n </Card>\n <Card gridColumnStart={4} gridColumnEnd={5}>\n <Flex height=\"fill\" align=\"center\" gap={2}>\n <Text size={1} weight=\"semibold\">\n <DatabaseIcon />\n </Text>\n <Text size={1} weight=\"semibold\" textOverflow=\"ellipsis\">\n {dataset}\n </Text>\n </Flex>\n </Card>\n <Card paddingRight={[2, 3, 3, 3]}>\n <Flex height=\"fill\" align=\"center\" justify=\"flex-end\">\n {!query && hotKeyIndex < 10 ? (\n <Hotkeys keys={[String(hotKeyIndex)]} padding={2} />\n ) : null}\n </Flex>\n </Card>\n {/* <Button\n mode={isFavourite ? 'default' : 'bleed'}\n tone={isFavourite ? 'primary' : 'default'}\n icon={StarIcon}\n title=\"Favorite\"\n onClick={() => {\n setIsFavourite(!isFavourite)\n setFavoriteWorkspace()\n }}\n /> */}\n </Grid>\n </Card>\n )\n}\n","import {Box, Card, Container, Flex, Heading, Stack, Text, TextInput} from '@sanity/ui'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useActiveWorkspace, useWorkspaces} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport WorkspacePreview from './WorkspacePreview'\n\nconst TallCard = styled(Card)`\n min-height: 100%;\n`\n\nexport default function WorkspaceHome(): React.JSX.Element {\n const [, ...workspaces] = useWorkspaces()\n const {setActiveWorkspace} = useActiveWorkspace()\n\n // Handle search query\n const [query, setQuery] = useState('')\n const searchInput = useRef(null)\n const handleQuery = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQuery(e.target.value)\n },\n [setQuery],\n )\n\n // filter workspaces if name, dataset or title matches query\n const filteredWorkspaces = useMemo(() => {\n return workspaces.filter((workspace) => {\n return (\n workspace.name.toLowerCase().includes(query.toLowerCase()) ||\n workspace.dataset.toLowerCase().includes(query.toLowerCase()) ||\n workspace.title.toLowerCase().includes(query.toLowerCase())\n )\n })\n }, [workspaces, query])\n\n // Listen to keypress of workspace index\n useEffect(() => {\n const handleKeypress = (event: KeyboardEvent) => {\n // Ignore if search query exists or search input is focused\n if (query || searchInput.current === document.activeElement) {\n return\n }\n\n const index = parseInt(event.key, 10) - 1\n if (index >= 0 && index < workspaces.length) {\n setActiveWorkspace(workspaces[index]!.name)\n }\n }\n\n window.addEventListener('keypress', handleKeypress)\n\n return () => {\n window.removeEventListener('keypress', handleKeypress)\n }\n }, [query, workspaces, setActiveWorkspace])\n\n return (\n <TallCard tone=\"transparent\">\n <Flex direction=\"column\" padding={[4, 5, 6, 6]}>\n <Container>\n <Stack gap={4}>\n <Heading>Workspaces</Heading>\n <Card padding={[2, 3, 4, 4]} radius={3} shadow={2}>\n <Stack gap={3}>\n <Stack gap={2}>\n <Text size={1} weight=\"semibold\">\n Search\n </Text>\n <TextInput ref={searchInput} value={query} onChange={handleQuery} />\n </Stack>\n <Box>\n {filteredWorkspaces.map((workspace, index) => (\n <WorkspacePreview\n key={workspace.name}\n workspace={workspace}\n index={index}\n query={query}\n />\n ))}\n </Box>\n </Stack>\n </Card>\n </Stack>\n </Container>\n </Flex>\n </TallCard>\n )\n}\n","import '@sanity/ui/styles.css'\nimport {HomeIcon} from '@sanity/icons/Home'\nimport {definePlugin, type Plugin, type WorkspaceOptions} from 'sanity'\n\nimport WorkspaceHome from './components/WorkspaceHome'\n\nexport const workspaceHome: Plugin = definePlugin(() => {\n return {\n name: 'sanity-plugin-workspace-home',\n tools: [\n {\n title: 'Workspace Home',\n name: 'workspace-home',\n icon: HomeIcon,\n component: WorkspaceHome,\n },\n ],\n }\n})\n\ntype WorkspaceHomeConfigProps = {\n projectId: string\n dataset: string\n}\n\nexport const workspaceHomeConfig = ({\n projectId,\n dataset,\n}: WorkspaceHomeConfigProps): WorkspaceOptions => ({\n name: 'home',\n title: 'Home',\n basePath: '/home',\n projectId,\n dataset,\n icon: HomeIcon,\n plugins: [workspaceHome()],\n})\n"],"mappings":"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"}
\ No newline at end of file