@ynput/ayon-frontend-shared 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DetailsPanel.cjs.js +8 -0
- package/dist/DetailsPanel.cjs.js.map +1 -1
- package/dist/DetailsPanel.es.js +8 -0
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +5 -0
- package/dist/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/ProjectTreeTable.es.js +5 -0
- package/dist/ProjectTreeTable.es.js.map +1 -1
- package/dist/Slicer.cjs.js +2 -0
- package/dist/Slicer.cjs.js.map +1 -1
- package/dist/Slicer.es.js +3 -1
- package/dist/Slicer.es.js.map +1 -1
- package/dist/_virtual/index.cjs10.js +3 -5
- package/dist/_virtual/index.cjs10.js.map +1 -1
- package/dist/_virtual/index.cjs7.js +5 -3
- package/dist/_virtual/index.cjs7.js.map +1 -1
- package/dist/_virtual/index.cjs8.js +4 -4
- package/dist/_virtual/index.cjs9.js +4 -4
- package/dist/_virtual/index.es10.js +2 -5
- package/dist/_virtual/index.es10.js.map +1 -1
- package/dist/_virtual/index.es7.js +5 -2
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/_virtual/index.es8.js +4 -4
- package/dist/_virtual/index.es9.js +4 -4
- package/dist/api.cjs.js +2 -0
- package/dist/api.cjs.js.map +1 -1
- package/dist/api.es.js +3 -1
- package/dist/components.cjs.js +15 -0
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +16 -1
- package/dist/components.es.js.map +1 -1
- package/dist/context.cjs.js +4 -0
- package/dist/context.cjs.js.map +1 -1
- package/dist/context.es.js +4 -0
- package/dist/context.es.js.map +1 -1
- package/dist/index.cjs.js +8 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +8 -0
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +2 -2
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/shared/src/api/generated/actions.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/actions.es.js.map +1 -1
- package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/addons.es.js.map +1 -1
- package/dist/shared/src/api/generated/anatomy.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/anatomy.es.js.map +1 -1
- package/dist/shared/src/api/generated/attributes.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/attributes.es.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/configuration.es.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
- package/dist/shared/src/api/generated/events.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/events.es.js.map +1 -1
- package/dist/shared/src/api/generated/files.cjs.js +5 -0
- package/dist/shared/src/api/generated/files.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/files.es.js +5 -0
- package/dist/shared/src/api/generated/files.es.js.map +1 -1
- package/dist/shared/src/api/generated/operations.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/operations.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +16 -0
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +16 -0
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/reviewables.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/reviewables.es.js.map +1 -1
- package/dist/shared/src/api/generated/system.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/system.es.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.cjs.js +8 -0
- package/dist/shared/src/api/generated/tasks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/tasks.es.js +8 -0
- package/dist/shared/src/api/generated/tasks.es.js.map +1 -1
- package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/users.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +66 -4
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +66 -4
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js +1 -0
- package/dist/shared/src/components/EntityPath/SegmentProvider.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js +1 -0
- package/dist/shared/src/components/EntityPath/SegmentProvider.es.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js +8 -0
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js +8 -0
- package/dist/shared/src/components/EntityThumbnailUploader/EntityThumbnailUploader.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +69 -0
- package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +69 -0
- package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +48 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +48 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +102 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +102 -0
- package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PricingLink.cjs.js +13 -0
- package/dist/shared/src/components/Powerpack/PricingLink.cjs.js.map +1 -0
- package/dist/shared/src/components/Powerpack/PricingLink.es.js +13 -0
- package/dist/shared/src/components/Powerpack/PricingLink.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +4 -10
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +1 -7
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +5 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.cjs.js +13 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.es.js +13 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettings.styled.es.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +50 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +50 -0
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +8 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +8 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +8 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +8 -0
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +8 -0
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -0
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/filterDates.cjs.js +167 -0
- package/dist/shared/src/components/SearchFilter/filterDates.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/filterDates.es.js +167 -0
- package/dist/shared/src/components/SearchFilter/filterDates.es.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +547 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +547 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -0
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js +6 -2
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.cjs.js.map +1 -1
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js +6 -2
- package/dist/shared/src/components/SettingsPanel/SettingsPanel.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +19 -3
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +20 -4
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +1 -0
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +1 -0
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +8 -0
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -0
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +2 -0
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +2 -0
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +8 -0
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -0
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +8 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +9 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +9 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js +1 -0
- package/dist/shared/src/containers/DetailsPanel/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +1 -0
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +2 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +2 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/ActivityVersions/ActivityVersions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js +5 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js +5 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/CommentInput/hooks/useMentionLink.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js +22 -11
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js +22 -11
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js +6 -0
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js +6 -0
- package/dist/shared/src/containers/Feed/components/FileUploadCard/FileUploadCard.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js +3 -3
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js +3 -3
- package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +1 -0
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +1 -0
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js +2 -1
- package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js +2 -1
- package/dist/shared/src/containers/Feed/helpers/mergeAnnotationAttachments.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +45 -16
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +45 -16
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +45 -7
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +45 -7
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +202 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +202 -0
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +14 -6
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +14 -6
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js +11 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js +11 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js +22 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js +22 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js +116 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js +116 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableModulesContext.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +137 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +137 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/{useOverviewTable.cjs.js → useBuildProjectDataTable.cjs.js} +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/{useOverviewTable.es.js → useBuildProjectDataTable.es.js} +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +39 -19
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +39 -19
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js +108 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js +108 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/GroupHeaderWidget.es.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js +29 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js.map +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js +30 -0
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js.map +1 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +8 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +8 -0
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js +37 -0
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js +37 -0
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js.map +1 -0
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -0
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +1 -0
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +65 -0
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -0
- package/dist/shared/src/context/PowerpackContext.es.js +65 -0
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -0
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +1 -0
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js +7 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.es.js +7 -1
- package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
- package/dist/shared/src/util/getEntityTypeIcon.cjs.js +9 -0
- package/dist/shared/src/util/getEntityTypeIcon.cjs.js.map +1 -1
- package/dist/shared/src/util/getEntityTypeIcon.es.js +9 -0
- package/dist/shared/src/util/getEntityTypeIcon.es.js.map +1 -1
- package/dist/types/api/generated/actions.d.ts +3 -2
- package/dist/types/api/generated/addons.d.ts +8 -1
- package/dist/types/api/generated/anatomy.d.ts +1 -14
- package/dist/types/api/generated/attributes.d.ts +4 -2
- package/dist/types/api/generated/configuration.d.ts +6 -0
- package/dist/types/api/generated/entityLists.d.ts +2 -0
- package/dist/types/api/generated/events.d.ts +1 -1
- package/dist/types/api/generated/files.d.ts +11 -0
- package/dist/types/api/generated/operations.d.ts +1 -1
- package/dist/types/api/generated/projects.d.ts +59 -0
- package/dist/types/api/generated/reviewables.d.ts +1 -0
- package/dist/types/api/generated/system.d.ts +5 -2
- package/dist/types/api/generated/tasks.d.ts +48 -9
- package/dist/types/api/generated/users.d.ts +1 -4
- package/dist/types/api/queries/overview/getOverview.d.ts +350 -482
- package/dist/types/api/queries/project/getProject.d.ts +6 -0
- package/dist/types/components/Powerpack/PowerpackButton.d.ts +7 -0
- package/dist/types/components/Powerpack/PowerpackDialog.d.ts +4 -0
- package/dist/types/components/Powerpack/PowerpackDialog.styled.d.ts +8 -0
- package/dist/types/components/Powerpack/PricingLink.d.ts +4 -0
- package/dist/types/components/Powerpack/index.d.ts +3 -0
- package/dist/types/components/ProjectTableSettings/ProjectTableSettings.d.ts +2 -1
- package/dist/types/components/ProjectTableSettings/TableSettings.styled.d.ts +1 -0
- package/dist/types/components/ProjectTableSettings/TableSettingsFallback.d.ts +10 -0
- package/dist/types/components/ProjectTableSettings/index.d.ts +1 -0
- package/dist/types/components/SearchFilter/filterDates.d.ts +56 -0
- package/dist/types/components/SearchFilter/index.d.ts +2 -0
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +30 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsSync.d.ts +1 -1
- package/dist/types/containers/Feed/components/CommentInput/hooks/useAnnotationsUpload.d.ts +1 -1
- package/dist/types/containers/Feed/components/FileUploadCard/FileUploadCard.d.ts +4 -3
- package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +5 -1
- package/dist/types/containers/ProjectTreeTable/buildTreeTableColumns.d.ts +3 -1
- package/dist/types/containers/ProjectTreeTable/components/GroupSettingsFallback.d.ts +11 -0
- package/dist/types/containers/ProjectTreeTable/context/ColumnSettingsContext.d.ts +7 -0
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +11 -5
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableModulesContext.d.ts +12 -0
- package/dist/types/containers/ProjectTreeTable/context/index.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.d.ts +25 -0
- package/dist/types/containers/ProjectTreeTable/hooks/{useOverviewTable.d.ts → useBuildProjectDataTable.d.ts} +3 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +2 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +1 -1
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +13 -5
- package/dist/types/containers/ProjectTreeTable/widgets/GroupHeaderWidget.d.ts +13 -0
- package/dist/types/containers/ProjectTreeTable/widgets/LoadMoreWidget.d.ts +8 -0
- package/dist/types/containers/ProjectTreeTable/widgets/index.d.ts +1 -0
- package/dist/types/containers/Slicer/index.d.ts +1 -0
- package/dist/types/containers/Slicer/useFiltersWithHierarchy.d.ts +10 -0
- package/dist/types/context/PowerpackContext.d.ts +20 -0
- package/dist/types/context/index.d.ts +1 -0
- package/dist/types/util/getAttributeIcon.d.ts +1 -1
- package/dist/types/util/getEntityTypeIcon.d.ts +1 -0
- package/dist/util.cjs.js +1 -0
- package/dist/util.cjs.js.map +1 -1
- package/dist/util.es.js +2 -1
- package/package.json +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.cjs.js.map +0 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useOverviewTable.es.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPanel.cjs.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n\n .title {\n flex: 1;\n }\n\n .preview {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["Button","useSettingsPanel","jsx","Fragment","setting","jsxs","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsPanel.cjs.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n padding-right: var(--padding-s);\n\n .title {\n flex: 1;\n }\n\n .preview,\n .arrow {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n <Icon icon=\"chevron_right\" className=\"arrow\" />\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["Button","useSettingsPanel","jsx","Fragment","setting","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAOA,0BAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAOA,0BAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChEC,sCAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKC,2BAAAA,kBAAAA,IAAAC,WAAAA,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,0CAAA,kBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,iDAACI,oBAAAA,MAAK,EAAA,MAAMF,SAAQ,MAAM;AAAA,+DAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,2BAAAA,kBAAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,cAC5EF,2BAAA,kBAAA,IAAAI,oBAAA,MAAA,EAAK,MAAK,iBAAgB,WAAU,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAPxCF,SAAQ;AAAA,QAShB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,2BAAA,kBAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,kDAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,2BAAA,kBAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,2BAAAA,kBAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,uDAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,2BAAAA,kBAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;;;"}
|
|
@@ -10,6 +10,7 @@ import "react-dom";
|
|
|
10
10
|
import "../../context/pip/PiPWrapper.es.js";
|
|
11
11
|
import "../../context/AddonProjectContext.es.js";
|
|
12
12
|
import "../../context/AddonContext.es.js";
|
|
13
|
+
import "../../context/PowerpackContext.es.js";
|
|
13
14
|
const SidePanel = styled.div`
|
|
14
15
|
height: 100%;
|
|
15
16
|
overflow: hidden;
|
|
@@ -51,12 +52,14 @@ const SettingOption = styled(Button)`
|
|
|
51
52
|
text-align: left;
|
|
52
53
|
display: flex;
|
|
53
54
|
gap: var(--base-gap-small);
|
|
55
|
+
padding-right: var(--padding-s);
|
|
54
56
|
|
|
55
57
|
.title {
|
|
56
58
|
flex: 1;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
|
-
.preview
|
|
61
|
+
.preview,
|
|
62
|
+
.arrow {
|
|
60
63
|
color: var(--md-sys-color-outline);
|
|
61
64
|
}
|
|
62
65
|
`;
|
|
@@ -79,7 +82,8 @@ const SettingsPanel = ({ settings }) => {
|
|
|
79
82
|
children: [
|
|
80
83
|
setting2.icon && /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: setting2.icon }),
|
|
81
84
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "title", children: setting2.title }),
|
|
82
|
-
!!((_a = setting2.preview) == null ? void 0 : _a.toString()) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "preview", children: setting2.preview })
|
|
85
|
+
!!((_a = setting2.preview) == null ? void 0 : _a.toString()) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "preview", children: setting2.preview }),
|
|
86
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: "chevron_right", className: "arrow" })
|
|
83
87
|
]
|
|
84
88
|
},
|
|
85
89
|
setting2.id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPanel.es.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n\n .title {\n flex: 1;\n }\n\n .preview {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["jsx","Fragment","setting","jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsPanel.es.js","sources":["../../../../../src/components/SettingsPanel/SettingsPanel.tsx"],"sourcesContent":["import { Button, Icon } from '@ynput/ayon-react-components'\nimport { FC, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport { SettingField, useSettingsPanel } from '@shared/context'\n\n// Side panel styled components\nconst SidePanel = styled.div<{ open: boolean }>`\n height: 100%;\n overflow: hidden;\n background-color: var(--md-sys-color-surface-container-low);\n border-radius: 4px;\n z-index: 10;\n display: flex;\n flex-direction: column;\n`\n\nconst PanelHeader = styled.div`\n display: flex;\n align-items: center;\n gap: var(--base-gap-small);\n height: 34px;\n padding: 0px 4px;\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n\n h3 {\n margin-left: 4px;\n padding: 0;\n }\n`\n\nconst ToolButton = styled(Button)`\n padding: 4px !important;\n`\n\nconst PanelTitle = styled.h3`\n margin: 0;\n flex: 1;\n`\n\nconst PanelContent = styled.div`\n padding: 8px;\n flex: 1;\n overflow-y: auto;\n`\n\nexport const SettingOption = styled(Button)`\n width: 100%;\n justify-content: flex-start;\n margin-bottom: 8px;\n text-align: left;\n display: flex;\n gap: var(--base-gap-small);\n padding-right: var(--padding-s);\n\n .title {\n flex: 1;\n }\n\n .preview,\n .arrow {\n color: var(--md-sys-color-outline);\n }\n`\n\nexport interface SettingConfig {\n id: SettingField\n title: string\n component: ReactNode\n icon?: string\n preview?: string | number\n}\n\nexport interface SettingsPanelProps {\n settings: SettingConfig[]\n}\n\nexport const SettingsPanel: FC<SettingsPanelProps> = ({ settings }) => {\n const { isPanelOpen, selectedSetting, closePanel, backToMainMenu, selectSetting } =\n useSettingsPanel()\n\n const getPanelTitle = () => {\n if (!selectedSetting) return 'Settings'\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.title || 'Settings'\n }\n\n const renderSettingContent = () => {\n if (!selectedSetting) {\n // Render main menu\n return (\n <>\n {settings.map((setting) => (\n <SettingOption\n key={setting.id}\n onClick={() => selectSetting(setting.id)}\n variant=\"text\"\n >\n {setting.icon && <Icon icon={setting.icon} />}\n <span className=\"title\">{setting.title}</span>\n {!!setting.preview?.toString() && <span className=\"preview\">{setting.preview}</span>}\n <Icon icon=\"chevron_right\" className=\"arrow\" />\n </SettingOption>\n ))}\n </>\n )\n }\n\n const setting = settings.find((s) => s.id === selectedSetting)\n return setting?.component\n }\n\n return (\n <SidePanel open={isPanelOpen}>\n <PanelHeader>\n {selectedSetting && settings.length > 1 && (\n <ToolButton variant=\"text\" icon=\"arrow_back\" onClick={backToMainMenu} />\n )}\n <PanelTitle>{getPanelTitle()}</PanelTitle>\n <ToolButton variant=\"text\" icon=\"close\" onClick={closePanel} />\n </PanelHeader>\n <PanelContent>{renderSettingContent()}</PanelContent>\n </SidePanel>\n )\n}\n"],"names":["jsx","Fragment","setting","jsxs"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAc3B,MAAM,aAAa,OAAO,MAAM;AAAA;AAAA;AAIhC,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAMf,MAAA,gBAAgB,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BnC,MAAM,gBAAwC,CAAC,EAAE,eAAe;AACrE,QAAM,EAAE,aAAa,iBAAiB,YAAY,gBAAgB,kBAChE,iBAAiB;AAEnB,QAAM,gBAAgB,MAAM;AACtB,QAAA,CAAC,gBAAwB,QAAA;AAC7B,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,YAAO,mCAAS,UAAS;AAAA,EAC3B;AAEA,QAAM,uBAAuB,MAAM;AACjC,QAAI,CAAC,iBAAiB;AAEpB,aAEKA,kCAAAA,IAAAC,kBAAAA,UAAA,EAAA,UAAA,SAAS,IAAI,CAACC;;AACbC,iDAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,cAAcD,SAAQ,EAAE;AAAA,YACvC,SAAQ;AAAA,YAEP,UAAA;AAAA,cAAAA,SAAQ,QAAQF,sCAAC,MAAK,EAAA,MAAME,SAAQ,MAAM;AAAA,oDAC1C,QAAK,EAAA,WAAU,SAAS,UAAAA,SAAQ,OAAM;AAAA,cACtC,CAAC,GAACA,cAAQ,YAARA,mBAAiB,eAAeF,kCAAAA,IAAA,QAAA,EAAK,WAAU,WAAW,UAAAE,SAAQ,QAAQ,CAAA;AAAA,cAC5EF,kCAAA,IAAA,MAAA,EAAK,MAAK,iBAAgB,WAAU,QAAQ,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAPxCE,SAAQ;AAAA,QAShB;AAAA,OAAA,GACH;AAAA,IAAA;AAIJ,UAAM,UAAU,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe;AAC7D,WAAO,mCAAS;AAAA,EAClB;AAGE,SAAAC,kCAAA,KAAC,WAAU,EAAA,MAAM,aACf,UAAA;AAAA,IAAAA,uCAAC,aACE,EAAA,UAAA;AAAA,MAAmB,mBAAA,SAAS,SAAS,KACnCH,kCAAA,IAAA,YAAA,EAAW,SAAQ,QAAO,MAAK,cAAa,SAAS,eAAgB,CAAA;AAAA,MAExEA,kCAAAA,IAAC,YAAY,EAAA,UAAA,cAAgB,EAAA,CAAA;AAAA,4CAC5B,YAAW,EAAA,SAAQ,QAAO,MAAK,SAAQ,SAAS,WAAY,CAAA;AAAA,IAAA,GAC/D;AAAA,IACAA,kCAAAA,IAAC,cAAc,EAAA,UAAA,qBAAA,EAAuB,CAAA;AAAA,EAAA,GACxC;AAEJ;"}
|
|
@@ -20,6 +20,8 @@ const getDefaults = (fields, values) => {
|
|
|
20
20
|
defaults[field.name] = 0;
|
|
21
21
|
} else if (field.type === "text") {
|
|
22
22
|
defaults[field.name] = "";
|
|
23
|
+
} else if (field.type === "multiselect") {
|
|
24
|
+
defaults[field.name] = [];
|
|
23
25
|
}
|
|
24
26
|
});
|
|
25
27
|
return defaults;
|
|
@@ -110,6 +112,20 @@ const FormField = ({ field, value, onChange }) => {
|
|
|
110
112
|
}
|
|
111
113
|
);
|
|
112
114
|
}
|
|
115
|
+
if (field.type === "multiselect") {
|
|
116
|
+
const parsedValue = Array.isArray(value) ? value : [];
|
|
117
|
+
return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
|
|
118
|
+
ayonReactComponents.Dropdown,
|
|
119
|
+
{
|
|
120
|
+
widthExpand: true,
|
|
121
|
+
options: field.options || [],
|
|
122
|
+
value: parsedValue,
|
|
123
|
+
onSelectionChange: (e) => onChange(e),
|
|
124
|
+
className: `form-field`,
|
|
125
|
+
multiSelect: true
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
113
129
|
};
|
|
114
130
|
const SimpleFormDialog = ({
|
|
115
131
|
fields,
|
|
@@ -152,8 +168,8 @@ const SimpleFormDialog = ({
|
|
|
152
168
|
onClose,
|
|
153
169
|
header: title,
|
|
154
170
|
footer,
|
|
155
|
-
style: { minHeight:
|
|
156
|
-
children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.
|
|
171
|
+
style: { minHeight: 500, minWidth: 600 },
|
|
172
|
+
children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
|
|
157
173
|
if (field.type === "label") {
|
|
158
174
|
return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(FormLabel, { field }, field.name);
|
|
159
175
|
}
|
|
@@ -170,7 +186,7 @@ const SimpleFormDialog = ({
|
|
|
170
186
|
}
|
|
171
187
|
}
|
|
172
188
|
) }, field.name);
|
|
173
|
-
}) })
|
|
189
|
+
}) })
|
|
174
190
|
}
|
|
175
191
|
);
|
|
176
192
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleFormDialog.cjs.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n }\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 400, minWidth: 600 }}\n >\n <ScrollPanel style={{ flexGrow: 1, background: 'transparent' }}>\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </ScrollPanel>\n </Dialog>\n )\n}\n"],"names":["jsx","InputText","InputSwitch","InputNumber","Dropdown","useState","useEffect","jsxs","Spacer","Button","Dialog","ScrollPanel","FormLayout","FormRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SimpleFormDialog.cjs.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n />\n )\n }\n\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","InputText","InputSwitch","InputNumber","Dropdown","useState","useEffect","jsxs","Spacer","Button","Dialog","FormLayout","FormRow"],"mappings":";;;;;;;AAqBA,MAAM,cAAc,CAAC,QAA2B,WAAgC;AAC9E,QAAM,WAAgC,CAAC;AAChC,SAAA,QAAQ,CAAC,UAAU;AACpB,QAAA,MAAM,QAAQ,QAAQ;AACxB,eAAS,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,IAAA,WAC/B,MAAM,OAAO;AACb,eAAA,MAAM,IAAI,IAAI,MAAM;AAAA,IAAA,WACpB,MAAM,SAAS,WAAW;AAC1B,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,WAAW;AAC1B,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,SAAS;AACxB,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,QAAQ;AACvB,eAAA,MAAM,IAAI,IAAI;AAAA,IAAA,WACd,MAAM,SAAS,eAAe;AAC9B,eAAA,MAAM,IAAI,IAAI,CAAC;AAAA,IAAA;AAAA,EAC1B,CACD;AACM,SAAA;AACT;AAEA,MAAM,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6B9B,MAAM,YAAY,CAAC,EAAE,YAA4B;AAC/C,QAAM,OAAO,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AAG3D,SAAAA,2BAAA,kBAAA,IAAC,kBAAe,WAAW,MAAM,aAAa,UAC5C,UAAAA,2BAAAA,kBAAAA,IAAC,eAAe,EAAA,UAAA,KAAA,CAAK,EACvB,CAAA;AAEJ;AAQA,MAAM,YAAY,CAAC,EAAE,OAAO,OAAO,eAA+B;AAC5D,MAAA,MAAM,SAAS,QAAQ;AACzB,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAA,2BAAA,kBAAA;AAAA,MAACC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,QACxC,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAGA,MAAA,MAAM,SAAS,WAAW;AAC5B,UAAM,cAAc,OAAO,UAAU,YAAY,QAAQ;AAEnD,UAAA,sBAAsB,CAC1B,UACG;AACH,UAAI,YAAY,SAAS,aAAa,MAAM,QAAQ;AACxC,iBAAA,MAAM,OAA4B,OAAO;AAAA,MAAA;AAAA,IAEvD;AAEA,WAAQD,2BAAAA,kBAAAA,IAAAE,oBAAAA,aAAA,EAAY,SAAS,aAAa,UAAU,qBAAqB;AAAA,EAAA;AAEvE,MAAA,MAAM,SAAS,WAAW;AAC5B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAF,2BAAA,kBAAA;AAAA,MAACG,oBAAA;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,SAAS,EAAE,OAAO,KAAK,CAAC;AAAA,QAClD,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAGA,MAAA,MAAM,SAAS,SAAS;AAC1B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAH,2BAAA,kBAAA;AAAA,MAACG,oBAAA;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,SAAS,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,QACpD,aAAa,MAAM,eAAe;AAAA,MAAA;AAAA,IACpC;AAAA,EAAA;AAIA,MAAA,MAAM,SAAS,UAAU;AAC3B,UAAM,cAAc,OAAO,UAAU,WAAW,QAAQ;AAEtD,WAAAH,2BAAA,kBAAA;AAAA,MAACI,oBAAA;AAAA,MAAA;AAAA,QACC,aAAW;AAAA,QACX,SAAS,MAAM,WAAW,CAAC;AAAA,QAC3B,OAAO,cAAc,CAAC,WAAW,IAAI,CAAC;AAAA,QACtC,mBAAmB,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;AAAA,QACvC,WAAW;AAAA,QACX,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EAAA;AAIA,MAAA,MAAM,SAAS,eAAe;AAChC,UAAM,cAAc,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC;AAElD,WAAAJ,2BAAA,kBAAA;AAAA,MAACI,oBAAA;AAAA,MAAA;AAAA,QACC,aAAW;AAAA,QACX,SAAS,MAAM,WAAW,CAAC;AAAA,QAC3B,OAAO;AAAA,QACP,mBAAmB,CAAC,MAAM,SAAS,CAAC;AAAA,QACpC,WAAW;AAAA,QACX,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,EAAA;AAIN;AAeO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA6B;AAC3B,QAAM,CAAC,UAAU,WAAW,IAAIC,MAAAA,SAAqC,IAAI;AAEzEC,QAAAA,UAAU,MAAM;AACd,QAAI,QAAQ;AACV,YAAM,WAAW,YAAY,QAAQ,UAAU,CAAA,CAAE;AACjD,kBAAY,QAAQ;AAAA,IAAA;AAAA,EAErB,GAAA,CAAC,QAAQ,QAAQ,MAAM,CAAC;AAEvB,MAAA,CAAC,OAAe,QAAA;AAChB,MAAA,CAAC,SAAiB,QAAA;AAEhB,QAAA,SACHC,2BAAA,kBAAA,KAAA,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,OAAO,KAAK,EAAA,GACxD,UAAA;AAAA,IAAAP,2BAAA,kBAAA,IAACQ,oBAAO,QAAA,EAAA;AAAA,IACP,eACER,2BAAA,kBAAA,IAAAS,4BAAA,EAAO,SAAS,MAAM,QAAW,GAAA,OAAO,aAAa,MAAM,WAAY,CAAA;AAAA,IAEzE,eACCT,2BAAA,kBAAA;AAAA,MAACS,oBAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,SAAS,QAAQ;AAAA,QAChC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,GAEJ;AAIA,SAAAT,2BAAA,kBAAA;AAAA,IAACU,oBAAA;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA,OAAO,EAAE,WAAW,KAAK,UAAU,IAAI;AAAA,MAErC,UAAAV,2BAAA,kBAAA,IAACW,gCAAW,EAAA,OAAO,EAAE,OAAO,SACzB,UAAA,OAAO,IAAI,CAAC,UAA2B;AAClC,YAAA,MAAM,SAAS,SAAS;AAC1B,iBAAQX,2BAAAA,kBAAAA,IAAA,WAAA,EAA2B,MAAZ,GAAA,MAAM,IAAoB;AAAA,QAAA;AAGnD,eACGA,2BAAA,kBAAA,IAAAY,oBAAA,SAAA,EAAyB,OAAO,MAAM,SAAS,IAC9C,UAAAZ,2BAAA,kBAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,OAAO,SAAS,MAAM,IAAI;AAAA,YAC1B,UAAU,CAAC,UAAU;AACnB,0BAAY,CAAC,UAAU;AAAA,gBACrB,GAAG;AAAA,gBACH,CAAC,MAAM,IAAI,GAAG;AAAA,cAAA,EACd;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA,EACF,GAVY,MAAM,IAWpB;AAAA,MAAA,CAEH,EACH,CAAA;AAAA,IAAA;AAAA,EACJ;AAEJ;;"}
|
|
@@ -2,7 +2,7 @@ import { j as jsxRuntimeExports } from "../../../../_virtual/jsx-runtime.es.js";
|
|
|
2
2
|
import styled from "styled-components";
|
|
3
3
|
import { useState, useEffect } from "react";
|
|
4
4
|
import ReactMarkdown from "react-markdown";
|
|
5
|
-
import { Dialog,
|
|
5
|
+
import { Dialog, FormLayout, FormRow, Spacer, Button, InputText, InputSwitch, InputNumber, Dropdown } from "@ynput/ayon-react-components";
|
|
6
6
|
const getDefaults = (fields, values) => {
|
|
7
7
|
const defaults = {};
|
|
8
8
|
fields.forEach((field) => {
|
|
@@ -18,6 +18,8 @@ const getDefaults = (fields, values) => {
|
|
|
18
18
|
defaults[field.name] = 0;
|
|
19
19
|
} else if (field.type === "text") {
|
|
20
20
|
defaults[field.name] = "";
|
|
21
|
+
} else if (field.type === "multiselect") {
|
|
22
|
+
defaults[field.name] = [];
|
|
21
23
|
}
|
|
22
24
|
});
|
|
23
25
|
return defaults;
|
|
@@ -108,6 +110,20 @@ const FormField = ({ field, value, onChange }) => {
|
|
|
108
110
|
}
|
|
109
111
|
);
|
|
110
112
|
}
|
|
113
|
+
if (field.type === "multiselect") {
|
|
114
|
+
const parsedValue = Array.isArray(value) ? value : [];
|
|
115
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
116
|
+
Dropdown,
|
|
117
|
+
{
|
|
118
|
+
widthExpand: true,
|
|
119
|
+
options: field.options || [],
|
|
120
|
+
value: parsedValue,
|
|
121
|
+
onSelectionChange: (e) => onChange(e),
|
|
122
|
+
className: `form-field`,
|
|
123
|
+
multiSelect: true
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
}
|
|
111
127
|
};
|
|
112
128
|
const SimpleFormDialog = ({
|
|
113
129
|
fields,
|
|
@@ -150,8 +166,8 @@ const SimpleFormDialog = ({
|
|
|
150
166
|
onClose,
|
|
151
167
|
header: title,
|
|
152
168
|
footer,
|
|
153
|
-
style: { minHeight:
|
|
154
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
169
|
+
style: { minHeight: 500, minWidth: 600 },
|
|
170
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormLayout, { style: { width: "95%" }, children: fields.map((field) => {
|
|
155
171
|
if (field.type === "label") {
|
|
156
172
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(FormLabel, { field }, field.name);
|
|
157
173
|
}
|
|
@@ -168,7 +184,7 @@ const SimpleFormDialog = ({
|
|
|
168
184
|
}
|
|
169
185
|
}
|
|
170
186
|
) }, field.name);
|
|
171
|
-
}) })
|
|
187
|
+
}) })
|
|
172
188
|
}
|
|
173
189
|
);
|
|
174
190
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n }\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 400, minWidth: 600 }}\n >\n <ScrollPanel style={{ flexGrow: 1, background: 'transparent' }}>\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </ScrollPanel>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SimpleFormDialog.es.js","sources":["../../../../../src/components/SimpleFormDialog/SimpleFormDialog.tsx"],"sourcesContent":["import styled from 'styled-components'\nimport React, { useState, useEffect } from 'react'\nimport ReactMarkdown from 'react-markdown'\nimport {\n ScrollPanel,\n Button,\n Spacer,\n Dialog,\n FormLayout,\n FormRow,\n InputNumber,\n InputText,\n InputSwitch,\n Dropdown,\n} from '@ynput/ayon-react-components'\n\nimport type { SimpleFormField } from '@shared/api'\n\nexport type SimpleFormValue = string | number | boolean | string[] | null | undefined\nexport type SimpleFormValueDict = Record<string, SimpleFormValue>\n\nconst getDefaults = (fields: SimpleFormField[], values: SimpleFormValueDict) => {\n const defaults: SimpleFormValueDict = {}\n fields.forEach((field) => {\n if (field.name in values) {\n defaults[field.name] = values[field.name]\n } else if (field.value) {\n defaults[field.name] = field.value\n } else if (field.type === 'boolean') {\n defaults[field.name] = false\n } else if (field.type === 'integer') {\n defaults[field.name] = 0\n } else if (field.type === 'float') {\n defaults[field.name] = 0.0\n } else if (field.type === 'text') {\n defaults[field.name] = ''\n } else if (field.type === 'multiselect') {\n defaults[field.name] = []\n }\n })\n return defaults\n}\n\nconst LabelContainer = styled.div`\n &.normal {\n // maybe something here\n }\n\n &.info,\n &.warning,\n &.error {\n padding: 0.5rem;\n text-align: center;\n font-weight: bold;\n margin: 1rem 0;\n }\n\n &.info {\n background-color: var(--md-sys-color-on-secondary-dark);\n }\n &.warning {\n background-color: var(--md-sys-color-warning-container-dark);\n }\n &.error {\n background-color: var(--md-sys-color-on-error-dark);\n }\n`\n\ntype FormLabelProps = {\n field: SimpleFormField\n}\n\nconst FormLabel = ({ field }: FormLabelProps) => {\n const text = typeof field.value === 'string' ? field.value : 'Invalid label value'\n\n return (\n <LabelContainer className={field.highlight || 'normal'}>\n <ReactMarkdown>{text}</ReactMarkdown>\n </LabelContainer>\n )\n}\n\ntype FormFieldProps = {\n field: SimpleFormField\n value: SimpleFormValue\n onChange: (value: SimpleFormValue) => void\n}\n\nconst FormField = ({ field, value, onChange }: FormFieldProps) => {\n if (field.type === 'text') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <InputText\n value={parsedValue}\n onChange={(e) => onChange(e.target.value)}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'boolean') {\n const parsedValue = typeof value === 'boolean' ? value : false\n\n const handleCheckboxEvent = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if ('target' in event && 'checked' in event.target) {\n onChange((event.target as HTMLInputElement).checked)\n }\n }\n\n return <InputSwitch checked={parsedValue} onChange={handleCheckboxEvent} />\n }\n if (field.type === 'integer') {\n const parsedValue = typeof value === 'number' ? value : 0\n return (\n <InputNumber\n value={parsedValue}\n onChange={(e) => onChange(parseInt(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n if (field.type === 'float') {\n const parsedValue = typeof value === 'number' ? value : 0.0\n return (\n <InputNumber\n type=\"number\"\n value={parsedValue}\n onChange={(e) => onChange(parseFloat(e.target.value))}\n placeholder={field.placeholder || ''}\n />\n )\n }\n\n if (field.type === 'select') {\n const parsedValue = typeof value === 'string' ? value : ''\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue ? [parsedValue] : []}\n onSelectionChange={(e) => onChange(e[0])}\n className={`form-field`}\n multiSelect={false}\n />\n )\n } // Handle select\n\n if (field.type === 'multiselect') {\n const parsedValue = Array.isArray(value) ? value : []\n return (\n <Dropdown\n widthExpand\n options={field.options || []}\n value={parsedValue}\n onSelectionChange={(e) => onChange(e)}\n className={`form-field`}\n multiSelect={true}\n />\n )\n }\n\n}\n\nexport interface SimpleFormDialogProps {\n title: string\n fields: SimpleFormField[]\n values?: SimpleFormValueDict\n submitLabel?: string\n cancelLabel?: string\n submitIcon?: string\n cancelIcon?: string\n onClose: () => void\n onSubmit: (values: SimpleFormValueDict) => void\n isOpen: boolean\n}\n\nexport const SimpleFormDialog = ({\n fields,\n values,\n onClose,\n onSubmit,\n isOpen,\n title,\n submitLabel,\n cancelLabel,\n submitIcon,\n cancelIcon,\n}: SimpleFormDialogProps) => {\n const [formData, setFormData] = useState<SimpleFormValueDict | null>(null)\n\n useEffect(() => {\n if (isOpen) {\n const defaults = getDefaults(fields, values || {})\n setFormData(defaults)\n }\n }, [isOpen, fields, values])\n\n if (!isOpen) return null\n if (!formData) return null\n\n const footer = (\n <div style={{ display: 'flex', flexDirection: 'row', gap: 8 }}>\n <Spacer />\n {cancelLabel && (\n <Button onClick={() => onClose()} label={cancelLabel} icon={cancelIcon} />\n )}\n {submitLabel && (\n <Button\n onClick={() => onSubmit(formData)}\n label={submitLabel}\n icon={submitIcon}\n variant=\"filled\"\n />\n )}\n </div>\n )\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n header={title}\n footer={footer}\n style={{ minHeight: 500, minWidth: 600 }}\n >\n <FormLayout style={{ width: '95%' }}>\n {fields.map((field: SimpleFormField) => {\n if (field.type === 'label') {\n return <FormLabel key={field.name} field={field} />\n }\n\n return (\n <FormRow key={field.name} label={field.label || ''}>\n <FormField\n field={field}\n value={formData[field.name]}\n onChange={(value) => {\n setFormData((prev) => ({\n ...prev,\n [field.name]: value,\n }))\n }}\n />\n </FormRow>\n )\n })}\n </FormLayout>\n </Dialog>\n )\n}\n"],"names":["jsx","jsxs"],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ require("react-dom");
|
|
|
14
14
|
require("../../context/pip/PiPWrapper.cjs.js");
|
|
15
15
|
require("../../context/AddonProjectContext.cjs.js");
|
|
16
16
|
require("../../context/AddonContext.cjs.js");
|
|
17
|
+
require("../../context/PowerpackContext.cjs.js");
|
|
17
18
|
const StackedStyled = styled.div`
|
|
18
19
|
display: flex;
|
|
19
20
|
z-index: 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedThumbnails.cjs.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["css","useContext","ThumbnailUploadContext","jsx","Thumbnail"],"mappings":"
|
|
1
|
+
{"version":3,"file":"StackedThumbnails.cjs.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["css","useContext","ThumbnailUploadContext","jsx","Thumbnail"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACVA,OAAA;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkBC,MAAA,WAAWC,+CAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAC,2BAAA,kBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,2BAAA,kBAAA;AAAA,UAACC,UAAA;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;;"}
|
|
@@ -12,6 +12,7 @@ import "react-dom";
|
|
|
12
12
|
import "../../context/pip/PiPWrapper.es.js";
|
|
13
13
|
import "../../context/AddonProjectContext.es.js";
|
|
14
14
|
import "../../context/AddonContext.es.js";
|
|
15
|
+
import "../../context/PowerpackContext.es.js";
|
|
15
16
|
const StackedStyled = styled.div`
|
|
16
17
|
display: flex;
|
|
17
18
|
z-index: 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedThumbnails.es.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"StackedThumbnails.es.js","sources":["../../../../../src/components/Thumbnail/StackedThumbnails.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport styled, { css } from 'styled-components'\nimport { Thumbnail } from './Thumbnail'\nimport clsx from 'clsx'\nimport { ThumbnailUploadContext } from '@shared/context'\nimport { ThumbnailProps } from '@shared/components'\n\ntype StackedStyledProps = {\n $length: number\n}\n\nconst StackedStyled = styled.div<StackedStyledProps>`\n display: flex;\n z-index: 10;\n height: 100%;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n min-width: min-content;\n cursor: pointer;\n\n &.stacking {\n & > * {\n margin: unset;\n aspect-ratio: 1;\n border: solid 2px var(--md-sys-color-outline-variant);\n border-radius: 8px;\n\n span {\n font-size: 24px;\n }\n\n ${({ $length }) =>\n $length > 1 &&\n css`\n :not(:last-child) {\n box-shadow: 0 0 4px 0px black;\n }\n `}\n }\n\n /* create stacked effect */\n & > * + * {\n margin-left: ${({ $length }) => `${Math.max(-20, -$length * 1.5 - 8)}px`};\n }\n\n .thumbnail img {\n object-fit: cover;\n }\n }\n`\n\ntype Thumbnail = {\n id?: string\n type?: string\n projectName?: string\n icon?: string\n updatedAt?: string\n src?: string\n}\n\nexport interface StackedThumbnailsProps\n extends Omit<ThumbnailProps, 'entityType' | 'entityId' | 'projectName'> {\n thumbnails?: Thumbnail[]\n isLoading?: boolean\n className?: string\n style?: React.CSSProperties\n}\n\nexport const StackedThumbnails = ({\n thumbnails = [],\n isLoading,\n className,\n style,\n ...props\n}: StackedThumbnailsProps) => {\n const { onContextMenu } = useContext(ThumbnailUploadContext)\n // limit to 5 users\n thumbnails = thumbnails.slice(0, 5)\n const isStacking = thumbnails.length > 1\n\n if (!thumbnails.length) return null\n\n return (\n <StackedStyled\n $length={thumbnails.length}\n className={clsx('stacked-thumbnails', className, { stacking: isStacking })}\n >\n {thumbnails.map((thumb, i) =>\n thumb ? (\n <Thumbnail\n projectName={thumb.projectName}\n entityType={thumb.type}\n entityId={thumb.id}\n icon={thumb.icon}\n key={thumb.id || thumb.src || i}\n style={{ ...style, zIndex: -i }}\n entityUpdatedAt={thumb.updatedAt}\n isLoading={isLoading}\n src={thumb.src}\n // @ts-ignore\n onContextMenu={onContextMenu}\n {...props}\n />\n ) : null,\n )}\n </StackedStyled>\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqBrB,CAAC,EAAE,QAAQ,MACX,UAAU,KACV;AAAA;AAAA;AAAA;AAAA,SAIC;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKY,CAAC,EAAE,QAAQ,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BvE,MAAM,oBAAoB,CAAC;AAAA,EAChC,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,EAAE,cAAA,IAAkB,WAAW,sBAAsB;AAE9C,eAAA,WAAW,MAAM,GAAG,CAAC;AAC5B,QAAA,aAAa,WAAW,SAAS;AAEnC,MAAA,CAAC,WAAW,OAAe,QAAA;AAG7B,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,WAAW;AAAA,MACpB,WAAW,KAAK,sBAAsB,WAAW,EAAE,UAAU,YAAY;AAAA,MAExE,UAAW,WAAA;AAAA,QAAI,CAAC,OAAO,MACtB,QACEA,kCAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAa,MAAM;AAAA,YACnB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,MAAM,MAAM;AAAA,YAEZ,OAAO,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,YAC9B,iBAAiB,MAAM;AAAA,YACvB;AAAA,YACA,KAAK,MAAM;AAAA,YAEX;AAAA,YACC,GAAG;AAAA,UAAA;AAAA,UAPC,MAAM,MAAM,MAAM,OAAO;AAAA,QAAA,IAS9B;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;"}
|
|
@@ -91,6 +91,7 @@ require("react-dom");
|
|
|
91
91
|
require("../../context/pip/PiPWrapper.cjs.js");
|
|
92
92
|
require("../../context/AddonProjectContext.cjs.js");
|
|
93
93
|
require("../../context/AddonContext.cjs.js");
|
|
94
|
+
require("../../context/PowerpackContext.cjs.js");
|
|
94
95
|
require("../../components/ReviewableCard/ReviewableCard.cjs.js");
|
|
95
96
|
require("../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");
|
|
96
97
|
require("../../components/FileThumbnail/FileThumbnail.cjs.js");
|
|
@@ -134,6 +135,7 @@ require("../ProjectTreeTable/context/CellEditingContext.cjs.js");
|
|
|
134
135
|
require("../ProjectTreeTable/context/ClipboardContext.cjs.js");
|
|
135
136
|
require("../ProjectTreeTable/context/ProjectTableSelectionContext.cjs.js");
|
|
136
137
|
require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
|
|
138
|
+
require("../ProjectTreeTable/context/ProjectTableModulesContext.cjs.js");
|
|
137
139
|
require("@tanstack/react-table");
|
|
138
140
|
require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
|
|
139
141
|
require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
|
|
@@ -142,10 +144,12 @@ require("../ProjectTreeTable/widgets/TextWidget.cjs.js");
|
|
|
142
144
|
require("../ProjectTreeTable/widgets/BooleanWidget.cjs.js");
|
|
143
145
|
require("../ProjectTreeTable/widgets/CellWidget.cjs.js");
|
|
144
146
|
require("../ProjectTreeTable/widgets/EntityNameWidget.cjs.js");
|
|
147
|
+
require("../ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");
|
|
145
148
|
require("../ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");
|
|
146
149
|
require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");
|
|
147
150
|
require("../ProjectTreeTable/components/SelectionCell.cjs.js");
|
|
148
151
|
require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");
|
|
152
|
+
require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");
|
|
149
153
|
require("../DetailsPanel/DetailsPanel.styled.cjs.js");
|
|
150
154
|
require("../../../../_virtual/runtime.cjs.js");
|
|
151
155
|
require("../../../../_virtual/semver.cjs.js");
|
|
@@ -167,10 +171,14 @@ require("../../components/EntityPath/SegmentProvider.cjs.js");
|
|
|
167
171
|
require("../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");
|
|
168
172
|
require("../../components/Watchers/Watchers.cjs.js");
|
|
169
173
|
require("../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");
|
|
174
|
+
require("../../components/Powerpack/PowerpackButton.cjs.js");
|
|
175
|
+
require("../../components/Powerpack/PricingLink.cjs.js");
|
|
176
|
+
require("../../components/Powerpack/PowerpackDialog.styled.cjs.js");
|
|
170
177
|
require("../../components/SettingsPanel/SettingsPanel.cjs.js");
|
|
171
178
|
require("../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");
|
|
172
179
|
require("../../components/AttributeEditor/components/MinMaxField.cjs.js");
|
|
173
180
|
require("../../components/EnumEditor/EnumEditor.styled.cjs.js");
|
|
181
|
+
require("../../components/SearchFilter/filterDates.cjs.js");
|
|
174
182
|
const ActionConfigDialog = ({ action, onClose, context }) => {
|
|
175
183
|
const requestParams = React.useMemo(() => {
|
|
176
184
|
if (!action) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActionConfigDialog.cjs.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["useMemo","useSetActionConfigMutation","useGetActionConfigQuery","toast","jsx","SimpleFormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJA,MAAAA,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAIC,sCAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAeC,WAAAA,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9CC,oBAAA,MAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAC,2BAAA,kBAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;;"}
|
|
@@ -89,6 +89,7 @@ import "react-dom";
|
|
|
89
89
|
import "../../context/pip/PiPWrapper.es.js";
|
|
90
90
|
import "../../context/AddonProjectContext.es.js";
|
|
91
91
|
import "../../context/AddonContext.es.js";
|
|
92
|
+
import "../../context/PowerpackContext.es.js";
|
|
92
93
|
import "../../components/ReviewableCard/ReviewableCard.es.js";
|
|
93
94
|
import "../../components/ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
|
|
94
95
|
import "../../components/FileThumbnail/FileThumbnail.es.js";
|
|
@@ -132,6 +133,7 @@ import "../ProjectTreeTable/context/CellEditingContext.es.js";
|
|
|
132
133
|
import "../ProjectTreeTable/context/ClipboardContext.es.js";
|
|
133
134
|
import "../ProjectTreeTable/context/ProjectTableSelectionContext.es.js";
|
|
134
135
|
import "../ProjectTreeTable/context/ProjectDataContext.es.js";
|
|
136
|
+
import "../ProjectTreeTable/context/ProjectTableModulesContext.es.js";
|
|
135
137
|
import "@tanstack/react-table";
|
|
136
138
|
import "../ProjectTreeTable/widgets/CollapsedWidget.es.js";
|
|
137
139
|
import "../ProjectTreeTable/widgets/DateWidget.es.js";
|
|
@@ -140,10 +142,12 @@ import "../ProjectTreeTable/widgets/TextWidget.es.js";
|
|
|
140
142
|
import "../ProjectTreeTable/widgets/BooleanWidget.es.js";
|
|
141
143
|
import "../ProjectTreeTable/widgets/CellWidget.es.js";
|
|
142
144
|
import "../ProjectTreeTable/widgets/EntityNameWidget.es.js";
|
|
145
|
+
import "../ProjectTreeTable/widgets/GroupHeaderWidget.es.js";
|
|
143
146
|
import "../ProjectTreeTable/widgets/ThumbnailWidget.es.js";
|
|
144
147
|
import "../ProjectTreeTable/ProjectTreeTable.styled.es.js";
|
|
145
148
|
import "../ProjectTreeTable/components/SelectionCell.es.js";
|
|
146
149
|
import "../ProjectTreeTable/components/RowSelectionHeader.es.js";
|
|
150
|
+
import "../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
|
|
147
151
|
import "../DetailsPanel/DetailsPanel.styled.es.js";
|
|
148
152
|
import "../../../../_virtual/runtime.es.js";
|
|
149
153
|
import "../../../../_virtual/semver.es.js";
|
|
@@ -165,10 +169,14 @@ import "../../components/EntityPath/SegmentProvider.es.js";
|
|
|
165
169
|
import "../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
|
|
166
170
|
import "../../components/Watchers/Watchers.es.js";
|
|
167
171
|
import "../../components/ProjectTableSettings/ProjectTableSettings.es.js";
|
|
172
|
+
import "../../components/Powerpack/PowerpackButton.es.js";
|
|
173
|
+
import "../../components/Powerpack/PricingLink.es.js";
|
|
174
|
+
import "../../components/Powerpack/PowerpackDialog.styled.es.js";
|
|
168
175
|
import "../../components/SettingsPanel/SettingsPanel.es.js";
|
|
169
176
|
import "../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
|
|
170
177
|
import "../../components/AttributeEditor/components/MinMaxField.es.js";
|
|
171
178
|
import "../../components/EnumEditor/EnumEditor.styled.es.js";
|
|
179
|
+
import "../../components/SearchFilter/filterDates.es.js";
|
|
172
180
|
const ActionConfigDialog = ({ action, onClose, context }) => {
|
|
173
181
|
const requestParams = useMemo(() => {
|
|
174
182
|
if (!action) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActionConfigDialog.es.js","sources":["../../../../../src/containers/Actions/ActionConfigDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { SimpleFormDialog } from '@shared/components'\nimport type { SimpleFormValueDict } from '@shared/components'\n\nimport { useGetActionConfigQuery, useSetActionConfigMutation } from '@shared/api'\nimport type { ActionContext, BaseActionManifest } from '@shared/api'\n\ntype ConfigData = Record<string, any>\n\ninterface ActionConfigDialogProps {\n action: BaseActionManifest\n context: ActionContext\n onClose: () => void\n}\n\ninterface ActionConfigRequestQueryParams {\n addonName: string\n addonVersion: string\n variant?: string\n identifier: string\n}\n\nexport const ActionConfigDialog = ({ action, onClose, context }: ActionConfigDialogProps) => {\n const requestParams: ActionConfigRequestQueryParams | null =\n useMemo<ActionConfigRequestQueryParams | null>(() => {\n if (!action) return null\n if (!(action.addonName && action.addonVersion)) return null // this should never happen\n return {\n addonName: action.addonName,\n addonVersion: action.addonVersion,\n variant: action.variant,\n identifier: action.identifier,\n }\n }, [action])\n\n const [configureAction] = useSetActionConfigMutation()\n\n // make typescript happily unknowing about the type\n // because even if we pass skip, arguments are still required in the right type. that's cursed\n const qp: any = { actionConfig: context, ...(requestParams || {}) }\n const { data: initValues } = useGetActionConfigQuery(qp, { skip: !requestParams })\n\n // it would be sooo cool if i could do this BEFORE the query and ommit that\n // qp thing, but i can't. because it would change the hook order. ffs\n if (!(initValues && action?.configFields && action && requestParams)) {\n return null\n }\n\n const handleSubmit = async (data: ConfigData) => {\n try {\n await configureAction({\n actionConfig: { ...context, value: data },\n ...requestParams,\n }).unwrap()\n onClose()\n } catch (error) {\n console.warn('Error configuring action', error)\n toast.error('Unable to set the action configuration')\n }\n }\n\n return (\n <SimpleFormDialog\n isOpen\n title={`Configure action ${action.label}`}\n fields={action.configFields}\n values={initValues as SimpleFormValueDict}\n onClose={onClose}\n onSubmit={handleSubmit}\n submitLabel=\"Save action config\"\n cancelLabel=\"Cancel\"\n submitIcon=\"check\"\n cancelIcon=\"close\"\n />\n )\n}\n"],"names":["jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,qBAAqB,CAAC,EAAE,QAAQ,SAAS,cAAuC;AACrF,QAAA,gBACJ,QAA+C,MAAM;AAC/C,QAAA,CAAC,OAAe,QAAA;AACpB,QAAI,EAAE,OAAO,aAAa,OAAO,cAAsB,QAAA;AAChD,WAAA;AAAA,MACL,WAAW,OAAO;AAAA,MAClB,cAAc,OAAO;AAAA,MACrB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACrB;AAAA,EAAA,GACC,CAAC,MAAM,CAAC;AAEP,QAAA,CAAC,eAAe,IAAI,2BAA2B;AAIrD,QAAM,KAAU,EAAE,cAAc,SAAS,GAAI,iBAAiB,CAAA,EAAI;AAC5D,QAAA,EAAE,MAAM,eAAe,wBAAwB,IAAI,EAAE,MAAM,CAAC,eAAe;AAIjF,MAAI,EAAE,eAAc,iCAAQ,iBAAgB,UAAU,gBAAgB;AAC7D,WAAA;AAAA,EAAA;AAGH,QAAA,eAAe,OAAO,SAAqB;AAC3C,QAAA;AACF,YAAM,gBAAgB;AAAA,QACpB,cAAc,EAAE,GAAG,SAAS,OAAO,KAAK;AAAA,QACxC,GAAG;AAAA,MACJ,CAAA,EAAE,OAAO;AACF,cAAA;AAAA,aACD,OAAO;AACN,cAAA,KAAK,4BAA4B,KAAK;AAC9C,YAAM,MAAM,wCAAwC;AAAA,IAAA;AAAA,EAExD;AAGE,SAAAA,kCAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAM;AAAA,MACN,OAAO,oBAAoB,OAAO,KAAK;AAAA,MACvC,QAAQ,OAAO;AAAA,MACf,QAAQ;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,YAAW;AAAA,MACX,YAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
|
|
@@ -84,6 +84,7 @@ require("react-dom");
|
|
|
84
84
|
require("../../context/pip/PiPWrapper.cjs.js");
|
|
85
85
|
require("../../context/AddonProjectContext.cjs.js");
|
|
86
86
|
require("../../context/AddonContext.cjs.js");
|
|
87
|
+
require("../../context/PowerpackContext.cjs.js");
|
|
87
88
|
const useActionTriggers = require("../../hooks/useActionTriggers.cjs.js");
|
|
88
89
|
const ActionConfigDialog = require("./ActionConfigDialog.cjs.js");
|
|
89
90
|
const InteractiveActionDialog = require("./InteractiveActionDialog.cjs.js");
|
|
@@ -111,6 +112,7 @@ const Actions = ({
|
|
|
111
112
|
const context = React.useMemo(() => {
|
|
112
113
|
if (projectActionsProjectName) {
|
|
113
114
|
return {
|
|
115
|
+
entityType: "project",
|
|
114
116
|
projectName: projectActionsProjectName
|
|
115
117
|
};
|
|
116
118
|
}
|