@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":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search },\n { dispatch, forced },\n ) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n folderFilter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, search },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: batchIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of batchIds) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n // Only react if the parent folder is part of the current expanded set\n if (!parentIds.includes(parentId)) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, folderFilter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: batchIds,\n folderIds: arg.folderIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of batchIds) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n { projectName, groups, search, folderFilter, folderIds, desc, sortBy },\n api,\n ) => {\n try {\n let promises = []\n for (const group of groups) {\n const count = group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n folderFilter, // Passed but not yet supported by backend\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","dispatch","forced","allTasks","i","batchParentIds","batchTasks","parentId","r","e","rest","currentArg","previousArg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingTaskIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","returned","returnedMap","t","draft","idx","err","handlePubSub","_topic","message","taskId","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","promises","group","count","promise","res","groupValue","hasNextPage","groupTasks","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,MAAMA,IAAkB,CAACC,MAAsB;AACpD,MAAI;AACF,WAAO,KAAK,MAAMA,CAAS;AAAA,EAC7B,QAAY;AACV,WAAO,CAAA;AAAA,EACT;AACF,GAEMC,IAAoC,CAACC,MAAsD;AAC/F,MAAI,CAACA,EAAS;AACZ,WAAO,CAAA;AAGT,QAAMC,IAA0B,CAAA;AAChC,aAAW,EAAE,MAAMC,EAAA,KAAcF,EAAS,QAAQ,MAAM;AACtD,IAAAC,EAAM,KAAK;AAAA,MACT,GAAGC;AAAA,MACH,UAAUA,EAAS,YAAY;AAAA,MAC/B,QAAQL,EAAgBK,EAAS,SAAS;AAAA,MAC1C,UAAUA,EAAS;AAAA,MACnB,YAAY;AAAA,MACZ,OAAO,CAAA;AAAA,IAAC,CACT;AAGH,SAAOD;AACT,GAEME,IAAsB,CAC1BC,IAAuC,IACvCC,GACAC,MACG;AACH,QAAMC,IAAWH,GAAQ,IAAI,CAACI,OAAU,EAAE,MAAM,gBAAgB,IAAIA,EAAK,GAAA,EAAK,KAAK,CAAA,GAE7EC,IAAaH,KACd,MAAM,QAAQA,CAAS,IAAIA,IAAY,CAACA,CAAS,GAAG,IAAI,CAACI,OAAQ;AAAA,IAChE,MAAM;AAAA,IACN,IAAAA;AAAA,EAAA,EACA,IACF,CAAA;AAEJ,SAAO;AAAA,IACL,GAAGH;AAAA,IACH,GAAGE;AAAA,IACH,EAAE,MAAM,gBAAgB,IAAIJ,EAAA;AAAA,IAC5B,EAAE,MAAM,gBAAgB,IAAI,OAAA;AAAA,EAAO;AAEvC,GA6CMM,IAAcC,EAAO,iBAA+C;AAAA,EACxE,WAAW;AAAA;AAAA;AAAA;AAAA,IAIT,kBAAkB;AAAA,MAChB,mBAAmBb;AAAA,MACnB,cAAc,CAACK,GAAQS,GAAI,EAAE,WAAAP,GAAW,aAAAD,EAAA,MACtCF,EAAoBC,GAAQC,GAAaC,CAAS;AAAA,IAAA;AAAA,IAEtD,cAAc;AAAA,MACZ,mBAAmB,CAACF,OAA+B;AAAA,QACjD,OAAOL,EAAkCK,CAAM;AAAA,QAC/C,UAAUA,EAAO,QAAQ,MAAM;AAAA,MAAA;AAAA,MAEjC,cAAc,CAACA,GAAQS,GAAI,EAAE,aAAAR,QAC3BF,EAAoBC,GAAQ,SAAS,CAAA,GAAIC,CAAW;AAAA,IAAA;AAAA,EACxD;AAEJ,CAAC,GAGKS,IAAqBC,EAAW,iBAAiB;AAAA,EACrD,WAAW;AAAA,IACT,eAAe,CAAA;AAAA,EAAC;AAEpB,CAAC,GAEYC,IAA6B,KAEpCC,IAAcN,EAAY,gBAAgB;AAAA,EAC9C,WAAW,CAACO,OAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMrB,2BAA2BA,EAAM,MAS/B;AAAA,MACA,MAAM,QACJ,EAAE,aAAAb,GAAa,WAAAC,GAAW,QAAAa,GAAQ,cAAAC,GAAc,QAAAC,KAChD,EAAE,UAAAC,GAAU,QAAAC,KACZ;AACA,YAAI;AAGF,gBAAMC,IAA6B,CAAA;AAGnC,mBAASC,IAAI,GAAGA,IAAInB,EAAU,QAAQmB,KAAK,IAAY;AACrD,kBAAMC,IAAiBpB,EAAU,MAAMmB,GAAGA,IAAI,EAAU,GAqBlDE,KAlBe,MAAM,QAAQ;AAAA,cACjCD,EAAe;AAAA,gBAAI,OAAOE,MACxBN;AAAA,kBACEX,EAAY,UAAU,iBAAiB;AAAA,oBACrC;AAAA,sBACE,aAAAN;AAAA,sBACA,WAAW,CAACuB,CAAQ;AAAA,sBACpB,QAAAT;AAAA,sBACA,cAAAC;AAAA,sBACA,QAAAC;AAAA,oBAAA;AAAA,oBAEF,EAAE,cAAcE,EAAA;AAAA,kBAAO;AAAA,gBACzB;AAAA,cACF;AAAA,YACF,GAKC,OAAO,CAACM,MAAM,CAAC,CAACA,EAAE,IAAI,EACtB,QAAQ,CAACzB,MAAWA,EAAO,IAAwB;AAEtD,YAAAoB,EAAS,KAAK,GAAGG,CAAU;AAAA,UAC7B;AAEA,iBAAO,EAAE,MAAMH,EAAA;AAAA,QACjB,SAASM,GAAQ;AAEf,yBAAQ,MAAMA,CAAC,GAER,EAAE,OADK,EAAE,QAAQ,eAAe,OAAOA,EAAE,QAAA,EACvC;AAAA,QACX;AAAA,MACF;AAAA;AAAA,MAEA,oBAAoB,CAAC,EAAE,WAAW,EAAE,WAAAxB,GAAW,GAAGyB,EAAA,SAAc;AAAA,QAC9D,GAAGA;AAAA,MAAA;AAAA;AAAA,MAGL,aAAa,EAAE,YAAAC,GAAY,aAAAC,KAAe;AACxC,eAAO,KAAK,UAAUD,CAAU,MAAM,KAAK,UAAUC,CAAW;AAAA,MAClE;AAAA,MACA,cAAc,CAAC7B,GAAQS,GAAI,EAAE,WAAAP,GAAW,aAAAD,EAAA,MACtCF,EAAoBC,GAAQC,GAAaC,CAAS;AAAA,MACpD,MAAM,kBACJ,EAAE,aAAAD,GAAa,WAAAC,GAAW,QAAAa,GAAQ,QAAAE,KAClC,EAAE,iBAAAa,GAAiB,mBAAAC,GAAmB,kBAAAC,GAAkB,UAAAd,KACxD;AACA,YAAIe;AACJ,cAAMC,wBAAqB,IAAA,GACrBC,IAAY,KACZC,IAAW;AACjB,YAAIC,IAAY;AAEhB,cAAMC,IAAW,MAAM;AACrB,UAAID,MACJA,IAAY,IACZ,WAAWE,GAAOH,CAAQ;AAAA,QAC5B,GAEMG,IAAQ,YAAY;AAExB,cADAF,IAAY,IACR,CAACH,EAAe,KAAM;AAC1B,gBAAMM,IAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,GAAGC,CAAS;AAC9D,UAAAK,EAAS,QAAQ,CAAClC,MAAO4B,EAAe,OAAO5B,CAAE,CAAC;AAClD,cAAI;AAUF,kBAAMmC,KATM,MAAMvB;AAAA,cAChBX,EAAY,UAAU,aAAa;AAAA,gBACjC;AAAA,kBACE,aAAAN;AAAA,kBACA,SAASuC;AAAA,gBAAA;AAAA,gBAEX,EAAE,cAAc,GAAA;AAAA,cAAK;AAAA,YACvB,EACA,OAAA,GACmB,SAAS,CAAA,GACxBE,IAAc,IAAI,IAAID,EAAS,IAAI,CAACE,MAAsB,CAACA,EAAE,IAAIA,CAAC,CAAC,CAAC;AAE1E,YAAAX,EAAiB,CAACY,MAA4B;AAE5C,yBAAWxC,KAAQqC,GAAU;AAC3B,sBAAMI,IAAMD,EAAM,UAAU,CAACD,MAAMA,EAAE,OAAOvC,EAAK,EAAE;AACnD,gBAAIyC,IAAM,KAAID,EAAMC,CAAG,IAAIzC,IACtBwC,EAAM,KAAKxC,CAAI;AAAA,cACtB;AAEA,yBAAWE,KAAMkC;AACf,oBAAI,CAACE,EAAY,IAAIpC,CAAE,GAAG;AACxB,wBAAMuC,IAAMD,EAAM,UAAU,CAACD,MAAMA,EAAE,OAAOrC,CAAE;AAC9C,kBAAIuC,IAAM,MAAID,EAAM,OAAOC,GAAK,CAAC;AAAA,gBACnC;AAAA,YAEJ,CAAC;AAAA,UACH,SAASC,GAAK;AACZ,oBAAQ,MAAM,yCAAyCA,CAAG;AAAA,UAC5D,UAAA;AACE,YAAIZ,EAAe,QAAMI,EAAA;AAAA,UAC3B;AAAA,QACF;AACA,YAAI;AACF,gBAAMR;AAEN,gBAAMiB,IAAe,OAAOC,GAAgBC,MAAiB;AAC3D,kBAAMC,IAASD,GAAS,SAAS,UAC3BzB,IAAWyB,GAAS,SAAS;AACnC,YAAI,CAACC,KAAU,CAAC1B,KAEXtB,EAAU,SAASsB,CAAQ,MAChCU,EAAe,IAAIgB,CAAM,GACzBZ,EAAA;AAAA,UACF;AAKA,UAAAL,IAAQkB,EAAO,UAAU,eAAeJ,CAAY;AAAA,QACtD,QAAY;AAAA,QAEZ;AAEA,cAAMhB,GACFE,KAAOkB,EAAO,YAAYlB,CAAK;AAAA,MACrC;AAAA,IAAA,CACD;AAAA;AAAA;AAAA,IAGD,kBAAkBnB,EAAM,MAAqC;AAAA,MAC3D,MAAM,QAAQ,EAAE,aAAAb,GAAa,qBAAAmD,KAAuB,EAAE,UAAAlC,KAAY;AAChE,YAAI;AAUF,iBAAO,EAAE,OATM,MAAMA;AAAA,YACnBR,EAAmB,UAAU,cAAc,SAAS;AAAA,cAClD,aAAAT;AAAA,cACA,qBAAAmD;AAAA,YAAA,CACD;AAAA,UAAA,GAGiB,MAAM,aAAa,CAAA,EAE9B;AAAA,QACX,SAAS1B,GAAQ;AACf,yBAAQ,MAAMA,CAAC,GAER,EAAE,OADK,EAAE,QAAQ,eAAe,OAAOA,EAAE,QAAA,EACvC;AAAA,QACX;AAAA,MACF;AAAA,IAAA,CACD;AAAA;AAAA,IAED,sBAAsBZ,EAAM,cAI1B;AAAA,MACA,sBAAsB;AAAA,QACpB,kBAAkB,EAAE,QAAQ,IAAI,MAAM,GAAA;AAAA;AAAA,QAEtC,kBAAkB,CAACuC,GAAUC,GAAWC,GAAeC,MAAmB;AAExE,gBAAMC,IAAWJ,EAAS;AAI1B,cAAI,IAHSE,EAAc,OACAE,EAAS,kBAAkBA,EAAS,gBAE3C,CAACA,EAAS;AAE9B,mBAAO;AAAA,cACL,QAAQA,EAAS;AAAA,cACjB,MAAMF,EAAc;AAAA,YAAA;AAAA,QAExB;AAAA,MAAA;AAAA,MAEF,SAAS,OAAO,EAAE,UAAAG,GAAU,WAAAC,EAAA,GAAaC,MAAQ;AAC/C,YAAI;AACF,gBAAM,EAAE,aAAA3D,GAAa,QAAAc,GAAQ,cAAAC,GAAc,QAAAC,GAAQ,WAAA4C,GAAW,QAAAC,GAAQ,MAAAC,MAASL,GACzE,EAAE,QAAAM,MAAWL,GAGbM,IAAmB;AAAA,YACvB,aAAAhE;AAAA,YACA,QAAAc;AAAA,YACA,cAAAC;AAAA,YACA,QAAAC;AAAA,YACA,WAAA4C;AAAA,UAAA;AAIF,UAAIC,KACFG,EAAY,SAASH,GACjBC,KACFE,EAAY,SAASD,KAAU,QAC/BC,EAAY,OAAOrD,MAEnBqD,EAAY,QAAQD,KAAU,QAC9BC,EAAY,QAAQrD,OAGtBqD,EAAY,QAAQD,KAAU,QAC9BC,EAAY,QAAQrD;AAItB,gBAAMZ,IAAS,MAAM4D,EAAI;AAAA,YACvBrD,EAAY,UAAU,aAAa,SAAS0D,GAAa,EAAE,cAAc,IAAM;AAAA,UAAA;AAGjF,cAAIjE,EAAO,MAAO,OAAMA,EAAO;AAC/B,gBAAMkE,IAAW;AAAA,YACf,OAAO,CAAA;AAAA,YACP,UAAU;AAAA,cACR,aAAa;AAAA,cACb,WAAW;AAAA,cACX,aAAa;AAAA,cACb,iBAAiB;AAAA,YAAA;AAAA,UACnB;AAIF,iBAAO;AAAA,YACL,MAAMlE,EAAO,QAAQkE;AAAA,UAAA;AAAA,QAEzB,SAASxC,GAAQ;AACf,yBAAQ,MAAM,0CAA0CA,CAAC,GAClD,EAAE,OAAO,EAAE,QAAQ,eAAe,OAAOA,EAAE,UAAQ;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,cAAc,CAAC1B,GAAQS,GAAI,EAAE,aAAAR,EAAA,MAC3BF,EAAoBC,GAAQ,MAAM,QAAQ,CAACmE,MAAMA,EAAE,KAAK,KAAK,CAAA,GAAIlE,CAAW;AAAA,MAC9E,MAAM,kBACJmE,GACA,EAAE,iBAAAtC,GAAiB,mBAAAC,GAAmB,kBAAAC,GAAkB,UAAAd,KACxD;AACA,YAAIe;AACJ,cAAMC,wBAAqB,IAAA,GACrBC,IAAY,KACZC,IAAW;AACjB,YAAIC,IAAY;AAEhB,cAAMC,IAAW,MAAM;AACrB,UAAID,MACJA,IAAY,IACZ,WAAWE,GAAOH,CAAQ;AAAA,QAC5B,GAEMG,IAAQ,YAAY;AAExB,cADAF,IAAY,IACR,CAACH,EAAe,KAAM;AAC1B,gBAAMM,IAAW,MAAM,KAAKN,CAAc,EAAE,MAAM,GAAGC,CAAS;AAC9D,UAAAK,EAAS,QAAQ,CAAClC,MAAO4B,EAAe,OAAO5B,CAAE,CAAC;AAClD,cAAI;AAYF,kBAAMmC,KAXM,MAAMvB;AAAA,cAChBX,EAAY,UAAU,aAAa;AAAA,gBACjC;AAAA,kBACE,aAAa6D,EAAI;AAAA,kBACjB,SAAS5B;AAAA,kBACT,WAAW4B,EAAI;AAAA,gBAAA;AAAA,gBAEjB,EAAE,cAAc,GAAA;AAAA,cAAK;AAAA,YACvB,EACA,OAAA,GAEmB,SAAS,CAAA,GACxB1B,IAAc,IAAI,IAAID,EAAS,IAAI,CAACE,MAAsB,CAACA,EAAE,IAAIA,CAAC,CAAC,CAAC;AAE1E,YAAAX,EAAiB,CAACY,MAA8D;AAE9E,yBAAWxC,KAAQqC,GAAU;AAC3B,oBAAI4B,IAAU;AACd,2BAAWC,KAAQ1B,EAAM,OAAO;AAC9B,wBAAMC,IAAMyB,EAAK,MAAM,UAAU,CAAC3B,MAAMA,EAAE,OAAOvC,EAAK,EAAE;AACxD,sBAAIyC,MAAQ,IAAI;AACd,oBAAAyB,EAAK,MAAMzB,CAAG,IAAIzC,GAClBiE,IAAU;AACV;AAAA,kBACF;AAAA,gBACF;AACA,gBAAKA,MACCzB,EAAM,MAAM,SAAQA,EAAM,MAAM,CAAC,EAAE,MAAM,QAAQxC,CAAI,IAEvDwC,EAAM,MAAM,KAAK;AAAA,kBACf,OAAO,CAACxC,CAAI;AAAA,kBACZ,UAAU;AAAA,oBACR,aAAa;AAAA,oBACb,WAAW;AAAA,oBACX,aAAa;AAAA,oBACb,iBAAiB;AAAA,kBAAA;AAAA,gBACnB,CACD;AAAA,cAEP;AAEA,yBAAWE,KAAMkC;AACf,oBAAI,CAAAE,EAAY,IAAIpC,CAAE;AACtB,6BAAWgE,KAAQ1B,EAAM,OAAO;AAC9B,0BAAMC,IAAMyB,EAAK,MAAM,UAAU,CAAC3B,MAAMA,EAAE,OAAOrC,CAAE;AACnD,wBAAIuC,MAAQ,IAAI;AACd,sBAAAyB,EAAK,MAAM,OAAOzB,GAAK,CAAC;AACxB;AAAA,oBACF;AAAA,kBACF;AAAA,YAEJ,CAAC;AAAA,UACH,SAASC,GAAK;AACZ,oBAAQ,MAAM,+CAA+CA,CAAG;AAAA,UAClE,UAAA;AACE,YAAIZ,EAAe,QAAMI,EAAA;AAAA,UAC3B;AAAA,QACF;AACA,YAAI;AACF,gBAAMR;AAEN,gBAAMiB,IAAe,OAAOC,GAAgBC,MAAiB;AAC3D,kBAAMC,IAASD,GAAS,SAAS;AACjC,YAAKC,MACLhB,EAAe,IAAIgB,CAAM,GACzBZ,EAAA;AAAA,UACF;AAEA,UAAAL,IAAQkB,EAAO,UAAU,eAAeJ,CAAY;AAAA,QACtD,QAAY;AAAA,QAEZ;AACA,cAAMhB,GACFE,KAAOkB,EAAO,YAAYlB,CAAK;AAAA,MACrC;AAAA,IAAA,CACD;AAAA,IACD,qBAAqBnB,EAAM,MAA0D;AAAA,MACnF,SAAS,OACP,EAAE,aAAAb,GAAa,QAAAsE,GAAQ,QAAAtD,GAAQ,cAAAD,GAAc,WAAA6C,GAAW,MAAAE,GAAM,QAAAD,EAAA,GAC9DF,MACG;AACH,YAAI;AACF,cAAIY,IAAW,CAAA;AACf,qBAAWC,KAASF,GAAQ;AAC1B,kBAAMG,IAAQD,EAAM,SAAS,KAEvBR,IAA0C;AAAA,cAC9C,aAAAhE;AAAA,cACA,QAAQwE,EAAM;AAAA,cACd,cAAAzD;AAAA;AAAA,cACA,QAAAC;AAAA,cACA,WAAA4C;AAAA,cACA,QAAAC;AAAA;AAAA,cAEA,OAAOW,EAAM;AAAA,YAAA;AAEf,YAAIV,IACFE,EAAY,OAAOS,IAEnBT,EAAY,QAAQS;AAGtB,kBAAMC,IAAUf,EAAI;AAAA,cAClBrD,EAAY,UAAU,aAAa,SAAS0D,GAAa,EAAE,cAAc,IAAM;AAAA,YAAA;AAEjF,YAAAO,EAAS,KAAKG,CAAO;AAAA,UACvB;AAEA,gBAAM3E,IAAS,MAAM,QAAQ,IAAIwE,CAAQ,GACnC3E,IAA0B,CAAA;AAChC,qBAAW+E,KAAO5E,GAAQ;AACxB,gBAAI4E,EAAI,MAAO,OAAMA,EAAI;AAGzB,kBAAMC,IAAaD,EAAI,cAAc,OAE/BE,IACJF,EAAI,MAAM,UAAU,eAAeA,EAAI,MAAM,UAAU,mBAAmB,IACtEG,IACJH,EAAI,MAAM,MAAM,IAAI,CAACxE,GAAMiB,GAAG2D,OAAO;AAAA,cACnC,GAAG5E;AAAA,cACH,QAAQ;AAAA,gBACN;AAAA,kBACE,OAAOyE;AAAA,kBACP,aAAaxD,MAAM2D,EAAE,SAAS,KAAKF,IAAcD,IAAa;AAAA;AAAA,gBAAA;AAAA,cAChE;AAAA,YACF,EACA,KAAK,CAAA;AAET,YAAAhF,EAAM,KAAK,GAAGkF,CAAU;AAAA,UAC1B;AAGA,iBAAO;AAAA,YACL,MAAM;AAAA,cACJ,OAAAlF;AAAA,YAAA;AAAA,UACF;AAAA,QAEJ,SAASoF,GAAY;AACnB,yBAAQ,MAAM,yCAAyCA,CAAK,GACrD,EAAE,OAAO,EAAE,QAAQ,eAAe,OAAOA,EAAM,UAAQ;AAAA,QAChE;AAAA,MACF;AAAA,MACA,cAAc,CAACjF,GAAQS,GAAI,EAAE,aAAAR,QAC3BF,EAAoBC,GAAQ,OAAOC,CAAW;AAAA,IAAA,CACjD;AAAA,EAAA;AAEL,CAAC,GAEY;AAAA,EACX,mCAAAiF;AAAA,EACA,0BAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,sCAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,6BAAAC;AACF,IAAI1E;"}
|
|
1
|
+
{"version":3,"file":"getOverview.es.js","sources":["../../../../../../src/api/queries/overview/getOverview.ts"],"sourcesContent":["import {\n gqlApi,\n GetTasksByParentQuery,\n GetTasksListQuery,\n foldersApi,\n SearchFoldersApiArg,\n GetTasksListQueryVariables,\n} from '@shared/api/generated'\nimport { PubSub } from '@shared/util'\nimport { EditorTaskNode } from '@shared/containers/ProjectTreeTable'\nimport {\n DefinitionsFromApi,\n FetchBaseQueryError,\n OverrideResultType,\n TagTypesFromApi,\n} from '@reduxjs/toolkit/query'\n\n// parse attribs JSON string to object\nexport const parseAllAttribs = (allAttrib: string) => {\n try {\n return JSON.parse(allAttrib)\n } catch (e) {\n return {}\n }\n}\n\nconst transformFilteredEntitiesByParent = (response: GetTasksByParentQuery): EditorTaskNode[] => {\n if (!response.project) {\n return []\n }\n\n const tasks: EditorTaskNode[] = []\n for (const { node: taskNode } of response.project.tasks.edges) {\n tasks.push({\n ...taskNode,\n folderId: taskNode.folderId || 'root',\n attrib: parseAllAttribs(taskNode.allAttrib),\n entityId: taskNode.id,\n entityType: 'task',\n links: [],\n })\n }\n\n return tasks\n}\n\nconst getOverviewTaskTags = (\n result: EditorTaskNode[] | undefined = [],\n projectName: string,\n parentIds?: string | string[],\n) => {\n const taskTags = result?.map((task) => ({ type: 'overviewTask', id: task.id })) || []\n\n const parentTags = parentIds\n ? (Array.isArray(parentIds) ? parentIds : [parentIds]).map((id) => ({\n type: 'overviewTask',\n id,\n }))\n : []\n\n return [\n ...taskTags,\n ...parentTags,\n { type: 'overviewTask', id: projectName },\n { type: 'overviewTask', id: 'LIST' },\n ]\n}\n\nexport type GetTasksListResult = {\n pageInfo: GetTasksListQuery['project']['tasks']['pageInfo']\n tasks: EditorTaskNode[]\n}\n\nexport type GetTasksListArgs = {\n projectName: string\n filter?: string\n folderFilter?: string\n search?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n}\n\nexport type GetGroupedTasksListResult = {\n tasks: EditorTaskNode[]\n}\n\nexport type GetGroupedTasksListArgs = {\n projectName: string\n groups: { filter: string; count: number; value: string }[]\n search?: string\n folderFilter?: string\n folderIds?: string[]\n desc?: boolean\n sortBy?: string\n groupCount?: number // optional override for all groups\n}\n\n// Define the page param type for infinite query\ntype TasksListPageParam = {\n cursor: string\n desc?: boolean\n}\n\ntype Definitions = DefinitionsFromApi<typeof gqlApi>\ntype TagTypes = TagTypesFromApi<typeof gqlApi>\ntype UpdatedDefinitions = Omit<Definitions, 'GetFilteredEntities'> & {\n GetTasksByParent: OverrideResultType<Definitions['GetTasksByParent'], EditorTaskNode[]>\n GetTasksList: OverrideResultType<Definitions['GetTasksList'], GetTasksListResult>\n}\n\n// GRAPHQL API\nconst enhancedApi = gqlApi.enhanceEndpoints<TagTypes, UpdatedDefinitions>({\n endpoints: {\n // This gets tasks for all parent folders provided\n // But in this case it will only ever receive one parent folder from the getOverviewTasksByFolders query\n // It is only used by getOverviewTasksByFolders in this file\n GetTasksByParent: {\n transformResponse: transformFilteredEntitiesByParent,\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n },\n GetTasksList: {\n transformResponse: (result: GetTasksListQuery) => ({\n tasks: transformFilteredEntitiesByParent(result),\n pageInfo: result.project.tasks.pageInfo,\n }),\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks || [], projectName),\n },\n },\n})\n\n// REST FOLDERS API\nconst foldersApiEnhanced = foldersApi.enhanceEndpoints({\n endpoints: {\n searchFolders: {},\n },\n})\n\nexport const TASKS_INFINITE_QUERY_COUNT = 100 // Number of items to fetch per page\n\nconst injectedApi = enhancedApi.injectEndpoints({\n endpoints: (build) => ({\n // Each project has one cache for all the tasks of the expanded folders\n // Changing the expanded folders will trigger a refetch but not a new cache\n // Each expanded folder has it's own query that is looped over here\n // When new folders are expanded, the new tasks are fetched and we use the cache for the rest\n // This also solves the pagination issue of getting all tasks in one query, splitting it up in multiple queries to avoid pagination limits\n getOverviewTasksByFolders: build.query<\n EditorTaskNode[],\n {\n projectName: string\n parentIds: string[]\n filter?: string\n folderFilter?: string\n search?: string\n }\n >({\n async queryFn(\n { projectName, parentIds, filter, folderFilter, search },\n { dispatch, forced },\n ) {\n try {\n // Process parent IDs in sequential batches\n const BATCH_SIZE = 20 // Process x parentIds at a time\n const allTasks: EditorTaskNode[] = []\n\n // Process batches one after another\n for (let i = 0; i < parentIds.length; i += BATCH_SIZE) {\n const batchParentIds = parentIds.slice(i, i + BATCH_SIZE)\n\n // Process this batch in parallel\n const batchResults = await Promise.all(\n batchParentIds.map(async (parentId) =>\n dispatch(\n enhancedApi.endpoints.GetTasksByParent.initiate(\n {\n projectName,\n parentIds: [parentId],\n filter,\n folderFilter,\n search,\n },\n { forceRefetch: forced },\n ),\n ),\n ),\n )\n\n // Add the results from this batch to our accumulated results\n const batchTasks = batchResults\n .filter((r) => !!r.data)\n .flatMap((result) => result.data as EditorTaskNode[])\n\n allTasks.push(...batchTasks)\n }\n\n return { data: allTasks }\n } catch (e: any) {\n // handle errors appropriately\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n // keep one cache per project\n serializeQueryArgs: ({ queryArgs: { parentIds, ...rest } }) => ({\n ...rest,\n }),\n // Refetch when the page arg changes\n forceRefetch({ currentArg, previousArg }) {\n return JSON.stringify(currentArg) !== JSON.stringify(previousArg)\n },\n providesTags: (result, _e, { parentIds, projectName }) =>\n getOverviewTaskTags(result, projectName, parentIds),\n async onCacheEntryAdded(\n { projectName, parentIds, filter, search },\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName,\n taskIds: batchIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: EditorTaskNode[]) => {\n // update or add\n for (const task of returned) {\n const idx = draft.findIndex((t) => t.id === task.id)\n if (idx > -1) draft[idx] = task\n else draft.push(task)\n }\n // remove missing\n for (const id of batchIds) {\n if (!returnedMap.has(id)) {\n const idx = draft.findIndex((t) => t.id === id)\n if (idx > -1) draft.splice(idx, 1)\n }\n }\n })\n } catch (err) {\n console.error('Realtime overview batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n const parentId = message?.summary?.parentId\n if (!taskId || !parentId) return\n // Only react if the parent folder is part of the current expanded set\n if (!parentIds.includes(parentId)) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n // Subscribe to task entity updates\n // NOTE: backend emits topics like 'entity.task.assignees_changed'.\n // Assuming PubSub supports prefix matching when subscribing without the suffix.\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (e) {\n // cache entry removed before loaded - ignore\n }\n\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n // searchFolders is a post so it's a bit annoying to consume\n // we wrap it in a queryFn to make it easier to consume as a query hook\n getSearchFolders: build.query<string[], SearchFoldersApiArg>({\n async queryFn({ projectName, folderSearchRequest }, { dispatch }) {\n try {\n const result = await dispatch(\n foldersApiEnhanced.endpoints.searchFolders.initiate({\n projectName,\n folderSearchRequest,\n }),\n )\n\n const data = result.data?.folderIds || []\n\n return { data }\n } catch (e: any) {\n console.error(e)\n const error = { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError\n return { error }\n }\n },\n }),\n // Add new infinite query endpoint for tasks list\n getTasksListInfinite: build.infiniteQuery<\n GetTasksListResult,\n GetTasksListArgs,\n TasksListPageParam\n >({\n infiniteQueryOptions: {\n initialPageParam: { cursor: '', desc: false },\n // Calculate the next page param based on current page response and params\n getNextPageParam: (lastPage, _allPages, lastPageParam, _allPageParams) => {\n // Use the endCursor from the query as the next page param\n const pageInfo = lastPage.pageInfo\n const desc = lastPageParam.desc\n const hasNextPage = desc ? pageInfo.hasPreviousPage : pageInfo.hasNextPage\n\n if (!hasNextPage || !pageInfo.endCursor) return undefined\n\n return {\n cursor: pageInfo.endCursor,\n desc: lastPageParam.desc,\n }\n },\n },\n queryFn: async ({ queryArg, pageParam }, api) => {\n try {\n const { projectName, filter, folderFilter, search, folderIds, sortBy, desc } = queryArg\n const { cursor } = pageParam\n\n // Build the query parameters for GetTasksList\n const queryParams: any = {\n projectName,\n filter,\n folderFilter,\n search,\n folderIds,\n }\n\n // Add cursor-based pagination\n if (sortBy) {\n queryParams.sortBy = sortBy\n if (desc) {\n queryParams.before = cursor || undefined\n queryParams.last = TASKS_INFINITE_QUERY_COUNT\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n } else {\n queryParams.after = cursor || undefined\n queryParams.first = TASKS_INFINITE_QUERY_COUNT\n }\n\n // Call the existing GetTasksList endpoint\n const result = await api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n\n if (result.error) throw result.error\n const fallback = {\n tasks: [],\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n startCursor: null,\n hasPreviousPage: false,\n },\n }\n\n // Return the tasks directly as required by the infinite query format\n return {\n data: result.data || fallback,\n }\n } catch (e: any) {\n console.error('Error in getTasksListInfinite queryFn:', e)\n return { error: { status: 'FETCH_ERROR', error: e.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.pages.flatMap((p) => p.tasks) || [], projectName),\n async onCacheEntryAdded(\n arg,\n { cacheDataLoaded, cacheEntryRemoved, updateCachedData, dispatch },\n ) {\n let token: any\n const pendingTaskIds = new Set<string>()\n const MAX_BATCH = 100\n const INTERVAL = 500\n let scheduled = false\n\n const schedule = () => {\n if (scheduled) return\n scheduled = true\n setTimeout(flush, INTERVAL)\n }\n\n const flush = async () => {\n scheduled = false\n if (!pendingTaskIds.size) return\n const batchIds = Array.from(pendingTaskIds).slice(0, MAX_BATCH)\n batchIds.forEach((id) => pendingTaskIds.delete(id))\n try {\n const res = await dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(\n {\n projectName: arg.projectName,\n taskIds: batchIds,\n folderIds: arg.folderIds,\n } as any,\n { forceRefetch: true },\n ),\n ).unwrap()\n\n const returned = res.tasks || []\n const returnedMap = new Map(returned.map((t: EditorTaskNode) => [t.id, t]))\n\n updateCachedData((draft: { pages: GetTasksListResult[]; pageParams: any[] }) => {\n // update/insert\n for (const task of returned) {\n let located = false\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === task.id)\n if (idx !== -1) {\n page.tasks[idx] = task\n located = true\n break\n }\n }\n if (!located) {\n if (draft.pages.length) draft.pages[0].tasks.unshift(task)\n else\n draft.pages.push({\n tasks: [task],\n pageInfo: {\n startCursor: null,\n endCursor: null,\n hasNextPage: false,\n hasPreviousPage: false,\n },\n })\n }\n }\n // remove any requested but missing tasks\n for (const id of batchIds) {\n if (returnedMap.has(id)) continue\n for (const page of draft.pages) {\n const idx = page.tasks.findIndex((t) => t.id === id)\n if (idx !== -1) {\n page.tasks.splice(idx, 1)\n break\n }\n }\n }\n })\n } catch (err) {\n console.error('Realtime infinite tasks batch update failed', err)\n } finally {\n if (pendingTaskIds.size) schedule()\n }\n }\n try {\n await cacheDataLoaded\n\n const handlePubSub = async (_topic: string, message: any) => {\n const taskId = message?.summary?.entityId\n if (!taskId) return\n pendingTaskIds.add(taskId)\n schedule()\n }\n\n token = PubSub.subscribe('entity.task', handlePubSub)\n } catch (_) {\n // ignore\n }\n await cacheEntryRemoved\n if (token) PubSub.unsubscribe(token)\n },\n }),\n getGroupedTasksList: build.query<GetGroupedTasksListResult, GetGroupedTasksListArgs>({\n queryFn: async (\n { projectName, groups, search, folderFilter, folderIds, desc, sortBy, groupCount },\n api,\n ) => {\n try {\n let promises = []\n for (const group of groups) {\n // Determine count for this group - use argument override, else group count, else default\n const count = groupCount || group.count || 500\n\n const queryParams: GetTasksListQueryVariables = {\n projectName,\n filter: group.filter,\n folderFilter, // Passed but not yet supported by backend\n search,\n folderIds,\n sortBy: sortBy,\n // @ts-expect-error - we know group does not exist on query variables but we need it for later\n group: group.value,\n }\n if (desc) {\n queryParams.last = count\n } else {\n queryParams.first = count\n }\n\n const promise = api.dispatch(\n enhancedApi.endpoints.GetTasksList.initiate(queryParams, { forceRefetch: true }),\n )\n promises.push(promise)\n }\n\n const result = await Promise.all(promises)\n const tasks: EditorTaskNode[] = []\n for (const res of result) {\n if (res.error) throw res.error\n // get group value\n // @ts-expect-error - we know group does exist on res.originalArgs from line 319\n const groupValue = res.originalArgs?.group as string\n\n const hasNextPage =\n res.data?.pageInfo?.hasNextPage || res.data?.pageInfo?.hasPreviousPage || false\n const groupTasks =\n res.data?.tasks.map((task, i, a) => ({\n ...task,\n groups: [\n {\n value: groupValue,\n hasNextPage: i === a.length - 1 && hasNextPage ? groupValue : undefined, // Only add hasNextPage to the last task in the group\n },\n ],\n })) || []\n\n tasks.push(...groupTasks)\n }\n\n // Return the tasks directly as required by the query format\n return {\n data: {\n tasks,\n },\n }\n } catch (error: any) {\n console.error('Error in getGroupedTasksList queryFn:', error)\n return { error: { status: 'FETCH_ERROR', error: error.message } as FetchBaseQueryError }\n }\n },\n providesTags: (result, _e, { projectName }) =>\n getOverviewTaskTags(result?.tasks, projectName),\n }),\n }),\n})\n\nexport const {\n useGetOverviewTasksByFoldersQuery,\n useGetSearchFoldersQuery,\n useGetTasksListQuery,\n useGetTasksListInfiniteInfiniteQuery,\n useLazyGetTasksByParentQuery,\n useGetGroupedTasksListQuery,\n} = injectedApi\nexport default injectedApi\n"],"names":["parseAllAttribs","allAttrib","transformFilteredEntitiesByParent","response","tasks","taskNode","getOverviewTaskTags","result","projectName","parentIds","taskTags","task","parentTags","id","enhancedApi","gqlApi","_e","foldersApiEnhanced","foldersApi","TASKS_INFINITE_QUERY_COUNT","injectedApi","build","filter","folderFilter","search","dispatch","forced","allTasks","i","batchParentIds","batchTasks","parentId","r","e","rest","currentArg","previousArg","cacheDataLoaded","cacheEntryRemoved","updateCachedData","token","pendingTaskIds","MAX_BATCH","INTERVAL","scheduled","schedule","flush","batchIds","returned","returnedMap","t","draft","idx","err","handlePubSub","_topic","message","taskId","PubSub","folderSearchRequest","lastPage","_allPages","lastPageParam","_allPageParams","pageInfo","queryArg","pageParam","api","folderIds","sortBy","desc","cursor","queryParams","fallback","p","arg","located","page","groups","groupCount","promises","group","count","promise","res","groupValue","hasNextPage","groupTasks","a","error","useGetOverviewTasksByFoldersQuery","useGetSearchFoldersQuery","useGetTasksListQuery","useGetTasksListInfiniteInfiniteQuery","useLazyGetTasksByParentQuery","useGetGroupedTasksListQuery"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const l=require("../../../../_virtual/jsx-runtime.cjs.js"),a=require("react"),N=require("styled-components"),A=require("./TableSettings.styled.cjs.js"),
|
|
1
|
+
"use strict";const l=require("../../../../_virtual/jsx-runtime.cjs.js"),a=require("react"),N=require("styled-components"),A=require("./TableSettings.styled.cjs.js"),ve=require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js"),xe=require("./ColumnItem.cjs.js"),L=require("./SortableColumnItem.cjs.js"),p=require("@dnd-kit/core"),P=require("@dnd-kit/sortable"),me=require("react-toastify"),pe=({columns:E,highlighted:v})=>{const{columnVisibility:r,updateColumnVisibility:z,columnPinning:c,updateColumnPinning:ee,columnOrder:f,setColumnsConfig:R,columnSizing:ne,groupBy:S,sorting:ie,rowHeight:se}=ve.useColumnSettingsContext(),[F,_]=a.useState(null),[te,$]=a.useState(!1),[le,G]=a.useState(!1),[J,K]=a.useState(!1),[oe,H]=a.useState(!1),[re,D]=a.useState(!1),ae=p.useSensors(p.useSensor(p.PointerSensor,{activationConstraint:{distance:5}})),w=a.useRef(null);a.useEffect(()=>{if(w.current&&v){const e=w.current.querySelector(`#column-settings-${v}`);e&&e.scrollIntoView({behavior:"smooth",block:"center"})}},[v]);const{visibleColumns:b,hiddenColumns:j,pinnedColumns:m}=a.useMemo(()=>{const e=E.filter(s=>r[s.value]!==!1),n=E.filter(s=>r[s.value]===!1),i=e.filter(s=>c.left?.includes(s.value));return{visibleColumns:e.filter(s=>!c.left?.includes(s.value)),hiddenColumns:n,pinnedColumns:i}},[E,r,c]),y=a.useMemo(()=>{const e=[...b];return f.length>0&&e.sort((n,i)=>{const d=f.indexOf(n.value),s=f.indexOf(i.value);return d===-1?1:s===-1?-1:d-s}),e},[b,f]),O=a.useMemo(()=>{const e=[...m];return f.length>0&&e.sort((n,i)=>{const d=f.indexOf(n.value),s=f.indexOf(i.value);return d===-1?1:s===-1?-1:d-s}),e},[m,f]),Q=a.useMemo(()=>y.map(e=>e.value),[y]),U=a.useMemo(()=>O.map(e=>e.value),[O]),I=e=>{const n={...r};n[e]!==!1?n[e]=!1:n[e]=!0,z(n)},q=e=>{const n={...c},i={...r};n.left?.includes(e)?n.left=n.left.filter(d=>d!==e):(n.left=[...n.left||[],e],i[e]===!1&&(i[e]=!0,z(i))),ee(n)},de=e=>{const n=e.active.id;_(n),K(c.left?.includes(n)||!1)},ue=e=>{const{active:n,over:i}=e;if(i&&n.id!==i.id){const d=r[n.id]===!1,s=r[i.id]!==!1,t=c.left?.includes(i.id)||!1,x=r[i.id]===!1;$(d&&s&&!t),G(s&&t),D(x),H(s&&!t)}else H(!1),D(!1)},ce=e=>{$(!1),G(!1),K(!1),H(!1),D(!1);const{active:n,over:i}=e;if(i&&n.id!==i.id){const d=[...b,...j,...m].find(t=>t.value===n.id),s=[...b,...j,...m].find(t=>t.value===i.id);if(d&&s){const t=n.id,x=i.id,M=r[t]!==!1,W=r[x]!==!1,V=c.left?.includes(t)||!1,h=c.left?.includes(x)||!1,fe=r[x]===!1,o={columnVisibility:{...r},columnOrder:[...f],columnPinning:{...c},columnSizing:{...ne},groupBy:S,sorting:ie,rowHeight:se};if(M&&W){let u=[...o.columnPinning.left||[]];V!==h&&(V&&!h?u=u.filter(T=>T!==t):!V&&h&&(u=[...u,t]));const g=[...U,...Q],X=g.indexOf(t),Y=g.indexOf(x);if(X===-1||Y===-1){console.error("Invalid column order state"),me.toast.error("Invalid column order state");return}const Z=P.arrayMove(g,X,Y),ge=Z.filter(T=>u.includes(T));o.columnOrder=Z,o.columnPinning={...o.columnPinning,left:ge},R(o)}else if(!M&&W){if(o.columnVisibility[t]=!0,h){const g=[...o.columnPinning.left||[],t];o.columnPinning.left=g}const u=[...U,...Q];if(!u.includes(t)){const g=u.indexOf(x);u.splice(g,0,t)}o.columnOrder=u,R(o)}else if(M&&fe){if(o.columnVisibility[t]=!1,V){const u=(o.columnPinning.left||[]).filter(g=>g!==t);o.columnPinning.left=u}R(o)}}}_(null)},C=F?[...b,...j,...m].find(e=>e.value===F):null;return l.jsxRuntimeExports.jsx(p.DndContext,{sensors:ae,collisionDetection:p.closestCenter,onDragStart:de,onDragOver:ue,onDragEnd:ce,children:l.jsxRuntimeExports.jsxs(be,{children:[m.length>0&&l.jsxRuntimeExports.jsxs(k,{className:le&&!J?"drop-target":"",children:[l.jsxRuntimeExports.jsx(B,{children:"Pinned Columns"}),l.jsxRuntimeExports.jsx(P.SortableContext,{items:O.map(e=>e.value),strategy:P.verticalListSortingStrategy,children:l.jsxRuntimeExports.jsx(A.Menu,{children:O.map(e=>l.jsxRuntimeExports.jsx(L,{id:e.value,column:e,isPinned:!0,isHidden:!1,isDisabled:!!S&&e.value==="name",isHighlighted:v===e.value,onTogglePinning:q,onToggleVisibility:I},e.value))})})]}),l.jsxRuntimeExports.jsxs(k,{className:te||J&&oe?"drop-target":"",children:[l.jsxRuntimeExports.jsx(B,{children:"Visible Columns"}),l.jsxRuntimeExports.jsx(P.SortableContext,{items:y.map(e=>e.value),strategy:P.verticalListSortingStrategy,children:l.jsxRuntimeExports.jsx(A.Menu,{children:y.map(e=>l.jsxRuntimeExports.jsx(L,{id:e.value,column:e,isPinned:!1,isHidden:!1,isHighlighted:v===e.value,isDisabled:!!S&&e.value==="name",onTogglePinning:q,onToggleVisibility:I},e.value))})})]}),j.length>0&&l.jsxRuntimeExports.jsxs(k,{className:re?"drop-target":"",children:[l.jsxRuntimeExports.jsx(B,{children:"Hidden Columns"}),l.jsxRuntimeExports.jsx(A.Menu,{ref:w,children:j.map(e=>l.jsxRuntimeExports.jsx(L,{id:e.value,column:e,isPinned:c.left?.includes(e.value)||!1,isHidden:!0,isHighlighted:v===e.value,isDisabled:!!S&&e.value==="name",onTogglePinning:q,onToggleVisibility:I},e.value))})]}),l.jsxRuntimeExports.jsx(p.DragOverlay,{children:C&&l.jsxRuntimeExports.jsx(xe,{column:C,isPinned:c.left?.includes(C.value)||!1,isHidden:r[C.value]===!1,isHighlighted:v===C.value,dragOverlay:!0})})]})})},be=N.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
gap: var(--base-gap-large);
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
font-weight: 500;
|
|
19
19
|
color: var(--md-sys-color-outline);
|
|
20
20
|
padding: 4px 0;
|
|
21
|
-
`;module.exports=
|
|
21
|
+
`;module.exports=pe;
|
|
22
22
|
//# sourceMappingURL=ColumnsSettings.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnsSettings.cjs.js","sources":["../../../../../src/components/ProjectTableSettings/ColumnsSettings.tsx"],"sourcesContent":["// React and Styling imports\nimport { FC, useEffect, useMemo, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport * as Styled from './TableSettings.styled'\n\n// Context and Components imports\nimport {\n ColumnsConfig,\n useColumnSettingsContext,\n} from '@shared/containers/ProjectTreeTable/context/ColumnSettingsContext'\nimport ColumnItem from './ColumnItem'\nimport SortableColumnItem from './SortableColumnItem'\n\n// DND (Drag and Drop) imports\nimport {\n DndContext,\n closestCenter,\n DragEndEvent,\n DragStartEvent,\n useSensor,\n useSensors,\n PointerSensor,\n DragOverlay,\n DragOverEvent,\n} from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy, arrayMove } from '@dnd-kit/sortable'\n\n// Notification imports\nimport { toast } from 'react-toastify'\nimport { SettingsPanelItem } from '../SettingsPanel/SettingsPanelItemTemplate'\nimport { SettingHighlightedId } from '@shared/context'\n\ninterface ColumnsSettingsProps {\n columns: SettingsPanelItem[]\n highlighted?: SettingHighlightedId\n}\n\nconst ColumnsSettings: FC<ColumnsSettingsProps> = ({ columns, highlighted }) => {\n const {\n columnVisibility,\n updateColumnVisibility,\n columnPinning,\n updateColumnPinning,\n columnOrder,\n setColumnsConfig,\n columnSizing,\n groupBy,\n } = useColumnSettingsContext()\n\n // State for the currently dragged column\n const [activeId, setActiveId] = useState<string | null>(null)\n const [isHiddenOverVisible, setIsHiddenOverVisible] = useState(false)\n const [isDraggingOverPinned, setIsDraggingOverPinned] = useState(false)\n const [isDraggingFromPinned, setIsDraggingFromPinned] = useState(false)\n // Add a new state to track if we're hovering over the visible section\n const [isHoveringVisibleSection, setIsHoveringVisibleSection] = useState(false)\n // Add state to track if dragging over the hidden section\n const [isDraggingOverHidden, setIsDraggingOverHidden] = useState(false)\n\n // Setup sensors for dnd-kit\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n )\n\n const menuRef = useRef<HTMLUListElement | null>(null)\n\n // if highlighted is set, scroll to the highlighted column\n useEffect(() => {\n if (menuRef.current && highlighted) {\n const highlightedElement = menuRef.current.querySelector(`#column-settings-${highlighted}`)\n if (highlightedElement) {\n highlightedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }\n }, [highlighted])\n\n // Separate columns into visible, hidden, and pinned\n const { visibleColumns, hiddenColumns, pinnedColumns } = useMemo(() => {\n // First filter columns by visibility\n const visible = columns.filter((col) => columnVisibility[col.value] !== false)\n const hidden = columns.filter((col) => columnVisibility[col.value] === false)\n\n // Then separate out pinned columns from visible\n const pinned = visible.filter((col) => columnPinning.left?.includes(col.value))\n const unpinnedVisible = visible.filter((col) => !columnPinning.left?.includes(col.value))\n\n return {\n visibleColumns: unpinnedVisible,\n hiddenColumns: hidden,\n pinnedColumns: pinned,\n }\n }, [columns, columnVisibility, columnPinning])\n\n // Sort columns based on columnOrder\n const sortedVisibleColumns = useMemo(() => {\n // Create a copy of visible columns\n const visibleCopy = [...visibleColumns]\n\n // If we have a column order, use it to sort\n if (columnOrder.length > 0) {\n visibleCopy.sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n\n // If column is not in order array, place at end\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n\n return indexA - indexB\n })\n }\n\n return visibleCopy\n }, [visibleColumns, columnOrder])\n\n // Sort pinned columns based on columnOrder\n const sortedPinnedColumns = useMemo(() => {\n // Create a copy of pinned columns\n const pinnedCopy = [...pinnedColumns]\n\n // If we have a column order, use it to sort\n if (columnOrder.length > 0) {\n pinnedCopy.sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n\n // If column is not in order array, place at end\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n\n return indexA - indexB\n })\n }\n\n return pinnedCopy\n }, [pinnedColumns, columnOrder])\n\n const sortedVisibleColumnsIds = useMemo(\n () => sortedVisibleColumns.map((col) => col.value),\n [sortedVisibleColumns],\n )\n\n const sortedPinnedColumnsIds = useMemo(\n () => sortedPinnedColumns.map((col) => col.value),\n [sortedPinnedColumns],\n )\n\n // Toggle column visibility\n const toggleVisibility = (columnId: string) => {\n const newState = { ...columnVisibility }\n // If column is currently visible, hide it\n if (newState[columnId] !== false) {\n newState[columnId] = false\n } else {\n // If column is currently hidden, show it\n newState[columnId] = true\n }\n updateColumnVisibility(newState)\n }\n\n // Toggle column pinning\n const togglePinning = (columnId: string) => {\n const newState = { ...columnPinning }\n const newVisibility = { ...columnVisibility }\n\n // If column is currently pinned, unpin it\n if (newState.left?.includes(columnId)) {\n newState.left = newState.left.filter((id) => id !== columnId)\n } else {\n // If column is currently unpinned, pin it\n newState.left = [...(newState.left || []), columnId]\n // If column is hidden, show it\n if (newVisibility[columnId] === false) {\n newVisibility[columnId] = true\n updateColumnVisibility(newVisibility)\n }\n }\n updateColumnPinning(newState)\n }\n\n // When drag starts\n const handleDragStart = (event: DragStartEvent) => {\n const id = event.active.id as string\n setActiveId(id)\n setIsDraggingFromPinned(columnPinning.left?.includes(id) || false)\n }\n\n // Track when dragging over different sections\n const handleDragOver = (event: DragOverEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n // Check if we're dragging a hidden column over a visible column\n const isActiveHidden = columnVisibility[active.id as string] === false\n const isOverVisible = columnVisibility[over.id as string] !== false\n const isOverPinned = columnPinning.left?.includes(over.id as string) || false\n const isOverHidden = columnVisibility[over.id as string] === false\n\n setIsHiddenOverVisible(isActiveHidden && isOverVisible && !isOverPinned)\n setIsDraggingOverPinned(isOverVisible && isOverPinned)\n setIsDraggingOverHidden(isOverHidden)\n\n // Set if we're hovering over the visible (unpinned) section\n setIsHoveringVisibleSection(isOverVisible && !isOverPinned)\n } else {\n // Reset when not over any column\n setIsHoveringVisibleSection(false)\n setIsDraggingOverHidden(false)\n }\n }\n\n // When drag ends, reset all states\n const handleDragEnd = (event: DragEndEvent) => {\n // Reset states\n setIsHiddenOverVisible(false)\n setIsDraggingOverPinned(false)\n setIsDraggingFromPinned(false)\n setIsHoveringVisibleSection(false)\n setIsDraggingOverHidden(false)\n\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n // Find the dragged column and target column\n const activeColumn = [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find(\n (col) => col.value === active.id,\n )\n const overColumn = [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find(\n (col) => col.value === over.id,\n )\n\n if (activeColumn && overColumn) {\n const activeId = active.id as string\n const overId = over.id as string\n const isActiveVisible = columnVisibility[activeId] !== false\n const isOverVisible = columnVisibility[overId] !== false\n const isActivePinned = columnPinning.left?.includes(activeId) || false\n const isOverPinned = columnPinning.left?.includes(overId) || false\n const isOverHidden = columnVisibility[overId] === false\n\n // Create a new config object that we'll update and apply at the end\n const newConfig: ColumnsConfig = {\n columnVisibility: { ...columnVisibility },\n columnOrder: [...columnOrder],\n columnPinning: { ...columnPinning },\n columnSizing: { ...columnSizing },\n }\n\n // If we're moving a column between visible columns (including pinned)\n if (isActiveVisible && isOverVisible) {\n let newPinningLeft = [...(newConfig.columnPinning.left || [])]\n\n // Handle pinning/unpinning based on target section\n if (isActivePinned !== isOverPinned) {\n if (isActivePinned && !isOverPinned) {\n // Moving from pinned to unpinned section\n newPinningLeft = newPinningLeft.filter((id) => id !== activeId)\n } else if (!isActivePinned && isOverPinned) {\n // Moving from unpinned to pinned section\n newPinningLeft = [...newPinningLeft, activeId]\n }\n }\n\n // Update order within the appropriate section\n const allVisibleIds = [...sortedPinnedColumnsIds, ...sortedVisibleColumnsIds]\n const oldIndex = allVisibleIds.indexOf(activeId)\n const newIndex = allVisibleIds.indexOf(overId)\n\n if (oldIndex === -1 || newIndex === -1) {\n console.error('Invalid column order state')\n toast.error('Invalid column order state')\n return\n }\n\n const newOrder = arrayMove(allVisibleIds, oldIndex, newIndex)\n\n // new pinning left should be ordered by the new order\n const newPinningLeftOrdered = newOrder.filter((id) => newPinningLeft.includes(id))\n\n // Update config object\n newConfig.columnOrder = newOrder\n newConfig.columnPinning = {\n ...newConfig.columnPinning,\n left: newPinningLeftOrdered,\n }\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n\n // If we're dragging from hidden to visible\n else if (!isActiveVisible && isOverVisible) {\n // Make the column visible\n newConfig.columnVisibility[activeId] = true\n\n // If dropping into pinned section, also pin the column\n if (isOverPinned) {\n const newPinningLeft = [...(newConfig.columnPinning.left || []), activeId]\n newConfig.columnPinning.left = newPinningLeft\n }\n\n // Update order to place it near the over column\n const allVisibleIds = [...sortedPinnedColumnsIds, ...sortedVisibleColumnsIds]\n\n // Add the column to order if not already there\n if (!allVisibleIds.includes(activeId)) {\n const overIndex = allVisibleIds.indexOf(overId)\n allVisibleIds.splice(overIndex, 0, activeId)\n }\n\n newConfig.columnOrder = allVisibleIds\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n\n // If we're dragging from visible to hidden\n else if (isActiveVisible && isOverHidden) {\n // Make the active column hidden\n newConfig.columnVisibility[activeId] = false\n\n // If the column was pinned, remove it from pinned\n if (isActivePinned) {\n const newPinningLeft = (newConfig.columnPinning.left || []).filter(\n (id) => id !== activeId,\n )\n newConfig.columnPinning.left = newPinningLeft\n }\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n }\n }\n\n setActiveId(null)\n }\n\n // Find the active column for the drag overlay\n const activeColumn = activeId\n ? [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find((col) => col.value === activeId)\n : null\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <ColumnsContainer>\n {/* Pinned Columns Section */}\n {pinnedColumns.length > 0 && (\n <Section className={isDraggingOverPinned && !isDraggingFromPinned ? 'drop-target' : ''}>\n <SectionTitle>Pinned Columns</SectionTitle>\n <SortableContext\n items={sortedPinnedColumns.map((col) => col.value)}\n strategy={verticalListSortingStrategy}\n >\n <Styled.Menu>\n {sortedPinnedColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={true}\n isHidden={false}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n isHighlighted={highlighted === column.value}\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </SortableContext>\n </Section>\n )}\n\n {/* Visible Columns Section */}\n <Section\n className={\n isHiddenOverVisible || (isDraggingFromPinned && isHoveringVisibleSection)\n ? 'drop-target'\n : ''\n }\n >\n <SectionTitle>Visible Columns</SectionTitle>\n <SortableContext\n items={sortedVisibleColumns.map((col) => col.value)}\n strategy={verticalListSortingStrategy}\n >\n <Styled.Menu>\n {sortedVisibleColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={false}\n isHidden={false}\n isHighlighted={highlighted === column.value}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </SortableContext>\n </Section>\n\n {/* Hidden Columns Section */}\n {hiddenColumns.length > 0 && (\n <Section className={isDraggingOverHidden ? 'drop-target' : ''}>\n <SectionTitle>Hidden Columns</SectionTitle>\n <Styled.Menu ref={menuRef}>\n {hiddenColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={columnPinning.left?.includes(column.value) || false}\n isHidden={true}\n isHighlighted={highlighted === column.value}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </Section>\n )}\n\n {/* Drag Overlay */}\n <DragOverlay>\n {activeColumn && (\n <ColumnItem\n column={activeColumn}\n isPinned={columnPinning.left?.includes(activeColumn.value) || false}\n isHidden={columnVisibility[activeColumn.value] === false}\n isHighlighted={highlighted === activeColumn.value}\n dragOverlay={true}\n />\n )}\n </DragOverlay>\n </ColumnsContainer>\n </DndContext>\n )\n}\n\n// Styled components\nconst ColumnsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n`\n\nconst Section = styled.section`\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transition: background-color 0.2s ease;\n border-radius: 4px;\n\n &.drop-target {\n background-color: var(--md-sys-color-surface-container);\n box-shadow: 0 0 0 1px var(--md-sys-color-outline);\n }\n`\n\nconst SectionTitle = styled.div`\n font-weight: 500;\n color: var(--md-sys-color-outline);\n padding: 4px 0;\n`\n\nexport default ColumnsSettings\n"],"names":["ColumnsSettings","columns","highlighted","columnVisibility","updateColumnVisibility","columnPinning","updateColumnPinning","columnOrder","setColumnsConfig","columnSizing","groupBy","useColumnSettingsContext","activeId","setActiveId","useState","isHiddenOverVisible","setIsHiddenOverVisible","isDraggingOverPinned","setIsDraggingOverPinned","isDraggingFromPinned","setIsDraggingFromPinned","isHoveringVisibleSection","setIsHoveringVisibleSection","isDraggingOverHidden","setIsDraggingOverHidden","sensors","useSensors","useSensor","PointerSensor","menuRef","useRef","useEffect","highlightedElement","visibleColumns","hiddenColumns","pinnedColumns","useMemo","visible","col","hidden","pinned","sortedVisibleColumns","visibleCopy","a","b","indexA","indexB","sortedPinnedColumns","pinnedCopy","sortedVisibleColumnsIds","sortedPinnedColumnsIds","toggleVisibility","columnId","newState","togglePinning","newVisibility","id","handleDragStart","event","handleDragOver","active","over","isActiveHidden","isOverVisible","isOverPinned","isOverHidden","handleDragEnd","activeColumn","overColumn","overId","isActiveVisible","isActivePinned","newConfig","newPinningLeft","allVisibleIds","oldIndex","newIndex","toast","newOrder","arrayMove","newPinningLeftOrdered","overIndex","jsx","DndContext","closestCenter","ColumnsContainer","jsxs","Section","SectionTitle","SortableContext","verticalListSortingStrategy","Styled.Menu","column","SortableColumnItem","DragOverlay","ColumnItem","styled"],"mappings":"4ZAqCMA,GAA4C,CAAC,CAAE,QAAAC,EAAS,YAAAC,KAAkB,CAC9E,KAAM,CACJ,iBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,oBAAAC,GACA,YAAAC,EACA,iBAAAC,EACA,aAAAC,GACA,QAAAC,CAAA,EACEC,4BAAA,EAGE,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAwB,IAAI,EACtD,CAACC,GAAqBC,CAAsB,EAAIF,EAAAA,SAAS,EAAK,EAC9D,CAACG,GAAsBC,CAAuB,EAAIJ,EAAAA,SAAS,EAAK,EAChE,CAACK,EAAsBC,CAAuB,EAAIN,EAAAA,SAAS,EAAK,EAEhE,CAACO,GAA0BC,CAA2B,EAAIR,EAAAA,SAAS,EAAK,EAExE,CAACS,GAAsBC,CAAuB,EAAIV,EAAAA,SAAS,EAAK,EAGhEW,GAAUC,EAAAA,WACdC,EAAAA,UAAUC,EAAAA,cAAe,CACvB,qBAAsB,CACpB,SAAU,CAAA,CACZ,CACD,CAAA,EAGGC,EAAUC,EAAAA,OAAgC,IAAI,EAGpDC,EAAAA,UAAU,IAAM,CACd,GAAIF,EAAQ,SAAW3B,EAAa,CAClC,MAAM8B,EAAqBH,EAAQ,QAAQ,cAAc,oBAAoB3B,CAAW,EAAE,EACtF8B,GACFA,EAAmB,eAAe,CAChC,SAAU,SACV,MAAO,QAAA,CACR,CAEL,CACF,EAAG,CAAC9B,CAAW,CAAC,EAGhB,KAAM,CAAE,eAAA+B,EAAgB,cAAAC,EAAe,cAAAC,CAAA,EAAkBC,EAAAA,QAAQ,IAAM,CAErE,MAAMC,EAAUpC,EAAQ,OAAQqC,GAAQnC,EAAiBmC,EAAI,KAAK,IAAM,EAAK,EACvEC,EAAStC,EAAQ,OAAQqC,GAAQnC,EAAiBmC,EAAI,KAAK,IAAM,EAAK,EAGtEE,EAASH,EAAQ,OAAQC,GAAQjC,EAAc,MAAM,SAASiC,EAAI,KAAK,CAAC,EAG9E,MAAO,CACL,eAHsBD,EAAQ,OAAQC,GAAQ,CAACjC,EAAc,MAAM,SAASiC,EAAI,KAAK,CAAC,EAItF,cAAeC,EACf,cAAeC,CAAA,CAEnB,EAAG,CAACvC,EAASE,EAAkBE,CAAa,CAAC,EAGvCoC,EAAuBL,EAAAA,QAAQ,IAAM,CAEzC,MAAMM,EAAc,CAAC,GAAGT,CAAc,EAGtC,OAAI1B,EAAY,OAAS,GACvBmC,EAAY,KAAK,CAACC,EAAGC,IAAM,CACzB,MAAMC,EAAStC,EAAY,QAAQoC,EAAE,KAAK,EACpCG,EAASvC,EAAY,QAAQqC,EAAE,KAAK,EAG1C,OAAIC,IAAW,GAAW,EACtBC,IAAW,GAAW,GAEnBD,EAASC,CAClB,CAAC,EAGIJ,CACT,EAAG,CAACT,EAAgB1B,CAAW,CAAC,EAG1BwC,EAAsBX,EAAAA,QAAQ,IAAM,CAExC,MAAMY,EAAa,CAAC,GAAGb,CAAa,EAGpC,OAAI5B,EAAY,OAAS,GACvByC,EAAW,KAAK,CAACL,EAAGC,IAAM,CACxB,MAAMC,EAAStC,EAAY,QAAQoC,EAAE,KAAK,EACpCG,EAASvC,EAAY,QAAQqC,EAAE,KAAK,EAG1C,OAAIC,IAAW,GAAW,EACtBC,IAAW,GAAW,GAEnBD,EAASC,CAClB,CAAC,EAGIE,CACT,EAAG,CAACb,EAAe5B,CAAW,CAAC,EAEzB0C,EAA0Bb,EAAAA,QAC9B,IAAMK,EAAqB,IAAKH,GAAQA,EAAI,KAAK,EACjD,CAACG,CAAoB,CAAA,EAGjBS,EAAyBd,EAAAA,QAC7B,IAAMW,EAAoB,IAAKT,GAAQA,EAAI,KAAK,EAChD,CAACS,CAAmB,CAAA,EAIhBI,EAAoBC,GAAqB,CAC7C,MAAMC,EAAW,CAAE,GAAGlD,CAAA,EAElBkD,EAASD,CAAQ,IAAM,GACzBC,EAASD,CAAQ,EAAI,GAGrBC,EAASD,CAAQ,EAAI,GAEvBhD,EAAuBiD,CAAQ,CACjC,EAGMC,EAAiBF,GAAqB,CAC1C,MAAMC,EAAW,CAAE,GAAGhD,CAAA,EAChBkD,EAAgB,CAAE,GAAGpD,CAAA,EAGvBkD,EAAS,MAAM,SAASD,CAAQ,EAClCC,EAAS,KAAOA,EAAS,KAAK,OAAQG,GAAOA,IAAOJ,CAAQ,GAG5DC,EAAS,KAAO,CAAC,GAAIA,EAAS,MAAQ,CAAA,EAAKD,CAAQ,EAE/CG,EAAcH,CAAQ,IAAM,KAC9BG,EAAcH,CAAQ,EAAI,GAC1BhD,EAAuBmD,CAAa,IAGxCjD,GAAoB+C,CAAQ,CAC9B,EAGMI,GAAmBC,GAA0B,CACjD,MAAMF,EAAKE,EAAM,OAAO,GACxB7C,EAAY2C,CAAE,EACdpC,EAAwBf,EAAc,MAAM,SAASmD,CAAE,GAAK,EAAK,CACnE,EAGMG,GAAkBD,GAAyB,CAC/C,KAAM,CAAE,OAAAE,EAAQ,KAAAC,CAAA,EAASH,EAEzB,GAAIG,GAAQD,EAAO,KAAOC,EAAK,GAAI,CAEjC,MAAMC,EAAiB3D,EAAiByD,EAAO,EAAY,IAAM,GAC3DG,EAAgB5D,EAAiB0D,EAAK,EAAY,IAAM,GACxDG,EAAe3D,EAAc,MAAM,SAASwD,EAAK,EAAY,GAAK,GAClEI,EAAe9D,EAAiB0D,EAAK,EAAY,IAAM,GAE7D7C,EAAuB8C,GAAkBC,GAAiB,CAACC,CAAY,EACvE9C,EAAwB6C,GAAiBC,CAAY,EACrDxC,EAAwByC,CAAY,EAGpC3C,EAA4ByC,GAAiB,CAACC,CAAY,CAC5D,MAEE1C,EAA4B,EAAK,EACjCE,EAAwB,EAAK,CAEjC,EAGM0C,GAAiBR,GAAwB,CAE7C1C,EAAuB,EAAK,EAC5BE,EAAwB,EAAK,EAC7BE,EAAwB,EAAK,EAC7BE,EAA4B,EAAK,EACjCE,EAAwB,EAAK,EAE7B,KAAM,CAAE,OAAAoC,EAAQ,KAAAC,CAAA,EAASH,EAEzB,GAAIG,GAAQD,EAAO,KAAOC,EAAK,GAAI,CAEjC,MAAMM,EAAe,CAAC,GAAGlC,EAAgB,GAAGC,EAAe,GAAGC,CAAa,EAAE,KAC1EG,GAAQA,EAAI,QAAUsB,EAAO,EAAA,EAE1BQ,EAAa,CAAC,GAAGnC,EAAgB,GAAGC,EAAe,GAAGC,CAAa,EAAE,KACxEG,GAAQA,EAAI,QAAUuB,EAAK,EAAA,EAG9B,GAAIM,GAAgBC,EAAY,CAC9B,MAAMxD,EAAWgD,EAAO,GAClBS,EAASR,EAAK,GACdS,EAAkBnE,EAAiBS,CAAQ,IAAM,GACjDmD,EAAgB5D,EAAiBkE,CAAM,IAAM,GAC7CE,EAAiBlE,EAAc,MAAM,SAASO,CAAQ,GAAK,GAC3DoD,EAAe3D,EAAc,MAAM,SAASgE,CAAM,GAAK,GACvDJ,GAAe9D,EAAiBkE,CAAM,IAAM,GAG5CG,EAA2B,CAC/B,iBAAkB,CAAE,GAAGrE,CAAA,EACvB,YAAa,CAAC,GAAGI,CAAW,EAC5B,cAAe,CAAE,GAAGF,CAAA,EACpB,aAAc,CAAE,GAAGI,EAAA,CAAa,EAIlC,GAAI6D,GAAmBP,EAAe,CACpC,IAAIU,EAAiB,CAAC,GAAID,EAAU,cAAc,MAAQ,CAAA,CAAG,EAGzDD,IAAmBP,IACjBO,GAAkB,CAACP,EAErBS,EAAiBA,EAAe,OAAQjB,GAAOA,IAAO5C,CAAQ,EACrD,CAAC2D,GAAkBP,IAE5BS,EAAiB,CAAC,GAAGA,EAAgB7D,CAAQ,IAKjD,MAAM8D,EAAgB,CAAC,GAAGxB,EAAwB,GAAGD,CAAuB,EACtE0B,EAAWD,EAAc,QAAQ9D,CAAQ,EACzCgE,EAAWF,EAAc,QAAQL,CAAM,EAE7C,GAAIM,IAAa,IAAMC,IAAa,GAAI,CACtC,QAAQ,MAAM,4BAA4B,EAC1CC,GAAAA,MAAM,MAAM,4BAA4B,EACxC,MACF,CAEA,MAAMC,EAAWC,EAAAA,UAAUL,EAAeC,EAAUC,CAAQ,EAGtDI,GAAwBF,EAAS,OAAQtB,GAAOiB,EAAe,SAASjB,CAAE,CAAC,EAGjFgB,EAAU,YAAcM,EACxBN,EAAU,cAAgB,CACxB,GAAGA,EAAU,cACb,KAAMQ,EAAA,EAIRxE,EAAiBgE,CAAS,CAC5B,SAGS,CAACF,GAAmBP,EAAe,CAK1C,GAHAS,EAAU,iBAAiB5D,CAAQ,EAAI,GAGnCoD,EAAc,CAChB,MAAMS,EAAiB,CAAC,GAAID,EAAU,cAAc,MAAQ,CAAA,EAAK5D,CAAQ,EACzE4D,EAAU,cAAc,KAAOC,CACjC,CAGA,MAAMC,EAAgB,CAAC,GAAGxB,EAAwB,GAAGD,CAAuB,EAG5E,GAAI,CAACyB,EAAc,SAAS9D,CAAQ,EAAG,CACrC,MAAMqE,EAAYP,EAAc,QAAQL,CAAM,EAC9CK,EAAc,OAAOO,EAAW,EAAGrE,CAAQ,CAC7C,CAEA4D,EAAU,YAAcE,EAGxBlE,EAAiBgE,CAAS,CAC5B,SAGSF,GAAmBL,GAAc,CAKxC,GAHAO,EAAU,iBAAiB5D,CAAQ,EAAI,GAGnC2D,EAAgB,CAClB,MAAME,GAAkBD,EAAU,cAAc,MAAQ,CAAA,GAAI,OACzDhB,GAAOA,IAAO5C,CAAA,EAEjB4D,EAAU,cAAc,KAAOC,CACjC,CAGAjE,EAAiBgE,CAAS,CAC5B,CACF,CACF,CAEA3D,EAAY,IAAI,CAClB,EAGMsD,EAAevD,EACjB,CAAC,GAAGqB,EAAgB,GAAGC,EAAe,GAAGC,CAAa,EAAE,KAAMG,GAAQA,EAAI,QAAU1B,CAAQ,EAC5F,KAEJ,OACEsE,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CACC,QAAA1D,GACA,mBAAoB2D,EAAAA,cACpB,YAAa3B,GACb,WAAYE,GACZ,UAAWO,GAEX,kCAACmB,GAAA,CAEE,SAAA,CAAAlD,EAAc,OAAS,GACtBmD,EAAAA,kBAAAA,KAACC,EAAA,CAAQ,UAAWtE,IAAwB,CAACE,EAAuB,cAAgB,GAClF,SAAA,CAAA+D,EAAAA,kBAAAA,IAACM,GAAa,SAAA,gBAAA,CAAc,EAC5BN,EAAAA,kBAAAA,IAACO,EAAAA,gBAAA,CACC,MAAO1C,EAAoB,IAAKT,GAAQA,EAAI,KAAK,EACjD,SAAUoD,EAAAA,4BAEV,iCAACC,EAAAA,KAAA,CACE,SAAA5C,EAAoB,IAAK6C,GACxBV,EAAAA,kBAAAA,IAACW,EAAA,CAEC,GAAID,EAAO,MACX,OAAAA,EACA,SAAU,GACV,SAAU,GACV,WAAY,CAAC,CAAClF,GAAWkF,EAAO,QAAU,OAC1C,cAAe1F,IAAgB0F,EAAO,MACtC,gBAAiBtC,EACjB,mBAAoBH,CAAA,EARfyC,EAAO,KAAA,CAUf,CAAA,CACH,CAAA,CAAA,CACF,EACF,EAIFN,EAAAA,kBAAAA,KAACC,EAAA,CACC,UACExE,IAAwBI,GAAwBE,GAC5C,cACA,GAGN,SAAA,CAAA6D,EAAAA,kBAAAA,IAACM,GAAa,SAAA,iBAAA,CAAe,EAC7BN,EAAAA,kBAAAA,IAACO,EAAAA,gBAAA,CACC,MAAOhD,EAAqB,IAAKH,GAAQA,EAAI,KAAK,EAClD,SAAUoD,EAAAA,4BAEV,iCAACC,EAAAA,KAAA,CACE,SAAAlD,EAAqB,IAAKmD,GACzBV,EAAAA,kBAAAA,IAACW,EAAA,CAEC,GAAID,EAAO,MACX,OAAAA,EACA,SAAU,GACV,SAAU,GACV,cAAe1F,IAAgB0F,EAAO,MACtC,WAAY,CAAC,CAAClF,GAAWkF,EAAO,QAAU,OAC1C,gBAAiBtC,EACjB,mBAAoBH,CAAA,EARfyC,EAAO,KAAA,CAUf,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,EAID1D,EAAc,OAAS,GACtBoD,EAAAA,kBAAAA,KAACC,GAAQ,UAAWhE,GAAuB,cAAgB,GACzD,SAAA,CAAA2D,EAAAA,kBAAAA,IAACM,GAAa,SAAA,gBAAA,CAAc,EAC5BN,wBAACS,EAAAA,KAAA,CAAY,IAAK9D,EACf,SAAAK,EAAc,IAAK0D,GAClBV,EAAAA,kBAAAA,IAACW,EAAA,CAEC,GAAID,EAAO,MACX,OAAAA,EACA,SAAUvF,EAAc,MAAM,SAASuF,EAAO,KAAK,GAAK,GACxD,SAAU,GACV,cAAe1F,IAAgB0F,EAAO,MACtC,WAAY,CAAC,CAAClF,GAAWkF,EAAO,QAAU,OAC1C,gBAAiBtC,EACjB,mBAAoBH,CAAA,EARfyC,EAAO,KAAA,CAUf,CAAA,CACH,CAAA,EACF,EAIFV,EAAAA,kBAAAA,IAACY,EAAAA,aACE,SAAA3B,GACCe,EAAAA,kBAAAA,IAACa,GAAA,CACC,OAAQ5B,EACR,SAAU9D,EAAc,MAAM,SAAS8D,EAAa,KAAK,GAAK,GAC9D,SAAUhE,EAAiBgE,EAAa,KAAK,IAAM,GACnD,cAAejE,IAAgBiE,EAAa,MAC5C,YAAa,EAAA,CAAA,CACf,CAEJ,CAAA,CAAA,CACF,CAAA,CAAA,CAGN,EAGMkB,GAAmBW,EAAO;AAAA;AAAA;AAAA;AAAA,EAM1BT,EAAUS,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcjBR,EAAeQ,EAAO;AAAA;AAAA;AAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"ColumnsSettings.cjs.js","sources":["../../../../../src/components/ProjectTableSettings/ColumnsSettings.tsx"],"sourcesContent":["// React and Styling imports\nimport { FC, useEffect, useMemo, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport * as Styled from './TableSettings.styled'\n\n// Context and Components imports\nimport {\n ColumnsConfig,\n useColumnSettingsContext,\n} from '@shared/containers/ProjectTreeTable/context/ColumnSettingsContext'\nimport ColumnItem from './ColumnItem'\nimport SortableColumnItem from './SortableColumnItem'\n\n// DND (Drag and Drop) imports\nimport {\n DndContext,\n closestCenter,\n DragEndEvent,\n DragStartEvent,\n useSensor,\n useSensors,\n PointerSensor,\n DragOverlay,\n DragOverEvent,\n} from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy, arrayMove } from '@dnd-kit/sortable'\n\n// Notification imports\nimport { toast } from 'react-toastify'\nimport { SettingsPanelItem } from '../SettingsPanel/SettingsPanelItemTemplate'\nimport { SettingHighlightedId } from '@shared/context'\n\ninterface ColumnsSettingsProps {\n columns: SettingsPanelItem[]\n highlighted?: SettingHighlightedId\n}\n\nconst ColumnsSettings: FC<ColumnsSettingsProps> = ({ columns, highlighted }) => {\n const {\n columnVisibility,\n updateColumnVisibility,\n columnPinning,\n updateColumnPinning,\n columnOrder,\n setColumnsConfig,\n columnSizing,\n groupBy,\n sorting,\n rowHeight,\n } = useColumnSettingsContext()\n\n // State for the currently dragged column\n const [activeId, setActiveId] = useState<string | null>(null)\n const [isHiddenOverVisible, setIsHiddenOverVisible] = useState(false)\n const [isDraggingOverPinned, setIsDraggingOverPinned] = useState(false)\n const [isDraggingFromPinned, setIsDraggingFromPinned] = useState(false)\n // Add a new state to track if we're hovering over the visible section\n const [isHoveringVisibleSection, setIsHoveringVisibleSection] = useState(false)\n // Add state to track if dragging over the hidden section\n const [isDraggingOverHidden, setIsDraggingOverHidden] = useState(false)\n\n // Setup sensors for dnd-kit\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n )\n\n const menuRef = useRef<HTMLUListElement | null>(null)\n\n // if highlighted is set, scroll to the highlighted column\n useEffect(() => {\n if (menuRef.current && highlighted) {\n const highlightedElement = menuRef.current.querySelector(`#column-settings-${highlighted}`)\n if (highlightedElement) {\n highlightedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }\n }, [highlighted])\n\n // Separate columns into visible, hidden, and pinned\n const { visibleColumns, hiddenColumns, pinnedColumns } = useMemo(() => {\n // First filter columns by visibility\n const visible = columns.filter((col) => columnVisibility[col.value] !== false)\n const hidden = columns.filter((col) => columnVisibility[col.value] === false)\n\n // Then separate out pinned columns from visible\n const pinned = visible.filter((col) => columnPinning.left?.includes(col.value))\n const unpinnedVisible = visible.filter((col) => !columnPinning.left?.includes(col.value))\n\n return {\n visibleColumns: unpinnedVisible,\n hiddenColumns: hidden,\n pinnedColumns: pinned,\n }\n }, [columns, columnVisibility, columnPinning])\n\n // Sort columns based on columnOrder\n const sortedVisibleColumns = useMemo(() => {\n // Create a copy of visible columns\n const visibleCopy = [...visibleColumns]\n\n // If we have a column order, use it to sort\n if (columnOrder.length > 0) {\n visibleCopy.sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n\n // If column is not in order array, place at end\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n\n return indexA - indexB\n })\n }\n\n return visibleCopy\n }, [visibleColumns, columnOrder])\n\n // Sort pinned columns based on columnOrder\n const sortedPinnedColumns = useMemo(() => {\n // Create a copy of pinned columns\n const pinnedCopy = [...pinnedColumns]\n\n // If we have a column order, use it to sort\n if (columnOrder.length > 0) {\n pinnedCopy.sort((a, b) => {\n const indexA = columnOrder.indexOf(a.value)\n const indexB = columnOrder.indexOf(b.value)\n\n // If column is not in order array, place at end\n if (indexA === -1) return 1\n if (indexB === -1) return -1\n\n return indexA - indexB\n })\n }\n\n return pinnedCopy\n }, [pinnedColumns, columnOrder])\n\n const sortedVisibleColumnsIds = useMemo(\n () => sortedVisibleColumns.map((col) => col.value),\n [sortedVisibleColumns],\n )\n\n const sortedPinnedColumnsIds = useMemo(\n () => sortedPinnedColumns.map((col) => col.value),\n [sortedPinnedColumns],\n )\n\n // Toggle column visibility\n const toggleVisibility = (columnId: string) => {\n const newState = { ...columnVisibility }\n // If column is currently visible, hide it\n if (newState[columnId] !== false) {\n newState[columnId] = false\n } else {\n // If column is currently hidden, show it\n newState[columnId] = true\n }\n updateColumnVisibility(newState)\n }\n\n // Toggle column pinning\n const togglePinning = (columnId: string) => {\n const newState = { ...columnPinning }\n const newVisibility = { ...columnVisibility }\n\n // If column is currently pinned, unpin it\n if (newState.left?.includes(columnId)) {\n newState.left = newState.left.filter((id) => id !== columnId)\n } else {\n // If column is currently unpinned, pin it\n newState.left = [...(newState.left || []), columnId]\n // If column is hidden, show it\n if (newVisibility[columnId] === false) {\n newVisibility[columnId] = true\n updateColumnVisibility(newVisibility)\n }\n }\n updateColumnPinning(newState)\n }\n\n // When drag starts\n const handleDragStart = (event: DragStartEvent) => {\n const id = event.active.id as string\n setActiveId(id)\n setIsDraggingFromPinned(columnPinning.left?.includes(id) || false)\n }\n\n // Track when dragging over different sections\n const handleDragOver = (event: DragOverEvent) => {\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n // Check if we're dragging a hidden column over a visible column\n const isActiveHidden = columnVisibility[active.id as string] === false\n const isOverVisible = columnVisibility[over.id as string] !== false\n const isOverPinned = columnPinning.left?.includes(over.id as string) || false\n const isOverHidden = columnVisibility[over.id as string] === false\n\n setIsHiddenOverVisible(isActiveHidden && isOverVisible && !isOverPinned)\n setIsDraggingOverPinned(isOverVisible && isOverPinned)\n setIsDraggingOverHidden(isOverHidden)\n\n // Set if we're hovering over the visible (unpinned) section\n setIsHoveringVisibleSection(isOverVisible && !isOverPinned)\n } else {\n // Reset when not over any column\n setIsHoveringVisibleSection(false)\n setIsDraggingOverHidden(false)\n }\n }\n\n // When drag ends, reset all states\n const handleDragEnd = (event: DragEndEvent) => {\n // Reset states\n setIsHiddenOverVisible(false)\n setIsDraggingOverPinned(false)\n setIsDraggingFromPinned(false)\n setIsHoveringVisibleSection(false)\n setIsDraggingOverHidden(false)\n\n const { active, over } = event\n\n if (over && active.id !== over.id) {\n // Find the dragged column and target column\n const activeColumn = [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find(\n (col) => col.value === active.id,\n )\n const overColumn = [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find(\n (col) => col.value === over.id,\n )\n\n if (activeColumn && overColumn) {\n const activeId = active.id as string\n const overId = over.id as string\n const isActiveVisible = columnVisibility[activeId] !== false\n const isOverVisible = columnVisibility[overId] !== false\n const isActivePinned = columnPinning.left?.includes(activeId) || false\n const isOverPinned = columnPinning.left?.includes(overId) || false\n const isOverHidden = columnVisibility[overId] === false\n\n // Create a new config object that we'll update and apply at the end\n const newConfig: ColumnsConfig = {\n columnVisibility: { ...columnVisibility },\n columnOrder: [...columnOrder],\n columnPinning: { ...columnPinning },\n columnSizing: { ...columnSizing },\n groupBy,\n sorting,\n rowHeight,\n }\n\n // If we're moving a column between visible columns (including pinned)\n if (isActiveVisible && isOverVisible) {\n let newPinningLeft = [...(newConfig.columnPinning.left || [])]\n\n // Handle pinning/unpinning based on target section\n if (isActivePinned !== isOverPinned) {\n if (isActivePinned && !isOverPinned) {\n // Moving from pinned to unpinned section\n newPinningLeft = newPinningLeft.filter((id) => id !== activeId)\n } else if (!isActivePinned && isOverPinned) {\n // Moving from unpinned to pinned section\n newPinningLeft = [...newPinningLeft, activeId]\n }\n }\n\n // Update order within the appropriate section\n const allVisibleIds = [...sortedPinnedColumnsIds, ...sortedVisibleColumnsIds]\n const oldIndex = allVisibleIds.indexOf(activeId)\n const newIndex = allVisibleIds.indexOf(overId)\n\n if (oldIndex === -1 || newIndex === -1) {\n console.error('Invalid column order state')\n toast.error('Invalid column order state')\n return\n }\n\n const newOrder = arrayMove(allVisibleIds, oldIndex, newIndex)\n\n // new pinning left should be ordered by the new order\n const newPinningLeftOrdered = newOrder.filter((id) => newPinningLeft.includes(id))\n\n // Update config object\n newConfig.columnOrder = newOrder\n newConfig.columnPinning = {\n ...newConfig.columnPinning,\n left: newPinningLeftOrdered,\n }\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n\n // If we're dragging from hidden to visible\n else if (!isActiveVisible && isOverVisible) {\n // Make the column visible\n newConfig.columnVisibility[activeId] = true\n\n // If dropping into pinned section, also pin the column\n if (isOverPinned) {\n const newPinningLeft = [...(newConfig.columnPinning.left || []), activeId]\n newConfig.columnPinning.left = newPinningLeft\n }\n\n // Update order to place it near the over column\n const allVisibleIds = [...sortedPinnedColumnsIds, ...sortedVisibleColumnsIds]\n\n // Add the column to order if not already there\n if (!allVisibleIds.includes(activeId)) {\n const overIndex = allVisibleIds.indexOf(overId)\n allVisibleIds.splice(overIndex, 0, activeId)\n }\n\n newConfig.columnOrder = allVisibleIds\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n\n // If we're dragging from visible to hidden\n else if (isActiveVisible && isOverHidden) {\n // Make the active column hidden\n newConfig.columnVisibility[activeId] = false\n\n // If the column was pinned, remove it from pinned\n if (isActivePinned) {\n const newPinningLeft = (newConfig.columnPinning.left || []).filter(\n (id) => id !== activeId,\n )\n newConfig.columnPinning.left = newPinningLeft\n }\n\n // Apply all changes at once\n setColumnsConfig(newConfig)\n }\n }\n }\n\n setActiveId(null)\n }\n\n // Find the active column for the drag overlay\n const activeColumn = activeId\n ? [...visibleColumns, ...hiddenColumns, ...pinnedColumns].find((col) => col.value === activeId)\n : null\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <ColumnsContainer>\n {/* Pinned Columns Section */}\n {pinnedColumns.length > 0 && (\n <Section className={isDraggingOverPinned && !isDraggingFromPinned ? 'drop-target' : ''}>\n <SectionTitle>Pinned Columns</SectionTitle>\n <SortableContext\n items={sortedPinnedColumns.map((col) => col.value)}\n strategy={verticalListSortingStrategy}\n >\n <Styled.Menu>\n {sortedPinnedColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={true}\n isHidden={false}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n isHighlighted={highlighted === column.value}\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </SortableContext>\n </Section>\n )}\n\n {/* Visible Columns Section */}\n <Section\n className={\n isHiddenOverVisible || (isDraggingFromPinned && isHoveringVisibleSection)\n ? 'drop-target'\n : ''\n }\n >\n <SectionTitle>Visible Columns</SectionTitle>\n <SortableContext\n items={sortedVisibleColumns.map((col) => col.value)}\n strategy={verticalListSortingStrategy}\n >\n <Styled.Menu>\n {sortedVisibleColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={false}\n isHidden={false}\n isHighlighted={highlighted === column.value}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </SortableContext>\n </Section>\n\n {/* Hidden Columns Section */}\n {hiddenColumns.length > 0 && (\n <Section className={isDraggingOverHidden ? 'drop-target' : ''}>\n <SectionTitle>Hidden Columns</SectionTitle>\n <Styled.Menu ref={menuRef}>\n {hiddenColumns.map((column) => (\n <SortableColumnItem\n key={column.value}\n id={column.value}\n column={column}\n isPinned={columnPinning.left?.includes(column.value) || false}\n isHidden={true}\n isHighlighted={highlighted === column.value}\n isDisabled={!!groupBy && column.value === 'name'} // Disable 'name' column if grouping is enabled\n onTogglePinning={togglePinning}\n onToggleVisibility={toggleVisibility}\n />\n ))}\n </Styled.Menu>\n </Section>\n )}\n\n {/* Drag Overlay */}\n <DragOverlay>\n {activeColumn && (\n <ColumnItem\n column={activeColumn}\n isPinned={columnPinning.left?.includes(activeColumn.value) || false}\n isHidden={columnVisibility[activeColumn.value] === false}\n isHighlighted={highlighted === activeColumn.value}\n dragOverlay={true}\n />\n )}\n </DragOverlay>\n </ColumnsContainer>\n </DndContext>\n )\n}\n\n// Styled components\nconst ColumnsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: var(--base-gap-large);\n`\n\nconst Section = styled.section`\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transition: background-color 0.2s ease;\n border-radius: 4px;\n\n &.drop-target {\n background-color: var(--md-sys-color-surface-container);\n box-shadow: 0 0 0 1px var(--md-sys-color-outline);\n }\n`\n\nconst SectionTitle = styled.div`\n font-weight: 500;\n color: var(--md-sys-color-outline);\n padding: 4px 0;\n`\n\nexport default ColumnsSettings\n"],"names":["ColumnsSettings","columns","highlighted","columnVisibility","updateColumnVisibility","columnPinning","updateColumnPinning","columnOrder","setColumnsConfig","columnSizing","groupBy","sorting","rowHeight","useColumnSettingsContext","activeId","setActiveId","useState","isHiddenOverVisible","setIsHiddenOverVisible","isDraggingOverPinned","setIsDraggingOverPinned","isDraggingFromPinned","setIsDraggingFromPinned","isHoveringVisibleSection","setIsHoveringVisibleSection","isDraggingOverHidden","setIsDraggingOverHidden","sensors","useSensors","useSensor","PointerSensor","menuRef","useRef","useEffect","highlightedElement","visibleColumns","hiddenColumns","pinnedColumns","useMemo","visible","col","hidden","pinned","sortedVisibleColumns","visibleCopy","a","b","indexA","indexB","sortedPinnedColumns","pinnedCopy","sortedVisibleColumnsIds","sortedPinnedColumnsIds","toggleVisibility","columnId","newState","togglePinning","newVisibility","id","handleDragStart","event","handleDragOver","active","over","isActiveHidden","isOverVisible","isOverPinned","isOverHidden","handleDragEnd","activeColumn","overColumn","overId","isActiveVisible","isActivePinned","newConfig","newPinningLeft","allVisibleIds","oldIndex","newIndex","toast","newOrder","arrayMove","newPinningLeftOrdered","overIndex","jsx","DndContext","closestCenter","ColumnsContainer","jsxs","Section","SectionTitle","SortableContext","verticalListSortingStrategy","Styled.Menu","column","SortableColumnItem","DragOverlay","ColumnItem","styled"],"mappings":"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"}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { j as l } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
-
import { useState as x, useRef as
|
|
2
|
+
import { useState as x, useRef as me, useEffect as xe, useMemo as P } from "react";
|
|
3
3
|
import R from "styled-components";
|
|
4
4
|
import { Menu as k } from "./TableSettings.styled.es.js";
|
|
5
|
-
import { useColumnSettingsContext as
|
|
6
|
-
import
|
|
5
|
+
import { useColumnSettingsContext as pe } from "../../containers/ProjectTreeTable/context/ColumnSettingsContext.es.js";
|
|
6
|
+
import be from "./ColumnItem.es.js";
|
|
7
7
|
import B from "./SortableColumnItem.es.js";
|
|
8
|
-
import { useSensors as
|
|
9
|
-
import { SortableContext as _, verticalListSortingStrategy as ee, arrayMove as
|
|
10
|
-
import { toast as
|
|
11
|
-
const
|
|
8
|
+
import { useSensors as Ce, useSensor as Pe, PointerSensor as Oe, DndContext as ye, closestCenter as Ve, DragOverlay as he } from "@dnd-kit/core";
|
|
9
|
+
import { SortableContext as _, verticalListSortingStrategy as ee, arrayMove as Se } from "@dnd-kit/sortable";
|
|
10
|
+
import { toast as je } from "react-toastify";
|
|
11
|
+
const Ne = ({ columns: j, highlighted: g }) => {
|
|
12
12
|
const {
|
|
13
13
|
columnVisibility: r,
|
|
14
14
|
updateColumnVisibility: z,
|
|
15
15
|
columnPinning: c,
|
|
16
16
|
updateColumnPinning: ne,
|
|
17
17
|
columnOrder: f,
|
|
18
|
-
setColumnsConfig:
|
|
18
|
+
setColumnsConfig: H,
|
|
19
19
|
columnSizing: ie,
|
|
20
|
-
groupBy:
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
groupBy: O,
|
|
21
|
+
sorting: se,
|
|
22
|
+
rowHeight: te
|
|
23
|
+
} = pe(), [F, q] = x(null), [le, $] = x(!1), [oe, G] = x(!1), [J, K] = x(!1), [re, D] = x(!1), [ae, w] = x(!1), de = Ce(
|
|
24
|
+
Pe(Oe, {
|
|
23
25
|
activationConstraint: {
|
|
24
26
|
distance: 5
|
|
25
27
|
}
|
|
26
28
|
})
|
|
27
|
-
),
|
|
28
|
-
|
|
29
|
-
if (
|
|
30
|
-
const e =
|
|
29
|
+
), I = me(null);
|
|
30
|
+
xe(() => {
|
|
31
|
+
if (I.current && g) {
|
|
32
|
+
const e = I.current.querySelector(`#column-settings-${g}`);
|
|
31
33
|
e && e.scrollIntoView({
|
|
32
34
|
behavior: "smooth",
|
|
33
35
|
block: "center"
|
|
@@ -35,48 +37,48 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
35
37
|
}
|
|
36
38
|
}, [g]);
|
|
37
39
|
const { visibleColumns: p, hiddenColumns: b, pinnedColumns: m } = P(() => {
|
|
38
|
-
const e =
|
|
40
|
+
const e = j.filter((s) => r[s.value] !== !1), n = j.filter((s) => r[s.value] === !1), i = e.filter((s) => c.left?.includes(s.value));
|
|
39
41
|
return {
|
|
40
42
|
visibleColumns: e.filter((s) => !c.left?.includes(s.value)),
|
|
41
43
|
hiddenColumns: n,
|
|
42
44
|
pinnedColumns: i
|
|
43
45
|
};
|
|
44
|
-
}, [
|
|
46
|
+
}, [j, r, c]), y = P(() => {
|
|
45
47
|
const e = [...p];
|
|
46
48
|
return f.length > 0 && e.sort((n, i) => {
|
|
47
49
|
const a = f.indexOf(n.value), s = f.indexOf(i.value);
|
|
48
50
|
return a === -1 ? 1 : s === -1 ? -1 : a - s;
|
|
49
51
|
}), e;
|
|
50
|
-
}, [p, f]),
|
|
52
|
+
}, [p, f]), V = P(() => {
|
|
51
53
|
const e = [...m];
|
|
52
54
|
return f.length > 0 && e.sort((n, i) => {
|
|
53
55
|
const a = f.indexOf(n.value), s = f.indexOf(i.value);
|
|
54
56
|
return a === -1 ? 1 : s === -1 ? -1 : a - s;
|
|
55
57
|
}), e;
|
|
56
58
|
}, [m, f]), Q = P(
|
|
57
|
-
() => O.map((e) => e.value),
|
|
58
|
-
[O]
|
|
59
|
-
), U = P(
|
|
60
59
|
() => y.map((e) => e.value),
|
|
61
60
|
[y]
|
|
61
|
+
), U = P(
|
|
62
|
+
() => V.map((e) => e.value),
|
|
63
|
+
[V]
|
|
62
64
|
), T = (e) => {
|
|
63
65
|
const n = { ...r };
|
|
64
66
|
n[e] !== !1 ? n[e] = !1 : n[e] = !0, z(n);
|
|
65
67
|
}, A = (e) => {
|
|
66
68
|
const n = { ...c }, i = { ...r };
|
|
67
69
|
n.left?.includes(e) ? n.left = n.left.filter((a) => a !== e) : (n.left = [...n.left || [], e], i[e] === !1 && (i[e] = !0, z(i))), ne(n);
|
|
68
|
-
},
|
|
70
|
+
}, ce = (e) => {
|
|
69
71
|
const n = e.active.id;
|
|
70
72
|
q(n), K(c.left?.includes(n) || !1);
|
|
71
|
-
},
|
|
73
|
+
}, fe = (e) => {
|
|
72
74
|
const { active: n, over: i } = e;
|
|
73
75
|
if (i && n.id !== i.id) {
|
|
74
76
|
const a = r[n.id] === !1, s = r[i.id] !== !1, t = c.left?.includes(i.id) || !1, v = r[i.id] === !1;
|
|
75
|
-
$(a && s && !t), G(s && t),
|
|
77
|
+
$(a && s && !t), G(s && t), w(v), D(s && !t);
|
|
76
78
|
} else
|
|
77
|
-
|
|
78
|
-
},
|
|
79
|
-
$(!1), G(!1), K(!1),
|
|
79
|
+
D(!1), w(!1);
|
|
80
|
+
}, ue = (e) => {
|
|
81
|
+
$(!1), G(!1), K(!1), D(!1), w(!1);
|
|
80
82
|
const { active: n, over: i } = e;
|
|
81
83
|
if (i && n.id !== i.id) {
|
|
82
84
|
const a = [...p, ...b, ...m].find(
|
|
@@ -85,27 +87,30 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
85
87
|
(t) => t.value === i.id
|
|
86
88
|
);
|
|
87
89
|
if (a && s) {
|
|
88
|
-
const t = n.id, v = i.id, E = r[t] !== !1, W = r[v] !== !1,
|
|
90
|
+
const t = n.id, v = i.id, E = r[t] !== !1, W = r[v] !== !1, h = c.left?.includes(t) || !1, S = c.left?.includes(v) || !1, ge = r[v] === !1, o = {
|
|
89
91
|
columnVisibility: { ...r },
|
|
90
92
|
columnOrder: [...f],
|
|
91
93
|
columnPinning: { ...c },
|
|
92
|
-
columnSizing: { ...ie }
|
|
94
|
+
columnSizing: { ...ie },
|
|
95
|
+
groupBy: O,
|
|
96
|
+
sorting: se,
|
|
97
|
+
rowHeight: te
|
|
93
98
|
};
|
|
94
99
|
if (E && W) {
|
|
95
100
|
let d = [...o.columnPinning.left || []];
|
|
96
|
-
|
|
101
|
+
h !== S && (h && !S ? d = d.filter((L) => L !== t) : !h && S && (d = [...d, t]));
|
|
97
102
|
const u = [...U, ...Q], X = u.indexOf(t), Y = u.indexOf(v);
|
|
98
103
|
if (X === -1 || Y === -1) {
|
|
99
|
-
console.error("Invalid column order state"),
|
|
104
|
+
console.error("Invalid column order state"), je.error("Invalid column order state");
|
|
100
105
|
return;
|
|
101
106
|
}
|
|
102
|
-
const Z =
|
|
107
|
+
const Z = Se(u, X, Y), ve = Z.filter((L) => d.includes(L));
|
|
103
108
|
o.columnOrder = Z, o.columnPinning = {
|
|
104
109
|
...o.columnPinning,
|
|
105
|
-
left:
|
|
106
|
-
},
|
|
110
|
+
left: ve
|
|
111
|
+
}, H(o);
|
|
107
112
|
} else if (!E && W) {
|
|
108
|
-
if (o.columnVisibility[t] = !0,
|
|
113
|
+
if (o.columnVisibility[t] = !0, S) {
|
|
109
114
|
const u = [...o.columnPinning.left || [], t];
|
|
110
115
|
o.columnPinning.left = u;
|
|
111
116
|
}
|
|
@@ -114,44 +119,44 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
114
119
|
const u = d.indexOf(v);
|
|
115
120
|
d.splice(u, 0, t);
|
|
116
121
|
}
|
|
117
|
-
o.columnOrder = d,
|
|
118
|
-
} else if (E &&
|
|
119
|
-
if (o.columnVisibility[t] = !1,
|
|
122
|
+
o.columnOrder = d, H(o);
|
|
123
|
+
} else if (E && ge) {
|
|
124
|
+
if (o.columnVisibility[t] = !1, h) {
|
|
120
125
|
const d = (o.columnPinning.left || []).filter(
|
|
121
126
|
(u) => u !== t
|
|
122
127
|
);
|
|
123
128
|
o.columnPinning.left = d;
|
|
124
129
|
}
|
|
125
|
-
|
|
130
|
+
H(o);
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
}
|
|
129
134
|
q(null);
|
|
130
135
|
}, C = F ? [...p, ...b, ...m].find((e) => e.value === F) : null;
|
|
131
136
|
return /* @__PURE__ */ l.jsx(
|
|
132
|
-
|
|
137
|
+
ye,
|
|
133
138
|
{
|
|
134
|
-
sensors:
|
|
135
|
-
collisionDetection:
|
|
136
|
-
onDragStart:
|
|
137
|
-
onDragOver:
|
|
138
|
-
onDragEnd:
|
|
139
|
-
children: /* @__PURE__ */ l.jsxs(
|
|
140
|
-
m.length > 0 && /* @__PURE__ */ l.jsxs(M, { className:
|
|
139
|
+
sensors: de,
|
|
140
|
+
collisionDetection: Ve,
|
|
141
|
+
onDragStart: ce,
|
|
142
|
+
onDragOver: fe,
|
|
143
|
+
onDragEnd: ue,
|
|
144
|
+
children: /* @__PURE__ */ l.jsxs(He, { children: [
|
|
145
|
+
m.length > 0 && /* @__PURE__ */ l.jsxs(M, { className: oe && !J ? "drop-target" : "", children: [
|
|
141
146
|
/* @__PURE__ */ l.jsx(N, { children: "Pinned Columns" }),
|
|
142
147
|
/* @__PURE__ */ l.jsx(
|
|
143
148
|
_,
|
|
144
149
|
{
|
|
145
|
-
items:
|
|
150
|
+
items: V.map((e) => e.value),
|
|
146
151
|
strategy: ee,
|
|
147
|
-
children: /* @__PURE__ */ l.jsx(k, { children:
|
|
152
|
+
children: /* @__PURE__ */ l.jsx(k, { children: V.map((e) => /* @__PURE__ */ l.jsx(
|
|
148
153
|
B,
|
|
149
154
|
{
|
|
150
155
|
id: e.value,
|
|
151
156
|
column: e,
|
|
152
157
|
isPinned: !0,
|
|
153
158
|
isHidden: !1,
|
|
154
|
-
isDisabled: !!
|
|
159
|
+
isDisabled: !!O && e.value === "name",
|
|
155
160
|
isHighlighted: g === e.value,
|
|
156
161
|
onTogglePinning: A,
|
|
157
162
|
onToggleVisibility: T
|
|
@@ -164,15 +169,15 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
164
169
|
/* @__PURE__ */ l.jsxs(
|
|
165
170
|
M,
|
|
166
171
|
{
|
|
167
|
-
className:
|
|
172
|
+
className: le || J && re ? "drop-target" : "",
|
|
168
173
|
children: [
|
|
169
174
|
/* @__PURE__ */ l.jsx(N, { children: "Visible Columns" }),
|
|
170
175
|
/* @__PURE__ */ l.jsx(
|
|
171
176
|
_,
|
|
172
177
|
{
|
|
173
|
-
items:
|
|
178
|
+
items: y.map((e) => e.value),
|
|
174
179
|
strategy: ee,
|
|
175
|
-
children: /* @__PURE__ */ l.jsx(k, { children:
|
|
180
|
+
children: /* @__PURE__ */ l.jsx(k, { children: y.map((e) => /* @__PURE__ */ l.jsx(
|
|
176
181
|
B,
|
|
177
182
|
{
|
|
178
183
|
id: e.value,
|
|
@@ -180,7 +185,7 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
180
185
|
isPinned: !1,
|
|
181
186
|
isHidden: !1,
|
|
182
187
|
isHighlighted: g === e.value,
|
|
183
|
-
isDisabled: !!
|
|
188
|
+
isDisabled: !!O && e.value === "name",
|
|
184
189
|
onTogglePinning: A,
|
|
185
190
|
onToggleVisibility: T
|
|
186
191
|
},
|
|
@@ -191,9 +196,9 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
191
196
|
]
|
|
192
197
|
}
|
|
193
198
|
),
|
|
194
|
-
b.length > 0 && /* @__PURE__ */ l.jsxs(M, { className:
|
|
199
|
+
b.length > 0 && /* @__PURE__ */ l.jsxs(M, { className: ae ? "drop-target" : "", children: [
|
|
195
200
|
/* @__PURE__ */ l.jsx(N, { children: "Hidden Columns" }),
|
|
196
|
-
/* @__PURE__ */ l.jsx(k, { ref:
|
|
201
|
+
/* @__PURE__ */ l.jsx(k, { ref: I, children: b.map((e) => /* @__PURE__ */ l.jsx(
|
|
197
202
|
B,
|
|
198
203
|
{
|
|
199
204
|
id: e.value,
|
|
@@ -201,15 +206,15 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
201
206
|
isPinned: c.left?.includes(e.value) || !1,
|
|
202
207
|
isHidden: !0,
|
|
203
208
|
isHighlighted: g === e.value,
|
|
204
|
-
isDisabled: !!
|
|
209
|
+
isDisabled: !!O && e.value === "name",
|
|
205
210
|
onTogglePinning: A,
|
|
206
211
|
onToggleVisibility: T
|
|
207
212
|
},
|
|
208
213
|
e.value
|
|
209
214
|
)) })
|
|
210
215
|
] }),
|
|
211
|
-
/* @__PURE__ */ l.jsx(
|
|
212
|
-
|
|
216
|
+
/* @__PURE__ */ l.jsx(he, { children: C && /* @__PURE__ */ l.jsx(
|
|
217
|
+
be,
|
|
213
218
|
{
|
|
214
219
|
column: C,
|
|
215
220
|
isPinned: c.left?.includes(C.value) || !1,
|
|
@@ -221,7 +226,7 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
221
226
|
] })
|
|
222
227
|
}
|
|
223
228
|
);
|
|
224
|
-
},
|
|
229
|
+
}, He = R.div`
|
|
225
230
|
display: flex;
|
|
226
231
|
flex-direction: column;
|
|
227
232
|
gap: var(--base-gap-large);
|
|
@@ -243,6 +248,6 @@ const Be = ({ columns: S, highlighted: g }) => {
|
|
|
243
248
|
padding: 4px 0;
|
|
244
249
|
`;
|
|
245
250
|
export {
|
|
246
|
-
|
|
251
|
+
Ne as default
|
|
247
252
|
};
|
|
248
253
|
//# sourceMappingURL=ColumnsSettings.es.js.map
|