@gooddata/sdk-ui-catalog 11.55.0-alpha.2 → 11.55.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 (140) hide show
  1. package/esm/asCode/descriptor.d.ts +2 -1
  2. package/esm/asCode/descriptor.d.ts.map +1 -1
  3. package/esm/asCode/useMutationPort.d.ts.map +1 -1
  4. package/esm/asCode/useMutationPort.js +3 -1
  5. package/esm/asCode/validateYaml.d.ts +3 -3
  6. package/esm/asCode/validateYaml.d.ts.map +1 -1
  7. package/esm/asCode/validateYaml.js +21 -5
  8. package/esm/catalogDetail/CatalogDetailContent.d.ts.map +1 -1
  9. package/esm/catalogDetail/CatalogDetailContent.js +6 -4
  10. package/esm/catalogDetail/hooks/useCatalogItemLoad.d.ts.map +1 -1
  11. package/esm/catalogDetail/hooks/useCatalogItemLoad.js +13 -5
  12. package/esm/catalogDetail/hooks/useCatalogItemUpdate.d.ts.map +1 -1
  13. package/esm/catalogDetail/hooks/useCatalogItemUpdate.js +17 -3
  14. package/esm/catalogDetail/share/guards.d.ts +0 -7
  15. package/esm/catalogDetail/share/guards.d.ts.map +1 -1
  16. package/esm/catalogDetail/share/guards.js +0 -14
  17. package/esm/catalogItem/converter.d.ts.map +1 -1
  18. package/esm/catalogItem/converter.js +1 -0
  19. package/esm/catalogItem/permission.d.ts +9 -2
  20. package/esm/catalogItem/permission.d.ts.map +1 -1
  21. package/esm/catalogItem/permission.js +26 -2
  22. package/esm/catalogItem/query.d.ts +2 -2
  23. package/esm/catalogItem/query.d.ts.map +1 -1
  24. package/esm/catalogItem/query.js +7 -4
  25. package/esm/catalogItem/types.d.ts +5 -1
  26. package/esm/catalogItem/types.d.ts.map +1 -1
  27. package/esm/catalogItem/useCatalogEndpoints.d.ts.map +1 -1
  28. package/esm/catalogItem/useCatalogEndpoints.js +5 -1
  29. package/esm/computedAttribute/computedAttributeDescriptor.d.ts.map +1 -1
  30. package/esm/computedAttribute/computedAttributeDescriptor.js +4 -3
  31. package/esm/computedAttribute/computedAttributeMutationPort.d.ts +1 -1
  32. package/esm/computedAttribute/computedAttributeMutationPort.d.ts.map +1 -1
  33. package/esm/computedAttribute/computedAttributeMutationPort.js +2 -1
  34. package/esm/computedAttribute/computedAttributeSerialization.d.ts +6 -4
  35. package/esm/computedAttribute/computedAttributeSerialization.d.ts.map +1 -1
  36. package/esm/computedAttribute/computedAttributeSerialization.js +16 -8
  37. package/esm/computedAttribute/computedAttributeValidation.d.ts +1 -1
  38. package/esm/computedAttribute/computedAttributeValidation.d.ts.map +1 -1
  39. package/esm/computedAttribute/computedAttributeValidation.js +6 -1
  40. package/esm/localization/bundles/de-DE.localization-bundle.d.ts +20 -0
  41. package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  42. package/esm/localization/bundles/de-DE.localization-bundle.js +20 -0
  43. package/esm/localization/bundles/en-AU.localization-bundle.d.ts +20 -0
  44. package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  45. package/esm/localization/bundles/en-AU.localization-bundle.js +20 -0
  46. package/esm/localization/bundles/en-GB.localization-bundle.d.ts +20 -0
  47. package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  48. package/esm/localization/bundles/en-GB.localization-bundle.js +20 -0
  49. package/esm/localization/bundles/en-US.localization-bundle.d.ts +8 -0
  50. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  51. package/esm/localization/bundles/en-US.localization-bundle.js +12 -4
  52. package/esm/localization/bundles/es-419.localization-bundle.d.ts +20 -0
  53. package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  54. package/esm/localization/bundles/es-419.localization-bundle.js +20 -0
  55. package/esm/localization/bundles/es-ES.localization-bundle.d.ts +20 -0
  56. package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  57. package/esm/localization/bundles/es-ES.localization-bundle.js +20 -0
  58. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +20 -0
  59. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  60. package/esm/localization/bundles/fi-FI.localization-bundle.js +20 -0
  61. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +20 -0
  62. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  63. package/esm/localization/bundles/fr-CA.localization-bundle.js +20 -0
  64. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +20 -0
  65. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  66. package/esm/localization/bundles/fr-FR.localization-bundle.js +20 -0
  67. package/esm/localization/bundles/id-ID.localization-bundle.d.ts +20 -0
  68. package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  69. package/esm/localization/bundles/id-ID.localization-bundle.js +20 -0
  70. package/esm/localization/bundles/it-IT.localization-bundle.d.ts +20 -0
  71. package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  72. package/esm/localization/bundles/it-IT.localization-bundle.js +20 -0
  73. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +20 -0
  74. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  75. package/esm/localization/bundles/ja-JP.localization-bundle.js +20 -0
  76. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +20 -0
  77. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  78. package/esm/localization/bundles/ko-KR.localization-bundle.js +20 -0
  79. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +20 -0
  80. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  81. package/esm/localization/bundles/nl-NL.localization-bundle.js +20 -0
  82. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +20 -0
  83. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  84. package/esm/localization/bundles/pl-PL.localization-bundle.js +20 -0
  85. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +20 -0
  86. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  87. package/esm/localization/bundles/pt-BR.localization-bundle.js +20 -0
  88. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +20 -0
  89. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  90. package/esm/localization/bundles/pt-PT.localization-bundle.js +20 -0
  91. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +20 -0
  92. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  93. package/esm/localization/bundles/ru-RU.localization-bundle.js +20 -0
  94. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +20 -0
  95. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  96. package/esm/localization/bundles/sl-SI.localization-bundle.js +20 -0
  97. package/esm/localization/bundles/th-TH.localization-bundle.d.ts +20 -0
  98. package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  99. package/esm/localization/bundles/th-TH.localization-bundle.js +20 -0
  100. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +20 -0
  101. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  102. package/esm/localization/bundles/tr-TR.localization-bundle.js +20 -0
  103. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +20 -0
  104. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  105. package/esm/localization/bundles/uk-UA.localization-bundle.js +20 -0
  106. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +20 -0
  107. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  108. package/esm/localization/bundles/vi-VN.localization-bundle.js +20 -0
  109. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +20 -0
  110. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  111. package/esm/localization/bundles/zh-HK.localization-bundle.js +21 -1
  112. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +20 -0
  113. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  114. package/esm/localization/bundles/zh-Hans.localization-bundle.js +20 -0
  115. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +20 -0
  116. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  117. package/esm/localization/bundles/zh-Hant.localization-bundle.js +20 -0
  118. package/esm/metric/metricMutationPort.d.ts +2 -2
  119. package/esm/metric/metricMutationPort.d.ts.map +1 -1
  120. package/esm/metric/metricMutationPort.js +5 -2
  121. package/esm/metric/metricValidation.js +1 -1
  122. package/esm/parameter/parameterDescriptor.d.ts.map +1 -1
  123. package/esm/parameter/parameterDescriptor.js +1 -0
  124. package/esm/parameter/parameterSerialization.d.ts +8 -0
  125. package/esm/parameter/parameterSerialization.d.ts.map +1 -1
  126. package/esm/parameter/parameterSerialization.js +11 -1
  127. package/esm/parameter/parameterValidation.d.ts +1 -1
  128. package/esm/parameter/parameterValidation.d.ts.map +1 -1
  129. package/esm/parameter/parameterValidation.js +6 -0
  130. package/esm/sdk-ui-catalog.d.ts +3 -0
  131. package/esm/tabs/useRecommendedItems.d.ts.map +1 -1
  132. package/esm/tabs/useRecommendedItems.js +6 -4
  133. package/package.json +17 -18
  134. package/styles/css/codeDialog.css +3 -0
  135. package/styles/css/codeDialog.css.map +1 -1
  136. package/styles/css/detail.css +3 -0
  137. package/styles/css/detail.css.map +1 -1
  138. package/styles/css/main.css +3 -0
  139. package/styles/css/main.css.map +1 -1
  140. package/styles/scss/codeDialog.scss +4 -0
@@ -1,5 +1,6 @@
1
1
  import type { MessageDescriptor } from "react-intl";
2
2
  import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
+ import type { ISettings } from "@gooddata/sdk-model";
3
4
  import type { YamlCompletionSource } from "@gooddata/sdk-ui-kit";
4
5
  import type { ICatalogItem, ICatalogItemRef } from "../catalogItem/types.js";
5
6
  import type { ObjectTypes } from "../objectType/constants.js";
@@ -138,7 +139,7 @@ export interface IAsCodeDescriptor<TDef = unknown, TItem extends ICatalogItem =
138
139
  useIsItemEditable?(item: TItem): boolean;
139
140
  /** Extra requirement for creation, ANDed with the feature flag and manage permission. */
140
141
  useCreateGate?(): boolean;
141
- createMutationPort(backend: IAnalyticalBackend, workspace: string): IAsCodeMutationPort<TDef, TItem>;
142
+ createMutationPort(backend: IAnalyticalBackend, workspace: string, settings: ISettings | undefined): IAsCodeMutationPort<TDef, TItem>;
142
143
  emptyDefinition(defaultTitle: string): TDef;
143
144
  seed: AsCodeSeed<TDef, TItem>;
144
145
  referenceCounted?: AsCodeReferenceCount<TItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/asCode/descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/asCode/descriptor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,gBAAgB,GACtB,OAAO,WAAW,CAAC,MAAM,GACzB,OAAO,WAAW,CAAC,SAAS,GAC5B,OAAO,WAAW,CAAC,kBAAkB,GACrC,OAAO,WAAW,CAAC,aAAa,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,aAAa,EAAE,iBAAiB,CAAC;IACjC,aAAa,EAAE,iBAAiB,CAAC;IACjC,aAAa,EAAE,iBAAiB,CAAC;IACjC,oBAAoB,EAAE,iBAAiB,CAAC;IACxC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAE/B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,YAAY,EAAE,iBAAiB,CAAC;IAChC,aAAa,EAAE,iBAAiB,CAAC;IACjC,WAAW,EAAE,iBAAiB,CAAC;CAClC;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,CAAC,IAAI,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC7B;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE9B,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAEtF;AAED,gBAAgB;AAChB,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,gBAAgB;AAChB,MAAM,WAAW,cAAc,CAAC,IAAI;IAChC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wFAAwF;IACxF,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,mBAAmB,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClF,kGAAkG;IAClG,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY;IAC1F,MAAM,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,SAAS,YAAY,IACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAChE;IACI,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,SAAS,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAER,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,SAAS,YAAY,EACvD,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,GAC9B,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;IAAE,SAAS,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAE5E;AAED,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,UAAU,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAExF;AAED,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,YAAY,IAAI;IAC3D,4FAA4F;IAC5F,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,YAAY,EAAE,iBAAiB,CAAC;IAChC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,IAAI;IAC/B,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,IAAI,GAAG,OAAO,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY;IACxF,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,QAAQ,EAAE,eAAe,CAAC;IAE1B,4DAA4D;IAC5D,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1C;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,iBAAiB,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACzC,yFAAyF;IACzF,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,kBAAkB,CACd,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAChC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEpC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,KAAK,SAAS,YAAY,EACnE,UAAU,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,GAC3C,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAEhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMutationPort.d.ts","sourceRoot":"","sources":["../../src/asCode/useMutationPort.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,mBAAmB,CAIlF"}
1
+ {"version":3,"file":"useMutationPort.d.ts","sourceRoot":"","sources":["../../src/asCode/useMutationPort.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,UAAU,EAAE,iBAAiB,GAAG,mBAAmB,CAQlF"}
@@ -1,9 +1,11 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
4
+ import { useFeatureFlags } from "../permission/PermissionsContext.js";
4
5
  /** @internal */
5
6
  export function useMutationPort(descriptor) {
6
7
  const backend = useBackendStrict();
7
8
  const workspace = useWorkspaceStrict();
8
- return useMemo(() => descriptor.createMutationPort(backend, workspace), [backend, descriptor, workspace]);
9
+ const settings = useFeatureFlags();
10
+ return useMemo(() => descriptor.createMutationPort(backend, workspace, settings), [backend, descriptor, workspace, settings]);
9
11
  }
@@ -32,9 +32,9 @@ type ValidateYamlOptions<TData> = {
32
32
  fixedIdentifier?: string;
33
33
  };
34
34
  /**
35
- * Runs the steps every as-code YAML shares: reject empty input, parse (strict) YAML, validate against
36
- * the schema, and enforce identity immutability. The schema itself and the conversion of validated data
37
- * into a definition are the caller's.
35
+ * Runs the steps every as-code YAML shares: reject empty input, parse (strict) YAML, drop a blank
36
+ * identity, validate against the schema, and enforce identity immutability. The schema itself and the
37
+ * conversion of validated data into a definition are the caller's.
38
38
  */
39
39
  export declare function validateYaml<TData extends {
40
40
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validateYaml.d.ts","sourceRoot":"","sources":["../../src/asCode/validateYaml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,CAAC,MAAM,UAAU,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,IAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACzB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAA;CAAE,GACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9E,KAAK,eAAe,CAAC,KAAK,IAAI;IAC1B,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;KAAE,CAAC;CAC3G,CAAC;AAEF,KAAK,mBAAmB,CAAC,KAAK,IAAI;IAC9B,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,qGAAqG;IACrG,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACtD,KAAK,EAAE,MAAM,EACb,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,mBAAmB,CAAC,KAAK,CAAC,GACxD,cAAc,CAAC,KAAK,CAAC,CAsBvB"}
1
+ {"version":3,"file":"validateYaml.d.ts","sourceRoot":"","sources":["../../src/asCode/validateYaml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,CAAC,MAAM,UAAU,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,IAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACzB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAA;CAAE,GACvD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9E,KAAK,eAAe,CAAC,KAAK,IAAI;IAC1B,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;KAAE,CAAC;CAC3G,CAAC;AAEF,KAAK,mBAAmB,CAAC,KAAK,IAAI;IAC9B,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,qGAAqG;IACrG,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACtD,KAAK,EAAE,MAAM,EACb,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,mBAAmB,CAAC,KAAK,CAAC,GACxD,cAAc,CAAC,KAAK,CAAC,CAuBvB"}
@@ -1,9 +1,9 @@
1
1
  // (C) 2026 GoodData Corporation
2
2
  import { parse as parseYaml } from "yaml";
3
3
  /**
4
- * Runs the steps every as-code YAML shares: reject empty input, parse (strict) YAML, validate against
5
- * the schema, and enforce identity immutability. The schema itself and the conversion of validated data
6
- * into a definition are the caller's.
4
+ * Runs the steps every as-code YAML shares: reject empty input, parse (strict) YAML, drop a blank
5
+ * identity, validate against the schema, and enforce identity immutability. The schema itself and the
6
+ * conversion of validated data into a definition are the caller's.
7
7
  */
8
8
  export function validateYaml(value, { schema, fixedIdentifier }) {
9
9
  if (value.trim() === "") {
@@ -16,12 +16,28 @@ export function validateYaml(value, { schema, fixedIdentifier }) {
16
16
  catch {
17
17
  return { ok: false, kind: "syntax" };
18
18
  }
19
- const result = schema.safeParse(parsed);
19
+ const document = withoutBlankIdentity(parsed);
20
+ const result = schema.safeParse(document);
20
21
  if (!result.success) {
21
- return { ok: false, kind: "schema", error: result.error, parsed };
22
+ return { ok: false, kind: "schema", error: result.error, parsed: document };
22
23
  }
23
24
  if (fixedIdentifier !== undefined && result.data.id !== fixedIdentifier) {
24
25
  return { ok: false, kind: "idImmutable" };
25
26
  }
26
27
  return { ok: true, data: result.data };
27
28
  }
29
+ /**
30
+ * Drops an `id` the author left blank, so the template can offer the key without forcing a value.
31
+ *
32
+ * The seeded template renders `id: ` for an object that has none yet; left untouched it parses to
33
+ * `null`, and a whitespace-only value to a blank string. Either means "no identity chosen" — the
34
+ * server derives one on create — so the key is removed rather than passed on as a value the schema
35
+ * would reject or the backend would take literally.
36
+ */
37
+ function withoutBlankIdentity(parsed) {
38
+ if (!parsed || typeof parsed !== "object" || !("id" in parsed)) {
39
+ return parsed;
40
+ }
41
+ const { id, ...rest } = parsed;
42
+ return id === null || (typeof id === "string" && id.trim() === "") ? rest : parsed;
43
+ }
@@ -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,2CAkN5B"}
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"}
@@ -6,7 +6,7 @@ import { useIntl } from "react-intl";
6
6
  import {} from "@gooddata/sdk-model";
7
7
  import { useLocalStorage } from "@gooddata/sdk-ui";
8
8
  import { UiSkeleton, UiTabs } from "@gooddata/sdk-ui-kit";
9
- import { canEditCatalogItem } from "../catalogItem/permission.js";
9
+ import { canEditCatalogItem, canShareCatalogItem } 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";
@@ -25,7 +25,7 @@ import { useCatalogItemUpdate } from "./hooks/useCatalogItemUpdate.js";
25
25
  import { CatalogItemAccessRow } from "./share/CatalogItemAccessRow.js";
26
26
  import { CatalogItemShareDialog } from "./share/CatalogItemShareDialog.js";
27
27
  import { CatalogItemShareProvider } from "./share/CatalogItemShareProvider.js";
28
- import { isShareableCatalogItem, isSharingEnabledForItem, toShareTarget } from "./share/guards.js";
28
+ import { isShareableCatalogItem, toShareTarget } from "./share/guards.js";
29
29
  import { useShareableLabels } from "./share/useShareableLabels.js";
30
30
  const Tabs = {
31
31
  METADATA: "metadata",
@@ -48,9 +48,11 @@ export function CatalogDetailContent({ objectId, objectType, objectDefinition, o
48
48
  onDelete: onCatalogItemDelete,
49
49
  onError: onCatalogItemUpdateError,
50
50
  });
51
- const canEdit = canEditCatalogItem(permissions, item);
51
+ const canEdit = canEditCatalogItem(permissions, item, settings);
52
52
  const enableColumnLevelPermissions = Boolean(settings?.enableColumnLevelPermissions);
53
- const shareableItem = item && isShareableCatalogItem(item) && isSharingEnabledForItem(item, settings) ? item : undefined;
53
+ const shareableItem = item && isShareableCatalogItem(item) && canShareCatalogItem(permissions, item, settings)
54
+ ? item
55
+ : undefined;
54
56
  const shareTarget = useMemo(() => (shareableItem ? toShareTarget(shareableItem) : undefined), [shareableItem]);
55
57
  // Labels of the shared attribute drive both the header info row and the per-grantee
56
58
  // label-scope picker; fetched once here and passed to the share provider.
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogItemLoad.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemLoad.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,mBAAmB,GAAG;IACjG,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB,CAmDA"}
1
+ {"version":3,"file":"useCatalogItemLoad.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemLoad.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAgB,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,mBAAmB,GAAG;IACjG,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB,CAuDA"}
@@ -1,15 +1,17 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { convertError, isNotFound, useBackendStrict, useCancelablePromise, useWorkspaceStrict, } from "@gooddata/sdk-ui";
3
3
  import { convertAttributeToCatalogItem, convertComputedAttributeToCatalogItem, convertDashboardToCatalogItem, convertDataSetToCatalogItem, convertFactToCatalogItem, convertInsightToCatalogItem, convertMeasureToCatalogItem, convertParameterToCatalogItem, } from "../../catalogItem/converter.js";
4
- import { isCatalogItemLoaded } from "../../catalogItem/guards.js";
4
+ import { isCatalogItemLoaded, isCatalogItemMeasure } from "../../catalogItem/guards.js";
5
5
  import {} from "../../catalogItem/types.js";
6
6
  import {} from "../../objectType/types.js";
7
+ import { useFeatureFlag } from "../../permission/PermissionsContext.js";
7
8
  export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
8
9
  const id = objectId ?? objectDefinition?.identifier;
9
10
  const type = objectType ?? objectDefinition?.type;
10
- const filled = isCatalogItemLoaded(objectDefinition);
11
11
  const backend = useBackendStrict();
12
12
  const workspace = useWorkspaceStrict();
13
+ const loadPermissions = useFeatureFlag("enableMetricPermissions");
14
+ const filled = isCatalogItemLoaded(objectDefinition) && !awaitsPermissions(objectDefinition, loadPermissions);
13
15
  const { status, error, result } = useCancelablePromise({
14
16
  promise: () => {
15
17
  // Object id and type are required
@@ -23,12 +25,12 @@ export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
23
25
  // A 404 must reach CatalogDetailStatus as a NotFoundSdkError so isNotFound() shows
24
26
  // the not-found page; convertError maps it. Other errors are rethrown untouched so
25
27
  // their original status/message survives in the generic error description.
26
- return loadObjectDefinition(backend.workspace(workspace), id, type).catch((e) => {
28
+ return loadObjectDefinition(backend.workspace(workspace), id, type, loadPermissions).catch((e) => {
27
29
  const converted = convertError(e);
28
30
  throw isNotFound(converted) ? converted : e;
29
31
  });
30
32
  },
31
- }, [backend, workspace, id, type, filled]);
33
+ }, [backend, workspace, id, type, filled, loadPermissions]);
32
34
  // Object id is required
33
35
  if (!id) {
34
36
  return {
@@ -49,7 +51,12 @@ export function useCatalogItemLoad({ objectDefinition, objectId, objectType }) {
49
51
  item: result,
50
52
  };
51
53
  }
52
- async function loadObjectDefinition(workspace, id, type) {
54
+ // A metric handed over by a producer that cannot return permissions (a semantic-search hit) has to
55
+ // be fetched for them, or its own EDIT and SHARE would read as absent.
56
+ function awaitsPermissions(item, loadPermissions) {
57
+ return loadPermissions && isCatalogItemMeasure(item) && item.permissions === undefined;
58
+ }
59
+ async function loadObjectDefinition(workspace, id, type, loadPermissions) {
53
60
  switch (type) {
54
61
  case "attribute":
55
62
  return workspace
@@ -97,6 +104,7 @@ async function loadObjectDefinition(workspace, id, type) {
97
104
  identifier: id,
98
105
  }, {
99
106
  loadUserData: true,
107
+ ...(loadPermissions ? { loadPermissions: true } : {}),
100
108
  })
101
109
  .then(convertMeasureToCatalogItem);
102
110
  case "parameter":
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogItemUpdate.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemUpdate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EACH,KAAK,YAAY,EAEjB,KAAK,eAAe,EACvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAID,wBAAgB,oBAAoB,CAAC,EACjC,WAAW,EACX,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,EACV,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;EAwSvB"}
1
+ {"version":3,"file":"useCatalogItemUpdate.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/hooks/useCatalogItemUpdate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EACH,KAAK,YAAY,EAEjB,KAAK,eAAe,EACvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpC;AAID,wBAAgB,oBAAoB,CAAC,EACjC,WAAW,EACX,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,EACV,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;EAySvB"}
@@ -38,9 +38,10 @@ export function useCatalogItemUpdate({ currentUser, objectId, objectType, object
38
38
  }, [mounted, onError, onUpdate]);
39
39
  /** Sync local state with an item mutation persisted outside this hook; does not re-persist. */
40
40
  const applyItemUpdate = useCallback((updated) => {
41
- setItem(updated);
42
- onUpdate?.(updated);
43
- }, [onUpdate]);
41
+ const next = keepMeasurePermissions(item, updated);
42
+ setItem(next);
43
+ onUpdate?.(next);
44
+ }, [item, onUpdate]);
44
45
  /** Sync local state with an item deletion persisted outside this hook; does not re-persist. */
45
46
  const applyItemDelete = useCallback((ref) => {
46
47
  setItem(null);
@@ -188,6 +189,19 @@ function updateItem(backend, workspace, user, item, disabled, updater, onUpdate,
188
189
  const persistFn = persist ?? ((nextItem) => updateCatalogItem(backend, workspace, nextItem));
189
190
  Promise.resolve(persistFn(newItem)).catch(onError);
190
191
  }
192
+ // The update endpoint cannot return permissions, and a save does not change them.
193
+ function keepMeasurePermissions(previous, updated) {
194
+ if (!previous || !isCatalogItemMeasure(previous) || !isCatalogItemMeasure(updated)) {
195
+ return updated;
196
+ }
197
+ if (previous.identifier !== updated.identifier) {
198
+ return updated;
199
+ }
200
+ if (updated.permissions || !previous.permissions) {
201
+ return updated;
202
+ }
203
+ return { ...updated, permissions: previous.permissions };
204
+ }
191
205
  function makeUpdatedItem(user, item, changes) {
192
206
  return {
193
207
  ...item,
@@ -1,5 +1,4 @@
1
1
  import type { IObjectPermissionsObject } from "@gooddata/sdk-backend-spi";
2
- import { type ISettings } from "@gooddata/sdk-model";
3
2
  import type { ICatalogItem } from "../../catalogItem/types.js";
4
3
  import type { ShareableCatalogItem } from "./types.js";
5
4
  /**
@@ -8,12 +7,6 @@ import type { ShareableCatalogItem } from "./types.js";
8
7
  * sharing an attribute.
9
8
  */
10
9
  export declare function isShareableCatalogItem(item: ICatalogItem): item is ShareableCatalogItem;
11
- /**
12
- * Tests whether sharing is enabled for the item: attributes and facts are gated by
13
- * the column-level-permissions flag, measures by the metric-permissions flag. The
14
- * two flags are independent — a workspace may enable either on its own.
15
- */
16
- export declare function isSharingEnabledForItem(item: ICatalogItem, settings: ISettings | undefined): boolean;
17
10
  /**
18
11
  * Build the backend target descriptor from a shareable catalog item. The kind
19
12
  * enum matches the catalog item's discriminator, so the mapping is direct.
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/guards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,qBAAqB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,oBAAoB,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAQpG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,wBAAwB,CAKlF"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/catalogDetail/share/guards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAI1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,IAAI,oBAAoB,CAEvF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,wBAAwB,CAKlF"}
@@ -9,20 +9,6 @@ import { isCatalogItemAttribute, isCatalogItemFact, isCatalogItemMeasure } from
9
9
  export function isShareableCatalogItem(item) {
10
10
  return isCatalogItemAttribute(item) || isCatalogItemFact(item) || isCatalogItemMeasure(item);
11
11
  }
12
- /**
13
- * Tests whether sharing is enabled for the item: attributes and facts are gated by
14
- * the column-level-permissions flag, measures by the metric-permissions flag. The
15
- * two flags are independent — a workspace may enable either on its own.
16
- */
17
- export function isSharingEnabledForItem(item, settings) {
18
- if (isCatalogItemMeasure(item)) {
19
- return Boolean(settings?.enableMetricPermissions);
20
- }
21
- if (isCatalogItemAttribute(item) || isCatalogItemFact(item)) {
22
- return Boolean(settings?.enableColumnLevelPermissions);
23
- }
24
- return false;
25
- }
26
12
  /**
27
13
  * Build the backend target descriptor from a shareable catalog item. The kind
28
14
  * enum matches the catalog item's discriminator, so the mapping is direct.
@@ -1 +1 @@
1
- {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/catalogItem/converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,KAAK,EAUb,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EACR,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EAExB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CACtC,MAAM,EACA,QAAQ,GACR,gBAAgB,GAChB,sBAAsB,GACtB,wBAAwB,GACxB,gCAAgC,GAChC,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,SAAS,GAChB,YAAY,CA0Bd;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,UAAU,GAAG,gBAAgB,GACzC,qBAAqB,CAiBvB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,mBAAmB,CAkBtF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAsBhG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAgBpF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAiBxG;AAED,wBAAgB,qCAAqC,CACjD,iBAAiB,EAAE,gCAAgC,GACpD,6BAA6B,CAgB/B;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAgBxG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAehG;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAW1D;AAcD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,+BAA+B,GAAG,YAAY,CAuBrG"}
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/catalogItem/converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACrC,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,KAAK,EAUb,MAAM,qBAAqB,CAAC;AAK7B,OAAO,KAAK,EACR,YAAY,EACZ,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EAExB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,0BAA0B,CACtC,MAAM,EACA,QAAQ,GACR,gBAAgB,GAChB,sBAAsB,GACtB,wBAAwB,GACxB,gCAAgC,GAChC,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,SAAS,GAChB,YAAY,CA0Bd;AAED,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,UAAU,GAAG,gBAAgB,GACzC,qBAAqB,CAiBvB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,mBAAmB,CAkBtF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAuBhG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAgBpF;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAiBxG;AAED,wBAAgB,qCAAqC,CACjD,iBAAiB,EAAE,gCAAgC,GACpD,6BAA6B,CAgB/B;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,wBAAwB,GAAG,qBAAqB,CAgBxG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,sBAAsB,GAAG,mBAAmB,CAehG;AAED,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAW1D;AAcD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,+BAA+B,GAAG,YAAY,CAuBrG"}
@@ -81,6 +81,7 @@ export function convertMeasureToCatalogItem(measure) {
81
81
  updatedAt: updatedAt ? parseBackendDate(updatedAt) : null,
82
82
  isLocked: measure.isLocked ?? false,
83
83
  isEditable: true,
84
+ permissions: measure.permissions,
84
85
  isHidden: measure.isHidden,
85
86
  isHiddenFromKda: measure.isHiddenFromKda,
86
87
  format,
@@ -1,4 +1,11 @@
1
- import type { IWorkspacePermissions } from "@gooddata/sdk-model";
1
+ import { type ISettings, type IWorkspacePermissions } from "@gooddata/sdk-model";
2
2
  import type { ICatalogItem } from "./types.js";
3
- export declare function canEditCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null): boolean;
3
+ export declare function canEditCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null, settings?: ISettings): boolean;
4
+ /**
5
+ * Whether the user may share the item. Metrics are gated by the metric-permissions flag and then by
6
+ * their own SHARE, deliberately not derived from EDIT. Attributes and facts have no object-level
7
+ * permissions, so their column-level-permissions flag decides and the backend refuses the access
8
+ * list to anyone who may not manage them. The two flags are independent.
9
+ */
10
+ export declare function canShareCatalogItem(workspacePermissions?: IWorkspacePermissions, item?: ICatalogItem | null, settings?: ISettings): boolean;
4
11
  //# sourceMappingURL=permission.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/catalogItem/permission.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,WA8B1G"}
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/catalogItem/permission.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,SAAS,EACd,KAAK,qBAAqB,EAI7B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAC9B,oBAAoB,CAAC,EAAE,qBAAqB,EAC5C,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,SAAS,WAwCvB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,oBAAoB,CAAC,EAAE,qBAAqB,EAC5C,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,SAAS,WAmBvB"}
@@ -1,5 +1,7 @@
1
- // (C) 2025 GoodData Corporation
2
- export function canEditCatalogItem(workspacePermissions, item) {
1
+ // (C) 2025-2026 GoodData Corporation
2
+ import { canEditMetric, canShareMetric, } from "@gooddata/sdk-model";
3
+ import { isCatalogItemAttribute, isCatalogItemFact, isCatalogItemMeasure } from "./guards.js";
4
+ export function canEditCatalogItem(workspacePermissions, item, settings) {
3
5
  // If the workspace permissions or the item is not provided, the user cannot update it.
4
6
  if (!workspacePermissions || !item) {
5
7
  return false;
@@ -17,6 +19,10 @@ export function canEditCatalogItem(workspacePermissions, item) {
17
19
  if (!item.isEditable) {
18
20
  return false;
19
21
  }
22
+ // A metric is edited through its own EDIT permission.
23
+ if (isCatalogItemMeasure(item)) {
24
+ return canEditMetric(item.permissions, workspacePermissions, Boolean(settings?.enableMetricPermissions));
25
+ }
20
26
  // If the user has WS.Analyze permission to create visualizations, they can update the item if it is a visualization
21
27
  // or a dashboard to which they have access.
22
28
  if (workspacePermissions.canCreateVisualization) {
@@ -25,3 +31,21 @@ export function canEditCatalogItem(workspacePermissions, item) {
25
31
  }
26
32
  return false;
27
33
  }
34
+ /**
35
+ * Whether the user may share the item. Metrics are gated by the metric-permissions flag and then by
36
+ * their own SHARE, deliberately not derived from EDIT. Attributes and facts have no object-level
37
+ * permissions, so their column-level-permissions flag decides and the backend refuses the access
38
+ * list to anyone who may not manage them. The two flags are independent.
39
+ */
40
+ export function canShareCatalogItem(workspacePermissions, item, settings) {
41
+ if (!workspacePermissions || !item) {
42
+ return false;
43
+ }
44
+ if (isCatalogItemMeasure(item)) {
45
+ return canShareMetric(item.permissions, workspacePermissions, Boolean(settings?.enableMetricPermissions));
46
+ }
47
+ if (isCatalogItemAttribute(item) || isCatalogItemFact(item)) {
48
+ return Boolean(settings?.enableColumnLevelPermissions);
49
+ }
50
+ return false;
51
+ }
@@ -3,7 +3,7 @@ import { type IMeasureMetadataObject, type IMeasureMetadataObjectDefinition, typ
3
3
  import type { ICatalogItem, ICatalogItemQueryOptions } from "./types.js";
4
4
  export declare function getDashboardsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IDashboardsQuery;
5
5
  export declare function getInsightsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IInsightsQuery;
6
- export declare function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IMeasuresQuery;
6
+ export declare function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize, loadPermissions }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IMeasuresQuery;
7
7
  export declare function getParametersQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IParametersQuery;
8
8
  export declare function getComputedAttributesQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IComputedAttributesQuery;
9
9
  export declare function getAttributesQuery({ backend, workspace, search, origin, id, excludeId, tags, excludeTags, isHidden, pageSize }: ICatalogItemQueryOptions): import("@gooddata/sdk-backend-spi").IAttributesQuery;
@@ -15,7 +15,7 @@ export declare function updateParameterCatalogItem(backend: IAnalyticalBackend,
15
15
  id: string;
16
16
  }): Promise<import("@gooddata/sdk-model").IParameterMetadataObject>;
17
17
  export declare function deleteParameterCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
18
- export declare function createMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObjectDefinition): Promise<IMeasureMetadataObject>;
18
+ export declare function createMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObjectDefinition, loadPermissions?: boolean): Promise<IMeasureMetadataObject>;
19
19
  export declare function updateMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, measure: IMeasureMetadataObject): Promise<IMeasureMetadataObject>;
20
20
  export declare function deleteMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<void>;
21
21
  export declare function getMeasureCatalogItem(backend: IAnalyticalBackend, workspace: string, ref: ObjRef): Promise<IMeasureMetadataObject>;
@@ -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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"}
@@ -48,8 +48,8 @@ export function getInsightsQuery({ backend, workspace, search, origin, id, exclu
48
48
  })
49
49
  .withMethod("POST");
50
50
  }
51
- export function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize = PAGE_SIZE, }) {
52
- return backend
51
+ export function getMetricsQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, isHidden, certification, pageSize = PAGE_SIZE, loadPermissions = false, }) {
52
+ const query = backend
53
53
  .workspace(workspace)
54
54
  .measures()
55
55
  .getMeasuresQuery()
@@ -70,6 +70,9 @@ export function getMetricsQuery({ backend, workspace, search, origin, id, exclud
70
70
  certification,
71
71
  })
72
72
  .withMethod("POST");
73
+ // asked for only when needed, so a backend written against the previous SPI keeps working
74
+ // for as long as the feature is off
75
+ return loadPermissions ? query.withMetaInclude(["permissions"]) : query;
73
76
  }
74
77
  export function getParametersQuery({ backend, workspace, search, origin, id, excludeId, createdBy, excludeCreatedBy, tags, excludeTags, pageSize = PAGE_SIZE, }) {
75
78
  return backend
@@ -312,8 +315,8 @@ function updateComputedAttributeCatalogItemMeta(backend, workspace, item) {
312
315
  tags: item.tags,
313
316
  });
314
317
  }
315
- export function createMeasureCatalogItem(backend, workspace, measure) {
316
- return backend.workspace(workspace).measures().createMeasure(measure);
318
+ export function createMeasureCatalogItem(backend, workspace, measure, loadPermissions = false) {
319
+ return backend.workspace(workspace).measures().createMeasure(measure, { loadPermissions });
317
320
  }
318
321
  export function updateMeasureCatalogItem(backend, workspace, measure) {
319
322
  return backend.workspace(workspace).measures().updateMeasure(measure);
@@ -1,5 +1,5 @@
1
1
  import type { AnalyticsCatalogGenerateDescriptionObjectType, IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
2
- import type { CertificationStatus, IDataSetMetadataObject, IParameterDefinition, IdentifierRef, MetricType, ObjectOrigin } from "@gooddata/sdk-model";
2
+ import type { AccessGranularPermission, CertificationStatus, IDataSetMetadataObject, IParameterDefinition, IdentifierRef, MetricType, ObjectOrigin } from "@gooddata/sdk-model";
3
3
  import { type AsyncStatus } from "../async/types.js";
4
4
  import type { ObjectType } from "../objectType/types.js";
5
5
  /**
@@ -68,6 +68,8 @@ export interface ICatalogItemMeasure extends ICatalogItemBase {
68
68
  isHiddenFromKda?: boolean;
69
69
  format?: string | null;
70
70
  metricType?: MetricType;
71
+ /** Object-level permissions, only when the query asked for them. Undefined otherwise. */
72
+ permissions?: AccessGranularPermission[];
71
73
  }
72
74
  /**
73
75
  * Catalog item for parameters.
@@ -142,6 +144,8 @@ export interface ICatalogItemQueryOptions {
142
144
  isHidden?: boolean;
143
145
  certification?: boolean;
144
146
  pageSize?: number;
147
+ /** Ask for each metric's object-level permissions, kept on ICatalogItemMeasure.permissions. */
148
+ loadPermissions?: boolean;
145
149
  }
146
150
  export interface ICatalogItemSemanticSearchOptions {
147
151
  queryOptions: ICatalogItemQueryOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalogItem/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalogItem/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,6CAA6C,EAC7C,kBAAkB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACR,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,YAAY,EACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAClD,IAAI,EAAE,UAAU,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE;QACZ,MAAM,EAAE,mBAAmB,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAClB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,6BAA6B,GAC7B,qBAAqB,GACrB,gBAAgB,GAChB,mBAAmB,CAAC;AAE1B;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,qBAAqB,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,iBAAiB,EAAE,iBAAiB,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACvB,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,KAAK,GACL,KAAK,GACL,OAAO,GACP,QAAQ,GACR,WAAW,GACX,iBAAiB,GACjB,QAAQ,GACR,SAAS,GACT,UAAU,CAAC;AAEjB;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yFAAyF;IACzF,WAAW,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,oBAAoB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACnE,IAAI,EAAE,mBAAmB,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,sBAAsB,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACrC,YAAY,EACZ;IAAE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA;CAAE,CACzD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAC3C,YAAY,EACZ;IAAE,IAAI,EAAE,6CAA6C,CAAA;CAAE,CAC1D,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;AAExF,MAAM,WAAW,wBAAwB;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAC9C,YAAY,EAAE,wBAAwB,CAAC;IACvC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCatalogEndpoints.d.ts","sourceRoot":"","sources":["../../src/catalogItem/useCatalogEndpoints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,UAAU,YAAY,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC;IACnD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,yBAAyB,GACxC,wBAAwB,CA4C1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AA2CrE,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,YAAY,EAAE,wBAAwB,EACtC,KAAK,EAAE,aAAa,GAAG,SAAS,GACjC,YAAY,EAAE,CAEhB;AAED,wBAAgB,qBAAqB,IAAI,UAAU,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,SAAS,GAAE,SAAS,gBAAgB,EAAc,GACnD,YAAY,EAAE,CAqBhB"}
1
+ {"version":3,"file":"useCatalogEndpoints.d.ts","sourceRoot":"","sources":["../../src/catalogItem/useCatalogEndpoints.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,cAAc,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,8BAA8B,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC,CAAC;AAEF,UAAU,YAAY,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC;IACnD,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,yBAAyB,GACxC,wBAAwB,CAgD1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AA2CrE,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,UAAU,EAAE,EACnB,YAAY,EAAE,wBAAwB,EACtC,KAAK,EAAE,aAAa,GAAG,SAAS,GACjC,YAAY,EAAE,CAEhB;AAED,wBAAgB,qBAAqB,IAAI,UAAU,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,SAAS,GAAE,SAAS,gBAAgB,EAAc,GACnD,YAAY,EAAE,CAqBhB"}
@@ -3,11 +3,13 @@ import { useMemo } from "react";
3
3
  import { COMPUTED_ATTRIBUTE_FEATURE_FLAG } from "../computedAttribute/gate.js";
4
4
  import { ObjectTypes } from "../objectType/constants.js";
5
5
  import {} from "../objectType/types.js";
6
- import { useFeatureFlags } from "../permission/PermissionsContext.js";
6
+ import { useFeatureFlag, useFeatureFlags } from "../permission/PermissionsContext.js";
7
7
  import { getAttributesQuery, getComputedAttributesQuery, getDashboardsQuery, getDateDatasetsQuery, getFactsQuery, getInsightsQuery, getMetricsQuery, getParametersQuery, } from "./query.js";
8
8
  export function useCatalogQueryOptions(feedOptions, filterInputs) {
9
9
  const { backend, workspace, id, pageSize } = feedOptions;
10
10
  const { search, origin, createdBy, tags, qualityIds, isHidden, certification } = filterInputs;
11
+ // the detail panel reuses the listed item, so its permissions have to come with the list
12
+ const loadPermissions = useFeatureFlag("enableMetricPermissions");
11
13
  return useMemo(() => {
12
14
  let includeIds = id;
13
15
  let excludeIds = undefined;
@@ -33,6 +35,7 @@ export function useCatalogQueryOptions(feedOptions, filterInputs) {
33
35
  isHidden,
34
36
  certification,
35
37
  pageSize,
38
+ loadPermissions,
36
39
  };
37
40
  }, [
38
41
  backend,
@@ -46,6 +49,7 @@ export function useCatalogQueryOptions(feedOptions, filterInputs) {
46
49
  qualityIds,
47
50
  isHidden,
48
51
  certification,
52
+ loadPermissions,
49
53
  ]);
50
54
  }
51
55
  const ENDPOINTS = [
@@ -1 +1 @@
1
- {"version":3,"file":"computedAttributeDescriptor.d.ts","sourceRoot":"","sources":["../../src/computedAttribute/computedAttributeDescriptor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,qBAAqB,CAAC;AAQtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAkF7E;;GAEG;AACH,eAAO,MAAM,2BAA2B,gIAmCtC,CAAC"}
1
+ {"version":3,"file":"computedAttributeDescriptor.d.ts","sourceRoot":"","sources":["../../src/computedAttribute/computedAttributeDescriptor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,qBAAqB,CAAC;AAQtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAmF7E;;GAEG;AACH,eAAO,MAAM,2BAA2B,gIAmCtC,CAAC"}
@@ -39,6 +39,7 @@ const errorMessages = defineMessages({
39
39
  invalidStructure: { id: "analyticsCatalog.computedAttribute.validation.invalidStructure" },
40
40
  idImmutable: { id: "analyticsCatalog.computedAttribute.dialog.edit.idImmutable" },
41
41
  missingMaql: { id: "analyticsCatalog.computedAttribute.validation.missingMaql" },
42
+ invalidType: { id: "analyticsCatalog.computedAttribute.validation.invalidType" },
42
43
  invalidTags: { id: "analyticsCatalog.computedAttribute.validation.invalidTags" },
43
44
  });
44
45
  function useComputedAttributeEditing() {
@@ -83,9 +84,9 @@ export const computedAttributeDescriptor = defineAsCodeDescriptor({
83
84
  }),
84
85
  // The catalog item carries no MAQL, so the full object is fetched for editing.
85
86
  seed: { load: loadComputedAttribute, loadError: capabilityMessages.loadError },
86
- // Refuses the deletion while a visualization still groups by it, and names those
87
- // visualizations. The backend currently allows the delete (it would break the insight
88
- // silently), so the catalog is the guard.
87
+ // Refuses the deletion while a visualization, metric, or dashboard still references it,
88
+ // and names those objects. The backend currently allows the delete (it would break the
89
+ // dependents silently), so the catalog is the guard.
89
90
  referenceCounted: {
90
91
  load: listComputedAttributeReferences,
91
92
  usageWarning: capabilityMessages.deleteUsageWarning,
@@ -8,7 +8,7 @@ import type { ICatalogItemComputedAttribute } from "../catalogItem/types.js";
8
8
  export type IComputedAttributeMutationPort = IAsCodeMutationPort<IComputedAttributeMetadataObjectDefinition, ICatalogItemComputedAttribute>;
9
9
  /** Fetches the full computed attribute for editing (the catalog item carries no MAQL). @internal */
10
10
  export declare function loadComputedAttribute(backend: IAnalyticalBackend, workspace: string, item: ICatalogItemComputedAttribute): Promise<IComputedAttributeMetadataObjectDefinition>;
11
- /** Titles of the insights and metrics referencing a computed attribute. @internal */
11
+ /** Titles of the insights, metrics, and dashboards referencing a computed attribute. @internal */
12
12
  export declare function listComputedAttributeReferences(backend: IAnalyticalBackend, workspace: string, item: ICatalogItemComputedAttribute): Promise<string[]>;
13
13
  /**
14
14
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"computedAttributeMutationPort.d.ts","sourceRoot":"","sources":["../../src/computedAttribute/computedAttributeMutationPort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAEH,KAAK,0CAA0C,EAIlD,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,CAC5D,0CAA0C,EAC1C,6BAA6B,CAChC,CAAC;AAYF,oGAAoG;AACpG,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,6BAA6B,GACpC,OAAO,CAAC,0CAA0C,CAAC,CAKrD;AAED,qFAAqF;AACrF,wBAAsB,+BAA+B,CACjD,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,6BAA6B,GACpC,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CAClD,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAClB,8BAA8B,CAyBhC"}
1
+ {"version":3,"file":"computedAttributeMutationPort.d.ts","sourceRoot":"","sources":["../../src/computedAttribute/computedAttributeMutationPort.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAEH,KAAK,0CAA0C,EAIlD,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,CAC5D,0CAA0C,EAC1C,6BAA6B,CAChC,CAAC;AAYF,oGAAoG;AACpG,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,6BAA6B,GACpC,OAAO,CAAC,0CAA0C,CAAC,CAKrD;AAED,kGAAkG;AAClG,wBAAsB,+BAA+B,CACjD,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,6BAA6B,GACpC,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CAClD,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAClB,8BAA8B,CAyBhC"}