@gooddata/sdk-ui-catalog 11.46.0-alpha.2 → 11.46.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/esm/AnalyticsCatalogDetail.d.ts.map +1 -1
  2. package/esm/AnalyticsCatalogDetail.js +2 -1
  3. package/esm/catalog/Catalog.d.ts.map +1 -1
  4. package/esm/catalog/Catalog.js +5 -2
  5. package/esm/catalogDetail/CatalogDetailActionBar.d.ts +6 -4
  6. package/esm/catalogDetail/CatalogDetailActionBar.d.ts.map +1 -1
  7. package/esm/catalogDetail/CatalogDetailActionBar.js +5 -6
  8. package/esm/catalogDetail/CatalogDetailActions.d.ts +2 -1
  9. package/esm/catalogDetail/CatalogDetailActions.d.ts.map +1 -1
  10. package/esm/catalogDetail/CatalogDetailActions.js +6 -2
  11. package/esm/catalogDetail/CatalogDetailContent.d.ts.map +1 -1
  12. package/esm/catalogDetail/CatalogDetailContent.js +3 -1
  13. package/esm/catalogItem/query.d.ts +7 -2
  14. package/esm/catalogItem/query.d.ts.map +1 -1
  15. package/esm/catalogItem/query.js +16 -1
  16. package/esm/header/CreateObjectButton.d.ts +2 -1
  17. package/esm/header/CreateObjectButton.d.ts.map +1 -1
  18. package/esm/header/CreateObjectButton.js +42 -38
  19. package/esm/localization/bundles/en-US.localization-bundle.d.ts +112 -0
  20. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  21. package/esm/localization/bundles/en-US.localization-bundle.js +112 -0
  22. package/esm/main/Main.d.ts.map +1 -1
  23. package/esm/main/Main.js +2 -3
  24. package/esm/metric/MetricCreateDialog.d.ts +11 -0
  25. package/esm/metric/MetricCreateDialog.d.ts.map +1 -0
  26. package/esm/metric/MetricCreateDialog.js +55 -0
  27. package/esm/metric/MetricDeleteDialog.d.ts +9 -0
  28. package/esm/metric/MetricDeleteDialog.d.ts.map +1 -0
  29. package/esm/metric/MetricDeleteDialog.js +68 -0
  30. package/esm/metric/MetricDetailActions.d.ts +23 -0
  31. package/esm/metric/MetricDetailActions.d.ts.map +1 -0
  32. package/esm/metric/MetricDetailActions.js +101 -0
  33. package/esm/metric/MetricDialog.d.ts +14 -0
  34. package/esm/metric/MetricDialog.d.ts.map +1 -0
  35. package/esm/metric/MetricDialog.js +100 -0
  36. package/esm/metric/MetricEditDialog.d.ts +11 -0
  37. package/esm/metric/MetricEditDialog.d.ts.map +1 -0
  38. package/esm/metric/MetricEditDialog.js +51 -0
  39. package/esm/metric/MetricMutationContext.d.ts +16 -0
  40. package/esm/metric/MetricMutationContext.d.ts.map +1 -0
  41. package/esm/metric/MetricMutationContext.js +32 -0
  42. package/esm/metric/MetricYamlEditor.d.ts +8 -0
  43. package/esm/metric/MetricYamlEditor.d.ts.map +1 -0
  44. package/esm/metric/MetricYamlEditor.js +20 -0
  45. package/esm/metric/gate.d.ts +9 -0
  46. package/esm/metric/gate.d.ts.map +1 -0
  47. package/esm/metric/gate.js +16 -0
  48. package/esm/metric/metricCompletions.d.ts +7 -0
  49. package/esm/metric/metricCompletions.d.ts.map +1 -0
  50. package/esm/metric/metricCompletions.js +59 -0
  51. package/esm/metric/metricConverter.d.ts +49 -0
  52. package/esm/metric/metricConverter.d.ts.map +1 -0
  53. package/esm/metric/metricConverter.js +101 -0
  54. package/esm/metric/metricCopy.d.ts +4 -0
  55. package/esm/metric/metricCopy.d.ts.map +1 -0
  56. package/esm/metric/metricCopy.js +60 -0
  57. package/esm/metric/metricMutationPort.d.ts +18 -0
  58. package/esm/metric/metricMutationPort.d.ts.map +1 -0
  59. package/esm/metric/metricMutationPort.js +39 -0
  60. package/esm/metric/metricSchema.d.ts +29 -0
  61. package/esm/metric/metricSchema.d.ts.map +1 -0
  62. package/esm/metric/metricSchema.js +30 -0
  63. package/esm/metric/metricSerialization.d.ts +10 -0
  64. package/esm/metric/metricSerialization.d.ts.map +1 -0
  65. package/esm/metric/metricSerialization.js +33 -0
  66. package/esm/metric/metricValidation.d.ts +15 -0
  67. package/esm/metric/metricValidation.d.ts.map +1 -0
  68. package/esm/metric/metricValidation.js +47 -0
  69. package/esm/metric/metricYamlLinter.d.ts +7 -0
  70. package/esm/metric/metricYamlLinter.d.ts.map +1 -0
  71. package/esm/metric/metricYamlLinter.js +13 -0
  72. package/esm/metric/tests/metricMutationPort.test.utils.d.ts +7 -0
  73. package/esm/metric/tests/metricMutationPort.test.utils.d.ts.map +1 -0
  74. package/esm/metric/tests/metricMutationPort.test.utils.js +43 -0
  75. package/esm/parameter/ParameterDialog.d.ts.map +1 -1
  76. package/esm/parameter/ParameterDialog.js +7 -7
  77. package/esm/parameter/ParameterYamlEditor.js +1 -1
  78. package/esm/parameter/yamlLinter.d.ts +1 -4
  79. package/esm/parameter/yamlLinter.d.ts.map +1 -1
  80. package/esm/parameter/yamlLinter.js +3 -24
  81. package/esm/utils/backendError.d.ts +11 -0
  82. package/esm/utils/backendError.d.ts.map +1 -0
  83. package/esm/utils/backendError.js +21 -0
  84. package/esm/utils/yamlSyntaxLinter.d.ts +11 -0
  85. package/esm/utils/yamlSyntaxLinter.d.ts.map +1 -0
  86. package/esm/utils/yamlSyntaxLinter.js +31 -0
  87. package/package.json +15 -14
  88. package/styles/css/{parameter.css → codeDialog.css} +26 -18
  89. package/styles/css/codeDialog.css.map +1 -0
  90. package/styles/css/detail.css +25 -17
  91. package/styles/css/detail.css.map +1 -1
  92. package/styles/css/main.css +25 -17
  93. package/styles/css/main.css.map +1 -1
  94. package/styles/scss/{parameter.scss → codeDialog.scss} +17 -8
  95. package/styles/scss/detail.scss +1 -1
  96. package/styles/css/parameter.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AnalyticsCatalogDetail.d.ts","sourceRoot":"","sources":["../src/AnalyticsCatalogDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAEH,KAAK,0BAA0B,EAClC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,YAAY,CAAC;IACtG;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACf,EAAE,4BAA4B,2CAM9B;AAED;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,IAAI,CAC7D,0BAA0B,EAC1B,UAAU,GAAG,YAAY,CAC5B;IACG;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC1C,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACf,EAAE,mCAAmC,2CAMrC"}
1
+ {"version":3,"file":"AnalyticsCatalogDetail.d.ts","sourceRoot":"","sources":["../src/AnalyticsCatalogDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAEH,KAAK,0BAA0B,EAClC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,YAAY,CAAC;IACtG;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACf,EAAE,4BAA4B,2CAM9B;AAED;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,IAAI,CAC7D,0BAA0B,EAC1B,UAAU,GAAG,YAAY,CAC5B;IACG;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC1C,OAAO,EACP,SAAS,EACT,MAAM,EACN,GAAG,SAAS,EACf,EAAE,mCAAmC,2CAMrC"}
@@ -5,6 +5,7 @@ import { CatalogDetail } from "./catalogDetail/CatalogDetail.js";
5
5
  import { CatalogDetailContent, } from "./catalogDetail/CatalogDetailContent.js";
6
6
  import { CatalogResourceProvider } from "./catalogResource/CatalogResourceProvider.js";
7
7
  import { IntlWrapper } from "./localization/IntlWrapper.js";
8
+ import { MetricMutationProvider } from "./metric/MetricMutationContext.js";
8
9
  import {} from "./objectType/types.js";
9
10
  import { OverlayProvider } from "./overlay/OverlayProvider.js";
10
11
  import { ParameterMutationProvider } from "./parameter/ParameterMutationContext.js";
@@ -27,5 +28,5 @@ function Providers(props) {
27
28
  const backend = useBackendStrict(props.backend);
28
29
  const workspace = useWorkspaceStrict(props.workspace);
29
30
  const permissionsState = usePermissionsQuery({ backend, workspace });
30
- return (_jsx(BackendProvider, { backend: backend, children: _jsx(WorkspaceProvider, { workspace: workspace, children: _jsx(IntlWrapper, { locale: props.locale, children: _jsx(ToastsCenterContextProvider, { children: _jsx(OverlayProvider, { children: _jsx(PermissionsProvider, { permissionsState: permissionsState, children: _jsx(QualityProvider, { backend: backend, workspace: workspace, children: _jsx(CatalogResourceProvider, { backend: backend, workspace: workspace, children: _jsx(ParameterMutationProvider, { children: props.children }) }) }) }) }) }) }) }) }));
31
+ return (_jsx(BackendProvider, { backend: backend, children: _jsx(WorkspaceProvider, { workspace: workspace, children: _jsx(IntlWrapper, { locale: props.locale, children: _jsx(ToastsCenterContextProvider, { children: _jsx(OverlayProvider, { children: _jsx(PermissionsProvider, { permissionsState: permissionsState, children: _jsx(QualityProvider, { backend: backend, workspace: workspace, children: _jsx(CatalogResourceProvider, { backend: backend, workspace: workspace, children: _jsx(ParameterMutationProvider, { children: _jsx(MetricMutationProvider, { children: props.children }) }) }) }) }) }) }) }) }) }));
31
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/Catalog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAYtE,KAAK,KAAK,GAAG;IACT,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnF,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/E,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACpB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACjB,EAAE,KAAK,2CAoEP"}
1
+ {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/Catalog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAYtE,KAAK,KAAK,GAAG;IACT,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnF,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/E,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAClE,CAAC;AAEF,wBAAgB,OAAO,CAAC,EACpB,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACjB,EAAE,KAAK,2CAwEP"}
@@ -10,6 +10,8 @@ import { CreateObjectButton } from "../header/CreateObjectButton.js";
10
10
  import { Header } from "../header/Header.js";
11
11
  import { useCatalogItemOpen } from "../main/hooks/useCatalogItemOpen.js";
12
12
  import { Main } from "../main/Main.js";
13
+ import { useCanManageMetric } from "../metric/gate.js";
14
+ import { MetricMutationProvider } from "../metric/MetricMutationContext.js";
13
15
  import { useCanManageParameter } from "../parameter/gate.js";
14
16
  import { ParameterMutationProvider } from "../parameter/ParameterMutationContext.js";
15
17
  import { PermissionsGate } from "../permission/PermissionsGate.js";
@@ -22,6 +24,7 @@ import { Layout } from "./Layout.js";
22
24
  export function Catalog({ openCatalogItemRef, backend, workspace, onCatalogItemOpenClick, onCatalogItemNavigation, onCatalogDetailOpened, onCatalogDetailClosed, onCreateObject, }) {
23
25
  const intl = useIntl();
24
26
  const showParameter = useCanManageParameter();
27
+ const showMetricEditor = useCanManageMetric();
25
28
  const isTrendingEnabled = useIsCatalogTrendingObjectsEnabled();
26
29
  const isQualityEnabled = useIsCatalogQualityEnabled();
27
30
  const { open, openedItem, setItemOpened, onOpenDetail, onCloseDetail, onOpenClick } = useCatalogItemOpen(onCatalogItemOpenClick, onCatalogDetailOpened, onCatalogDetailClosed, openCatalogItemRef);
@@ -29,6 +32,6 @@ export function Catalog({ openCatalogItemRef, backend, workspace, onCatalogItemO
29
32
  id: "analyticsCatalog.error.unknown.description",
30
33
  }) }), unauthorizedNode: _jsx(ErrorComponent, { message: intl.formatMessage({ id: "analyticsCatalog.error.unauthorized.message" }), description: intl.formatMessage({
31
34
  id: "analyticsCatalog.error.unauthorized.description",
32
- }) }), children: _jsx(CatalogFeedProvider, { backend: backend, workspace: workspace, children: _jsxs(ParameterMutationProvider, { children: [_jsx(Header, { searchNode: _jsx(FullTextSearchInput, {}), createNode: onCreateObject ? (_jsx(CreateObjectButton, { onCreateObject: onCreateObject, showParameter: showParameter })) : null }), isTrendingEnabled ? (_jsx(CatalogTabs, { onItemClick: onOpenDetail })) : isQualityEnabled ? (_jsx(QualityScoreCard, {})) : null, _jsx(Main, { workspace: workspace, backend: backend, open: open, openedItem: openedItem, setItemOpened: setItemOpened, onOpenDetail: onOpenDetail, onCloseDetail: onCloseDetail, onOpenClick: onOpenClick, onCatalogItemNavigation: onCatalogItemNavigation })
33
- ] }) }) }) }));
35
+ }) }), children: _jsx(CatalogFeedProvider, { backend: backend, workspace: workspace, children: _jsx(ParameterMutationProvider, { children: _jsxs(MetricMutationProvider, { children: [_jsx(Header, { searchNode: _jsx(FullTextSearchInput, {}), createNode: onCreateObject ? (_jsx(CreateObjectButton, { onCreateObject: onCreateObject, showParameter: showParameter, showMetricEditor: showMetricEditor })) : null }), isTrendingEnabled ? (_jsx(CatalogTabs, { onItemClick: onOpenDetail })) : isQualityEnabled ? (_jsx(QualityScoreCard, {})) : null, _jsx(Main, { workspace: workspace, backend: backend, open: open, openedItem: openedItem, setItemOpened: setItemOpened, onOpenDetail: onOpenDetail, onCloseDetail: onCloseDetail, onOpenClick: onOpenClick, onCatalogItemNavigation: onCatalogItemNavigation })
36
+ ] }) }) }) }) }));
34
37
  }
@@ -1,15 +1,17 @@
1
- import { type MouseEvent } from "react";
1
+ import { type KeyboardEvent, type MouseEvent, type ReactNode } from "react";
2
2
  import type { ICatalogItem } from "../catalogItem/types.js";
3
3
  import type { EditHandlerEvent, ICatalogDetailAction } from "./types.js";
4
4
  export type ICatalogDetailActionBarProps = {
5
5
  item: ICatalogItem;
6
6
  workspaceId: string;
7
7
  actions: ICatalogDetailAction[];
8
+ /** Rendered before the Edit button (e.g. a Share button). */
9
+ leadingActions?: ReactNode;
8
10
  onEditClick?: (event: MouseEvent, editClickEvent: EditHandlerEvent) => void;
9
- onActionsMenuSelect: (actionId: string) => void;
11
+ onActionsMenuSelect: (actionId: string, event: MouseEvent | KeyboardEvent) => void;
10
12
  };
11
13
  /**
12
- * Detail action bar: primary Edit button plus an optional item actions menu.
14
+ * Detail action bar: optional leading actions, a primary Edit button, and an item actions menu.
13
15
  */
14
- export declare function CatalogDetailActionBar({ item, workspaceId, actions, onEditClick, onActionsMenuSelect }: ICatalogDetailActionBarProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function CatalogDetailActionBar({ item, workspaceId, actions, leadingActions, onEditClick, onActionsMenuSelect }: ICatalogDetailActionBarProps): import("react/jsx-runtime").JSX.Element;
15
17
  //# sourceMappingURL=CatalogDetailActionBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailActionBar.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAW,MAAM,OAAO,CAAC;AAOjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAUzE,MAAM,MAAM,4BAA4B,GAAG;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,WAAW,EACX,OAAO,EACP,WAAW,EACX,mBAAmB,EACtB,EAAE,4BAA4B,2CAuE9B"}
1
+ {"version":3,"file":"CatalogDetailActionBar.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAOrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAUzE,MAAM,MAAM,4BAA4B,GAAG;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,6DAA6D;IAC7D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;CACtF,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,IAAI,EACJ,WAAW,EACX,OAAO,EACP,cAAc,EACd,WAAW,EACX,mBAAmB,EACtB,EAAE,4BAA4B,2CAwE9B"}
@@ -8,9 +8,9 @@ const messages = defineMessages({
8
8
  actionsMenuAriaLabel: { id: "analyticsCatalog.catalogItem.actionsMenu.ariaLabel" },
9
9
  });
10
10
  /**
11
- * Detail action bar: primary Edit button plus an optional item actions menu.
11
+ * Detail action bar: optional leading actions, a primary Edit button, and an item actions menu.
12
12
  */
13
- export function CatalogDetailActionBar({ item, workspaceId, actions, onEditClick, onActionsMenuSelect, }) {
13
+ export function CatalogDetailActionBar({ item, workspaceId, actions, leadingActions, onEditClick, onActionsMenuSelect, }) {
14
14
  const intl = useIntl();
15
15
  const actionsMenuItems = useMemo(() => {
16
16
  return actions.map((action) => ({
@@ -21,8 +21,7 @@ export function CatalogDetailActionBar({ item, workspaceId, actions, onEditClick
21
21
  isDestructive: action.isDestructive,
22
22
  }));
23
23
  }, [actions]);
24
- return (_jsxs("div", { className: "gd-analytics-catalog-detail__detail-actions", children: [
25
- _jsx(UiButton, { label: intl.formatMessage({ id: "analyticsCatalog.edit" }), variant: "primary", size: "medium", onClick: (event) => {
24
+ return (_jsxs("div", { className: "gd-analytics-catalog-detail__detail-actions", children: [leadingActions, _jsx(UiButton, { label: intl.formatMessage({ id: "analyticsCatalog.edit" }), variant: "primary", size: "medium", onClick: (event) => {
26
25
  onEditClick?.(event, {
27
26
  item,
28
27
  workspaceId,
@@ -39,9 +38,9 @@ export function CatalogDetailActionBar({ item, workspaceId, actions, onEditClick
39
38
  ariaExpanded: ariaAttributes["aria-expanded"],
40
39
  ariaHaspopup: ariaAttributes["aria-haspopup"],
41
40
  ariaControls: ariaAttributes["aria-controls"],
42
- } })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(UiMenu, { items: actionsMenuItems, minWidth: 140, onClose: closeDropdown, onSelect: (menuItem) => {
41
+ } })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(UiMenu, { items: actionsMenuItems, minWidth: 140, onClose: closeDropdown, onSelect: (menuItem, event) => {
43
42
  closeDropdown();
44
- onActionsMenuSelect(menuItem.data.id);
43
+ onActionsMenuSelect(menuItem.data.id, event);
45
44
  }, ariaAttributes: ariaAttributes, itemDataTestId: getItemDataTestId, containerTopPadding: "small", containerBottomPadding: "small" })), closeOnEscape: true, autofocusOnOpen: true })] }));
46
45
  }
47
46
  function getItemDataTestId(menuItem) {
@@ -7,6 +7,7 @@ import type { OpenHandlerEvent } from "./types.js";
7
7
  export interface ICatalogDetailActionsProps {
8
8
  item: ICatalogItem;
9
9
  canEdit: boolean;
10
+ isMetricEditorEnabled?: boolean;
10
11
  onOpen?: (event: MouseEvent, openEvent: OpenHandlerEvent) => void;
11
12
  onCatalogItemCreate?: (item: ICatalogItem) => void;
12
13
  onCatalogItemUpdate?: (item: ICatalogItem) => void;
@@ -15,5 +16,5 @@ export interface ICatalogDetailActionsProps {
15
16
  /**
16
17
  * @internal
17
18
  */
18
- export declare function CatalogDetailActions({ item, canEdit, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete }: ICatalogDetailActionsProps): import("react/jsx-runtime").JSX.Element | null;
19
+ export declare function CatalogDetailActions({ item, canEdit, isMetricEditorEnabled, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete }: ICatalogDetailActionsProps): import("react/jsx-runtime").JSX.Element | null;
19
20
  //# sourceMappingURL=CatalogDetailActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailActions.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAkC,MAAM,OAAO,CAAC;AAUxE,OAAO,KAAK,EAAE,YAAY,EAAyB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQpG,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAczE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACtB,EAAE,0BAA0B,kDA8I5B"}
1
+ {"version":3,"file":"CatalogDetailActions.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAkC,MAAM,OAAO,CAAC;AAUxE,OAAO,KAAK,EAAE,YAAY,EAAyB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AASpG,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAczE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,qBAAqB,EACrB,MAAM,EACN,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACtB,EAAE,0BAA0B,kDA4J5B"}
@@ -5,7 +5,8 @@ import { defineMessages, useIntl } from "react-intl";
5
5
  import { useWorkspaceStrict } from "@gooddata/sdk-ui";
6
6
  import { UiButton } from "@gooddata/sdk-ui-kit";
7
7
  import { catalogDetailActionDelete, catalogDetailActionDuplicate } from "../automation/testIds.js";
8
- import { isCatalogItemParameter } from "../catalogItem/guards.js";
8
+ import { isCatalogItemMeasure, isCatalogItemParameter } from "../catalogItem/guards.js";
9
+ import { MetricDetailActions } from "../metric/MetricDetailActions.js";
9
10
  import { ParameterCreateDialog } from "../parameter/ParameterCreateDialog.js";
10
11
  import { ParameterDeleteDialog } from "../parameter/ParameterDeleteDialog.js";
11
12
  import { ParameterEditDialog } from "../parameter/ParameterEditDialog.js";
@@ -19,7 +20,7 @@ const messages = defineMessages({
19
20
  /**
20
21
  * @internal
21
22
  */
22
- export function CatalogDetailActions({ item, canEdit, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, }) {
23
+ export function CatalogDetailActions({ item, canEdit, isMetricEditorEnabled, onOpen, onCatalogItemCreate, onCatalogItemUpdate, onCatalogItemDelete, }) {
23
24
  const intl = useIntl();
24
25
  const workspaceId = useWorkspaceStrict();
25
26
  const [dialog, setDialog] = useState(undefined);
@@ -87,6 +88,9 @@ export function CatalogDetailActions({ item, canEdit, onOpen, onCatalogItemCreat
87
88
  return (_jsxs(_Fragment, { children: [
88
89
  _jsx(CatalogDetailActionBar, { item: item, workspaceId: workspaceId, actions: parameterActions, onEditClick: handleEditOpen, onActionsMenuSelect: handleActionsMenuSelect }), dialog?.kind === "edit" ? (_jsx(ParameterEditDialog, { item: dialog.item, onClose: closeDialog, onSaved: handleSaved, onDuplicate: handleEditDuplicate })) : null, dialog?.kind === "duplicate" ? (_jsx(ParameterCreateDialog, { sourceItem: dialog.item, onClose: closeDialog, onCreated: handleCreated })) : null, dialog?.kind === "delete" ? (_jsx(ParameterDeleteDialog, { item: dialog.item, onClose: closeDialog, onDeleted: handleDeleted })) : null] }));
89
90
  }
91
+ if (isCatalogItemMeasure(item) && isMetricEditorEnabled && canEdit) {
92
+ return (_jsx(MetricDetailActions, { item: item, onOpen: onOpen, canShare: share.active, onShare: share.open, onCatalogItemCreate: onCatalogItemCreate, onCatalogItemUpdate: onCatalogItemUpdate, onCatalogItemDelete: onCatalogItemDelete }));
93
+ }
90
94
  return (_jsxs("div", { className: "gd-analytics-catalog-detail__header-actions", children: [share.active ? _jsx(ShareButton, { onClick: share.open }) : null, _jsx(UiButton, { label: intl.formatMessage({ id: "analyticsCatalog.catalogItem.open" }), variant: "primary", accessibilityConfig: { role: "link" }, onClick: (event) => {
91
95
  onOpen?.(event, {
92
96
  item,
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogDetailContent.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAgC,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EAC1B,EAAE,0BAA0B,2CAoN5B"}
1
+ {"version":3,"file":"CatalogDetailContent.d.ts","sourceRoot":"","sources":["../../src/catalogDetail/CatalogDetailContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAgC,MAAM,OAAO,CAAC;AAUtE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAIlF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5E;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EAC1B,EAAE,0BAA0B,2CAsN5B"}
@@ -10,6 +10,7 @@ import { canEditCatalogItem } from "../catalogItem/permission.js";
10
10
  import {} from "../catalogItem/types.js";
11
11
  import { useIsCertificationAllowed } from "../certification/gate.js";
12
12
  import { useIsLineageEnabled } from "../lineage/gate.js";
13
+ import { useIsCatalogMetricEditorEnabled } from "../metric/gate.js";
13
14
  import {} from "../objectType/types.js";
14
15
  import { usePermissionsState } from "../permission/PermissionsContext.js";
15
16
  import { useIsCatalogDescriptionGenerationEnabled, useIsCatalogQualityEnabled } from "../quality/gate.js";
@@ -61,6 +62,7 @@ export function CatalogDetailContent({ objectId, objectType, objectDefinition, o
61
62
  const enableMetricFormatOverrides = Boolean(settings?.["enableMetricFormatOverrides"]);
62
63
  const currencyFormatOverride = settings?.currencyFormatOverride ?? null;
63
64
  const isDescriptionGenerationEnabled = useIsCatalogDescriptionGenerationEnabled();
65
+ const isMetricEditorEnabled = useIsCatalogMetricEditorEnabled();
64
66
  // Quality
65
67
  const { status: qualityStatus } = useQualityReportState();
66
68
  const isQualityEnabled = useIsCatalogQualityEnabled();
@@ -114,7 +116,7 @@ export function CatalogDetailContent({ objectId, objectType, objectDefinition, o
114
116
  _jsx(CatalogDetailStatus, { status: status, error: error, children: item ? (_jsxs("div", { className: cx("gd-analytics-catalog-detail__content", {
115
117
  lineage: selectedTabId === Tabs.LINEAGE,
116
118
  }), children: [
117
- _jsx(CatalogDetailHeader, { item: item, canEdit: canEdit, updateItemTitle: updateItemTitle, updateItemDescription: updateItemDescription, isDescriptionGenerationEnabled: isDescriptionGenerationEnabled, headerRef: headerRef, labels: shareableItem ? shareLabels.labels : undefined, labelsLoading: shareableItem ? shareLabels.loading : false, showInfoRow: enableColumnLevelPermissions, actions: _jsx(CatalogDetailActions, { item: item, canEdit: canEdit, onOpen: onOpenClick, onCatalogItemCreate: onCatalogItemCreate, onCatalogItemUpdate: applyItemUpdate, onCatalogItemDelete: applyItemDelete }) }), _jsx(UiTabs, { size: "large", tabs: tabs, onTabSelect: (tab) => setSelectedTabId(tab.id), selectedTabId: selectedTabId }), selectedTabId === Tabs.METADATA && (_jsx(CatalogDetailTabMetadata, { item: item, canEdit: canEdit,
119
+ _jsx(CatalogDetailHeader, { item: item, canEdit: canEdit, updateItemTitle: updateItemTitle, updateItemDescription: updateItemDescription, isDescriptionGenerationEnabled: isDescriptionGenerationEnabled, headerRef: headerRef, labels: shareableItem ? shareLabels.labels : undefined, labelsLoading: shareableItem ? shareLabels.loading : false, showInfoRow: enableColumnLevelPermissions, actions: _jsx(CatalogDetailActions, { item: item, canEdit: canEdit, isMetricEditorEnabled: isMetricEditorEnabled, onOpen: onOpenClick, onCatalogItemCreate: onCatalogItemCreate, onCatalogItemUpdate: applyItemUpdate, onCatalogItemDelete: applyItemDelete }) }), _jsx(UiTabs, { size: "large", tabs: tabs, onTabSelect: (tab) => setSelectedTabId(tab.id), selectedTabId: selectedTabId }), selectedTabId === Tabs.METADATA && (_jsx(CatalogDetailTabMetadata, { item: item, canEdit: canEdit,
118
120
  // With OLP off the dataset isn't relocated to the header,
119
121
  // so keep the Dataset row in the metadata tab.
120
122
  showDatasetRow: !enableColumnLevelPermissions, onTagClick: (tag) => {
@@ -1,5 +1,5 @@
1
1
  import type { AnalyticsCatalogGenerateDescriptionObjectType, IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
2
- import { type IParameterMetadataObjectDefinition, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IMeasureMetadataObject, type IMeasureMetadataObjectDefinition, type IParameterMetadataObjectDefinition, type ObjRef } from "@gooddata/sdk-model";
3
3
  import type { ObjectType } from "../objectType/types.js";
4
4
  import type { ICatalogItem, ICatalogItemParameter, ICatalogItemQueryOptions } from "./types.js";
5
5
  /**
@@ -14,9 +14,14 @@ export declare function getParametersQuery({ backend, workspace, search, origin,
14
14
  export declare function getAttributesQuery({ backend, workspace, search, origin, id, excludeId, tags, excludeTags, isHidden, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IAttributesQuery;
15
15
  export declare function getFactsQuery({ backend, workspace, search, origin, id, excludeId, tags, excludeTags, isHidden, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IFactsQuery;
16
16
  export declare function getDateDatasetsQuery({ backend, workspace, search, origin, id, excludeId, tags, excludeTags, isHidden, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IDatasetsQuery;
17
- export declare function updateCatalogItem(backend: IAnalyticalBackend, workspace: string, item: ICatalogItem): Promise<import("@gooddata/sdk-model").IAttributeMetadataObject> | Promise<import("@gooddata/sdk-model").IDashboard<import("@gooddata/sdk-model").IDashboardWidget>> | Promise<import("@gooddata/sdk-model").IDataSetMetadataObject> | Promise<import("@gooddata/sdk-model").IFactMetadataObject> | Promise<import("@gooddata/sdk-model").IParameterMetadataObject> | Promise<import("@gooddata/sdk-model").IInsight> | Promise<import("@gooddata/sdk-model").IMeasureMetadataObject>;
17
+ export declare function updateCatalogItem(backend: IAnalyticalBackend, workspace: string, item: ICatalogItem): Promise<import("@gooddata/sdk-model").IAttributeMetadataObject> | Promise<import("@gooddata/sdk-model").IDashboard<import("@gooddata/sdk-model").IDashboardWidget>> | Promise<import("@gooddata/sdk-model").IDataSetMetadataObject> | Promise<import("@gooddata/sdk-model").IFactMetadataObject> | Promise<import("@gooddata/sdk-model").IParameterMetadataObject> | Promise<import("@gooddata/sdk-model").IInsight> | Promise<IMeasureMetadataObject>;
18
18
  export declare function createParameterCatalogItem(backend: IAnalyticalBackend, workspace: string, parameter: IParameterMetadataObjectDefinition): Promise<import("@gooddata/sdk-model").IParameterMetadataObject>;
19
19
  export declare function updateParameterCatalogItem(backend: IAnalyticalBackend, workspace: string, item: ICatalogItemParameter): Promise<import("@gooddata/sdk-model").IParameterMetadataObject>;
20
20
  export declare function deleteParameterCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
21
+ export declare function createMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObjectDefinition): Promise<IMeasureMetadataObject>;
22
+ export declare function updateMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObject): Promise<IMeasureMetadataObject>;
23
+ export declare function deleteMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
24
+ export declare function getMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<IMeasureMetadataObject>;
25
+ export declare function getMeasureReferencingObjectsCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<import("@gooddata/sdk-backend-spi").IMeasureReferencing>;
21
26
  export declare function updateCatalogItemCertification(backend: IAnalyticalBackend, workspace: string, item: Pick<ICatalogItem, "type" | "identifier" | "certification">): Promise<void>;
22
27
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/catalogItem/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/catalogItem/query.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
- import { idRef } from "@gooddata/sdk-model";
2
+ import { idRef, } from "@gooddata/sdk-model";
3
3
  const PAGE_SIZE = 50;
4
4
  /**
5
5
  * Type guard for catalog object types supported by AI description generation.
@@ -289,6 +289,21 @@ export function updateParameterCatalogItem(backend, workspace, item) {
289
289
  export function deleteParameterCatalogItem(backend, workspace, ref) {
290
290
  return backend.workspace(workspace).parameters().deleteParameter(ref);
291
291
  }
292
+ export function createMeasureCatalogItem(backend, workspace, measure) {
293
+ return backend.workspace(workspace).measures().createMeasure(measure);
294
+ }
295
+ export function updateMeasureCatalogItem(backend, workspace, measure) {
296
+ return backend.workspace(workspace).measures().updateMeasure(measure);
297
+ }
298
+ export function deleteMeasureCatalogItem(backend, workspace, ref) {
299
+ return backend.workspace(workspace).measures().deleteMeasure(ref);
300
+ }
301
+ export function getMeasureCatalogItem(backend, workspace, ref) {
302
+ return backend.workspace(workspace).measures().getMeasure(ref);
303
+ }
304
+ export function getMeasureReferencingObjectsCatalogItem(backend, workspace, ref) {
305
+ return backend.workspace(workspace).measures().getMeasureReferencingObjects(ref);
306
+ }
292
307
  export function updateCatalogItemCertification(backend, workspace, item) {
293
308
  const ref = idRef(item.identifier, item.type);
294
309
  switch (item.type) {
@@ -2,7 +2,8 @@ import type { CatalogCreateObjectType } from "../objectType/types.js";
2
2
  type Props = {
3
3
  onCreateObject: (objectType: CatalogCreateObjectType) => void;
4
4
  showParameter?: boolean;
5
+ showMetricEditor?: boolean;
5
6
  };
6
- export declare function CreateObjectButton({ onCreateObject, showParameter }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export declare function CreateObjectButton({ onCreateObject, showParameter, showMetricEditor }: Props): import("react/jsx-runtime").JSX.Element;
7
8
  export {};
8
9
  //# sourceMappingURL=CreateObjectButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateObjectButton.d.ts","sourceRoot":"","sources":["../../src/header/CreateObjectButton.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAetE,KAAK,KAAK,GAAG;IACT,cAAc,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,KAAK,2CAiH1E"}
1
+ {"version":3,"file":"CreateObjectButton.d.ts","sourceRoot":"","sources":["../../src/header/CreateObjectButton.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAetE,KAAK,KAAK,GAAG;IACT,cAAc,EAAE,CAAC,UAAU,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,KAAK,2CA0H5F"}
@@ -4,6 +4,7 @@ import { useCallback, useMemo, useState } from "react";
4
4
  import { useIntl } from "react-intl";
5
5
  import { Dropdown, SeparatorLine, UiButton, UiIcon, UiMenu, } from "@gooddata/sdk-ui-kit";
6
6
  import { useCatalogFeedActions } from "../catalogItem/CatalogFeedContext.js";
7
+ import { MetricCreateDialog } from "../metric/MetricCreateDialog.js";
7
8
  import { ObjectTypes } from "../objectType/constants.js";
8
9
  import { getObjectTypeLabel } from "../objectType/labels.js";
9
10
  import { ParameterCreateDialog } from "../parameter/ParameterCreateDialog.js";
@@ -13,63 +14,66 @@ const icons = {
13
14
  [ObjectTypes.METRIC]: "metric",
14
15
  [ObjectTypes.PARAMETER]: "parameter",
15
16
  };
16
- export function CreateObjectButton({ onCreateObject, showParameter }) {
17
+ export function CreateObjectButton({ onCreateObject, showParameter, showMetricEditor }) {
17
18
  const intl = useIntl();
18
19
  const { refetchObjectType } = useCatalogFeedActions();
19
20
  const [isParameterDialogOpen, setIsParameterDialogOpen] = useState(false);
21
+ const [isMetricDialogOpen, setIsMetricDialogOpen] = useState(false);
20
22
  const items = useMemo(() => {
21
23
  const externalLinkIcon = _jsx(MenuItemIcon, { type: "externalLink" });
22
- const items = [
23
- {
24
- type: "interactive",
25
- id: ObjectTypes.DASHBOARD,
26
- stringTitle: getObjectTypeLabel(intl, ObjectTypes.DASHBOARD),
27
- iconLeft: _jsx(MenuItemIcon, { type: icons[ObjectTypes.DASHBOARD] }),
28
- iconRight: externalLinkIcon,
29
- data: ObjectTypes.DASHBOARD,
30
- },
31
- {
32
- type: "interactive",
33
- id: ObjectTypes.VISUALIZATION,
34
- stringTitle: getObjectTypeLabel(intl, ObjectTypes.VISUALIZATION),
35
- iconLeft: _jsx(MenuItemIcon, { type: icons[ObjectTypes.VISUALIZATION] }),
36
- iconRight: externalLinkIcon,
37
- data: ObjectTypes.VISUALIZATION,
38
- },
39
- {
40
- type: "interactive",
41
- id: ObjectTypes.METRIC,
42
- stringTitle: getObjectTypeLabel(intl, ObjectTypes.METRIC),
43
- iconLeft: _jsx(MenuItemIcon, { type: icons[ObjectTypes.METRIC] }),
44
- iconRight: externalLinkIcon,
45
- data: ObjectTypes.METRIC,
46
- },
24
+ const interactiveItem = (type, redirects) => ({
25
+ type: "interactive",
26
+ id: type,
27
+ stringTitle: getObjectTypeLabel(intl, type),
28
+ iconLeft: _jsx(MenuItemIcon, { type: icons[type] }),
29
+ // A redirect create leaves the catalog for the standalone editor; an in-catalog create
30
+ // opens a dialog and needs no external-link affordance.
31
+ iconRight: redirects ? externalLinkIcon : undefined,
32
+ data: type,
33
+ });
34
+ // A separator divides creates that redirect to a standalone editor from those handled inline
35
+ // in a catalog dialog. Metric switches sides: it redirects unless its in-catalog editor is on.
36
+ const redirectItems = [
37
+ interactiveItem(ObjectTypes.DASHBOARD, true),
38
+ interactiveItem(ObjectTypes.VISUALIZATION, true),
39
+ ...(showMetricEditor ? [] : [interactiveItem(ObjectTypes.METRIC, true)]),
47
40
  ];
48
- if (showParameter) {
49
- items.push({ type: "static", data: _jsx(SeparatorLine, { pT: 5, pR: 10, pB: 4, pL: 10 }) }, {
50
- type: "interactive",
51
- id: ObjectTypes.PARAMETER,
52
- stringTitle: getObjectTypeLabel(intl, ObjectTypes.PARAMETER),
53
- iconLeft: _jsx(MenuItemIcon, { type: icons[ObjectTypes.PARAMETER] }),
54
- data: ObjectTypes.PARAMETER,
55
- });
41
+ const inCatalogItems = [
42
+ ...(showMetricEditor ? [interactiveItem(ObjectTypes.METRIC, false)] : []),
43
+ ...(showParameter ? [interactiveItem(ObjectTypes.PARAMETER, false)] : []),
44
+ ];
45
+ if (inCatalogItems.length === 0) {
46
+ return redirectItems;
56
47
  }
57
- return items;
58
- }, [intl, showParameter]);
48
+ return [
49
+ ...redirectItems,
50
+ { type: "static", data: _jsx(SeparatorLine, { pT: 5, pR: 10, pB: 4, pL: 10 }) },
51
+ ...inCatalogItems,
52
+ ];
53
+ }, [intl, showParameter, showMetricEditor]);
59
54
  const handleSelect = useCallback((item, _event) => {
60
55
  if (item.data === ObjectTypes.PARAMETER) {
61
56
  setIsParameterDialogOpen(true);
62
57
  }
58
+ else if (item.data === ObjectTypes.METRIC && showMetricEditor) {
59
+ setIsMetricDialogOpen(true);
60
+ }
63
61
  else {
64
62
  onCreateObject(item.data);
65
63
  }
66
- }, [onCreateObject]);
64
+ }, [onCreateObject, showMetricEditor]);
67
65
  const handleParameterDialogClose = useCallback(() => {
68
66
  setIsParameterDialogOpen(false);
69
67
  }, []);
70
68
  const handleParameterCreated = useCallback(() => {
71
69
  void refetchObjectType(ObjectTypes.PARAMETER);
72
70
  }, [refetchObjectType]);
71
+ const handleMetricDialogClose = useCallback(() => {
72
+ setIsMetricDialogOpen(false);
73
+ }, []);
74
+ const handleMetricCreated = useCallback(() => {
75
+ void refetchObjectType(ObjectTypes.METRIC);
76
+ }, [refetchObjectType]);
73
77
  return (_jsxs(_Fragment, { children: [_jsx(Dropdown, { alignPoints: [{ align: "br tr" }], renderButton: ({ toggleDropdown, buttonRef, ariaAttributes, accessibilityConfig }) => (_jsx(UiButton, { ref: (element) => {
74
78
  buttonRef.current = element;
75
79
  }, label: intl.formatMessage({ id: "analyticsCatalog.create" }), onClick: toggleDropdown, variant: "primary", iconBefore: "plus", iconAfter: "navigateDown", accessibilityConfig: {
@@ -78,7 +82,7 @@ export function CreateObjectButton({ onCreateObject, showParameter }) {
78
82
  ariaHaspopup: ariaAttributes["aria-haspopup"],
79
83
  ariaControls: ariaAttributes["aria-controls"],
80
84
  iconAriaHidden: true,
81
- } })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(UiMenu, { items: items, minWidth: 180, onClose: closeDropdown, onSelect: handleSelect, shouldCloseOnSelect: true, ariaAttributes: ariaAttributes, containerTopPadding: "small", containerBottomPadding: "small" })), closeOnEscape: true, autofocusOnOpen: true }), isParameterDialogOpen ? (_jsx(ParameterCreateDialog, { onClose: handleParameterDialogClose, onCreated: handleParameterCreated })) : null] }));
85
+ } })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(UiMenu, { items: items, minWidth: 180, onClose: closeDropdown, onSelect: handleSelect, shouldCloseOnSelect: true, ariaAttributes: ariaAttributes, containerTopPadding: "small", containerBottomPadding: "small" })), closeOnEscape: true, autofocusOnOpen: true }), isParameterDialogOpen ? (_jsx(ParameterCreateDialog, { onClose: handleParameterDialogClose, onCreated: handleParameterCreated })) : null, isMetricDialogOpen ? (_jsx(MetricCreateDialog, { onClose: handleMetricDialogClose, onCreated: handleMetricCreated })) : null] }));
82
86
  }
83
87
  function MenuItemIcon({ type }) {
84
88
  return _jsx(UiIcon, { type: type, size: 14, color: "complementary-5" });
@@ -759,6 +759,118 @@ export declare const en_US: {
759
759
  text: string;
760
760
  crowdinContext: string;
761
761
  };
762
+ "analyticsCatalog.metric.dialog.create.title": {
763
+ text: string;
764
+ crowdinContext: string;
765
+ };
766
+ "analyticsCatalog.metric.dialog.edit.title": {
767
+ text: string;
768
+ crowdinContext: string;
769
+ };
770
+ "analyticsCatalog.metric.dialog.sectionHeader": {
771
+ text: string;
772
+ crowdinContext: string;
773
+ };
774
+ "analyticsCatalog.metric.dialog.sectionHeader.tooltip": {
775
+ text: string;
776
+ crowdinContext: string;
777
+ };
778
+ "analyticsCatalog.metric.dialog.create.submit": {
779
+ text: string;
780
+ crowdinContext: string;
781
+ };
782
+ "analyticsCatalog.metric.dialog.edit.submit": {
783
+ text: string;
784
+ crowdinContext: string;
785
+ };
786
+ "analyticsCatalog.metric.actions.openInEditor": {
787
+ text: string;
788
+ crowdinContext: string;
789
+ };
790
+ "analyticsCatalog.metric.dialog.edit.duplicate": {
791
+ text: string;
792
+ crowdinContext: string;
793
+ };
794
+ "analyticsCatalog.metric.dialog.edit.idImmutable": {
795
+ text: string;
796
+ crowdinContext: string;
797
+ };
798
+ "analyticsCatalog.metric.dialog.cancel": {
799
+ text: string;
800
+ crowdinContext: string;
801
+ };
802
+ "analyticsCatalog.metric.dialog.help": {
803
+ text: string;
804
+ crowdinContext: string;
805
+ };
806
+ "analyticsCatalog.metric.dialog.submit.error": {
807
+ text: string;
808
+ crowdinContext: string;
809
+ };
810
+ "analyticsCatalog.metric.validation.empty": {
811
+ text: string;
812
+ crowdinContext: string;
813
+ };
814
+ "analyticsCatalog.metric.validation.syntax": {
815
+ text: string;
816
+ crowdinContext: string;
817
+ };
818
+ "analyticsCatalog.metric.validation.invalidStructure": {
819
+ text: string;
820
+ crowdinContext: string;
821
+ };
822
+ "analyticsCatalog.metric.validation.missingMaql": {
823
+ text: string;
824
+ crowdinContext: string;
825
+ };
826
+ "analyticsCatalog.metric.validation.invalidTags": {
827
+ text: string;
828
+ crowdinContext: string;
829
+ };
830
+ "analyticsCatalog.dialog.error.label": {
831
+ text: string;
832
+ crowdinContext: string;
833
+ };
834
+ "analyticsCatalog.metric.create.defaultTitle": {
835
+ text: string;
836
+ crowdinContext: string;
837
+ };
838
+ "analyticsCatalog.metric.create.success": {
839
+ text: string;
840
+ crowdinContext: string;
841
+ };
842
+ "analyticsCatalog.metric.update.success": {
843
+ text: string;
844
+ crowdinContext: string;
845
+ };
846
+ "analyticsCatalog.metric.load.error": {
847
+ text: string;
848
+ crowdinContext: string;
849
+ };
850
+ "analyticsCatalog.metric.dialog.delete.title": {
851
+ text: string;
852
+ crowdinContext: string;
853
+ };
854
+ "analyticsCatalog.metric.dialog.delete.body": {
855
+ text: string;
856
+ crowdinContext: string;
857
+ };
858
+ "analyticsCatalog.metric.dialog.delete.usageWarning": {
859
+ text: string;
860
+ crowdinContext: string;
861
+ };
862
+ "analyticsCatalog.metric.dialog.delete.submit": {
863
+ text: string;
864
+ crowdinContext: string;
865
+ };
866
+ "analyticsCatalog.metric.delete.success": {
867
+ text: string;
868
+ crowdinContext: string;
869
+ };
870
+ "analyticsCatalog.metric.delete.error": {
871
+ text: string;
872
+ crowdinContext: string;
873
+ };
762
874
  "analyticsCatalog.share.button": {
763
875
  text: string;
764
876
  crowdinContext: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiyBjB,CAAC"}
1
+ {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAi5BjB,CAAC"}