@ynput/ayon-frontend-shared 0.3.45 → 0.3.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/_virtual/index.cjs22.js +1 -1
  2. package/dist/_virtual/index.cjs23.js +1 -1
  3. package/dist/_virtual/index.cjs24.js +1 -1
  4. package/dist/_virtual/index.cjs4.js +1 -1
  5. package/dist/_virtual/index.cjs5.js +1 -1
  6. package/dist/_virtual/index.cjs6.js +1 -1
  7. package/dist/_virtual/index.cjs8.js +1 -1
  8. package/dist/_virtual/index.cjs9.js +1 -1
  9. package/dist/_virtual/index.es22.js +3 -3
  10. package/dist/_virtual/index.es23.js +5 -5
  11. package/dist/_virtual/index.es24.js +5 -5
  12. package/dist/_virtual/index.es4.js +5 -2
  13. package/dist/_virtual/index.es4.js.map +1 -1
  14. package/dist/_virtual/index.es5.js +2 -5
  15. package/dist/_virtual/index.es5.js.map +1 -1
  16. package/dist/_virtual/index.es6.js +2 -2
  17. package/dist/_virtual/index.es8.js +2 -5
  18. package/dist/_virtual/index.es8.js.map +1 -1
  19. package/dist/_virtual/index.es9.js +5 -2
  20. package/dist/_virtual/index.es9.js.map +1 -1
  21. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  22. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  23. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  24. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  25. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  26. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  27. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  28. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  29. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  30. package/dist/node_modules/remove-accents/index.es.js +1 -1
  31. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  32. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  33. package/dist/shared/node_modules/@module-federation/runtime/dist/index.cjs.js +1 -1
  34. package/dist/shared/node_modules/@module-federation/runtime/dist/index.es.js +1 -1
  35. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  37. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  38. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  39. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  40. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  41. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  42. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  43. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +5 -5
  44. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  45. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +83 -86
  46. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  47. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  48. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  49. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +14 -14
  50. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useTableDataBySlice.es.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n isLoadingExtraSlices ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
1
+ {"version":3,"file":"useTableDataBySlice.es.js","sources":["../../../../../../src/containers/Slicer/hooks/useTableDataBySlice.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { useHierarchyTable } from '@shared/hooks'\nimport useUsersTable from './useUsersTable'\nimport useProjectAnatomySlices from './useProjectAnatomySlices'\nimport { Slice, SliceData, SliceTypeField, TableData } from '../types'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { SliceType } from '@shared/containers/Slicer'\nimport { useSlicerContext } from '../context/SlicerContext'\nimport useSlicerAttributesData from './useSlicerAttributesData'\nimport { useEntityListsSlice } from './useEntityListsSlice'\nimport { getAttributeIcon, getEntityTypeIcon } from '@shared/util'\nimport { useProjectContext } from '@shared/context'\n\ninterface TableDataBySliceProps {\n sliceFields: SliceTypeField[]\n entityTypes?: string[] // entity types\n}\n\nconst getNoValue = (field: string): SimpleTableRow => ({\n id: 'noValue',\n name: 'noValue',\n label: `No ${field}`,\n icon: 'unpublished',\n subRows: [],\n data: {\n id: 'noValue',\n },\n})\n\nconst getSomeValue = (field: string): SimpleTableRow => ({\n id: 'hasValue',\n name: 'hasValue',\n label: `Some ${field}`,\n icon: 'check',\n subRows: [],\n data: {\n id: 'hasValue',\n },\n})\n\nexport const defaultSliceOptions: SliceTypeField[] = [\n {\n label: 'Hierarchy',\n value: 'hierarchy' as SliceType,\n icon: 'table_rows',\n },\n {\n label: 'Assignee',\n value: 'assignees' as SliceType,\n icon: 'person',\n },\n {\n label: 'Status',\n value: 'status' as SliceType,\n icon: 'arrow_circle_right',\n },\n {\n label: 'Task Type',\n value: 'taskType' as SliceType,\n icon: getEntityTypeIcon('task'),\n },\n {\n label: 'Folder Type',\n value: 'folderType' as SliceType,\n icon: getEntityTypeIcon('folder'),\n },\n {\n label: 'Product Type',\n value: 'productType' as SliceType,\n icon: getEntityTypeIcon('product'),\n },\n {\n label: 'Author',\n value: 'author' as SliceType,\n icon: 'attribution',\n },\n {\n label: 'Lists',\n value: 'entityList' as SliceType,\n icon: 'list_alt',\n },\n]\n\nconst useTableDataBySlice = ({\n sliceFields,\n entityTypes = [],\n}: TableDataBySliceProps): TableData => {\n const { sliceType, onSliceTypeChange, useExtraSlices, isLoadingExtraSlices } = useSlicerContext()\n const { projectName } = useProjectContext()\n const { formatAttribute } = useExtraSlices()\n\n const sliceOptions = sliceFields\n .filter((f) => defaultSliceOptions.some((o) => o.value === f.value))\n .map((field) => {\n const defaultOption = defaultSliceOptions.find((opt) => opt.value === field.value)\n // use default option as fallback data\n return {\n ...defaultOption,\n ...field,\n }\n })\n\n const showAttributes = sliceFields.some((field) => field.value === 'attributes')\n const { attributes: slicerAttribs, isLoading: isLoadingAttribs } = useSlicerAttributesData({\n entityTypes,\n })\n\n if (showAttributes && typeof formatAttribute === 'function') {\n slicerAttribs.forEach((attr) =>\n sliceOptions.push({\n label: attr.data.title || attr.name,\n value: 'attrib.' + attr.name,\n icon: getAttributeIcon(attr.name, attr.data.type, !!attr.data.enum?.length),\n }),\n )\n }\n\n const [isLoading, setIsLoading] = useState(false)\n\n // project info\n const {\n project,\n getStatuses,\n getTypes,\n getTaskTypes,\n getProductTypes,\n getAttribute,\n isLoading: isLoadingProject,\n } = useProjectAnatomySlices({ scopes: entityTypes, useExtraSlices })\n\n // Hierarchy\n const { getData: getHierarchyData, isFetching: isLoadingHierarchy } = useHierarchyTable({\n projectName: projectName || '',\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n // Users\n const { getData: getUsersData, isLoading: isUsersLoading } = useUsersTable({\n projectName,\n useExtraSlices,\n })\n // Entity Lists\n const {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n } = useEntityListsSlice(entityTypes)\n const isLoadingData =\n isLoadingHierarchy ||\n isLoadingProject ||\n isUsersLoading ||\n (isLoadingExtraSlices && sliceType !== 'hierarchy') ||\n isLoadingAttribs\n\n const builtInSlices: Record<SliceType, SliceData> = {\n hierarchy: {\n getData: getHierarchyData,\n isLoading: isLoadingHierarchy,\n isExpandable: true,\n },\n assignees: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n noValue: true,\n hasValue: true,\n },\n author: {\n getData: getUsersData,\n isLoading: isUsersLoading,\n isExpandable: false,\n },\n status: {\n getData: getStatuses,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n type: {\n getData: getTypes,\n isLoading: isLoadingProject,\n isExpandable: true,\n },\n taskType: {\n getData: getTaskTypes,\n isLoading: isLoadingProject,\n isExpandable: false,\n },\n productType: {\n getData: getProductTypes,\n isLoading: false,\n isExpandable: false,\n },\n entityList: {\n getData: getEntityListsData,\n isLoading: isLoadingLists,\n isExpandable: isEntityListExpandable,\n },\n }\n\n for (const attrib of slicerAttribs) {\n builtInSlices['attrib.' + attrib.name] = {\n getData: () => getAttribute(attrib),\n isLoading: isLoadingAttribs,\n isExpandable: false,\n isAttribute: true,\n }\n }\n\n const initSlice = { data: [], isExpandable: false }\n const [slice, setSlice] = useState<Slice>(initSlice)\n const sliceConfig = builtInSlices[sliceType]\n\n const handleSliceTypeChange = (sliceType: SliceType, pinCurrent?: boolean) => {\n // get slice data object\n const sliceConfig = builtInSlices[sliceType]\n if (!sliceConfig) {\n console.warn(`Slice type ${sliceType} not found`)\n return\n }\n // check slice type is enabled\n if (\n (sliceConfig.isAttribute && showAttributes) ||\n sliceFields.some((field) => field.value === sliceType)\n ) {\n onSliceTypeChange(sliceType, pinCurrent)\n }\n }\n\n useEffect(() => {\n // wait for hierarchy data to load before fetching slice data\n if (isLoadingData) return\n\n const fetchData = async () => {\n try {\n if (!sliceConfig) return\n setIsLoading(true)\n const newData = await sliceConfig.getData()\n\n if (newData === undefined) {\n window.alert(\n 'Slice options failed to load. This likely means the PowerFeatures addon is out of date. Please update to the latest version.',\n )\n // setSlice type to hierarchy\n onSliceTypeChange('hierarchy', false)\n throw new Error('Slice data is undefined')\n }\n\n // add some value option\n if (sliceConfig.hasValue) newData.unshift(getSomeValue(sliceType))\n\n // add no value option\n if (sliceConfig.noValue) newData.unshift(getNoValue(sliceType))\n setSlice({\n data: newData,\n isExpandable: sliceConfig.isExpandable,\n })\n } catch (error) {\n console.error('Error fetching slice data:', error)\n // set to initial empty state\n setSlice(initSlice)\n } finally {\n setIsLoading(false)\n }\n }\n\n fetchData()\n }, [sliceType, projectName, isLoadingData])\n\n // from slice data, flatten into a map of ids to rows\n const sliceMap = useMemo(() => {\n const map = new Map<string, SimpleTableRow>()\n const queue: SimpleTableRow[] = [...slice.data]\n\n while (queue.length > 0) {\n const row = queue.shift()\n if (row) {\n map.set(row.id, row)\n if (row.subRows && row.subRows.length > 0) {\n for (const subRow of row.subRows) {\n queue.push(subRow)\n }\n }\n }\n }\n return map\n }, [slice.data])\n\n return {\n sliceOptions,\n table: slice,\n sliceMap,\n isLoading:\n (builtInSlices[sliceType] && builtInSlices[sliceType].isLoading) ||\n isLoading ||\n isLoadingData,\n sliceType,\n handleSliceTypeChange,\n }\n}\n\nexport default useTableDataBySlice\n"],"names":["getNoValue","field","getSomeValue","defaultSliceOptions","getEntityTypeIcon","useTableDataBySlice","sliceFields","entityTypes","sliceType","onSliceTypeChange","useExtraSlices","isLoadingExtraSlices","useSlicerContext","projectName","useProjectContext","formatAttribute","sliceOptions","f","o","opt","showAttributes","slicerAttribs","isLoadingAttribs","useSlicerAttributesData","attr","getAttributeIcon","isLoading","setIsLoading","useState","project","getStatuses","getTypes","getTaskTypes","getProductTypes","getAttribute","isLoadingProject","useProjectAnatomySlices","getHierarchyData","isLoadingHierarchy","useHierarchyTable","getUsersData","isUsersLoading","useUsersTable","getEntityListsData","isLoadingLists","isEntityListExpandable","useEntityListsSlice","isLoadingData","builtInSlices","attrib","initSlice","slice","setSlice","sliceConfig","handleSliceTypeChange","pinCurrent","useEffect","newData","error","sliceMap","useMemo","map","queue","row","subRow"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ynput/ayon-frontend-shared",
3
- "version": "0.3.45",
3
+ "version": "0.3.46",
4
4
  "description": "Shared React components for AYON frontend",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.es.js",