@ynput/ayon-frontend-shared 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es4.js +2 -5
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +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/web-namespaces/index.cjs.js +1 -1
- package/dist/node_modules/web-namespaces/index.cjs.js.map +1 -1
- package/dist/node_modules/web-namespaces/index.es.js +3 -8
- package/dist/node_modules/web-namespaces/index.es.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +12 -8
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +11 -7
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/getOverview.es.js +95 -95
- package/dist/shared/src/api/queries/overview/getOverview.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js +2 -2
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js +66 -61
- package/dist/shared/src/components/ProjectTableSettings/ColumnsSettings.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +14 -11
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +42 -41
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +23 -23
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useTransformActivities.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js +6 -6
- package/dist/shared/src/containers/Feed/hooks/useTransformActivities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +65 -64
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +16 -16
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +142 -146
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +24 -24
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +141 -132
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +35 -28
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidget.es.js +10 -10
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
- package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.es.js +62 -49
- package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.es.js +86 -80
- package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
- package/dist/types/api/generated/graphql.d.ts +2 -1
- package/dist/types/api/generated/graphqlLinks.d.ts +1 -0
- package/dist/types/api/queries/overview/getOverview.d.ts +1 -0
- package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +1 -0
- package/dist/types/components/SearchFilter/useBuildFilterOptions.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/hooks/useFetchOverviewData.d.ts +2 -1
- package/dist/types/containers/ProjectTreeTable/hooks/useQueryFilters.d.ts +4 -1
- package/dist/types/context/AddonContext.d.ts +1 -0
- package/dist/types/context/ProjectFoldersContext.d.ts +1 -0
- package/package.json +2 -1
- package/dist/node_modules/@ungap/structured-clone/esm/deserialize.cjs.js +0 -2
- package/dist/node_modules/@ungap/structured-clone/esm/deserialize.cjs.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/deserialize.es.js +0 -63
- package/dist/node_modules/@ungap/structured-clone/esm/deserialize.es.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/index.cjs.js +0 -2
- package/dist/node_modules/@ungap/structured-clone/esm/index.cjs.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/index.es.js +0 -12
- package/dist/node_modules/@ungap/structured-clone/esm/index.es.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/serialize.cjs.js +0 -2
- package/dist/node_modules/@ungap/structured-clone/esm/serialize.cjs.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/serialize.es.js +0 -107
- package/dist/node_modules/@ungap/structured-clone/esm/serialize.es.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/types.cjs.js +0 -2
- package/dist/node_modules/@ungap/structured-clone/esm/types.cjs.js.map +0 -1
- package/dist/node_modules/@ungap/structured-clone/esm/types.es.js +0 -14
- package/dist/node_modules/@ungap/structured-clone/esm/types.es.js.map +0 -1
- package/dist/node_modules/devlop/lib/default.cjs.js +0 -2
- package/dist/node_modules/devlop/lib/default.cjs.js.map +0 -1
- package/dist/node_modules/devlop/lib/default.es.js +0 -6
- package/dist/node_modules/devlop/lib/default.es.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/decode-codepoint.cjs.js +0 -2
- package/dist/node_modules/entities/dist/esm/decode-codepoint.cjs.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/decode-codepoint.es.js +0 -39
- package/dist/node_modules/entities/dist/esm/decode-codepoint.es.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/decode.cjs.js +0 -2
- package/dist/node_modules/entities/dist/esm/decode.cjs.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/decode.es.js +0 -246
- package/dist/node_modules/entities/dist/esm/decode.es.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/generated/decode-data-html.cjs.js +0 -2
- package/dist/node_modules/entities/dist/esm/generated/decode-data-html.cjs.js.map +0 -1
- package/dist/node_modules/entities/dist/esm/generated/decode-data-html.es.js +0 -8
- package/dist/node_modules/entities/dist/esm/generated/decode-data-html.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/lib/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/lib/index.es.js +0 -218
- package/dist/node_modules/hast-util-raw/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.es.js +0 -146
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.es.js +0 -21
- package/dist/node_modules/hast-util-raw/node_modules/hast-util-parse-selector/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.es.js +0 -113
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/create-h.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.es.js +0 -9
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.es.js +0 -45
- package/dist/node_modules/hast-util-raw/node_modules/hastscript/lib/svg-case-sensitive-tag-names.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.es.js +0 -26
- package/dist/node_modules/hast-util-raw/node_modules/html-void-elements/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.es.js +0 -99
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/doctype.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.es.js +0 -8
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/error-codes.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.es.js +0 -211
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/foreign-content.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.es.js +0 -251
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/html.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.es.js +0 -15
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/token.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.es.js +0 -74
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/common/unicode.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.es.js +0 -85
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/formatting-element-list.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.es.js +0 -2272
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.es.js +0 -241
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/parser/open-element-stack.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.es.js +0 -3
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/serializer/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.es.js +0 -1941
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.es.js +0 -89
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tokenizer/preprocessor.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.es.js +0 -163
- package/dist/node_modules/hast-util-raw/node_modules/parse5/dist/tree-adapters/default.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/index.es.js +0 -13
- package/dist/node_modules/hast-util-raw/node_modules/property-information/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.es.js +0 -62
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/aria.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.es.js +0 -34
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/find.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.es.js +0 -369
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/html.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.es.js +0 -7
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/normalize.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.es.js +0 -567
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/svg.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.es.js +0 -8
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-insensitive-transform.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.es.js +0 -7
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/case-sensitive-transform.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.es.js +0 -20
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/create.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.es.js +0 -37
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/defined-info.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.es.js +0 -29
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/info.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.es.js +0 -11
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/merge.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.es.js +0 -22
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/schema.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.es.js +0 -15
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/util/types.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.es.js +0 -20
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xlink.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.es.js +0 -12
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xml.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.cjs.js +0 -2
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.es.js +0 -12
- package/dist/node_modules/hast-util-raw/node_modules/property-information/lib/xmlns.es.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.cjs.js +0 -3
- package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.es.js +0 -43
- package/dist/node_modules/hast-util-raw/node_modules/vfile-location/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/lib/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/lib/index.es.js +0 -119
- package/dist/node_modules/hast-util-to-parse5/lib/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.es.js +0 -13
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/index.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.es.js +0 -62
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/aria.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.es.js +0 -34
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/find.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.es.js +0 -369
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/html.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.es.js +0 -7
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/normalize.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.es.js +0 -567
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/svg.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.es.js +0 -8
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-insensitive-transform.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.es.js +0 -7
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/case-sensitive-transform.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.es.js +0 -20
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/create.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.es.js +0 -37
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/defined-info.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.es.js +0 -29
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/info.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.es.js +0 -11
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/merge.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.es.js +0 -22
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/schema.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.es.js +0 -15
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/util/types.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.es.js +0 -20
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xlink.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.es.js +0 -12
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xml.es.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.cjs.js +0 -2
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.cjs.js.map +0 -1
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.es.js +0 -12
- package/dist/node_modules/hast-util-to-parse5/node_modules/property-information/lib/xmlns.es.js.map +0 -1
- package/dist/node_modules/rehype-raw/lib/index.cjs.js +0 -2
- package/dist/node_modules/rehype-raw/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/rehype-raw/lib/index.es.js +0 -13
- package/dist/node_modules/rehype-raw/lib/index.es.js.map +0 -1
- package/dist/node_modules/unist-util-is/lib/index.cjs.js +0 -2
- package/dist/node_modules/unist-util-is/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/unist-util-is/lib/index.es.js +0 -92
- package/dist/node_modules/unist-util-is/lib/index.es.js.map +0 -1
- package/dist/node_modules/unist-util-position/lib/index.cjs.js +0 -2
- package/dist/node_modules/unist-util-position/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/unist-util-position/lib/index.es.js +0 -18
- package/dist/node_modules/unist-util-position/lib/index.es.js.map +0 -1
- package/dist/node_modules/unist-util-visit/lib/index.cjs.js +0 -2
- package/dist/node_modules/unist-util-visit/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/unist-util-visit/lib/index.es.js +0 -17
- package/dist/node_modules/unist-util-visit/lib/index.es.js.map +0 -1
- package/dist/node_modules/unist-util-visit-parents/lib/color.cjs.js +0 -2
- package/dist/node_modules/unist-util-visit-parents/lib/color.cjs.js.map +0 -1
- package/dist/node_modules/unist-util-visit-parents/lib/color.es.js +0 -7
- package/dist/node_modules/unist-util-visit-parents/lib/color.es.js.map +0 -1
- package/dist/node_modules/unist-util-visit-parents/lib/index.cjs.js +0 -2
- package/dist/node_modules/unist-util-visit-parents/lib/index.cjs.js.map +0 -1
- package/dist/node_modules/unist-util-visit-parents/lib/index.es.js +0 -57
- package/dist/node_modules/unist-util-visit-parents/lib/index.es.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectFoldersContext.cjs.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectFoldersContext.cjs.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n getChildFolderIds: (folderIds: string[], includeSelf?: boolean) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n // function to get all child folder IDs recursively for a given folder IDs\n const getChildFolderIds = useMemo(\n () =>\n (folderIds: string[], includeSelf = false): string[] => {\n const childIds: string[] = includeSelf ? [...folderIds] : []\n const queue: string[] = [...folderIds]\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n for (const folder of folders) {\n if (folder.parentId === currentId) {\n childIds.push(folder.id)\n queue.push(folder.id)\n }\n }\n }\n\n return childIds\n },\n [folders],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","getChildFolderIds","folderIds","includeSelf","childIds","queue","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":"srKAmBA,MAAMA,EAAwBC,EAAAA,cAAsD,MAAS,EAWhFC,EAAuE,CAAC,CACnF,YAAAC,EACA,SAAAC,CACF,IAAmC,CAEjC,KAAM,CACJ,KAAM,CAAE,QAAAC,EAAU,CAAA,CAAC,EAAM,CAAA,EACzB,UAAAC,EACA,WAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,EACEC,EAAAA,sBAAsB,CAAE,YAAAT,EAAa,OAAQ,GAAM,EAGjDU,EAAmBC,EAAAA,8BAA8B,CAAE,YAAAX,CAAA,EAAeI,GAAcD,CAAS,EAGzFS,EAAYC,EAAAA,QAAQ,IAAM,CAC9B,MAAMC,MAAU,IAChB,UAAWC,KAAUb,EACnBY,EAAI,IAAIC,EAAO,GAAIA,CAAM,EAE3B,OAAOD,CACT,EAAG,CAACZ,CAAO,CAAC,EAGNc,EAAgBH,UAAQ,IAAOI,GAAeL,EAAU,IAAIK,CAAE,EAAG,CAACL,CAAS,CAAC,EAG5EM,EAAqBL,EAAAA,QACzB,IACGM,GAA+B,CAC9B,MAAMC,EAAsB,CAAA,EACtBC,MAAc,IACpB,IAAIC,EAAgCH,EAEpC,KAAOG,GAAa,CAACD,EAAQ,IAAIC,CAAS,GAAG,CAC3CD,EAAQ,IAAIC,CAAS,EACrB,MAAMC,EAAgBX,EAAU,IAAIU,CAAS,EAC7C,GAAI,CAACC,GAAe,SAAU,MAC9BH,EAAU,KAAKG,EAAc,QAAQ,EACrCD,EAAYC,EAAc,QAC5B,CAEA,OAAOH,CACT,EACF,CAACR,CAAS,CAAA,EAINY,EAAoBX,EAAAA,QACxB,IACE,CAACY,EAAqBC,EAAc,KAAoB,CACtD,MAAMC,EAAqBD,EAAc,CAAC,GAAGD,CAAS,EAAI,CAAA,EACpDG,EAAkB,CAAC,GAAGH,CAAS,EAErC,KAAOG,EAAM,OAAS,GAAG,CACvB,MAAMN,EAAYM,EAAM,MAAA,EACxB,UAAWb,KAAUb,EACfa,EAAO,WAAaO,IACtBK,EAAS,KAAKZ,EAAO,EAAE,EACvBa,EAAM,KAAKb,EAAO,EAAE,EAG1B,CAEA,OAAOY,CACT,EACF,CAACzB,CAAO,CAAA,EAGJ2B,EAAQhB,EAAAA,QACZ,KAAO,CACL,QAAAX,EACA,cAAAc,EACA,mBAAAE,EACA,kBAAAM,EACA,UAAWd,EACX,WAAAN,EACA,UAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,QAAAC,CAAA,GAEF,CACEN,EACAc,EACAE,EACAM,EACAd,EACAN,EACAC,EACAC,EACAC,EACAC,CAAA,CACF,EAGF,OAAOsB,EAAAA,kBAAAA,IAACjC,EAAsB,SAAtB,CAA+B,MAAAgC,EAAe,SAAA5B,CAAA,CAAS,CACjE,EAEa8B,EAA2B,IAAM,CAC5C,MAAMC,EAAUC,EAAAA,WAAWpC,CAAqB,EAChD,GAAImC,IAAY,OACd,MAAM,IAAI,MAAM,8EAA8E,EAEhG,OAAOA,CACT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { createContext as
|
|
1
|
+
import { j as v } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import { createContext as w, useMemo as s, useContext as L } from "react";
|
|
3
3
|
import "../api/base/client.es.js";
|
|
4
4
|
import "../api/generated/graphql.es.js";
|
|
5
5
|
import "../api/generated/graphqlLinks.es.js";
|
|
@@ -60,7 +60,7 @@ import "../api/queries/entityLists/updateLists.es.js";
|
|
|
60
60
|
import "../api/queries/entityLists/getListsAttributes.es.js";
|
|
61
61
|
import "../api/queries/entityLists/updateListsAttributes.es.js";
|
|
62
62
|
import "../api/queries/entityLists/listFolders.es.js";
|
|
63
|
-
import { useGetFolderListQuery as
|
|
63
|
+
import { useGetFolderListQuery as b } from "../api/queries/folders/getFolders.es.js";
|
|
64
64
|
import "../api/queries/grouping/getGrouping.es.js";
|
|
65
65
|
import "../api/queries/links/updateLinks.es.js";
|
|
66
66
|
import "../api/queries/links/getLinks.es.js";
|
|
@@ -107,73 +107,86 @@ import "./ProjectContext.es.js";
|
|
|
107
107
|
import "./UriContext.es.js";
|
|
108
108
|
import "react-redux";
|
|
109
109
|
import "custom-protocol-check";
|
|
110
|
-
import { useQueryArgumentChangeLoading as
|
|
110
|
+
import { useQueryArgumentChangeLoading as y } from "../hooks/useQueryArgumentChangeLoading.es.js";
|
|
111
111
|
import "../containers/ProjectTreeTable/components/GroupSettingsFallback.es.js";
|
|
112
|
-
const
|
|
113
|
-
projectName:
|
|
114
|
-
children:
|
|
112
|
+
const I = w(void 0), ko = ({
|
|
113
|
+
projectName: p,
|
|
114
|
+
children: C
|
|
115
115
|
}) => {
|
|
116
116
|
const {
|
|
117
|
-
data: { folders:
|
|
118
|
-
isLoading:
|
|
119
|
-
isFetching:
|
|
120
|
-
isSuccess:
|
|
121
|
-
isUninitialized:
|
|
122
|
-
error:
|
|
123
|
-
refetch:
|
|
124
|
-
} =
|
|
117
|
+
data: { folders: i = [] } = {},
|
|
118
|
+
isLoading: P,
|
|
119
|
+
isFetching: d,
|
|
120
|
+
isSuccess: u,
|
|
121
|
+
isUninitialized: a,
|
|
122
|
+
error: l,
|
|
123
|
+
refetch: f
|
|
124
|
+
} = b({ projectName: p, attrib: !0 }), h = y({ projectName: p }, d || P), n = s(() => {
|
|
125
125
|
const t = /* @__PURE__ */ new Map();
|
|
126
|
-
for (const
|
|
127
|
-
t.set(
|
|
126
|
+
for (const r of i)
|
|
127
|
+
t.set(r.id, r);
|
|
128
128
|
return t;
|
|
129
|
-
}, [
|
|
129
|
+
}, [i]), g = s(() => (t) => n.get(t), [n]), x = s(
|
|
130
130
|
() => (t) => {
|
|
131
|
-
const
|
|
132
|
-
let
|
|
133
|
-
for (;
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
if (!
|
|
137
|
-
|
|
131
|
+
const r = [], m = /* @__PURE__ */ new Set();
|
|
132
|
+
let o = t;
|
|
133
|
+
for (; o && !m.has(o); ) {
|
|
134
|
+
m.add(o);
|
|
135
|
+
const e = n.get(o);
|
|
136
|
+
if (!e?.parentId) break;
|
|
137
|
+
r.push(e.parentId), o = e.parentId;
|
|
138
138
|
}
|
|
139
|
-
return
|
|
139
|
+
return r;
|
|
140
140
|
},
|
|
141
|
-
[
|
|
142
|
-
),
|
|
141
|
+
[n]
|
|
142
|
+
), F = s(
|
|
143
|
+
() => (t, r = !1) => {
|
|
144
|
+
const m = r ? [...t] : [], o = [...t];
|
|
145
|
+
for (; o.length > 0; ) {
|
|
146
|
+
const e = o.shift();
|
|
147
|
+
for (const c of i)
|
|
148
|
+
c.parentId === e && (m.push(c.id), o.push(c.id));
|
|
149
|
+
}
|
|
150
|
+
return m;
|
|
151
|
+
},
|
|
152
|
+
[i]
|
|
153
|
+
), j = s(
|
|
143
154
|
() => ({
|
|
144
|
-
folders:
|
|
145
|
-
getFolderById:
|
|
155
|
+
folders: i,
|
|
156
|
+
getFolderById: g,
|
|
146
157
|
getParentFolderIds: x,
|
|
147
|
-
|
|
158
|
+
getChildFolderIds: F,
|
|
159
|
+
isLoading: h,
|
|
148
160
|
// first time and when args change
|
|
149
|
-
isFetching:
|
|
161
|
+
isFetching: d,
|
|
150
162
|
// any background fetching
|
|
151
|
-
isSuccess:
|
|
152
|
-
isUninitialized:
|
|
153
|
-
error:
|
|
154
|
-
refetch:
|
|
163
|
+
isSuccess: u,
|
|
164
|
+
isUninitialized: a,
|
|
165
|
+
error: l,
|
|
166
|
+
refetch: f
|
|
155
167
|
}),
|
|
156
168
|
[
|
|
157
|
-
|
|
158
|
-
|
|
169
|
+
i,
|
|
170
|
+
g,
|
|
159
171
|
x,
|
|
160
|
-
|
|
161
|
-
|
|
172
|
+
F,
|
|
173
|
+
h,
|
|
162
174
|
d,
|
|
163
|
-
|
|
175
|
+
u,
|
|
164
176
|
a,
|
|
165
|
-
|
|
177
|
+
l,
|
|
178
|
+
f
|
|
166
179
|
]
|
|
167
180
|
);
|
|
168
|
-
return /* @__PURE__ */
|
|
169
|
-
},
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
181
|
+
return /* @__PURE__ */ v.jsx(I.Provider, { value: j, children: C });
|
|
182
|
+
}, qo = () => {
|
|
183
|
+
const p = L(I);
|
|
184
|
+
if (p === void 0)
|
|
172
185
|
throw new Error("useProjectFoldersContext must be used within a ProjectFoldersContextProvider");
|
|
173
|
-
return
|
|
186
|
+
return p;
|
|
174
187
|
};
|
|
175
188
|
export {
|
|
176
|
-
|
|
177
|
-
|
|
189
|
+
ko as ProjectFoldersContextProvider,
|
|
190
|
+
qo as useProjectFoldersContext
|
|
178
191
|
};
|
|
179
192
|
//# sourceMappingURL=ProjectFoldersContext.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectFoldersContext.es.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ProjectFoldersContext.es.js","sources":["../../../../src/context/ProjectFoldersContext.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { useGetFolderListQuery } from '@shared/api'\n\nimport type { FolderListItem } from '@shared/api'\nimport { useQueryArgumentChangeLoading } from '@shared/hooks'\n\nexport interface ProjectFoldersContextValue {\n folders: FolderListItem[]\n getFolderById: (id: string) => FolderListItem | undefined\n getParentFolderIds: (folderId: string) => string[]\n getChildFolderIds: (folderIds: string[], includeSelf?: boolean) => string[]\n isLoading: boolean\n isFetching: boolean\n isSuccess: boolean\n isUninitialized: boolean\n error: any\n refetch: () => void\n}\n\nconst ProjectFoldersContext = createContext<ProjectFoldersContextValue | undefined>(undefined)\n\n//\n// ProjectFoldersProvider\n//\n\ninterface ProjectFoldersProviderProps {\n projectName: string\n children: React.ReactNode\n}\n\nexport const ProjectFoldersContextProvider: React.FC<ProjectFoldersProviderProps> = ({\n projectName,\n children,\n}: ProjectFoldersProviderProps) => {\n // FOLDERS LIST\n const {\n data: { folders = [] } = {},\n isLoading,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n } = useGetFolderListQuery({ projectName, attrib: true })\n\n // only show loading when args change or on first load\n const isLoadingFolders = useQueryArgumentChangeLoading({ projectName }, isFetching || isLoading)\n\n // Create folder map for efficient O(1) lookups\n const folderMap = useMemo(() => {\n const map = new Map<string, FolderListItem>()\n for (const folder of folders) {\n map.set(folder.id, folder)\n }\n return map\n }, [folders])\n\n // Function to get folder by ID\n const getFolderById = useMemo(() => (id: string) => folderMap.get(id), [folderMap])\n\n // Function to get all parent folder IDs by crawling up the hierarchy\n const getParentFolderIds = useMemo(\n () =>\n (folderId: string): string[] => {\n const parentIds: string[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = folderId\n\n while (currentId && !visited.has(currentId)) {\n visited.add(currentId)\n const currentFolder = folderMap.get(currentId)\n if (!currentFolder?.parentId) break\n parentIds.push(currentFolder.parentId)\n currentId = currentFolder.parentId\n }\n\n return parentIds\n },\n [folderMap],\n )\n\n // function to get all child folder IDs recursively for a given folder IDs\n const getChildFolderIds = useMemo(\n () =>\n (folderIds: string[], includeSelf = false): string[] => {\n const childIds: string[] = includeSelf ? [...folderIds] : []\n const queue: string[] = [...folderIds]\n\n while (queue.length > 0) {\n const currentId = queue.shift()!\n for (const folder of folders) {\n if (folder.parentId === currentId) {\n childIds.push(folder.id)\n queue.push(folder.id)\n }\n }\n }\n\n return childIds\n },\n [folders],\n )\n\n const value = useMemo(\n () => ({\n folders: folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoading: isLoadingFolders, // first time and when args change\n isFetching, // any background fetching\n isSuccess,\n isUninitialized,\n error,\n refetch,\n }),\n [\n folders,\n getFolderById,\n getParentFolderIds,\n getChildFolderIds,\n isLoadingFolders,\n isFetching,\n isSuccess,\n isUninitialized,\n error,\n refetch,\n ],\n )\n\n return <ProjectFoldersContext.Provider value={value}>{children}</ProjectFoldersContext.Provider>\n}\n\nexport const useProjectFoldersContext = () => {\n const context = useContext(ProjectFoldersContext)\n if (context === undefined) {\n throw new Error('useProjectFoldersContext must be used within a ProjectFoldersContextProvider')\n }\n return context\n}\n"],"names":["ProjectFoldersContext","createContext","ProjectFoldersContextProvider","projectName","children","folders","isLoading","isFetching","isSuccess","isUninitialized","error","refetch","useGetFolderListQuery","isLoadingFolders","useQueryArgumentChangeLoading","folderMap","useMemo","map","folder","getFolderById","id","getParentFolderIds","folderId","parentIds","visited","currentId","currentFolder","getChildFolderIds","folderIds","includeSelf","childIds","queue","value","jsx","useProjectFoldersContext","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,IAAwBC,EAAsD,MAAS,GAWhFC,KAAuE,CAAC;AAAA,EACnF,aAAAC;AAAA,EACA,UAAAC;AACF,MAAmC;AAEjC,QAAM;AAAA,IACJ,MAAM,EAAE,SAAAC,IAAU,CAAA,EAAC,IAAM,CAAA;AAAA,IACzB,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEC,EAAsB,EAAE,aAAAT,GAAa,QAAQ,IAAM,GAGjDU,IAAmBC,EAA8B,EAAE,aAAAX,EAAA,GAAeI,KAAcD,CAAS,GAGzFS,IAAYC,EAAQ,MAAM;AAC9B,UAAMC,wBAAU,IAAA;AAChB,eAAWC,KAAUb;AACnB,MAAAY,EAAI,IAAIC,EAAO,IAAIA,CAAM;AAE3B,WAAOD;AAAA,EACT,GAAG,CAACZ,CAAO,CAAC,GAGNc,IAAgBH,EAAQ,MAAM,CAACI,MAAeL,EAAU,IAAIK,CAAE,GAAG,CAACL,CAAS,CAAC,GAG5EM,IAAqBL;AAAA,IACzB,MACE,CAACM,MAA+B;AAC9B,YAAMC,IAAsB,CAAA,GACtBC,wBAAc,IAAA;AACpB,UAAIC,IAAgCH;AAEpC,aAAOG,KAAa,CAACD,EAAQ,IAAIC,CAAS,KAAG;AAC3C,QAAAD,EAAQ,IAAIC,CAAS;AACrB,cAAMC,IAAgBX,EAAU,IAAIU,CAAS;AAC7C,YAAI,CAACC,GAAe,SAAU;AAC9B,QAAAH,EAAU,KAAKG,EAAc,QAAQ,GACrCD,IAAYC,EAAc;AAAA,MAC5B;AAEA,aAAOH;AAAA,IACT;AAAA,IACF,CAACR,CAAS;AAAA,EAAA,GAINY,IAAoBX;AAAA,IACxB,MACE,CAACY,GAAqBC,IAAc,OAAoB;AACtD,YAAMC,IAAqBD,IAAc,CAAC,GAAGD,CAAS,IAAI,CAAA,GACpDG,IAAkB,CAAC,GAAGH,CAAS;AAErC,aAAOG,EAAM,SAAS,KAAG;AACvB,cAAMN,IAAYM,EAAM,MAAA;AACxB,mBAAWb,KAAUb;AACnB,UAAIa,EAAO,aAAaO,MACtBK,EAAS,KAAKZ,EAAO,EAAE,GACvBa,EAAM,KAAKb,EAAO,EAAE;AAAA,MAG1B;AAEA,aAAOY;AAAA,IACT;AAAA,IACF,CAACzB,CAAO;AAAA,EAAA,GAGJ2B,IAAQhB;AAAA,IACZ,OAAO;AAAA,MACL,SAAAX;AAAA,MACA,eAAAc;AAAA,MACA,oBAAAE;AAAA,MACA,mBAAAM;AAAA,MACA,WAAWd;AAAA;AAAA,MACX,YAAAN;AAAA;AAAA,MACA,WAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,IAAA;AAAA,IAEF;AAAA,MACEN;AAAA,MACAc;AAAA,MACAE;AAAA,MACAM;AAAA,MACAd;AAAA,MACAN;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF;AAGF,SAAOsB,gBAAAA,EAAAA,IAACjC,EAAsB,UAAtB,EAA+B,OAAAgC,GAAe,UAAA5B,EAAA,CAAS;AACjE,GAEa8B,KAA2B,MAAM;AAC5C,QAAMC,IAAUC,EAAWpC,CAAqB;AAChD,MAAImC,MAAY;AACd,UAAM,IAAI,MAAM,8EAA8E;AAEhG,SAAOA;AACT;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("../../../_virtual/runtime.cjs.js"),g=require("react"),O=require("../../../_virtual/semver.cjs.js"),S=(l,y,c)=>{const i=g.useRef(new Set),[h,M]=g.useState(()=>R(l)),[v,f]=g.useState(y.length>0&&!c);g.useEffect(()=>{c||(console.log("resetting processedModules"),i.current=new Set,M(R(l)))},[JSON.stringify(l),c]);const w=async(r,n,o,u,t)=>{try{const e=await I.runtimeExports.loadRemote(`${r}/${n}`,{from:"runtime"});$(o,r,n,e?.default||u,t)}catch(e){throw console.error("Error loading remote module",r,n,e),e}};g.useEffect(()=>{if(c){f(!1);return}h.every(o=>!o[1].isLoaded)&&i.current.size>0&&(console.log("resetting processedModules - results were reset"),i.current=new Set),console.log("loading modules");const n=[];if(l.forEach((o,u)=>{const{addon:t,remote:e,module:s,fallback:a,minVersion:d}=o;if(!t||!e||!s){console.log("Invalid module spec",o);return}const m=`${t}/${e}/${s}`;if(i.current.has(m)){console.log("skipping already processed module",m);return}if(h[u]?.[1]?.isLoaded){i.current.add(m);return}i.current.add(m);const L=y.find(p=>p.addonName===t);if(!L){console.log("Addon not found",{addon:t,remote:e,module:s});return}if(d&&!O.gte(L.addonVersion,d)){E(u,t,e,s,a,d,L.addonVersion);return}if(!L.modules[e]){console.log("Module not found",{addon:t,remote:e,module:s});return}n.push(w(e,s,t,a,d))}),!n.length){f(!1);return}f(!0),Promise.all(n).then(()=>{f(!1)}).catch(o=>{console.error("Error loading modules",o),f(!1)})},[c,y,JSON.stringify(l),h]);function R(r){return r.map(({addon:n="",remote:o="",module:u="",fallback:t,minVersion:e})=>[t,{isLoaded:!1,addon:n,remote:o,module:u,minVersion:e,outdated:void 0}])}function E(r,n,o,u,t,e,s){M(a=>{const d=[...a];return r>=0&&r<d.length&&(d[r]=[t,{isLoaded:!1,addon:n,remote:o,module:u,minVersion:e,outdated:{current:s,required:e}}]),d})}function $(r,n,o,u,t){M(e=>{const s=[...e],a=l.findIndex(d=>d.addon===r&&d.remote===n&&d.module===o);return a>=0&&a<s.length&&(s[a]=[u,{isLoaded:!0,addon:r,remote:n,module:o,minVersion:t,outdated:void 0}]),s})}return{modules:h,isLoading:v}};exports.useLoadModules=S;
|
|
2
2
|
//# sourceMappingURL=useLoadModules.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoadModules.cjs.js","sources":["../../../../src/hooks/useLoadModules.ts"],"sourcesContent":["import { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\nimport { FrontendModuleListItem } from '@shared/api'\n\nexport interface ModuleSpec<T> {\n addon: string\n remote: string\n module: string\n fallback?: T\n debug?: boolean\n minVersion?: string\n}\n\ntype ModuleResult<T> = [\n T,\n {\n isLoaded: boolean\n addon: string\n remote: string\n module: string\n minVersion?: string\n outdated?: {\n current: string\n required: string\n }\n },\n]\n\nexport const useLoadModules = <T extends any[]>(\n moduleSpecs: ModuleSpec<T[number]>[],\n modules: FrontendModuleListItem[],\n skip: boolean,\n): { modules: ModuleResult<T[number]>[]; isLoading: boolean } => {\n // Use a ref to track which modules have been processed\n const processedModules = useRef<Set<string>>(new Set())\n\n // Initialize results state\n const [results, setResults] = useState<ModuleResult<T[number]>[]>(() =>\n initializeResults(moduleSpecs),\n )\n const [isLoading, setIsLoading] = useState(modules.length > 0 && !skip)\n\n // Reset and reinitialize when moduleSpecs change\n useEffect(() => {\n if (skip) return\n // Reset the processed modules tracker\n processedModules.current = new Set()\n\n // Initialize results with proper structure\n setResults(initializeResults(moduleSpecs))\n }, [JSON.stringify(moduleSpecs), skip])\n\n const loadModule = async (\n remote: string,\n module: string,\n addon: string,\n fallback: T[number] | undefined,\n minVersion?: string,\n ) => {\n try {\n const result = await loadRemote<{ default: T[number] }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n updateResultWithLoaded(addon, remote, module, result?.default || fallback, minVersion)\n } catch (error) {\n console.error('Error loading remote module', remote, module, error)\n throw error\n }\n }\n\n // Load modules when remotes are initialized\n useEffect(() => {\n if (skip) {\n setIsLoading(false)\n return\n }\n\n console.log('loading modules')\n\n const promises: Promise<void>[] = []\n moduleSpecs.forEach((spec, index) => {\n const { addon, remote, module, fallback, minVersion } = spec\n\n if (!addon || !remote || !module) return\n\n // Create a unique key for this module\n const moduleKey = `${addon}/${remote}/${module}`\n\n // Skip if already processed\n if (processedModules.current.has(moduleKey)) return\n\n // Check if this module is already loaded in our results\n if (results[index]?.[1]?.isLoaded) {\n processedModules.current.add(moduleKey)\n return\n }\n\n // Mark as processed\n processedModules.current.add(moduleKey)\n\n const addonInfo = modules.find((m) => m.addonName === addon)\n\n // Handle missing addon\n if (!addonInfo) {\n console.log('Addon not found', { addon, remote, module })\n return\n }\n\n // Check version requirements\n if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {\n updateResultWithOutdated(\n index,\n addon,\n remote,\n module,\n fallback,\n minVersion,\n addonInfo.addonVersion,\n )\n return\n }\n\n // Check if module exists\n if (!addonInfo.modules[remote]) {\n console.log('Module not found', { addon, remote, module })\n return\n }\n\n promises.push(loadModule(remote, module, addon, fallback, minVersion))\n })\n\n if (!promises.length) {\n setIsLoading(false)\n return\n }\n\n // Wait for all promises to resolve\n setIsLoading(true)\n Promise.all(promises)\n .then(() => {\n // all modules loaded\n setIsLoading(false)\n })\n .catch((error) => {\n console.error('Error loading modules', error)\n setIsLoading(false)\n })\n }, [skip, modules, JSON.stringify(moduleSpecs), results])\n\n // Helper function to initialize results\n function initializeResults(specs: ModuleSpec<T[number]>[]): ModuleResult<T[number]>[] {\n return specs.map(\n ({ addon = '', remote = '', module = '', fallback, minVersion }): ModuleResult<T[number]> => [\n fallback as T[number],\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ],\n )\n }\n\n // Helper to update a result with outdated status\n function updateResultWithOutdated(\n index: number,\n addon: string,\n remote: string,\n module: string,\n fallback: T[number] | undefined,\n requiredVersion: string,\n currentVersion: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n fallback,\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion: requiredVersion,\n outdated: {\n current: currentVersion,\n required: requiredVersion,\n },\n },\n ]\n }\n return updated\n })\n }\n\n // Helper to update a result when module is loaded\n function updateResultWithLoaded(\n addon: string,\n remote: string,\n module: string,\n loadedModule: T[number] | undefined,\n minVersion?: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n // Find the corresponding module spec\n const index = moduleSpecs.findIndex(\n (spec) => spec.addon === addon && spec.remote === remote && spec.module === module,\n )\n\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n loadedModule,\n {\n isLoaded: true,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ]\n }\n return updated\n })\n }\n\n return { modules: results, isLoading }\n}\n"],"names":["useLoadModules","moduleSpecs","modules","skip","processedModules","useRef","results","setResults","useState","initializeResults","isLoading","setIsLoading","useEffect","loadModule","remote","module","addon","fallback","minVersion","result","loadRemote","updateResultWithLoaded","error","promises","spec","index","moduleKey","addonInfo","m","semver","updateResultWithOutdated","specs","requiredVersion","currentVersion","prev","updated","loadedModule"],"mappings":"oMA6BaA,EAAiB,CAC5BC,EACAC,EACAC,IAC+D,CAE/D,MAAMC,EAAmBC,EAAAA,OAAoB,IAAI,GAAK,EAGhD,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAAoC,IAChEC,EAAkBR,CAAW,CAAA,EAEzB,CAACS,EAAWC,CAAY,EAAIH,EAAAA,SAASN,EAAQ,OAAS,GAAK,CAACC,CAAI,EAGtES,EAAAA,UAAU,IAAM,CACVT,IAEJC,EAAiB,YAAc,IAG/BG,EAAWE,EAAkBR,CAAW,CAAC,EAC3C,EAAG,CAAC,KAAK,UAAUA,CAAW,EAAGE,CAAI,CAAC,EAEtC,MAAMU,EAAa,MACjBC,EACAC,EACAC,EACAC,EACAC,IACG,CACH,GAAI,CACF,MAAMC,EAAS,MAAMC,4BAAmC,GAAGN,CAAM,IAAIC,CAAM,GAAI,CAC7E,KAAM,SAAA,CACP,EACDM,EAAuBL,EAAOF,EAAQC,EAAQI,GAAQ,SAAWF,EAAUC,CAAU,CACvF,OAASI,EAAO,CACd,cAAQ,MAAM,8BAA+BR,EAAQC,EAAQO,CAAK,EAC5DA,CACR,CACF,EAGAV,EAAAA,UAAU,IAAM,CACd,GAAIT,EAAM,CACRQ,EAAa,EAAK,EAClB,MACF,CAEA,QAAQ,IAAI,iBAAiB,EAE7B,MAAMY,EAA4B,CAAA,EAoDlC,GAnDAtB,EAAY,QAAQ,CAACuB,EAAMC,IAAU,CACnC,KAAM,CAAE,MAAAT,EAAO,OAAAF,EAAQ,OAAAC,EAAQ,SAAAE,EAAU,WAAAC,GAAeM,EAExD,GAAI,CAACR,GAAS,CAACF,GAAU,CAACC,EAAQ,OAGlC,MAAMW,EAAY,GAAGV,CAAK,IAAIF,CAAM,IAAIC,CAAM,GAG9C,GAAIX,EAAiB,QAAQ,IAAIsB,CAAS,EAAG,OAG7C,GAAIpB,EAAQmB,CAAK,IAAI,CAAC,GAAG,SAAU,CACjCrB,EAAiB,QAAQ,IAAIsB,CAAS,EACtC,MACF,CAGAtB,EAAiB,QAAQ,IAAIsB,CAAS,EAEtC,MAAMC,EAAYzB,EAAQ,KAAM0B,GAAMA,EAAE,YAAcZ,CAAK,EAG3D,GAAI,CAACW,EAAW,CACd,QAAQ,IAAI,kBAAmB,CAAE,MAAAX,EAAO,OAAAF,EAAQ,OAAAC,EAAQ,EACxD,MACF,CAGA,GAAIG,GAAc,CAACW,EAAO,IAAIF,EAAU,aAAcT,CAAU,EAAG,CACjEY,EACEL,EACAT,EACAF,EACAC,EACAE,EACAC,EACAS,EAAU,YAAA,EAEZ,MACF,CAGA,GAAI,CAACA,EAAU,QAAQb,CAAM,EAAG,CAC9B,QAAQ,IAAI,mBAAoB,CAAE,MAAAE,EAAO,OAAAF,EAAQ,OAAAC,EAAQ,EACzD,MACF,CAEAQ,EAAS,KAAKV,EAAWC,EAAQC,EAAQC,EAAOC,EAAUC,CAAU,CAAC,CACvE,CAAC,EAEG,CAACK,EAAS,OAAQ,CACpBZ,EAAa,EAAK,EAClB,MACF,CAGAA,EAAa,EAAI,EACjB,QAAQ,IAAIY,CAAQ,EACjB,KAAK,IAAM,CAEVZ,EAAa,EAAK,CACpB,CAAC,EACA,MAAOW,GAAU,CAChB,QAAQ,MAAM,wBAAyBA,CAAK,EAC5CX,EAAa,EAAK,CACpB,CAAC,CACL,EAAG,CAACR,EAAMD,EAAS,KAAK,UAAUD,CAAW,EAAGK,CAAO,CAAC,EAGxD,SAASG,EAAkBsB,EAA2D,CACpF,OAAOA,EAAM,IACX,CAAC,CAAE,MAAAf,EAAQ,GAAI,OAAAF,EAAS,GAAI,OAAAC,EAAS,GAAI,SAAAE,EAAU,WAAAC,KAA0C,CAC3FD,EACA,CACE,SAAU,GACV,MAAAD,EACA,OAAAF,EACA,OAAAC,EACA,WAAAG,EACA,SAAU,MAAA,CACZ,CACF,CAEJ,CAGA,SAASY,EACPL,EACAT,EACAF,EACAC,EACAE,EACAe,EACAC,EACA,CACA1B,EAAY2B,GAAS,CACnB,MAAMC,EAAU,CAAC,GAAGD,CAAI,EACxB,OAAIT,GAAS,GAAKA,EAAQU,EAAQ,SAChCA,EAAQV,CAAK,EAAI,CACfR,EACA,CACE,SAAU,GACV,MAAAD,EACA,OAAAF,EACA,OAAAC,EACA,WAAYiB,EACZ,SAAU,CACR,QAASC,EACT,SAAUD,CAAA,CACZ,CACF,GAGGG,CACT,CAAC,CACH,CAGA,SAASd,EACPL,EACAF,EACAC,EACAqB,EACAlB,EACA,CACAX,EAAY2B,GAAS,CACnB,MAAMC,EAAU,CAAC,GAAGD,CAAI,EAElBT,EAAQxB,EAAY,UACvBuB,GAASA,EAAK,QAAUR,GAASQ,EAAK,SAAWV,GAAUU,EAAK,SAAWT,CAAA,EAG9E,OAAIU,GAAS,GAAKA,EAAQU,EAAQ,SAChCA,EAAQV,CAAK,EAAI,CACfW,EACA,CACE,SAAU,GACV,MAAApB,EACA,OAAAF,EACA,OAAAC,EACA,WAAAG,EACA,SAAU,MAAA,CACZ,GAGGiB,CACT,CAAC,CACH,CAEA,MAAO,CAAE,QAAS7B,EAAS,UAAAI,CAAA,CAC7B"}
|
|
1
|
+
{"version":3,"file":"useLoadModules.cjs.js","sources":["../../../../src/hooks/useLoadModules.ts"],"sourcesContent":["import { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\nimport { FrontendModuleListItem } from '@shared/api'\n\nexport interface ModuleSpec<T> {\n addon: string\n remote: string\n module: string\n fallback?: T\n debug?: boolean\n minVersion?: string\n}\n\ntype ModuleResult<T> = [\n T,\n {\n isLoaded: boolean\n addon: string\n remote: string\n module: string\n minVersion?: string\n outdated?: {\n current: string\n required: string\n }\n },\n]\n\nexport const useLoadModules = <T extends any[]>(\n moduleSpecs: ModuleSpec<T[number]>[],\n modules: FrontendModuleListItem[],\n skip: boolean,\n): { modules: ModuleResult<T[number]>[]; isLoading: boolean } => {\n // Use a ref to track which modules have been processed\n const processedModules = useRef<Set<string>>(new Set())\n\n // Initialize results state\n const [results, setResults] = useState<ModuleResult<T[number]>[]>(() =>\n initializeResults(moduleSpecs),\n )\n const [isLoading, setIsLoading] = useState(modules.length > 0 && !skip)\n\n // Reset and reinitialize when moduleSpecs change\n useEffect(() => {\n if (skip) return\n console.log('resetting processedModules')\n // Reset the processed modules tracker\n processedModules.current = new Set()\n\n // Initialize results with proper structure\n setResults(initializeResults(moduleSpecs))\n }, [JSON.stringify(moduleSpecs), skip])\n\n const loadModule = async (\n remote: string,\n module: string,\n addon: string,\n fallback: T[number] | undefined,\n minVersion?: string,\n ) => {\n try {\n const result = await loadRemote<{ default: T[number] }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n updateResultWithLoaded(addon, remote, module, result?.default || fallback, minVersion)\n } catch (error) {\n console.error('Error loading remote module', remote, module, error)\n throw error\n }\n }\n\n // Load modules when remotes are initialized\n useEffect(() => {\n if (skip) {\n setIsLoading(false)\n return\n }\n\n // If all results are unloaded, reset processedModules to ensure we attempt loading\n // This handles the case where the component remounts with the same moduleSpecs\n const allUnloaded = results.every((result) => !result[1].isLoaded)\n if (allUnloaded && processedModules.current.size > 0) {\n console.log('resetting processedModules - results were reset')\n processedModules.current = new Set()\n }\n\n console.log('loading modules')\n\n const promises: Promise<void>[] = []\n moduleSpecs.forEach((spec, index) => {\n const { addon, remote, module, fallback, minVersion } = spec\n\n if (!addon || !remote || !module) {\n console.log('Invalid module spec', spec)\n return\n }\n\n // Create a unique key for this module\n const moduleKey = `${addon}/${remote}/${module}`\n\n // Skip if already processed\n if (processedModules.current.has(moduleKey)) {\n console.log('skipping already processed module', moduleKey)\n return\n }\n\n // Check if this module is already loaded in our results\n if (results[index]?.[1]?.isLoaded) {\n processedModules.current.add(moduleKey)\n return\n }\n\n // Mark as processed\n processedModules.current.add(moduleKey)\n\n const addonInfo = modules.find((m) => m.addonName === addon)\n\n // Handle missing addon\n if (!addonInfo) {\n console.log('Addon not found', { addon, remote, module })\n return\n }\n\n // Check version requirements\n if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {\n updateResultWithOutdated(\n index,\n addon,\n remote,\n module,\n fallback,\n minVersion,\n addonInfo.addonVersion,\n )\n return\n }\n\n // Check if module exists\n if (!addonInfo.modules[remote]) {\n console.log('Module not found', { addon, remote, module })\n return\n }\n\n promises.push(loadModule(remote, module, addon, fallback, minVersion))\n })\n\n if (!promises.length) {\n setIsLoading(false)\n return\n }\n\n // Wait for all promises to resolve\n setIsLoading(true)\n Promise.all(promises)\n .then(() => {\n // all modules loaded\n setIsLoading(false)\n })\n .catch((error) => {\n console.error('Error loading modules', error)\n setIsLoading(false)\n })\n }, [skip, modules, JSON.stringify(moduleSpecs), results])\n\n // Helper function to initialize results\n function initializeResults(specs: ModuleSpec<T[number]>[]): ModuleResult<T[number]>[] {\n return specs.map(\n ({ addon = '', remote = '', module = '', fallback, minVersion }): ModuleResult<T[number]> => [\n fallback as T[number],\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ],\n )\n }\n\n // Helper to update a result with outdated status\n function updateResultWithOutdated(\n index: number,\n addon: string,\n remote: string,\n module: string,\n fallback: T[number] | undefined,\n requiredVersion: string,\n currentVersion: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n fallback,\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion: requiredVersion,\n outdated: {\n current: currentVersion,\n required: requiredVersion,\n },\n },\n ]\n }\n return updated\n })\n }\n\n // Helper to update a result when module is loaded\n function updateResultWithLoaded(\n addon: string,\n remote: string,\n module: string,\n loadedModule: T[number] | undefined,\n minVersion?: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n // Find the corresponding module spec\n const index = moduleSpecs.findIndex(\n (spec) => spec.addon === addon && spec.remote === remote && spec.module === module,\n )\n\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n loadedModule,\n {\n isLoaded: true,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ]\n }\n return updated\n })\n }\n\n return { modules: results, isLoading }\n}\n"],"names":["useLoadModules","moduleSpecs","modules","skip","processedModules","useRef","results","setResults","useState","initializeResults","isLoading","setIsLoading","useEffect","loadModule","remote","module","addon","fallback","minVersion","result","loadRemote","updateResultWithLoaded","error","promises","spec","index","moduleKey","addonInfo","m","semver","updateResultWithOutdated","specs","requiredVersion","currentVersion","prev","updated","loadedModule"],"mappings":"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"}
|
|
@@ -1,127 +1,133 @@
|
|
|
1
1
|
import { r as N } from "../../../_virtual/runtime.es.js";
|
|
2
|
-
import { useRef as O, useState as
|
|
2
|
+
import { useRef as O, useState as w, useEffect as M } from "react";
|
|
3
3
|
import V from "../../../_virtual/semver.es.js";
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
() =>
|
|
7
|
-
), [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}, [JSON.stringify(
|
|
11
|
-
const
|
|
4
|
+
const W = (u, L, c) => {
|
|
5
|
+
const i = O(/* @__PURE__ */ new Set()), [g, p] = w(
|
|
6
|
+
() => y(u)
|
|
7
|
+
), [R, f] = w(L.length > 0 && !c);
|
|
8
|
+
M(() => {
|
|
9
|
+
c || (console.log("resetting processedModules"), i.current = /* @__PURE__ */ new Set(), p(y(u)));
|
|
10
|
+
}, [JSON.stringify(u), c]);
|
|
11
|
+
const v = async (n, r, o, a, t) => {
|
|
12
12
|
try {
|
|
13
|
-
const
|
|
13
|
+
const e = await N.loadRemote(`${n}/${r}`, {
|
|
14
14
|
from: "runtime"
|
|
15
15
|
});
|
|
16
|
-
|
|
17
|
-
} catch (
|
|
18
|
-
throw console.error("Error loading remote module",
|
|
16
|
+
$(o, n, r, e?.default || a, t);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
throw console.error("Error loading remote module", n, r, e), e;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
21
|
+
M(() => {
|
|
22
|
+
if (c) {
|
|
23
|
+
f(!1);
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
console.log("loading modules");
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
const { addon:
|
|
30
|
-
if (!
|
|
31
|
-
|
|
32
|
-
if (c.current.has(s)) return;
|
|
33
|
-
if (h[d]?.[1]?.isLoaded) {
|
|
34
|
-
c.current.add(s);
|
|
26
|
+
g.every((o) => !o[1].isLoaded) && i.current.size > 0 && (console.log("resetting processedModules - results were reset"), i.current = /* @__PURE__ */ new Set()), console.log("loading modules");
|
|
27
|
+
const r = [];
|
|
28
|
+
if (u.forEach((o, a) => {
|
|
29
|
+
const { addon: t, remote: e, module: s, fallback: l, minVersion: d } = o;
|
|
30
|
+
if (!t || !e || !s) {
|
|
31
|
+
console.log("Invalid module spec", o);
|
|
35
32
|
return;
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
console.log("Addon not found", { addon: o, remote: r, module: t });
|
|
34
|
+
const m = `${t}/${e}/${s}`;
|
|
35
|
+
if (i.current.has(m)) {
|
|
36
|
+
console.log("skipping already processed module", m);
|
|
41
37
|
return;
|
|
42
38
|
}
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
39
|
+
if (g[a]?.[1]?.isLoaded) {
|
|
40
|
+
i.current.add(m);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
i.current.add(m);
|
|
44
|
+
const h = L.find((I) => I.addonName === t);
|
|
45
|
+
if (!h) {
|
|
46
|
+
console.log("Addon not found", { addon: t, remote: e, module: s });
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (d && !V.gte(h.addonVersion, d)) {
|
|
50
|
+
E(
|
|
50
51
|
a,
|
|
51
|
-
|
|
52
|
+
t,
|
|
53
|
+
e,
|
|
54
|
+
s,
|
|
55
|
+
l,
|
|
56
|
+
d,
|
|
57
|
+
h.addonVersion
|
|
52
58
|
);
|
|
53
59
|
return;
|
|
54
60
|
}
|
|
55
|
-
if (!
|
|
56
|
-
console.log("Module not found", { addon:
|
|
61
|
+
if (!h.modules[e]) {
|
|
62
|
+
console.log("Module not found", { addon: t, remote: e, module: s });
|
|
57
63
|
return;
|
|
58
64
|
}
|
|
59
|
-
|
|
60
|
-
}), !
|
|
61
|
-
|
|
65
|
+
r.push(v(e, s, t, l, d));
|
|
66
|
+
}), !r.length) {
|
|
67
|
+
f(!1);
|
|
62
68
|
return;
|
|
63
69
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}).catch((
|
|
67
|
-
console.error("Error loading modules",
|
|
70
|
+
f(!0), Promise.all(r).then(() => {
|
|
71
|
+
f(!1);
|
|
72
|
+
}).catch((o) => {
|
|
73
|
+
console.error("Error loading modules", o), f(!1);
|
|
68
74
|
});
|
|
69
|
-
}, [
|
|
70
|
-
function
|
|
71
|
-
return
|
|
72
|
-
({ addon:
|
|
73
|
-
|
|
75
|
+
}, [c, L, JSON.stringify(u), g]);
|
|
76
|
+
function y(n) {
|
|
77
|
+
return n.map(
|
|
78
|
+
({ addon: r = "", remote: o = "", module: a = "", fallback: t, minVersion: e }) => [
|
|
79
|
+
t,
|
|
74
80
|
{
|
|
75
81
|
isLoaded: !1,
|
|
76
|
-
addon:
|
|
77
|
-
remote:
|
|
78
|
-
module:
|
|
79
|
-
minVersion:
|
|
82
|
+
addon: r,
|
|
83
|
+
remote: o,
|
|
84
|
+
module: a,
|
|
85
|
+
minVersion: e,
|
|
80
86
|
outdated: void 0
|
|
81
87
|
}
|
|
82
88
|
]
|
|
83
89
|
);
|
|
84
90
|
}
|
|
85
|
-
function
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
return
|
|
89
|
-
|
|
91
|
+
function E(n, r, o, a, t, e, s) {
|
|
92
|
+
p((l) => {
|
|
93
|
+
const d = [...l];
|
|
94
|
+
return n >= 0 && n < d.length && (d[n] = [
|
|
95
|
+
t,
|
|
90
96
|
{
|
|
91
97
|
isLoaded: !1,
|
|
92
|
-
addon:
|
|
93
|
-
remote:
|
|
94
|
-
module:
|
|
95
|
-
minVersion:
|
|
98
|
+
addon: r,
|
|
99
|
+
remote: o,
|
|
100
|
+
module: a,
|
|
101
|
+
minVersion: e,
|
|
96
102
|
outdated: {
|
|
97
|
-
current:
|
|
98
|
-
required:
|
|
103
|
+
current: s,
|
|
104
|
+
required: e
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
|
-
]),
|
|
107
|
+
]), d;
|
|
102
108
|
});
|
|
103
109
|
}
|
|
104
|
-
function
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
(
|
|
110
|
+
function $(n, r, o, a, t) {
|
|
111
|
+
p((e) => {
|
|
112
|
+
const s = [...e], l = u.findIndex(
|
|
113
|
+
(d) => d.addon === n && d.remote === r && d.module === o
|
|
108
114
|
);
|
|
109
|
-
return
|
|
110
|
-
|
|
115
|
+
return l >= 0 && l < s.length && (s[l] = [
|
|
116
|
+
a,
|
|
111
117
|
{
|
|
112
118
|
isLoaded: !0,
|
|
113
|
-
addon:
|
|
114
|
-
remote:
|
|
115
|
-
module:
|
|
116
|
-
minVersion:
|
|
119
|
+
addon: n,
|
|
120
|
+
remote: r,
|
|
121
|
+
module: o,
|
|
122
|
+
minVersion: t,
|
|
117
123
|
outdated: void 0
|
|
118
124
|
}
|
|
119
|
-
]),
|
|
125
|
+
]), s;
|
|
120
126
|
});
|
|
121
127
|
}
|
|
122
|
-
return { modules:
|
|
128
|
+
return { modules: g, isLoading: R };
|
|
123
129
|
};
|
|
124
130
|
export {
|
|
125
|
-
|
|
131
|
+
W as useLoadModules
|
|
126
132
|
};
|
|
127
133
|
//# sourceMappingURL=useLoadModules.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLoadModules.es.js","sources":["../../../../src/hooks/useLoadModules.ts"],"sourcesContent":["import { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\nimport { FrontendModuleListItem } from '@shared/api'\n\nexport interface ModuleSpec<T> {\n addon: string\n remote: string\n module: string\n fallback?: T\n debug?: boolean\n minVersion?: string\n}\n\ntype ModuleResult<T> = [\n T,\n {\n isLoaded: boolean\n addon: string\n remote: string\n module: string\n minVersion?: string\n outdated?: {\n current: string\n required: string\n }\n },\n]\n\nexport const useLoadModules = <T extends any[]>(\n moduleSpecs: ModuleSpec<T[number]>[],\n modules: FrontendModuleListItem[],\n skip: boolean,\n): { modules: ModuleResult<T[number]>[]; isLoading: boolean } => {\n // Use a ref to track which modules have been processed\n const processedModules = useRef<Set<string>>(new Set())\n\n // Initialize results state\n const [results, setResults] = useState<ModuleResult<T[number]>[]>(() =>\n initializeResults(moduleSpecs),\n )\n const [isLoading, setIsLoading] = useState(modules.length > 0 && !skip)\n\n // Reset and reinitialize when moduleSpecs change\n useEffect(() => {\n if (skip) return\n // Reset the processed modules tracker\n processedModules.current = new Set()\n\n // Initialize results with proper structure\n setResults(initializeResults(moduleSpecs))\n }, [JSON.stringify(moduleSpecs), skip])\n\n const loadModule = async (\n remote: string,\n module: string,\n addon: string,\n fallback: T[number] | undefined,\n minVersion?: string,\n ) => {\n try {\n const result = await loadRemote<{ default: T[number] }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n updateResultWithLoaded(addon, remote, module, result?.default || fallback, minVersion)\n } catch (error) {\n console.error('Error loading remote module', remote, module, error)\n throw error\n }\n }\n\n // Load modules when remotes are initialized\n useEffect(() => {\n if (skip) {\n setIsLoading(false)\n return\n }\n\n console.log('loading modules')\n\n const promises: Promise<void>[] = []\n moduleSpecs.forEach((spec, index) => {\n const { addon, remote, module, fallback, minVersion } = spec\n\n if (!addon || !remote || !module) return\n\n // Create a unique key for this module\n const moduleKey = `${addon}/${remote}/${module}`\n\n // Skip if already processed\n if (processedModules.current.has(moduleKey)) return\n\n // Check if this module is already loaded in our results\n if (results[index]?.[1]?.isLoaded) {\n processedModules.current.add(moduleKey)\n return\n }\n\n // Mark as processed\n processedModules.current.add(moduleKey)\n\n const addonInfo = modules.find((m) => m.addonName === addon)\n\n // Handle missing addon\n if (!addonInfo) {\n console.log('Addon not found', { addon, remote, module })\n return\n }\n\n // Check version requirements\n if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {\n updateResultWithOutdated(\n index,\n addon,\n remote,\n module,\n fallback,\n minVersion,\n addonInfo.addonVersion,\n )\n return\n }\n\n // Check if module exists\n if (!addonInfo.modules[remote]) {\n console.log('Module not found', { addon, remote, module })\n return\n }\n\n promises.push(loadModule(remote, module, addon, fallback, minVersion))\n })\n\n if (!promises.length) {\n setIsLoading(false)\n return\n }\n\n // Wait for all promises to resolve\n setIsLoading(true)\n Promise.all(promises)\n .then(() => {\n // all modules loaded\n setIsLoading(false)\n })\n .catch((error) => {\n console.error('Error loading modules', error)\n setIsLoading(false)\n })\n }, [skip, modules, JSON.stringify(moduleSpecs), results])\n\n // Helper function to initialize results\n function initializeResults(specs: ModuleSpec<T[number]>[]): ModuleResult<T[number]>[] {\n return specs.map(\n ({ addon = '', remote = '', module = '', fallback, minVersion }): ModuleResult<T[number]> => [\n fallback as T[number],\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ],\n )\n }\n\n // Helper to update a result with outdated status\n function updateResultWithOutdated(\n index: number,\n addon: string,\n remote: string,\n module: string,\n fallback: T[number] | undefined,\n requiredVersion: string,\n currentVersion: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n fallback,\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion: requiredVersion,\n outdated: {\n current: currentVersion,\n required: requiredVersion,\n },\n },\n ]\n }\n return updated\n })\n }\n\n // Helper to update a result when module is loaded\n function updateResultWithLoaded(\n addon: string,\n remote: string,\n module: string,\n loadedModule: T[number] | undefined,\n minVersion?: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n // Find the corresponding module spec\n const index = moduleSpecs.findIndex(\n (spec) => spec.addon === addon && spec.remote === remote && spec.module === module,\n )\n\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n loadedModule,\n {\n isLoaded: true,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ]\n }\n return updated\n })\n }\n\n return { modules: results, isLoading }\n}\n"],"names":["useLoadModules","moduleSpecs","modules","skip","processedModules","useRef","results","setResults","useState","initializeResults","isLoading","setIsLoading","useEffect","loadModule","remote","module","addon","fallback","minVersion","result","loadRemote","updateResultWithLoaded","error","promises","spec","index","moduleKey","addonInfo","m","semver","updateResultWithOutdated","specs","requiredVersion","currentVersion","prev","updated","loadedModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useLoadModules.es.js","sources":["../../../../src/hooks/useLoadModules.ts"],"sourcesContent":["import { loadRemote } from '@module-federation/enhanced/runtime'\nimport { useEffect, useRef, useState } from 'react'\nimport semver from 'semver'\nimport { FrontendModuleListItem } from '@shared/api'\n\nexport interface ModuleSpec<T> {\n addon: string\n remote: string\n module: string\n fallback?: T\n debug?: boolean\n minVersion?: string\n}\n\ntype ModuleResult<T> = [\n T,\n {\n isLoaded: boolean\n addon: string\n remote: string\n module: string\n minVersion?: string\n outdated?: {\n current: string\n required: string\n }\n },\n]\n\nexport const useLoadModules = <T extends any[]>(\n moduleSpecs: ModuleSpec<T[number]>[],\n modules: FrontendModuleListItem[],\n skip: boolean,\n): { modules: ModuleResult<T[number]>[]; isLoading: boolean } => {\n // Use a ref to track which modules have been processed\n const processedModules = useRef<Set<string>>(new Set())\n\n // Initialize results state\n const [results, setResults] = useState<ModuleResult<T[number]>[]>(() =>\n initializeResults(moduleSpecs),\n )\n const [isLoading, setIsLoading] = useState(modules.length > 0 && !skip)\n\n // Reset and reinitialize when moduleSpecs change\n useEffect(() => {\n if (skip) return\n console.log('resetting processedModules')\n // Reset the processed modules tracker\n processedModules.current = new Set()\n\n // Initialize results with proper structure\n setResults(initializeResults(moduleSpecs))\n }, [JSON.stringify(moduleSpecs), skip])\n\n const loadModule = async (\n remote: string,\n module: string,\n addon: string,\n fallback: T[number] | undefined,\n minVersion?: string,\n ) => {\n try {\n const result = await loadRemote<{ default: T[number] }>(`${remote}/${module}`, {\n from: 'runtime',\n })\n updateResultWithLoaded(addon, remote, module, result?.default || fallback, minVersion)\n } catch (error) {\n console.error('Error loading remote module', remote, module, error)\n throw error\n }\n }\n\n // Load modules when remotes are initialized\n useEffect(() => {\n if (skip) {\n setIsLoading(false)\n return\n }\n\n // If all results are unloaded, reset processedModules to ensure we attempt loading\n // This handles the case where the component remounts with the same moduleSpecs\n const allUnloaded = results.every((result) => !result[1].isLoaded)\n if (allUnloaded && processedModules.current.size > 0) {\n console.log('resetting processedModules - results were reset')\n processedModules.current = new Set()\n }\n\n console.log('loading modules')\n\n const promises: Promise<void>[] = []\n moduleSpecs.forEach((spec, index) => {\n const { addon, remote, module, fallback, minVersion } = spec\n\n if (!addon || !remote || !module) {\n console.log('Invalid module spec', spec)\n return\n }\n\n // Create a unique key for this module\n const moduleKey = `${addon}/${remote}/${module}`\n\n // Skip if already processed\n if (processedModules.current.has(moduleKey)) {\n console.log('skipping already processed module', moduleKey)\n return\n }\n\n // Check if this module is already loaded in our results\n if (results[index]?.[1]?.isLoaded) {\n processedModules.current.add(moduleKey)\n return\n }\n\n // Mark as processed\n processedModules.current.add(moduleKey)\n\n const addonInfo = modules.find((m) => m.addonName === addon)\n\n // Handle missing addon\n if (!addonInfo) {\n console.log('Addon not found', { addon, remote, module })\n return\n }\n\n // Check version requirements\n if (minVersion && !semver.gte(addonInfo.addonVersion, minVersion)) {\n updateResultWithOutdated(\n index,\n addon,\n remote,\n module,\n fallback,\n minVersion,\n addonInfo.addonVersion,\n )\n return\n }\n\n // Check if module exists\n if (!addonInfo.modules[remote]) {\n console.log('Module not found', { addon, remote, module })\n return\n }\n\n promises.push(loadModule(remote, module, addon, fallback, minVersion))\n })\n\n if (!promises.length) {\n setIsLoading(false)\n return\n }\n\n // Wait for all promises to resolve\n setIsLoading(true)\n Promise.all(promises)\n .then(() => {\n // all modules loaded\n setIsLoading(false)\n })\n .catch((error) => {\n console.error('Error loading modules', error)\n setIsLoading(false)\n })\n }, [skip, modules, JSON.stringify(moduleSpecs), results])\n\n // Helper function to initialize results\n function initializeResults(specs: ModuleSpec<T[number]>[]): ModuleResult<T[number]>[] {\n return specs.map(\n ({ addon = '', remote = '', module = '', fallback, minVersion }): ModuleResult<T[number]> => [\n fallback as T[number],\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ],\n )\n }\n\n // Helper to update a result with outdated status\n function updateResultWithOutdated(\n index: number,\n addon: string,\n remote: string,\n module: string,\n fallback: T[number] | undefined,\n requiredVersion: string,\n currentVersion: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n fallback,\n {\n isLoaded: false,\n addon,\n remote,\n module,\n minVersion: requiredVersion,\n outdated: {\n current: currentVersion,\n required: requiredVersion,\n },\n },\n ]\n }\n return updated\n })\n }\n\n // Helper to update a result when module is loaded\n function updateResultWithLoaded(\n addon: string,\n remote: string,\n module: string,\n loadedModule: T[number] | undefined,\n minVersion?: string,\n ) {\n setResults((prev) => {\n const updated = [...prev]\n // Find the corresponding module spec\n const index = moduleSpecs.findIndex(\n (spec) => spec.addon === addon && spec.remote === remote && spec.module === module,\n )\n\n if (index >= 0 && index < updated.length) {\n updated[index] = [\n loadedModule,\n {\n isLoaded: true,\n addon,\n remote,\n module,\n minVersion,\n outdated: undefined,\n },\n ]\n }\n return updated\n })\n }\n\n return { modules: results, isLoading }\n}\n"],"names":["useLoadModules","moduleSpecs","modules","skip","processedModules","useRef","results","setResults","useState","initializeResults","isLoading","setIsLoading","useEffect","loadModule","remote","module","addon","fallback","minVersion","result","loadRemote","updateResultWithLoaded","error","promises","spec","index","moduleKey","addonInfo","m","semver","updateResultWithOutdated","specs","requiredVersion","currentVersion","prev","updated","loadedModule"],"mappings":"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"}
|
|
@@ -673,6 +673,7 @@ export type ProjectNode = {
|
|
|
673
673
|
productTypes: Array<ProductType>;
|
|
674
674
|
/** Return a list of products. */
|
|
675
675
|
products: ProductsConnection;
|
|
676
|
+
projectFolder?: Maybe<Scalars['String']['output']>;
|
|
676
677
|
projectName: Scalars['String']['output'];
|
|
677
678
|
/** Return a representation node based on its ID */
|
|
678
679
|
representation?: Maybe<RepresentationNode>;
|
|
@@ -3203,7 +3204,7 @@ export declare const VpFolderFragmentDoc = "\n fragment VPFolder on FolderNod
|
|
|
3203
3204
|
export declare const VersionExtendedFragmentDoc = "\n fragment VersionExtended on VersionNode {\n ...VersionBase\n task {\n id\n taskType\n }\n product {\n id\n name\n productType\n allAttrib\n folder {\n id\n ...VPFolder\n }\n }\n}\n \n fragment VersionBase on VersionNode {\n name\n id\n hasReviewables\n parents\n path\n active\n allAttrib\n author\n createdAt\n status\n tags\n updatedAt\n version\n featuredVersionType\n heroVersionId\n}\n \n\n fragment VPFolder on FolderNode {\n id\n name\n label\n allAttrib\n}\n ";
|
|
3204
3205
|
export declare const MessageFragmentFragmentDoc = "\n fragment MessageFragment on ActivityNode {\n projectName\n activityId\n activityType\n activityData\n referenceType\n referenceId\n body\n createdAt\n updatedAt\n active\n read\n author {\n name\n attrib {\n fullName\n }\n }\n origin {\n id\n name\n label\n type\n subtype\n }\n parents {\n type\n name\n label\n }\n}\n ";
|
|
3205
3206
|
export declare const ProgressTaskFragmentFragmentDoc = "\n fragment ProgressTaskFragment on TaskNode {\n projectName\n id\n name\n label\n taskType\n status\n assignees\n updatedAt\n active\n hasReviewables\n tags\n attrib {\n priority\n endDate\n resolutionHeight\n resolutionWidth\n fps\n }\n folder {\n id\n name\n label\n folderType\n parents\n status\n updatedAt\n parent {\n id\n name\n label\n parents\n }\n }\n}\n ";
|
|
3206
|
-
export declare const GetActivitiesByIdDocument = "\n query GetActivitiesById($projectName: String!, $entityIds: [String!]!, $activityIds: [String!]) {\n project(name: $projectName) {\n name\n activities(entityIds: $entityIds
|
|
3207
|
+
export declare const GetActivitiesByIdDocument = "\n query GetActivitiesById($projectName: String!, $entityIds: [String!]!, $activityIds: [String!]) {\n project(name: $projectName) {\n name\n activities(\n entityIds: $entityIds\n activityIds: $activityIds\n referenceTypes: [\"origin\"]\n ) {\n pageInfo {\n hasPreviousPage\n hasNextPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n ...ActivityFragment\n }\n }\n }\n }\n}\n \n fragment ActivityFragment on ActivityNode {\n activityId\n activityType\n activityData\n referenceType\n referenceId\n entityId\n body\n createdAt\n updatedAt\n author {\n name\n deleted\n active\n attrib {\n fullName\n }\n }\n files {\n id\n name\n size\n mime\n }\n origin {\n id\n name\n label\n type\n }\n reactions {\n fullName\n userName\n reaction\n timestamp\n }\n version {\n attrib {\n comment\n }\n }\n}\n ";
|
|
3207
3208
|
export declare const GetActivityUsersDocument = "\n query GetActivityUsers($projects: [String!]) {\n users(last: 2000, projects: $projects) {\n edges {\n node {\n name\n attrib {\n fullName\n }\n }\n }\n }\n}\n ";
|
|
3208
3209
|
export declare const GetActivitiesDocument = "\n query GetActivities($projectName: String!, $entityIds: [String!]!, $after: String, $first: Int, $before: String, $last: Int, $referenceTypes: [String!], $activityTypes: [String!]) {\n project(name: $projectName) {\n name\n activities(\n entityIds: $entityIds\n after: $after\n first: $first\n before: $before\n last: $last\n referenceTypes: $referenceTypes\n activityTypes: $activityTypes\n ) {\n pageInfo {\n hasPreviousPage\n hasNextPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n ...ActivityFragment\n }\n }\n }\n }\n}\n \n fragment ActivityFragment on ActivityNode {\n activityId\n activityType\n activityData\n referenceType\n referenceId\n entityId\n body\n createdAt\n updatedAt\n author {\n name\n deleted\n active\n attrib {\n fullName\n }\n }\n files {\n id\n name\n size\n mime\n }\n origin {\n id\n name\n label\n type\n }\n reactions {\n fullName\n userName\n reaction\n timestamp\n }\n version {\n attrib {\n comment\n }\n }\n}\n ";
|
|
3209
3210
|
export declare const GetEntitiesChecklistsDocument = "\n query GetEntitiesChecklists($projectName: String!, $entityIds: [String!]!) {\n project(name: $projectName) {\n name\n activities(\n entityIds: $entityIds\n last: 1000\n activityTypes: [\"checklist\"]\n referenceTypes: [\"origin\"]\n ) {\n edges {\n cursor\n node {\n activityId\n body\n }\n }\n }\n }\n}\n ";
|
|
@@ -673,6 +673,7 @@ export type ProjectNode = {
|
|
|
673
673
|
productTypes: Array<ProductType>;
|
|
674
674
|
/** Return a list of products. */
|
|
675
675
|
products: ProductsConnection;
|
|
676
|
+
projectFolder?: Maybe<Scalars['String']['output']>;
|
|
676
677
|
projectName: Scalars['String']['output'];
|
|
677
678
|
/** Return a representation node based on its ID */
|
|
678
679
|
representation?: Maybe<RepresentationNode>;
|
|
@@ -10,6 +10,7 @@ export type RouterTypes = {
|
|
|
10
10
|
};
|
|
11
11
|
interface ViewsWithReportsSettings extends ViewsContextValue {
|
|
12
12
|
viewSettings: GenericViewModel['settings'] | undefined;
|
|
13
|
+
settings: GenericViewModel['settings'] | undefined;
|
|
13
14
|
updateViewSettings: UpdateViewSettingsFn;
|
|
14
15
|
}
|
|
15
16
|
export interface RemotePageProps {
|
|
@@ -19,6 +19,7 @@ type FilterConfig = {
|
|
|
19
19
|
enableRelativeValues?: boolean;
|
|
20
20
|
prefixes?: Partial<Record<FilterFieldType, string>>;
|
|
21
21
|
keys?: Partial<Record<FilterFieldType, string>>;
|
|
22
|
+
fallbackScope?: ScopeType;
|
|
22
23
|
};
|
|
23
24
|
export type BuildFilterOptions = {
|
|
24
25
|
filterTypes?: FilterFieldType[];
|