sanity 6.4.0-next.21 → 6.4.0-next.22
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/lib/_chunks-dts/ActiveWorkspaceMatcherContext.d.ts +1 -1
- package/lib/_chunks-es/CalendarFilter.js +3 -1
- package/lib/_chunks-es/CalendarFilter.js.map +1 -1
- package/lib/_chunks-es/CommentsInspector.js +58 -1
- package/lib/_chunks-es/CommentsInspector.js.map +1 -1
- package/lib/_chunks-es/PresentationToolGrantsCheck.js +9 -1
- package/lib/_chunks-es/PresentationToolGrantsCheck.js.map +1 -1
- package/lib/_chunks-es/ReleasesStudioLayout.js +58 -1
- package/lib/_chunks-es/ReleasesStudioLayout.js.map +1 -1
- package/lib/_chunks-es/ReleasesTool.js +68 -1
- package/lib/_chunks-es/ReleasesTool.js.map +1 -1
- package/lib/_chunks-es/StructureToolProvider.js +4 -1
- package/lib/_chunks-es/StructureToolProvider.js.map +1 -1
- package/lib/_chunks-es/Table.js +2 -1
- package/lib/_chunks-es/Table.js.map +1 -1
- package/lib/_chunks-es/TasksDocumentInputLayout.js +58 -1
- package/lib/_chunks-es/TasksDocumentInputLayout.js.map +1 -1
- package/lib/_chunks-es/TasksFooterOpenTasks.js +59 -1
- package/lib/_chunks-es/TasksFooterOpenTasks.js.map +1 -1
- package/lib/_chunks-es/TasksStudioActiveToolLayout.js +58 -1
- package/lib/_chunks-es/TasksStudioActiveToolLayout.js.map +1 -1
- package/lib/_chunks-es/TasksStudioLayout.js +58 -1
- package/lib/_chunks-es/TasksStudioLayout.js.map +1 -1
- package/lib/_chunks-es/TasksStudioNavbar.js +58 -1
- package/lib/_chunks-es/TasksStudioNavbar.js.map +1 -1
- package/lib/_chunks-es/Tool.js +7 -1
- package/lib/_chunks-es/Tool.js.map +1 -1
- package/lib/_chunks-es/VariantsStudioNavbar.js +58 -1
- package/lib/_chunks-es/VariantsStudioNavbar.js.map +1 -1
- package/lib/_chunks-es/VariantsTool.js +59 -1
- package/lib/_chunks-es/VariantsTool.js.map +1 -1
- package/lib/_chunks-es/index2.js +98 -1
- package/lib/_chunks-es/index2.js.map +1 -1
- package/lib/_chunks-es/index3.js +58 -1
- package/lib/_chunks-es/index3.js.map +1 -1
- package/lib/_chunks-es/index4.js +3 -1
- package/lib/_chunks-es/index4.js.map +1 -1
- package/lib/_chunks-es/index5.js +3 -1
- package/lib/_chunks-es/index5.js.map +1 -1
- package/lib/_chunks-es/index6.js +60 -1
- package/lib/_chunks-es/index6.js.map +1 -1
- package/lib/_chunks-es/index7.js +58 -1
- package/lib/_chunks-es/index7.js.map +1 -1
- package/lib/_chunks-es/index8.js +59 -1
- package/lib/_chunks-es/index8.js.map +1 -1
- package/lib/_chunks-es/index9.js +8 -1
- package/lib/_chunks-es/index9.js.map +1 -1
- package/lib/_chunks-es/inputResolver.js +2 -1
- package/lib/_chunks-es/inputResolver.js.map +1 -1
- package/lib/_chunks-es/presentation.js +7 -1
- package/lib/_chunks-es/presentation.js.map +1 -1
- package/lib/_chunks-es/resources2.js +58 -1
- package/lib/_chunks-es/resources2.js.map +1 -1
- package/lib/_chunks-es/resources3.js +58 -1
- package/lib/_chunks-es/resources3.js.map +1 -1
- package/lib/_chunks-es/resources4.js +58 -1
- package/lib/_chunks-es/resources4.js.map +1 -1
- package/lib/_chunks-es/resources5.js +58 -1
- package/lib/_chunks-es/resources5.js.map +1 -1
- package/lib/_chunks-es/resources6.js +58 -1
- package/lib/_chunks-es/resources6.js.map +1 -1
- package/lib/_chunks-es/resources7.js +58 -1
- package/lib/_chunks-es/resources7.js.map +1 -1
- package/lib/_chunks-es/structureTool.js +47 -1
- package/lib/_chunks-es/structureTool.js.map +1 -1
- package/lib/_chunks-es/version.js +2 -2
- package/lib/desk.js +4 -1
- package/lib/desk.js.map +1 -1
- package/lib/index.js +15 -1
- package/lib/index.js.map +1 -1
- package/lib/structure.js +3 -1
- package/lib/structure.js.map +1 -1
- package/package.json +11 -11
package/lib/_chunks-es/Table.js
CHANGED
|
@@ -8,7 +8,8 @@ import { useState, useContext, useMemo, Fragment } from "react";
|
|
|
8
8
|
import { Button, TooltipDelayGroupProvider } from "./index.js";
|
|
9
9
|
import "react-i18next";
|
|
10
10
|
import { TableContext } from "sanity/_singletons";
|
|
11
|
-
import { ArrowUpIcon
|
|
11
|
+
import { ArrowUpIcon } from "@sanity/icons/ArrowUp";
|
|
12
|
+
import { SearchIcon } from "@sanity/icons/Search";
|
|
12
13
|
import { motion } from "motion/react";
|
|
13
14
|
import { useTranslation } from "./index2.js";
|
|
14
15
|
const emptyCellStyle = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../src/core/releases/tool/components/Table/TableEmptyState.tsx","../../src/core/releases/tool/components/Table/TableProvider.tsx","../../src/core/releases/tool/components/Table/TableHeader.tsx","../../src/core/releases/tool/components/Table/TableLayout.tsx","../../src/core/releases/tool/components/Table/Table.tsx"],"sourcesContent":["import {Card, Text} from '@sanity/ui'\nimport {type ComponentType} from 'react'\n\ninterface TableEmptyStateProps {\n emptyState: string | ComponentType\n colSpan: number\n}\n\nconst emptyCellStyle = {\n textAlign: 'center' as const,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n}\n\nconst emptyRowStyle = {\n justifyContent: 'center',\n alignItems: 'center',\n height: '100%',\n}\n\n/**\n * @internal\n */\nexport const TableEmptyState = ({emptyState, colSpan}: TableEmptyStateProps) => {\n if (typeof emptyState === 'string') {\n return (\n <Card borderBottom display=\"flex\" padding={4} as=\"tr\" style={emptyRowStyle}>\n <td colSpan={colSpan} style={emptyCellStyle}>\n <Text muted size={1}>\n {emptyState}\n </Text>\n </td>\n </Card>\n )\n }\n\n const EmptyStateComponent = emptyState\n return (\n <Card borderBottom display=\"flex\" padding={4} as=\"tr\" style={emptyRowStyle}>\n <td colSpan={colSpan} style={emptyCellStyle}>\n <EmptyStateComponent />\n </td>\n </Card>\n )\n}\n","import {type ComponentType, type PropsWithChildren, useCallback, useContext, useState} from 'react'\nimport {TableContext} from 'sanity/_singletons'\n\nimport {type SortDirection} from './types'\n\nexport interface TableSort {\n column: string\n direction: SortDirection\n}\n\n/**\n * @internal\n */\nexport interface TableContextValue {\n searchTerm: string | null\n setSearchTerm: (searchTerm: string) => void\n sort: TableSort | null\n setSortColumn: (column: string) => void\n}\n\n/**\n * @internal\n */\nexport const TableProvider: ComponentType<PropsWithChildren & {defaultSort?: TableSort}> = ({\n children,\n defaultSort,\n}) => {\n const [searchTerm, setSearchTerm] = useState<string | null>(null)\n const [sort, setSort] = useState<TableSort | null>(defaultSort || null)\n\n const setSortColumn = useCallback((newColumn: string) => {\n setSort((s) => {\n if (s?.column === newColumn) {\n return {...s, direction: s.direction === 'asc' ? 'desc' : 'asc'}\n }\n\n return {column: String(newColumn), direction: 'desc'}\n })\n }, [])\n\n const contextValue = {searchTerm, setSearchTerm, sort, setSortColumn}\n\n return <TableContext.Provider value={contextValue}>{children}</TableContext.Provider>\n}\n\n/**\n * @internal\n */\nexport const useTableContext = (): TableContextValue => {\n const context = useContext(TableContext)\n if (!context) {\n throw new Error('useTableContext must be used within a TableProvider')\n }\n return context\n}\n","import {ArrowUpIcon, SearchIcon} from '@sanity/icons'\nimport {Box, Card, Flex, Stack, Text, TextInput} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {type CSSProperties, useMemo} from 'react'\n\nimport {Button, type ButtonProps} from '../../../../../ui-components'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useTableContext} from './TableProvider'\nimport {type HeaderProps, type TableHeaderProps} from './types'\n\nconst MotionIcon = motion.create(ArrowUpIcon)\n\nconst BasicHeader = ({text}: {text: string}) => (\n <Box padding={2}>\n <Text muted size={1} weight=\"medium\">\n {text}\n </Text>\n </Box>\n)\n\nconst SortHeaderButton = ({\n header,\n text,\n}: Omit<ButtonProps, 'text'> &\n HeaderProps & {\n text: string\n }) => {\n const {sort, setSortColumn} = useTableContext()\n const sortIcon = useMemo(\n () => (\n <MotionIcon\n initial={false}\n animate={{rotate: sort?.direction === 'asc' ? 0 : 180}}\n transition={{duration: 0.25, ease: 'easeInOut'}}\n />\n ),\n [sort?.direction],\n )\n\n return (\n <Button\n iconRight={header.sorting && sort?.column === header.id ? sortIcon : undefined}\n onClick={() => setSortColumn(String(header.id))}\n mode=\"bleed\"\n size=\"default\"\n text={text}\n />\n )\n}\n\nconst TableHeaderSearch = ({\n headerProps,\n searchDisabled,\n placeholder,\n}: HeaderProps & {placeholder?: string}) => {\n const {t} = useTranslation()\n const {setSearchTerm, searchTerm} = useTableContext()\n\n return (\n <Stack {...headerProps} flex={1} paddingY={2} paddingRight={3} sizing=\"border\">\n <TextInput\n border={false}\n fontSize={1}\n icon={SearchIcon}\n placeholder={placeholder || t('search.placeholder')}\n radius={3}\n value={searchTerm || ''}\n disabled={searchDisabled}\n onChange={(event) => setSearchTerm(event.currentTarget.value)}\n onClear={() => setSearchTerm('')}\n clearButton={!!searchTerm}\n />\n </Stack>\n )\n}\n\nconst STICKY_HEADER_STYLE: CSSProperties = {position: 'sticky', top: 0, zIndex: 1}\n\n/**\n *\n * @internal\n */\nexport const TableHeader = ({headers, searchDisabled}: TableHeaderProps) => {\n return (\n <Card as=\"thead\" borderBottom style={STICKY_HEADER_STYLE}>\n <Flex\n as=\"tr\"\n style={{\n paddingInline: `max(\n calc((100% - var(--maxInlineSize)) / 2),\n var(--paddingInline)\n )`,\n }}\n >\n {headers.map(\n ({header: Header, style, width, id, sorting}) =>\n !!Header && (\n <Header\n key={String(id)}\n headerProps={{\n as: 'th',\n id: String(id),\n style: {...style, width: width || undefined},\n }}\n header={{id, sorting}}\n searchDisabled={searchDisabled}\n />\n ),\n )}\n </Flex>\n </Card>\n )\n}\n\nexport const Headers = {\n SortHeaderButton,\n TableHeaderSearch,\n BasicHeader,\n}\n","import {type CSSProperties, type ReactNode, useMemo} from 'react'\n\ninterface TableLayoutProps {\n isEmptyState: boolean\n header: ReactNode\n content: ReactNode\n contentHeight?: string\n}\n\nconst emptyTableStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n display: 'grid',\n gridTemplateRows: 'auto 1fr',\n}\n\nconst defaultTableStyle: CSSProperties = {\n width: '100%',\n}\n\n/**\n * @internal\n */\nexport const TableLayout = ({isEmptyState, header, content, contentHeight}: TableLayoutProps) => {\n const tbodyStyle = useMemo<CSSProperties>(\n () =>\n isEmptyState\n ? {height: '100%', position: 'relative', overflow: 'hidden'}\n : {height: contentHeight, position: 'relative'},\n [isEmptyState, contentHeight],\n )\n\n return (\n <div style={{height: '100%'}}>\n <table style={isEmptyState ? emptyTableStyle : defaultTableStyle}>\n {header}\n <tbody style={tbodyStyle}>{content}</tbody>\n </table>\n </div>\n )\n}\n","import {Box, Card, type CardProps, Flex, rem, Text, useTheme} from '@sanity/ui'\nimport {useVirtualizer, type VirtualItem} from '@tanstack/react-virtual'\nimport {isValid} from 'date-fns/isValid'\nimport get from 'lodash-es/get.js'\nimport {type CSSProperties, type ElementType, Fragment, useMemo} from 'react'\n\nimport {TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {TableEmptyState} from './TableEmptyState'\nimport {TableHeader} from './TableHeader'\nimport {TableLayout} from './TableLayout'\nimport {TableProvider, type TableSort, useTableContext} from './TableProvider'\nimport {type Column} from './types'\n\ntype RowDatum<TableData, AdditionalRowTableData> = (AdditionalRowTableData extends undefined\n ? TableData\n : TableData & AdditionalRowTableData) & {isLoading?: boolean}\n\nexport type TableRowProps = CardProps<ElementType>\n\ntype VirtualDatum = {\n virtualRow: VirtualItem\n index: number\n isFirst: boolean\n isLast: boolean\n}\n\nexport interface TableProps<TableData, AdditionalRowTableData> {\n columnDefs: Column<RowDatum<TableData, AdditionalRowTableData>>[]\n searchFilter?: (data: TableData[], searchTerm: string) => TableData[]\n data: TableData[]\n emptyState: (() => React.JSX.Element) | string\n loading?: boolean\n /**\n * Should be the dot separated path to the unique identifier of the row. e.g. document._id\n */\n rowId: string\n rowActions?: ({\n datum,\n }: {\n datum: RowDatum<TableData, AdditionalRowTableData> | unknown\n }) => React.ReactNode\n rowProps?: (datum: TableData) => Partial<TableRowProps>\n scrollContainerRef: HTMLDivElement | null\n hideTableInlinePadding?: boolean\n}\n\nconst ITEM_HEIGHT = 59\nconst LOADING_ROW_COUNT = 3\n\n// oxlint-disable-next-line react/react-compiler\nconst TableInner = <TableData, AdditionalRowTableData>({\n columnDefs,\n data,\n emptyState,\n searchFilter,\n rowId,\n rowActions,\n loading = false,\n rowProps = () => ({}),\n scrollContainerRef,\n hideTableInlinePadding = false,\n}: TableProps<TableData, AdditionalRowTableData>) => {\n const {searchTerm, sort} = useTableContext()\n\n const filteredData = useMemo(() => {\n const filteredResult = searchFilter ? searchFilter(data, searchTerm || '') : data\n if (!sort) return filteredResult\n\n const sortColumn = columnDefs.find((column) => column.id === sort.column)\n return [...filteredResult].sort((a, b) => {\n let order: number\n\n const [aValue, bValue]: (number | string)[] = [a, b].map(\n (sortValue) =>\n sortColumn?.sortTransform?.(\n sortValue as RowDatum<TableData, AdditionalRowTableData>,\n sort.direction,\n ) ?? get(sortValue, sort.column),\n )\n if (\n typeof aValue === 'string' &&\n typeof bValue === 'string' &&\n !isValid(aValue) &&\n !isValid(bValue)\n ) {\n order = aValue.toLowerCase().localeCompare(bValue.toLowerCase())\n } else {\n const parseDate = (datum: number | string) => {\n if (sortColumn?.sortTransform && typeof datum === 'number') return datum\n\n return typeof datum === 'string' ? Date.parse(datum) : 0\n }\n\n const [aDate, bDate] = [aValue, bValue].map(parseDate)\n\n order = aDate - bDate\n }\n\n if (sort.direction === 'asc') return order\n return -order\n })\n }, [columnDefs, data, searchFilter, searchTerm, sort])\n\n const rowVirtualizer = useVirtualizer({\n count: filteredData.length,\n getScrollElement: () => scrollContainerRef,\n estimateSize: () => ITEM_HEIGHT,\n overscan: 5,\n })\n\n const rowActionColumnDef: Column = useMemo(\n () => ({\n id: 'actions',\n sorting: false,\n width: 50,\n header: ({headerProps: {id}}) => (\n <Flex as=\"th\" id={id} paddingY={3} paddingX={3} sizing=\"border\" style={{width: '50px'}}>\n <Text muted size={1} weight=\"medium\">\n \n </Text>\n </Flex>\n ),\n cell: ({datum, cellProps: {id}}) => (\n <Flex as=\"td\" id={id} align=\"center\" flex=\"none\" padding={3} style={{width: '25px'}}>\n {(!datum.isLoading && rowActions?.({datum})) || <Box style={{width: '25px'}} />}\n </Flex>\n ),\n }),\n [rowActions],\n )\n\n const amalgamatedColumnDefs = useMemo(\n () =>\n (rowActions ? [...columnDefs, rowActionColumnDef] : columnDefs).filter(\n (column) => !column.hidden,\n ),\n [columnDefs, rowActionColumnDef, rowActions],\n )\n\n const tableMinWidth = useMemo(\n () => amalgamatedColumnDefs.reduce((sum, col) => sum + (col.width || 200), 0),\n [amalgamatedColumnDefs],\n )\n\n const renderRow = useMemo(\n () =>\n function TableRow(\n datum: VirtualDatum &\n (TableData | (TableData & AdditionalRowTableData) | {_id: string; isLoading: boolean}),\n ) {\n const cardRowProps = rowProps(datum as TableData)\n const cardKey = loading ? `skeleton-${datum.index}` : String(get(datum, rowId))\n\n return (\n <Card\n key={cardKey}\n data-testid={loading ? 'table-row-skeleton' : 'table-row'}\n borderBottom\n display=\"flex\"\n data-index={datum.index}\n as=\"tr\"\n style={{\n height: `${datum.virtualRow.size}px`,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n transform: `translateY(${datum.virtualRow.start}px)`,\n paddingInline: `max(\n calc((100% - var(--maxInlineSize)) / 2),\n var(--paddingInline)\n )`,\n }}\n {...cardRowProps}\n >\n {amalgamatedColumnDefs.map(({cell: Cell, style, width, id, sorting = false}) => (\n <Fragment key={String(id)}>\n <Cell\n datum={\n {...datum, isLoading: loading} as RowDatum<TableData, AdditionalRowTableData>\n }\n cellProps={{\n as: 'td',\n id: String(id),\n style: {...style, width: width || undefined},\n }}\n sorting={sorting}\n />\n </Fragment>\n ))}\n </Card>\n )\n },\n [amalgamatedColumnDefs, loading, rowId, rowProps],\n )\n\n const emptyContent = useMemo(\n () => <TableEmptyState emptyState={emptyState} colSpan={amalgamatedColumnDefs.length} />,\n [amalgamatedColumnDefs.length, emptyState],\n )\n\n const headers = useMemo(\n () =>\n amalgamatedColumnDefs.map(({cell, sortTransform, ...header}) => ({\n ...header,\n id: String(header.id),\n })),\n [amalgamatedColumnDefs],\n )\n\n const theme = useTheme()\n\n const maxInlineSize = (!hideTableInlinePadding && theme.sanity.v2?.container[3]) || 0\n\n const renderLoadingRows = (\n rowRenderer: (\n datum: VirtualDatum &\n ({_id: string; isLoading: boolean} | TableData | (TableData & AdditionalRowTableData)),\n ) => React.ReactNode,\n ) => {\n return Array.from({length: LOADING_ROW_COUNT}).map((_el, index) => {\n const cardKey = `skeleton-${index}`\n const virtualRow: VirtualItem = {\n index,\n start: index * ITEM_HEIGHT,\n size: ITEM_HEIGHT,\n lane: 0,\n key: cardKey,\n end: index * ITEM_HEIGHT + ITEM_HEIGHT,\n }\n\n return rowRenderer({\n _id: cardKey,\n isLoading: true,\n virtualRow,\n index,\n isFirst: index === 0,\n isLast: index === LOADING_ROW_COUNT - 1,\n })\n })\n }\n\n const tableContent = () => {\n if (loading) {\n return renderLoadingRows(renderRow)\n }\n\n if (filteredData.length === 0) {\n return emptyContent\n }\n\n return rowVirtualizer.getVirtualItems().map((virtualRow, index) => {\n const datum = filteredData[virtualRow.index]\n return renderRow({\n ...datum,\n virtualRow,\n index,\n isFirst: virtualRow.index === 0,\n isLast: virtualRow.index === filteredData.length - 1,\n })\n })\n }\n\n return (\n <div style={{height: '100%'}}>\n <div\n style={\n {\n 'width': '100%',\n 'minWidth': `${tableMinWidth}px`,\n 'height': '100%',\n 'position': 'relative',\n '--maxInlineSize': rem(maxInlineSize),\n '--paddingInline': rem(theme.sanity.v2?.space[3] ?? 0),\n } as CSSProperties\n }\n >\n <TableLayout\n isEmptyState={filteredData.length === 0 && !loading}\n header={\n <TableHeader\n headers={headers}\n searchDisabled={loading || (!searchTerm && !data.length)}\n />\n }\n content={tableContent()}\n contentHeight={`${rowVirtualizer.getTotalSize()}px`}\n />\n </div>\n </div>\n )\n}\n\nexport const Table = <TableData, AdditionalRowTableData = undefined>({\n defaultSort,\n ...props\n}: TableProps<TableData, AdditionalRowTableData> & {defaultSort?: TableSort}) => {\n return (\n <TooltipDelayGroupProvider>\n <TableProvider defaultSort={defaultSort}>\n <TableInner<TableData, AdditionalRowTableData> {...props} />\n </TableProvider>\n </TooltipDelayGroupProvider>\n )\n}\n"],"names":["emptyCellStyle","textAlign","height","display","alignItems","justifyContent","emptyRowStyle","TableEmptyState","t0","$","_c","emptyState","colSpan","t1","t2","EmptyStateComponent","TableProvider","children","defaultSort","searchTerm","setSearchTerm","useState","sort","setSort","Symbol","for","newColumn","s","column","direction","String","setSortColumn","contextValue","t3","useTableContext","context","useContext","TableContext","Error","MotionIcon","motion","create","ArrowUpIcon","BasicHeader","text","SortHeaderButton","header","rotate","duration","ease","t4","sortIcon","t5","sorting","id","undefined","t6","t7","TableHeaderSearch","headerProps","searchDisabled","placeholder","t","useTranslation","event","currentTarget","value","SearchIcon","STICKY_HEADER_STYLE","position","top","zIndex","TableHeader","headers","paddingInline","Header","style","width","as","map","Headers","emptyTableStyle","gridTemplateRows","defaultTableStyle","TableLayout","isEmptyState","content","contentHeight","overflow","tbodyStyle","ITEM_HEIGHT","LOADING_ROW_COUNT","TableInner","columnDefs","data","searchFilter","rowId","rowActions","loading","rowProps","scrollContainerRef","hideTableInlinePadding","filteredData","useMemo","filteredResult","sortColumn","find","a","b","order","aValue","bValue","sortValue","sortTransform","get","isValid","toLowerCase","localeCompare","parseDate","datum","Date","parse","aDate","bDate","rowVirtualizer","useVirtualizer","count","length","getScrollElement","estimateSize","overscan","rowActionColumnDef","cell","cellProps","isLoading","amalgamatedColumnDefs","filter","hidden","tableMinWidth","reduce","sum","col","renderRow","cardRowProps","cardKey","index","virtualRow","size","left","right","transform","start","Cell","emptyContent","theme","useTheme","maxInlineSize","sanity","v2","container","renderLoadingRows","rowRenderer","Array","from","_el","lane","key","end","_id","isFirst","isLast","tableContent","getVirtualItems","rem","space","getTotalSize","Table","props"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../src/core/releases/tool/components/Table/TableEmptyState.tsx","../../src/core/releases/tool/components/Table/TableProvider.tsx","../../src/core/releases/tool/components/Table/TableHeader.tsx","../../src/core/releases/tool/components/Table/TableLayout.tsx","../../src/core/releases/tool/components/Table/Table.tsx"],"sourcesContent":["import {Card, Text} from '@sanity/ui'\nimport {type ComponentType} from 'react'\n\ninterface TableEmptyStateProps {\n emptyState: string | ComponentType\n colSpan: number\n}\n\nconst emptyCellStyle = {\n textAlign: 'center' as const,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n}\n\nconst emptyRowStyle = {\n justifyContent: 'center',\n alignItems: 'center',\n height: '100%',\n}\n\n/**\n * @internal\n */\nexport const TableEmptyState = ({emptyState, colSpan}: TableEmptyStateProps) => {\n if (typeof emptyState === 'string') {\n return (\n <Card borderBottom display=\"flex\" padding={4} as=\"tr\" style={emptyRowStyle}>\n <td colSpan={colSpan} style={emptyCellStyle}>\n <Text muted size={1}>\n {emptyState}\n </Text>\n </td>\n </Card>\n )\n }\n\n const EmptyStateComponent = emptyState\n return (\n <Card borderBottom display=\"flex\" padding={4} as=\"tr\" style={emptyRowStyle}>\n <td colSpan={colSpan} style={emptyCellStyle}>\n <EmptyStateComponent />\n </td>\n </Card>\n )\n}\n","import {type ComponentType, type PropsWithChildren, useCallback, useContext, useState} from 'react'\nimport {TableContext} from 'sanity/_singletons'\n\nimport {type SortDirection} from './types'\n\nexport interface TableSort {\n column: string\n direction: SortDirection\n}\n\n/**\n * @internal\n */\nexport interface TableContextValue {\n searchTerm: string | null\n setSearchTerm: (searchTerm: string) => void\n sort: TableSort | null\n setSortColumn: (column: string) => void\n}\n\n/**\n * @internal\n */\nexport const TableProvider: ComponentType<PropsWithChildren & {defaultSort?: TableSort}> = ({\n children,\n defaultSort,\n}) => {\n const [searchTerm, setSearchTerm] = useState<string | null>(null)\n const [sort, setSort] = useState<TableSort | null>(defaultSort || null)\n\n const setSortColumn = useCallback((newColumn: string) => {\n setSort((s) => {\n if (s?.column === newColumn) {\n return {...s, direction: s.direction === 'asc' ? 'desc' : 'asc'}\n }\n\n return {column: String(newColumn), direction: 'desc'}\n })\n }, [])\n\n const contextValue = {searchTerm, setSearchTerm, sort, setSortColumn}\n\n return <TableContext.Provider value={contextValue}>{children}</TableContext.Provider>\n}\n\n/**\n * @internal\n */\nexport const useTableContext = (): TableContextValue => {\n const context = useContext(TableContext)\n if (!context) {\n throw new Error('useTableContext must be used within a TableProvider')\n }\n return context\n}\n","import {ArrowUpIcon} from '@sanity/icons/ArrowUp'\nimport {SearchIcon} from '@sanity/icons/Search'\nimport {Box, Card, Flex, Stack, Text, TextInput} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {type CSSProperties, useMemo} from 'react'\n\nimport {Button, type ButtonProps} from '../../../../../ui-components'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useTableContext} from './TableProvider'\nimport {type HeaderProps, type TableHeaderProps} from './types'\n\nconst MotionIcon = motion.create(ArrowUpIcon)\n\nconst BasicHeader = ({text}: {text: string}) => (\n <Box padding={2}>\n <Text muted size={1} weight=\"medium\">\n {text}\n </Text>\n </Box>\n)\n\nconst SortHeaderButton = ({\n header,\n text,\n}: Omit<ButtonProps, 'text'> &\n HeaderProps & {\n text: string\n }) => {\n const {sort, setSortColumn} = useTableContext()\n const sortIcon = useMemo(\n () => (\n <MotionIcon\n initial={false}\n animate={{rotate: sort?.direction === 'asc' ? 0 : 180}}\n transition={{duration: 0.25, ease: 'easeInOut'}}\n />\n ),\n [sort?.direction],\n )\n\n return (\n <Button\n iconRight={header.sorting && sort?.column === header.id ? sortIcon : undefined}\n onClick={() => setSortColumn(String(header.id))}\n mode=\"bleed\"\n size=\"default\"\n text={text}\n />\n )\n}\n\nconst TableHeaderSearch = ({\n headerProps,\n searchDisabled,\n placeholder,\n}: HeaderProps & {placeholder?: string}) => {\n const {t} = useTranslation()\n const {setSearchTerm, searchTerm} = useTableContext()\n\n return (\n <Stack {...headerProps} flex={1} paddingY={2} paddingRight={3} sizing=\"border\">\n <TextInput\n border={false}\n fontSize={1}\n icon={SearchIcon}\n placeholder={placeholder || t('search.placeholder')}\n radius={3}\n value={searchTerm || ''}\n disabled={searchDisabled}\n onChange={(event) => setSearchTerm(event.currentTarget.value)}\n onClear={() => setSearchTerm('')}\n clearButton={!!searchTerm}\n />\n </Stack>\n )\n}\n\nconst STICKY_HEADER_STYLE: CSSProperties = {position: 'sticky', top: 0, zIndex: 1}\n\n/**\n *\n * @internal\n */\nexport const TableHeader = ({headers, searchDisabled}: TableHeaderProps) => {\n return (\n <Card as=\"thead\" borderBottom style={STICKY_HEADER_STYLE}>\n <Flex\n as=\"tr\"\n style={{\n paddingInline: `max(\n calc((100% - var(--maxInlineSize)) / 2),\n var(--paddingInline)\n )`,\n }}\n >\n {headers.map(\n ({header: Header, style, width, id, sorting}) =>\n !!Header && (\n <Header\n key={String(id)}\n headerProps={{\n as: 'th',\n id: String(id),\n style: {...style, width: width || undefined},\n }}\n header={{id, sorting}}\n searchDisabled={searchDisabled}\n />\n ),\n )}\n </Flex>\n </Card>\n )\n}\n\nexport const Headers = {\n SortHeaderButton,\n TableHeaderSearch,\n BasicHeader,\n}\n","import {type CSSProperties, type ReactNode, useMemo} from 'react'\n\ninterface TableLayoutProps {\n isEmptyState: boolean\n header: ReactNode\n content: ReactNode\n contentHeight?: string\n}\n\nconst emptyTableStyle: CSSProperties = {\n width: '100%',\n height: '100%',\n display: 'grid',\n gridTemplateRows: 'auto 1fr',\n}\n\nconst defaultTableStyle: CSSProperties = {\n width: '100%',\n}\n\n/**\n * @internal\n */\nexport const TableLayout = ({isEmptyState, header, content, contentHeight}: TableLayoutProps) => {\n const tbodyStyle = useMemo<CSSProperties>(\n () =>\n isEmptyState\n ? {height: '100%', position: 'relative', overflow: 'hidden'}\n : {height: contentHeight, position: 'relative'},\n [isEmptyState, contentHeight],\n )\n\n return (\n <div style={{height: '100%'}}>\n <table style={isEmptyState ? emptyTableStyle : defaultTableStyle}>\n {header}\n <tbody style={tbodyStyle}>{content}</tbody>\n </table>\n </div>\n )\n}\n","import {Box, Card, type CardProps, Flex, rem, Text, useTheme} from '@sanity/ui'\nimport {useVirtualizer, type VirtualItem} from '@tanstack/react-virtual'\nimport {isValid} from 'date-fns/isValid'\nimport get from 'lodash-es/get.js'\nimport {type CSSProperties, type ElementType, Fragment, useMemo} from 'react'\n\nimport {TooltipDelayGroupProvider} from '../../../../../ui-components'\nimport {TableEmptyState} from './TableEmptyState'\nimport {TableHeader} from './TableHeader'\nimport {TableLayout} from './TableLayout'\nimport {TableProvider, type TableSort, useTableContext} from './TableProvider'\nimport {type Column} from './types'\n\ntype RowDatum<TableData, AdditionalRowTableData> = (AdditionalRowTableData extends undefined\n ? TableData\n : TableData & AdditionalRowTableData) & {isLoading?: boolean}\n\nexport type TableRowProps = CardProps<ElementType>\n\ntype VirtualDatum = {\n virtualRow: VirtualItem\n index: number\n isFirst: boolean\n isLast: boolean\n}\n\nexport interface TableProps<TableData, AdditionalRowTableData> {\n columnDefs: Column<RowDatum<TableData, AdditionalRowTableData>>[]\n searchFilter?: (data: TableData[], searchTerm: string) => TableData[]\n data: TableData[]\n emptyState: (() => React.JSX.Element) | string\n loading?: boolean\n /**\n * Should be the dot separated path to the unique identifier of the row. e.g. document._id\n */\n rowId: string\n rowActions?: ({\n datum,\n }: {\n datum: RowDatum<TableData, AdditionalRowTableData> | unknown\n }) => React.ReactNode\n rowProps?: (datum: TableData) => Partial<TableRowProps>\n scrollContainerRef: HTMLDivElement | null\n hideTableInlinePadding?: boolean\n}\n\nconst ITEM_HEIGHT = 59\nconst LOADING_ROW_COUNT = 3\n\n// oxlint-disable-next-line react/react-compiler\nconst TableInner = <TableData, AdditionalRowTableData>({\n columnDefs,\n data,\n emptyState,\n searchFilter,\n rowId,\n rowActions,\n loading = false,\n rowProps = () => ({}),\n scrollContainerRef,\n hideTableInlinePadding = false,\n}: TableProps<TableData, AdditionalRowTableData>) => {\n const {searchTerm, sort} = useTableContext()\n\n const filteredData = useMemo(() => {\n const filteredResult = searchFilter ? searchFilter(data, searchTerm || '') : data\n if (!sort) return filteredResult\n\n const sortColumn = columnDefs.find((column) => column.id === sort.column)\n return [...filteredResult].sort((a, b) => {\n let order: number\n\n const [aValue, bValue]: (number | string)[] = [a, b].map(\n (sortValue) =>\n sortColumn?.sortTransform?.(\n sortValue as RowDatum<TableData, AdditionalRowTableData>,\n sort.direction,\n ) ?? get(sortValue, sort.column),\n )\n if (\n typeof aValue === 'string' &&\n typeof bValue === 'string' &&\n !isValid(aValue) &&\n !isValid(bValue)\n ) {\n order = aValue.toLowerCase().localeCompare(bValue.toLowerCase())\n } else {\n const parseDate = (datum: number | string) => {\n if (sortColumn?.sortTransform && typeof datum === 'number') return datum\n\n return typeof datum === 'string' ? Date.parse(datum) : 0\n }\n\n const [aDate, bDate] = [aValue, bValue].map(parseDate)\n\n order = aDate - bDate\n }\n\n if (sort.direction === 'asc') return order\n return -order\n })\n }, [columnDefs, data, searchFilter, searchTerm, sort])\n\n const rowVirtualizer = useVirtualizer({\n count: filteredData.length,\n getScrollElement: () => scrollContainerRef,\n estimateSize: () => ITEM_HEIGHT,\n overscan: 5,\n })\n\n const rowActionColumnDef: Column = useMemo(\n () => ({\n id: 'actions',\n sorting: false,\n width: 50,\n header: ({headerProps: {id}}) => (\n <Flex as=\"th\" id={id} paddingY={3} paddingX={3} sizing=\"border\" style={{width: '50px'}}>\n <Text muted size={1} weight=\"medium\">\n \n </Text>\n </Flex>\n ),\n cell: ({datum, cellProps: {id}}) => (\n <Flex as=\"td\" id={id} align=\"center\" flex=\"none\" padding={3} style={{width: '25px'}}>\n {(!datum.isLoading && rowActions?.({datum})) || <Box style={{width: '25px'}} />}\n </Flex>\n ),\n }),\n [rowActions],\n )\n\n const amalgamatedColumnDefs = useMemo(\n () =>\n (rowActions ? [...columnDefs, rowActionColumnDef] : columnDefs).filter(\n (column) => !column.hidden,\n ),\n [columnDefs, rowActionColumnDef, rowActions],\n )\n\n const tableMinWidth = useMemo(\n () => amalgamatedColumnDefs.reduce((sum, col) => sum + (col.width || 200), 0),\n [amalgamatedColumnDefs],\n )\n\n const renderRow = useMemo(\n () =>\n function TableRow(\n datum: VirtualDatum &\n (TableData | (TableData & AdditionalRowTableData) | {_id: string; isLoading: boolean}),\n ) {\n const cardRowProps = rowProps(datum as TableData)\n const cardKey = loading ? `skeleton-${datum.index}` : String(get(datum, rowId))\n\n return (\n <Card\n key={cardKey}\n data-testid={loading ? 'table-row-skeleton' : 'table-row'}\n borderBottom\n display=\"flex\"\n data-index={datum.index}\n as=\"tr\"\n style={{\n height: `${datum.virtualRow.size}px`,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n transform: `translateY(${datum.virtualRow.start}px)`,\n paddingInline: `max(\n calc((100% - var(--maxInlineSize)) / 2),\n var(--paddingInline)\n )`,\n }}\n {...cardRowProps}\n >\n {amalgamatedColumnDefs.map(({cell: Cell, style, width, id, sorting = false}) => (\n <Fragment key={String(id)}>\n <Cell\n datum={\n {...datum, isLoading: loading} as RowDatum<TableData, AdditionalRowTableData>\n }\n cellProps={{\n as: 'td',\n id: String(id),\n style: {...style, width: width || undefined},\n }}\n sorting={sorting}\n />\n </Fragment>\n ))}\n </Card>\n )\n },\n [amalgamatedColumnDefs, loading, rowId, rowProps],\n )\n\n const emptyContent = useMemo(\n () => <TableEmptyState emptyState={emptyState} colSpan={amalgamatedColumnDefs.length} />,\n [amalgamatedColumnDefs.length, emptyState],\n )\n\n const headers = useMemo(\n () =>\n amalgamatedColumnDefs.map(({cell, sortTransform, ...header}) => ({\n ...header,\n id: String(header.id),\n })),\n [amalgamatedColumnDefs],\n )\n\n const theme = useTheme()\n\n const maxInlineSize = (!hideTableInlinePadding && theme.sanity.v2?.container[3]) || 0\n\n const renderLoadingRows = (\n rowRenderer: (\n datum: VirtualDatum &\n ({_id: string; isLoading: boolean} | TableData | (TableData & AdditionalRowTableData)),\n ) => React.ReactNode,\n ) => {\n return Array.from({length: LOADING_ROW_COUNT}).map((_el, index) => {\n const cardKey = `skeleton-${index}`\n const virtualRow: VirtualItem = {\n index,\n start: index * ITEM_HEIGHT,\n size: ITEM_HEIGHT,\n lane: 0,\n key: cardKey,\n end: index * ITEM_HEIGHT + ITEM_HEIGHT,\n }\n\n return rowRenderer({\n _id: cardKey,\n isLoading: true,\n virtualRow,\n index,\n isFirst: index === 0,\n isLast: index === LOADING_ROW_COUNT - 1,\n })\n })\n }\n\n const tableContent = () => {\n if (loading) {\n return renderLoadingRows(renderRow)\n }\n\n if (filteredData.length === 0) {\n return emptyContent\n }\n\n return rowVirtualizer.getVirtualItems().map((virtualRow, index) => {\n const datum = filteredData[virtualRow.index]\n return renderRow({\n ...datum,\n virtualRow,\n index,\n isFirst: virtualRow.index === 0,\n isLast: virtualRow.index === filteredData.length - 1,\n })\n })\n }\n\n return (\n <div style={{height: '100%'}}>\n <div\n style={\n {\n 'width': '100%',\n 'minWidth': `${tableMinWidth}px`,\n 'height': '100%',\n 'position': 'relative',\n '--maxInlineSize': rem(maxInlineSize),\n '--paddingInline': rem(theme.sanity.v2?.space[3] ?? 0),\n } as CSSProperties\n }\n >\n <TableLayout\n isEmptyState={filteredData.length === 0 && !loading}\n header={\n <TableHeader\n headers={headers}\n searchDisabled={loading || (!searchTerm && !data.length)}\n />\n }\n content={tableContent()}\n contentHeight={`${rowVirtualizer.getTotalSize()}px`}\n />\n </div>\n </div>\n )\n}\n\nexport const Table = <TableData, AdditionalRowTableData = undefined>({\n defaultSort,\n ...props\n}: TableProps<TableData, AdditionalRowTableData> & {defaultSort?: TableSort}) => {\n return (\n <TooltipDelayGroupProvider>\n <TableProvider defaultSort={defaultSort}>\n <TableInner<TableData, AdditionalRowTableData> {...props} />\n </TableProvider>\n </TooltipDelayGroupProvider>\n )\n}\n"],"names":["emptyCellStyle","textAlign","height","display","alignItems","justifyContent","emptyRowStyle","TableEmptyState","t0","$","_c","emptyState","colSpan","t1","t2","EmptyStateComponent","TableProvider","children","defaultSort","searchTerm","setSearchTerm","useState","sort","setSort","Symbol","for","newColumn","s","column","direction","String","setSortColumn","contextValue","t3","useTableContext","context","useContext","TableContext","Error","MotionIcon","motion","create","ArrowUpIcon","BasicHeader","text","SortHeaderButton","header","rotate","duration","ease","t4","sortIcon","t5","sorting","id","undefined","t6","t7","TableHeaderSearch","headerProps","searchDisabled","placeholder","t","useTranslation","event","currentTarget","value","SearchIcon","STICKY_HEADER_STYLE","position","top","zIndex","TableHeader","headers","paddingInline","Header","style","width","as","map","Headers","emptyTableStyle","gridTemplateRows","defaultTableStyle","TableLayout","isEmptyState","content","contentHeight","overflow","tbodyStyle","ITEM_HEIGHT","LOADING_ROW_COUNT","TableInner","columnDefs","data","searchFilter","rowId","rowActions","loading","rowProps","scrollContainerRef","hideTableInlinePadding","filteredData","useMemo","filteredResult","sortColumn","find","a","b","order","aValue","bValue","sortValue","sortTransform","get","isValid","toLowerCase","localeCompare","parseDate","datum","Date","parse","aDate","bDate","rowVirtualizer","useVirtualizer","count","length","getScrollElement","estimateSize","overscan","rowActionColumnDef","cell","cellProps","isLoading","amalgamatedColumnDefs","filter","hidden","tableMinWidth","reduce","sum","col","renderRow","cardRowProps","cardKey","index","virtualRow","size","left","right","transform","start","Cell","emptyContent","theme","useTheme","maxInlineSize","sanity","v2","container","renderLoadingRows","rowRenderer","Array","from","_el","lane","key","end","_id","isFirst","isLast","tableContent","getVirtualItems","rem","space","getTotalSize","Table","props"],"mappings":"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"}
|
|
@@ -11,20 +11,25 @@ import "lodash-es/throttle.js";
|
|
|
11
11
|
import "lodash-es/isEqual.js";
|
|
12
12
|
import { IsLastPaneContext } from "sanity/_singletons";
|
|
13
13
|
import "history";
|
|
14
|
-
import "@sanity/icons";
|
|
14
|
+
import "@sanity/icons/Document";
|
|
15
|
+
import "@sanity/icons/Image";
|
|
15
16
|
import "@sanity/uuid";
|
|
16
17
|
import "@sanity/ui";
|
|
17
18
|
import "@sanity/color";
|
|
18
19
|
import "color2k";
|
|
19
20
|
import "styled-components";
|
|
20
21
|
import "lodash-es/isString.js";
|
|
22
|
+
import "@sanity/icons/Copy";
|
|
21
23
|
import "react-i18next";
|
|
24
|
+
import "@sanity/icons/Clipboard";
|
|
22
25
|
import "./createAgentBundlesStore.js";
|
|
23
26
|
import "@sanity/telemetry/react";
|
|
24
27
|
import "@portabletext/editor";
|
|
25
28
|
import "@sanity/util/paths";
|
|
26
29
|
import "./index.js";
|
|
27
30
|
import "@sanity/types";
|
|
31
|
+
import "@sanity/icons/ChevronRight";
|
|
32
|
+
import "@sanity/icons/Revert";
|
|
28
33
|
import "@sanity/diff-match-patch";
|
|
29
34
|
import "lodash-es/flatten.js";
|
|
30
35
|
import "lodash-es/orderBy.js";
|
|
@@ -32,18 +37,29 @@ import "lodash-es/uniq.js";
|
|
|
32
37
|
import "lodash-es/xor.js";
|
|
33
38
|
import "@sanity/diff-patch";
|
|
34
39
|
import "./version.js";
|
|
40
|
+
import "@sanity/icons/ErrorOutline";
|
|
35
41
|
import "@sanity/id-utils";
|
|
36
42
|
import "sanity/router";
|
|
43
|
+
import "@sanity/icons/ChevronDown";
|
|
44
|
+
import "@sanity/icons/InfoOutline";
|
|
37
45
|
import "date-fns/addHours";
|
|
38
46
|
import "date-fns/startOfHour";
|
|
47
|
+
import "@sanity/icons/Bolt";
|
|
48
|
+
import "@sanity/icons/Clock";
|
|
49
|
+
import "@sanity/icons/Dot";
|
|
50
|
+
import "@sanity/icons/EarthGlobe";
|
|
39
51
|
import "date-fns/format";
|
|
40
52
|
import "date-fns/isValid";
|
|
41
53
|
import "date-fns/parse";
|
|
42
54
|
import "@sanity/util/legacyDateFormat";
|
|
55
|
+
import "@sanity/icons/Search";
|
|
43
56
|
import "@sanity/ui/theme";
|
|
57
|
+
import "@sanity/icons/Sync";
|
|
44
58
|
import "lodash-es/pick.js";
|
|
45
59
|
import "react-fast-compare";
|
|
60
|
+
import "@sanity/icons/AccessDenied";
|
|
46
61
|
import "lodash-es/startCase.js";
|
|
62
|
+
import "@sanity/icons/Close";
|
|
47
63
|
import "react-focus-lock";
|
|
48
64
|
import "lodash-es/debounce.js";
|
|
49
65
|
import "date-fns/differenceInDays";
|
|
@@ -53,8 +69,19 @@ import "date-fns/differenceInMonths";
|
|
|
53
69
|
import "date-fns/differenceInSeconds";
|
|
54
70
|
import "date-fns/differenceInWeeks";
|
|
55
71
|
import "date-fns/differenceInYears";
|
|
72
|
+
import "@sanity/icons/AddCircle";
|
|
73
|
+
import "@sanity/icons/Calendar";
|
|
74
|
+
import "@sanity/icons/Circle";
|
|
75
|
+
import "@sanity/icons/Edit";
|
|
76
|
+
import "@sanity/icons/Publish";
|
|
77
|
+
import "@sanity/icons/Timeline";
|
|
78
|
+
import "@sanity/icons/Trash";
|
|
79
|
+
import "@sanity/icons/Unpublish";
|
|
56
80
|
import "@sanity/diff";
|
|
57
81
|
import "mendoza";
|
|
82
|
+
import "@sanity/icons/ArrowDown";
|
|
83
|
+
import "@sanity/icons/ArrowRight";
|
|
84
|
+
import "@sanity/icons/WarningOutline";
|
|
58
85
|
import "@portabletext/sanity-bridge";
|
|
59
86
|
import "motion/react";
|
|
60
87
|
import "lodash-es/get.js";
|
|
@@ -73,6 +100,7 @@ import "lodash-es/toLower.js";
|
|
|
73
100
|
import "lodash-es/union.js";
|
|
74
101
|
import "lodash-es/words.js";
|
|
75
102
|
import "lodash-es/isFinite.js";
|
|
103
|
+
import "@sanity/icons/Add";
|
|
76
104
|
import "observable-callback";
|
|
77
105
|
import "@sanity/util/content";
|
|
78
106
|
import "lodash-es/isPlainObject.js";
|
|
@@ -80,6 +108,8 @@ import "@sanity/insert-menu";
|
|
|
80
108
|
import "@tanstack/react-virtual";
|
|
81
109
|
import "speakingurl";
|
|
82
110
|
import "@sanity/asset-utils";
|
|
111
|
+
import "@sanity/icons/HelpCircle";
|
|
112
|
+
import "@sanity/icons/Launch";
|
|
83
113
|
import "@sanity/image-url";
|
|
84
114
|
import "nanoid";
|
|
85
115
|
import "lodash-es/castArray.js";
|
|
@@ -87,8 +117,13 @@ import "rxjs-mergemap-array";
|
|
|
87
117
|
import "@sanity/mutator";
|
|
88
118
|
import "@portabletext/react";
|
|
89
119
|
import "lodash-es/findIndex.js";
|
|
120
|
+
import "@sanity/icons/EyeOpen";
|
|
121
|
+
import "@sanity/icons/Feedback";
|
|
90
122
|
import "@xstate/react";
|
|
91
123
|
import "xstate";
|
|
124
|
+
import "@sanity/icons/FaceHappy";
|
|
125
|
+
import "@sanity/icons/FaceIndifferent";
|
|
126
|
+
import "@sanity/icons/FaceSad";
|
|
92
127
|
import "@sentry/react";
|
|
93
128
|
import "@sanity/schema";
|
|
94
129
|
import "@sanity/util/client";
|
|
@@ -98,14 +133,29 @@ import "json-reduce";
|
|
|
98
133
|
import "rxjs-exhaustmap-with-trailing";
|
|
99
134
|
import "date-fns/isBefore";
|
|
100
135
|
import "date-fns/startOfMinute";
|
|
136
|
+
import "@sanity/icons/Documents";
|
|
137
|
+
import "@sanity/icons/Unknown";
|
|
101
138
|
import "@portabletext/toolkit";
|
|
139
|
+
import "@sanity/icons/CheckmarkCircle";
|
|
140
|
+
import "@sanity/icons/User";
|
|
141
|
+
import "@sanity/icons/Link";
|
|
142
|
+
import "@sanity/icons/ChevronLeft";
|
|
102
143
|
import "polished";
|
|
103
144
|
import "@sanity/client";
|
|
145
|
+
import "@sanity/icons/Reset";
|
|
104
146
|
import "react-is";
|
|
105
147
|
import "exif-component";
|
|
106
148
|
import "lodash-es/pickBy.js";
|
|
107
149
|
import "swr";
|
|
150
|
+
import "@sanity/icons/Download";
|
|
151
|
+
import "@sanity/icons/Upload";
|
|
152
|
+
import "@sanity/icons/BinaryDocument";
|
|
153
|
+
import "@sanity/icons/Lock";
|
|
154
|
+
import "@sanity/icons/AddDocument";
|
|
155
|
+
import "@sanity/icons/InsertAbove";
|
|
156
|
+
import "@sanity/icons/InsertBelow";
|
|
108
157
|
import "use-hot-module-reload";
|
|
158
|
+
import "@sanity/icons/EllipsisHorizontal";
|
|
109
159
|
import "lodash-es/memoize.js";
|
|
110
160
|
import "lodash-es/sortedIndex.js";
|
|
111
161
|
import "lodash-es/difference.js";
|
|
@@ -120,11 +170,18 @@ import "groq-js";
|
|
|
120
170
|
import "use-sync-external-store/with-selector";
|
|
121
171
|
import "is-network-error";
|
|
122
172
|
import "lodash-es/escapeRegExp.js";
|
|
173
|
+
import "@sanity/icons/Desktop";
|
|
174
|
+
import "@sanity/icons/Moon";
|
|
175
|
+
import "@sanity/icons/Sun";
|
|
123
176
|
import "lodash-es/isEmpty.js";
|
|
124
177
|
import "react-dom/server";
|
|
125
178
|
import "lodash-es/capitalize.js";
|
|
126
179
|
import "lodash-es/last.js";
|
|
127
180
|
import "react-dom/client";
|
|
181
|
+
import "@sanity/icons/ArrowLeft";
|
|
182
|
+
import "@sanity/icons/AddUser";
|
|
183
|
+
import "@sanity/icons/Cog";
|
|
184
|
+
import "@sanity/icons/Checkmark";
|
|
128
185
|
import "date-fns/addWeeks";
|
|
129
186
|
import "date-fns/isAfter";
|
|
130
187
|
import "semver";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TasksDocumentInputLayout.js","sources":["../../src/core/tasks/context/isLastPane/useIsLastPane.ts","../../src/core/tasks/plugin/structure/SetActiveDocument.tsx","../../src/core/tasks/plugin/TasksDocumentInputLayout.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {IsLastPaneContext} from 'sanity/_singletons'\n\n/**\n * @internal\n * @hidden\n */\nexport function useIsLastPane(): boolean {\n return useContext(IsLastPaneContext)\n}\n","import {useEffect} from 'react'\n\nimport {getPublishedId, isVersionId} from '../../../util'\nimport {type ActiveDocument, useIsLastPane, useTasks, useTasksEnabled} from '../../context'\n\nfunction SetActiveDocumentInner(document: ActiveDocument) {\n const {documentId, documentType} = document\n const isLast = useIsLastPane()\n const {setActiveDocument} = useTasks()\n\n useEffect(() => {\n if (documentId && isLast && documentType) {\n setActiveDocument?.({\n // Use the version id if it's a version document.\n documentId: isVersionId(documentId) ? documentId : getPublishedId(documentId),\n documentType,\n })\n }\n\n return () => {\n if (isLast) {\n setActiveDocument?.(null)\n }\n }\n }, [documentId, documentType, isLast, setActiveDocument])\n\n return null\n}\n\nexport function SetActiveDocument(document: ActiveDocument) {\n const {enabled} = useTasksEnabled()\n if (!enabled) return null\n return <SetActiveDocumentInner {...document} />\n}\n","import {type ObjectInputProps} from '../../form'\nimport {SetActiveDocument} from './structure/SetActiveDocument'\n\nexport function TasksDocumentInputLayout(props: ObjectInputProps) {\n const documentId = props.value?._id\n const documentType = props.value?._type\n\n return (\n <>\n <SetActiveDocument documentId={documentId} documentType={documentType} />\n {props.renderDefault(props)}\n </>\n )\n}\n"],"names":["useIsLastPane","useContext","IsLastPaneContext","SetActiveDocumentInner","document","$","_c","documentId","documentType","isLast","setActiveDocument","useTasks","t0","t1","isVersionId","getPublishedId","useEffect","SetActiveDocument","enabled","useTasksEnabled","TasksDocumentInputLayout","props","value","_id","_type","renderDefault","t2"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TasksDocumentInputLayout.js","sources":["../../src/core/tasks/context/isLastPane/useIsLastPane.ts","../../src/core/tasks/plugin/structure/SetActiveDocument.tsx","../../src/core/tasks/plugin/TasksDocumentInputLayout.tsx"],"sourcesContent":["import {useContext} from 'react'\nimport {IsLastPaneContext} from 'sanity/_singletons'\n\n/**\n * @internal\n * @hidden\n */\nexport function useIsLastPane(): boolean {\n return useContext(IsLastPaneContext)\n}\n","import {useEffect} from 'react'\n\nimport {getPublishedId, isVersionId} from '../../../util'\nimport {type ActiveDocument, useIsLastPane, useTasks, useTasksEnabled} from '../../context'\n\nfunction SetActiveDocumentInner(document: ActiveDocument) {\n const {documentId, documentType} = document\n const isLast = useIsLastPane()\n const {setActiveDocument} = useTasks()\n\n useEffect(() => {\n if (documentId && isLast && documentType) {\n setActiveDocument?.({\n // Use the version id if it's a version document.\n documentId: isVersionId(documentId) ? documentId : getPublishedId(documentId),\n documentType,\n })\n }\n\n return () => {\n if (isLast) {\n setActiveDocument?.(null)\n }\n }\n }, [documentId, documentType, isLast, setActiveDocument])\n\n return null\n}\n\nexport function SetActiveDocument(document: ActiveDocument) {\n const {enabled} = useTasksEnabled()\n if (!enabled) return null\n return <SetActiveDocumentInner {...document} />\n}\n","import {type ObjectInputProps} from '../../form'\nimport {SetActiveDocument} from './structure/SetActiveDocument'\n\nexport function TasksDocumentInputLayout(props: ObjectInputProps) {\n const documentId = props.value?._id\n const documentType = props.value?._type\n\n return (\n <>\n <SetActiveDocument documentId={documentId} documentType={documentType} />\n {props.renderDefault(props)}\n </>\n )\n}\n"],"names":["useIsLastPane","useContext","IsLastPaneContext","SetActiveDocumentInner","document","$","_c","documentId","documentType","isLast","setActiveDocument","useTasks","t0","t1","isVersionId","getPublishedId","useEffect","SetActiveDocument","enabled","useTasksEnabled","TasksDocumentInputLayout","props","value","_id","_type","renderDefault","t2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,SAAAA,gBAAA;AAAA,SACEC,WAAWC,iBAAiB;AAAC;ACHtC,SAAAC,uBAAAC,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACE;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAmCJ,UACnCK,SAAeT,iBACf;AAAA,IAAAU;AAAAA,EAAAA,IAA4BC,SAAAA;AAAU,MAAAC,IAAAC;AAAA,SAAAR,EAAA,CAAA,MAAAE,cAAAF,EAAA,CAAA,MAAAG,gBAAAH,EAAA,CAAA,MAAAI,UAAAJ,SAAAK,qBAE5BE,KAAAA,OACJL,cAAAE,UAAAD,gBACFE,oBAAoB;AAAA,IAAAH,YAENO,YAAYP,UAAoD,IAAhEA,aAAuCQ,eAAeR,UAAU;AAAA,IAACC;AAAAA,EAAAA,CAE9E,GAGI,MAAA;AACDC,cACFC,oBAAoB,IAAI;AAAA,EACzB,IAEFG,KAAA,CAACN,YAAYC,cAAcC,QAAQC,iBAAiB,GAACL,OAAAE,YAAAF,OAAAG,cAAAH,OAAAI,QAAAJ,OAAAK,mBAAAL,OAAAO,IAAAP,OAAAQ,OAAAD,KAAAP,EAAA,CAAA,GAAAQ,KAAAR,EAAA,CAAA,IAdxDW,UAAUJ,IAcPC,EAAqD,GAEjD;AAAI;AAGN,SAAAI,kBAAAb,UAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GACL;AAAA,IAAAY;AAAAA,EAAAA,IAAkBC,gBAAAA;AAClB,MAAI,CAACD;AAAO,WAAS;AAAI,MAAAN;AAAA,SAAAP,SAAAD,YAClBQ,KAAA,oBAAC,wBAAA,EAAsB,GAAKR,UAAQ,GAAIC,OAAAD,UAAAC,OAAAO,MAAAA,KAAAP,EAAA,CAAA,GAAxCO;AAAwC;AC7B1C,SAAAQ,yBAAAC,OAAA;AAAA,QAAAhB,IAAAC,EAAA,CAAA,GACLC,aAAmBc,MAAKC,OAAWC,KACnCf,eAAqBa,MAAKC,OAAaE;AAAA,MAAAZ;AAAAP,IAAA,CAAA,MAAAE,cAAAF,SAAAG,gBAInCI,KAAA,oBAAC,mBAAA,EAA8BL,YAA0BC,aAAAA,CAAY,GAAIH,OAAAE,YAAAF,OAAAG,cAAAH,OAAAO,MAAAA,KAAAP,EAAA,CAAA;AAAA,MAAAQ;AAAAR,WAAAgB,SACxER,KAAAQ,MAAKI,cAAeJ,KAAK,GAAChB,OAAAgB,OAAAhB,OAAAQ,MAAAA,KAAAR,EAAA,CAAA;AAAA,MAAAqB;AAAA,SAAArB,EAAA,CAAA,MAAAO,MAAAP,SAAAQ,MAF7Ba,sCACEd,UAAAA;AAAAA,IAAAA;AAAAA,IACCC;AAAAA,EAAAA,EAAAA,CAA0B,GAC1BR,OAAAO,IAAAP,OAAAQ,IAAAR,OAAAqB,MAAAA,KAAArB,EAAA,CAAA,GAHHqB;AAGG;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { c } from "react/compiler-runtime";
|
|
3
|
-
import { TaskIcon } from "@sanity/icons";
|
|
3
|
+
import { TaskIcon } from "@sanity/icons/Task";
|
|
4
4
|
import { useMediaIndex, Badge } from "@sanity/ui";
|
|
5
5
|
import { styled } from "styled-components";
|
|
6
6
|
import { Button } from "./index.js";
|
|
@@ -16,15 +16,21 @@ import "@sanity/client/csm";
|
|
|
16
16
|
import "quick-lru";
|
|
17
17
|
import "lodash-es/throttle.js";
|
|
18
18
|
import "lodash-es/isEqual.js";
|
|
19
|
+
import "@sanity/icons/Document";
|
|
20
|
+
import "@sanity/icons/Image";
|
|
19
21
|
import "@sanity/uuid";
|
|
20
22
|
import "@sanity/color";
|
|
21
23
|
import "color2k";
|
|
22
24
|
import "lodash-es/isString.js";
|
|
25
|
+
import "@sanity/icons/Copy";
|
|
26
|
+
import "@sanity/icons/Clipboard";
|
|
23
27
|
import "./createAgentBundlesStore.js";
|
|
24
28
|
import "@sanity/telemetry/react";
|
|
25
29
|
import "@portabletext/editor";
|
|
26
30
|
import "@sanity/util/paths";
|
|
27
31
|
import "@sanity/types";
|
|
32
|
+
import "@sanity/icons/ChevronRight";
|
|
33
|
+
import "@sanity/icons/Revert";
|
|
28
34
|
import "@sanity/diff-match-patch";
|
|
29
35
|
import "lodash-es/flatten.js";
|
|
30
36
|
import "lodash-es/orderBy.js";
|
|
@@ -32,18 +38,29 @@ import "lodash-es/uniq.js";
|
|
|
32
38
|
import "lodash-es/xor.js";
|
|
33
39
|
import "@sanity/diff-patch";
|
|
34
40
|
import "./version.js";
|
|
41
|
+
import "@sanity/icons/ErrorOutline";
|
|
35
42
|
import "@sanity/id-utils";
|
|
36
43
|
import "sanity/router";
|
|
44
|
+
import "@sanity/icons/ChevronDown";
|
|
45
|
+
import "@sanity/icons/InfoOutline";
|
|
37
46
|
import "date-fns/addHours";
|
|
38
47
|
import "date-fns/startOfHour";
|
|
48
|
+
import "@sanity/icons/Bolt";
|
|
49
|
+
import "@sanity/icons/Clock";
|
|
50
|
+
import "@sanity/icons/Dot";
|
|
51
|
+
import "@sanity/icons/EarthGlobe";
|
|
39
52
|
import "date-fns/format";
|
|
40
53
|
import "date-fns/isValid";
|
|
41
54
|
import "date-fns/parse";
|
|
42
55
|
import "@sanity/util/legacyDateFormat";
|
|
56
|
+
import "@sanity/icons/Search";
|
|
43
57
|
import "@sanity/ui/theme";
|
|
58
|
+
import "@sanity/icons/Sync";
|
|
44
59
|
import "lodash-es/pick.js";
|
|
45
60
|
import "react-fast-compare";
|
|
61
|
+
import "@sanity/icons/AccessDenied";
|
|
46
62
|
import "lodash-es/startCase.js";
|
|
63
|
+
import "@sanity/icons/Close";
|
|
47
64
|
import "react-focus-lock";
|
|
48
65
|
import "lodash-es/debounce.js";
|
|
49
66
|
import "date-fns/differenceInDays";
|
|
@@ -53,8 +70,19 @@ import "date-fns/differenceInMonths";
|
|
|
53
70
|
import "date-fns/differenceInSeconds";
|
|
54
71
|
import "date-fns/differenceInWeeks";
|
|
55
72
|
import "date-fns/differenceInYears";
|
|
73
|
+
import "@sanity/icons/AddCircle";
|
|
74
|
+
import "@sanity/icons/Calendar";
|
|
75
|
+
import "@sanity/icons/Circle";
|
|
76
|
+
import "@sanity/icons/Edit";
|
|
77
|
+
import "@sanity/icons/Publish";
|
|
78
|
+
import "@sanity/icons/Timeline";
|
|
79
|
+
import "@sanity/icons/Trash";
|
|
80
|
+
import "@sanity/icons/Unpublish";
|
|
56
81
|
import "@sanity/diff";
|
|
57
82
|
import "mendoza";
|
|
83
|
+
import "@sanity/icons/ArrowDown";
|
|
84
|
+
import "@sanity/icons/ArrowRight";
|
|
85
|
+
import "@sanity/icons/WarningOutline";
|
|
58
86
|
import "@portabletext/sanity-bridge";
|
|
59
87
|
import "motion/react";
|
|
60
88
|
import "lodash-es/get.js";
|
|
@@ -73,6 +101,7 @@ import "lodash-es/toLower.js";
|
|
|
73
101
|
import "lodash-es/union.js";
|
|
74
102
|
import "lodash-es/words.js";
|
|
75
103
|
import "lodash-es/isFinite.js";
|
|
104
|
+
import "@sanity/icons/Add";
|
|
76
105
|
import "observable-callback";
|
|
77
106
|
import "@sanity/util/content";
|
|
78
107
|
import "lodash-es/isPlainObject.js";
|
|
@@ -80,6 +109,8 @@ import "@sanity/insert-menu";
|
|
|
80
109
|
import "@tanstack/react-virtual";
|
|
81
110
|
import "speakingurl";
|
|
82
111
|
import "@sanity/asset-utils";
|
|
112
|
+
import "@sanity/icons/HelpCircle";
|
|
113
|
+
import "@sanity/icons/Launch";
|
|
83
114
|
import "@sanity/image-url";
|
|
84
115
|
import "nanoid";
|
|
85
116
|
import "lodash-es/castArray.js";
|
|
@@ -87,8 +118,13 @@ import "rxjs-mergemap-array";
|
|
|
87
118
|
import "@sanity/mutator";
|
|
88
119
|
import "@portabletext/react";
|
|
89
120
|
import "lodash-es/findIndex.js";
|
|
121
|
+
import "@sanity/icons/EyeOpen";
|
|
122
|
+
import "@sanity/icons/Feedback";
|
|
90
123
|
import "@xstate/react";
|
|
91
124
|
import "xstate";
|
|
125
|
+
import "@sanity/icons/FaceHappy";
|
|
126
|
+
import "@sanity/icons/FaceIndifferent";
|
|
127
|
+
import "@sanity/icons/FaceSad";
|
|
92
128
|
import "@sentry/react";
|
|
93
129
|
import "@sanity/schema";
|
|
94
130
|
import "@sanity/util/client";
|
|
@@ -98,14 +134,29 @@ import "json-reduce";
|
|
|
98
134
|
import "rxjs-exhaustmap-with-trailing";
|
|
99
135
|
import "date-fns/isBefore";
|
|
100
136
|
import "date-fns/startOfMinute";
|
|
137
|
+
import "@sanity/icons/Documents";
|
|
138
|
+
import "@sanity/icons/Unknown";
|
|
101
139
|
import "@portabletext/toolkit";
|
|
140
|
+
import "@sanity/icons/CheckmarkCircle";
|
|
141
|
+
import "@sanity/icons/User";
|
|
142
|
+
import "@sanity/icons/Link";
|
|
143
|
+
import "@sanity/icons/ChevronLeft";
|
|
102
144
|
import "polished";
|
|
103
145
|
import "@sanity/client";
|
|
146
|
+
import "@sanity/icons/Reset";
|
|
104
147
|
import "react-is";
|
|
105
148
|
import "exif-component";
|
|
106
149
|
import "lodash-es/pickBy.js";
|
|
107
150
|
import "swr";
|
|
151
|
+
import "@sanity/icons/Download";
|
|
152
|
+
import "@sanity/icons/Upload";
|
|
153
|
+
import "@sanity/icons/BinaryDocument";
|
|
154
|
+
import "@sanity/icons/Lock";
|
|
155
|
+
import "@sanity/icons/AddDocument";
|
|
156
|
+
import "@sanity/icons/InsertAbove";
|
|
157
|
+
import "@sanity/icons/InsertBelow";
|
|
108
158
|
import "use-hot-module-reload";
|
|
159
|
+
import "@sanity/icons/EllipsisHorizontal";
|
|
109
160
|
import "lodash-es/memoize.js";
|
|
110
161
|
import "lodash-es/sortedIndex.js";
|
|
111
162
|
import "lodash-es/difference.js";
|
|
@@ -120,11 +171,18 @@ import "groq-js";
|
|
|
120
171
|
import "use-sync-external-store/with-selector";
|
|
121
172
|
import "is-network-error";
|
|
122
173
|
import "lodash-es/escapeRegExp.js";
|
|
174
|
+
import "@sanity/icons/Desktop";
|
|
175
|
+
import "@sanity/icons/Moon";
|
|
176
|
+
import "@sanity/icons/Sun";
|
|
123
177
|
import "lodash-es/isEmpty.js";
|
|
124
178
|
import "react-dom/server";
|
|
125
179
|
import "lodash-es/capitalize.js";
|
|
126
180
|
import "lodash-es/last.js";
|
|
127
181
|
import "react-dom/client";
|
|
182
|
+
import "@sanity/icons/ArrowLeft";
|
|
183
|
+
import "@sanity/icons/AddUser";
|
|
184
|
+
import "@sanity/icons/Cog";
|
|
185
|
+
import "@sanity/icons/Checkmark";
|
|
128
186
|
import "date-fns/addWeeks";
|
|
129
187
|
import "date-fns/isAfter";
|
|
130
188
|
import "semver";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TasksFooterOpenTasks.js","sources":["../../src/core/tasks/plugin/TasksFooterOpenTasks.tsx"],"sourcesContent":["import {TaskIcon} from '@sanity/icons'\nimport {Badge, useMediaIndex} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components'\nimport {useTranslation} from '../../i18n'\nimport {useTasks, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst ButtonContainer = styled.div`\n position: relative;\n [data-ui='Badge'] {\n position: absolute;\n top: -2px;\n right: -2px;\n }\n`\n\n/**\n * Button that shows how many pending tasks are assigned to the current document.\n * Clicking it will open the task sidebar, showing the open tasks related to the document.\n * @internal\n */\nexport function TasksFooterOpenTasks() {\n const {data, activeDocument} = useTasks()\n const {handleOpenTasks, setActiveTab} = useTasksNavigation()\n const mediaIndex = useMediaIndex()\n const pendingTasks = useMemo(\n () =>\n activeDocument?.documentId\n ? data.filter((item) => {\n return (\n item.target?.document._ref === activeDocument.documentId &&\n item.status === 'open' &&\n item.createdByUser\n )\n })\n : [],\n [activeDocument, data],\n )\n const handleOnClick = useCallback(() => {\n handleOpenTasks()\n setActiveTab('document')\n }, [handleOpenTasks, setActiveTab])\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n if (pendingTasks.length === 0) return null\n\n if (mediaIndex < 3) {\n return (\n <ButtonContainer>\n <Button\n mode=\"bleed\"\n icon={TaskIcon}\n size={'large'}\n onClick={handleOnClick}\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n />\n <Badge data-testid=\"tasks-badge\" tone=\"primary\" fontSize={0}>\n {pendingTasks.length}\n </Badge>\n </ButtonContainer>\n )\n }\n return (\n <Button\n mode=\"bleed\"\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n text={t('document.footer.open-tasks.text', {count: pendingTasks.length})}\n onClick={handleOnClick}\n />\n )\n}\n"],"names":["ButtonContainer","styled","div","withConfig","displayName","componentId","TasksFooterOpenTasks","$","_c","data","activeDocument","useTasks","handleOpenTasks","setActiveTab","useTasksNavigation","mediaIndex","useMediaIndex","t0","documentId","filter","item","target","document","_ref","status","createdByUser","pendingTasks","t1","handleOnClick","t","useTranslation","tasksLocaleNamespace","length","t2","count","t3","content","t4","TaskIcon","t5","t6"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TasksFooterOpenTasks.js","sources":["../../src/core/tasks/plugin/TasksFooterOpenTasks.tsx"],"sourcesContent":["import {TaskIcon} from '@sanity/icons/Task'\nimport {Badge, useMediaIndex} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../ui-components'\nimport {useTranslation} from '../../i18n'\nimport {useTasks, useTasksNavigation} from '../context'\nimport {tasksLocaleNamespace} from '../i18n'\n\nconst ButtonContainer = styled.div`\n position: relative;\n [data-ui='Badge'] {\n position: absolute;\n top: -2px;\n right: -2px;\n }\n`\n\n/**\n * Button that shows how many pending tasks are assigned to the current document.\n * Clicking it will open the task sidebar, showing the open tasks related to the document.\n * @internal\n */\nexport function TasksFooterOpenTasks() {\n const {data, activeDocument} = useTasks()\n const {handleOpenTasks, setActiveTab} = useTasksNavigation()\n const mediaIndex = useMediaIndex()\n const pendingTasks = useMemo(\n () =>\n activeDocument?.documentId\n ? data.filter((item) => {\n return (\n item.target?.document._ref === activeDocument.documentId &&\n item.status === 'open' &&\n item.createdByUser\n )\n })\n : [],\n [activeDocument, data],\n )\n const handleOnClick = useCallback(() => {\n handleOpenTasks()\n setActiveTab('document')\n }, [handleOpenTasks, setActiveTab])\n\n const {t} = useTranslation(tasksLocaleNamespace)\n\n if (pendingTasks.length === 0) return null\n\n if (mediaIndex < 3) {\n return (\n <ButtonContainer>\n <Button\n mode=\"bleed\"\n icon={TaskIcon}\n size={'large'}\n onClick={handleOnClick}\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n />\n <Badge data-testid=\"tasks-badge\" tone=\"primary\" fontSize={0}>\n {pendingTasks.length}\n </Badge>\n </ButtonContainer>\n )\n }\n return (\n <Button\n mode=\"bleed\"\n tooltipProps={{\n content: t('document.footer.open-tasks.placeholder', {\n count: pendingTasks.length,\n }),\n }}\n text={t('document.footer.open-tasks.text', {count: pendingTasks.length})}\n onClick={handleOnClick}\n />\n )\n}\n"],"names":["ButtonContainer","styled","div","withConfig","displayName","componentId","TasksFooterOpenTasks","$","_c","data","activeDocument","useTasks","handleOpenTasks","setActiveTab","useTasksNavigation","mediaIndex","useMediaIndex","t0","documentId","filter","item","target","document","_ref","status","createdByUser","pendingTasks","t1","handleOnClick","t","useTranslation","tasksLocaleNamespace","length","t2","count","t3","content","t4","TaskIcon","t5","t6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,kBAAkBC,OAAOC,IAAGC,WAAA;AAAA,EAAAC,aAAA;AAAA,EAAAC,aAAA;AAAA,CAAA;AAc3B,SAAAC,uBAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GACL;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAA+BC,YAC/B;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAwCC,mBAAAA,GACxCC,aAAmBC,cAAAA;AAAe,MAAAC;AAAAV,IAAA,CAAA,MAAAG,kBAAAH,SAAAE,QAG9BQ,KAAAP,gBAAcQ,aACVT,KAAIU,OAAQC,CAAAA,SAERA,KAAIC,QAAiBC,SAAKC,SAAKb,eAAcQ,cAC7CE,KAAII,WAAY,UAChBJ,KAAIK,aAGP,IARL,CAAA,GAQMlB,OAAAG,gBAAAH,OAAAE,MAAAF,OAAAU,MAAAA,KAAAV,EAAA,CAAA;AAVV,QAAAmB,eAEIT;AAUH,MAAAU;AAAApB,IAAA,CAAA,MAAAK,mBAAAL,SAAAM,gBACiCc,KAAAA,MAAA;AAChCf,oBAAAA,GACAC,aAAa,UAAU;AAAA,EAAC,GACzBN,OAAAK,iBAAAL,OAAAM,cAAAN,OAAAoB,MAAAA,KAAApB,EAAA,CAAA;AAHD,QAAAqB,gBAAsBD,IAKtB;AAAA,IAAAE;AAAAA,EAAAA,IAAYC,eAAeC,oBAAoB;AAE/C,MAAIL,aAAYM,WAAY;AAAC,WAAS;AAEtC,MAAIjB,aAAa,GAAC;AAAA,QAAAkB;AAAA1B,aAAAmB,aAAAM,UAAAzB,SAAAsB,KASCI,MAAAJ,EAAE,0CAA0C;AAAA,MAAAK,OAC5CR,aAAYM;AAAAA,IAAAA,CACpB,GAACzB,EAAA,CAAA,IAAAmB,aAAAM,QAAAzB,OAAAsB,GAAAtB,OAAA0B,OAAAA,MAAA1B,EAAA,CAAA;AAAA,QAAA4B;AAAA5B,aAAA0B,OAHUE,MAAA;AAAA,MAAAC,SACHH;AAAAA,IAAAA,GAGV1B,OAAA0B,KAAA1B,QAAA4B,OAAAA,MAAA5B,EAAA,EAAA;AAAA,QAAA8B;AAAA9B,MAAA,EAAA,MAAAqB,iBAAArB,UAAA4B,OATHE,MAAA,oBAAC,UACM,MAAA,SACCC,MAAAA,UACA,MAAA,SACGV,SAAAA,eACK,cAAAO,KAIb,GACD5B,QAAAqB,eAAArB,QAAA4B,KAAA5B,QAAA8B,OAAAA,MAAA9B,EAAA,EAAA;AAAA,QAAAgC;AAAAhC,MAAA,EAAA,MAAAmB,aAAAM,UACFO,MAAA,oBAAC,OAAA,EAAkB,eAAA,eAAmB,MAAA,WAAoB,UAAA,GACvDb,UAAAA,aAAYM,OAAAA,CACf,GAAQzB,EAAA,EAAA,IAAAmB,aAAAM,QAAAzB,QAAAgC,OAAAA,MAAAhC,EAAA,EAAA;AAAA,QAAAiC;AAAA,WAAAjC,EAAA,EAAA,MAAA8B,OAAA9B,UAAAgC,OAdVC,KAAA,qBAAC,iBAAA,EACCH,UAAAA;AAAAA,MAAAA;AAAAA,MAWAE;AAAAA,IAAAA,EAAAA,CAGF,GAAkBhC,QAAA8B,KAAA9B,QAAAgC,KAAAhC,QAAAiC,MAAAA,KAAAjC,EAAA,EAAA,GAflBiC;AAAAA,EAekB;AAErB,MAAAP;AAAA1B,YAAAmB,aAAAM,UAAAzB,UAAAsB,KAKcI,KAAAJ,EAAE,0CAA0C;AAAA,IAAAK,OAC5CR,aAAYM;AAAAA,EAAAA,CACpB,GAACzB,EAAA,EAAA,IAAAmB,aAAAM,QAAAzB,QAAAsB,GAAAtB,QAAA0B,MAAAA,KAAA1B,EAAA,EAAA;AAAA,MAAA4B;AAAA5B,YAAA0B,MAHUE,KAAA;AAAA,IAAAC,SACHH;AAAAA,EAAAA,GAGV1B,QAAA0B,IAAA1B,QAAA4B,MAAAA,KAAA5B,EAAA,EAAA;AAAA,MAAA8B;AAAA9B,YAAAmB,aAAAM,UAAAzB,UAAAsB,KACKQ,KAAAR,EAAE,mCAAmC;AAAA,IAAAK,OAAQR,aAAYM;AAAAA,EAAAA,CAAQ,GAACzB,EAAA,EAAA,IAAAmB,aAAAM,QAAAzB,QAAAsB,GAAAtB,QAAA8B,MAAAA,KAAA9B,EAAA,EAAA;AAAA,MAAAgC;AAAA,SAAAhC,EAAA,EAAA,MAAAqB,iBAAArB,UAAA4B,MAAA5B,EAAA,EAAA,MAAA8B,MAP1EE,KAAA,oBAAC,QAAA,EACM,MAAA,SACS,cAAAJ,IAKR,MAAAE,IACGT,SAAAA,cAAAA,CAAa,GACtBrB,QAAAqB,eAAArB,QAAA4B,IAAA5B,QAAA8B,IAAA9B,QAAAgC,MAAAA,KAAAhC,EAAA,EAAA,GATFgC;AASE;"}
|