@finos/legend-application-studio 28.18.113 → 28.18.115

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 (53) hide show
  1. package/lib/components/ElementIconUtils.d.ts.map +1 -1
  2. package/lib/components/ElementIconUtils.js +3 -1
  3. package/lib/components/ElementIconUtils.js.map +1 -1
  4. package/lib/components/editor/editor-group/EditorGroup.d.ts.map +1 -1
  5. package/lib/components/editor/editor-group/EditorGroup.js +5 -0
  6. package/lib/components/editor/editor-group/EditorGroup.js.map +1 -1
  7. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts +26 -0
  8. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.d.ts.map +1 -0
  9. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js +117 -0
  10. package/lib/components/editor/editor-group/dataProduct/DataPoductEditor.js.map +1 -0
  11. package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
  12. package/lib/components/editor/side-bar/CreateNewElementModal.js +2 -0
  13. package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
  14. package/lib/index.css +2 -2
  15. package/lib/index.css.map +1 -1
  16. package/lib/package.json +1 -1
  17. package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
  18. package/lib/stores/editor/EditorGraphState.js +4 -1
  19. package/lib/stores/editor/EditorGraphState.js.map +1 -1
  20. package/lib/stores/editor/EditorStore.d.ts.map +1 -1
  21. package/lib/stores/editor/EditorStore.js +1 -0
  22. package/lib/stores/editor/EditorStore.js.map +1 -1
  23. package/lib/stores/editor/EditorTabManagerState.d.ts.map +1 -1
  24. package/lib/stores/editor/EditorTabManagerState.js +5 -1
  25. package/lib/stores/editor/EditorTabManagerState.js.map +1 -1
  26. package/lib/stores/editor/NewElementState.d.ts.map +1 -1
  27. package/lib/stores/editor/NewElementState.js +4 -1
  28. package/lib/stores/editor/NewElementState.js.map +1 -1
  29. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +56 -0
  30. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -0
  31. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +175 -0
  32. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -0
  33. package/lib/stores/editor/utils/ModelClassifierUtils.d.ts +1 -0
  34. package/lib/stores/editor/utils/ModelClassifierUtils.d.ts.map +1 -1
  35. package/lib/stores/editor/utils/ModelClassifierUtils.js +2 -0
  36. package/lib/stores/editor/utils/ModelClassifierUtils.js.map +1 -1
  37. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +19 -0
  38. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -0
  39. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +25 -0
  40. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -0
  41. package/package.json +13 -13
  42. package/src/components/ElementIconUtils.tsx +3 -0
  43. package/src/components/editor/editor-group/EditorGroup.tsx +4 -0
  44. package/src/components/editor/editor-group/dataProduct/DataPoductEditor.tsx +307 -0
  45. package/src/components/editor/side-bar/CreateNewElementModal.tsx +2 -0
  46. package/src/stores/editor/EditorGraphState.ts +3 -0
  47. package/src/stores/editor/EditorStore.ts +1 -0
  48. package/src/stores/editor/EditorTabManagerState.ts +4 -0
  49. package/src/stores/editor/NewElementState.ts +4 -0
  50. package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +260 -0
  51. package/src/stores/editor/utils/ModelClassifierUtils.ts +2 -0
  52. package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +36 -0
  53. package/tsconfig.json +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataProductEditorState.js","sourceRoot":"","sources":["../../../../../../src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,7 @@ export declare enum PACKAGEABLE_ELEMENT_TYPE {
46
46
  DATA = "DATA",
47
47
  SNOWFLAKE_APP = "SNOWFLAKE_APP",
48
48
  HOSTED_SERVICE = "HOSTED_SERVICE",
49
+ _DATA_PRODUCT = "BETA_DATA_PRODUCT",
49
50
  TEMPORARY__LOCAL_CONNECTION = "LOCAL_CONNECTION",
50
51
  INTERNAL__UnknownElement = "UNKNOWN"
51
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ModelClassifierUtils.d.ts","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,IAAI,EAMV,MAAM,qBAAqB,CAAC;AAG7B,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,KAAG,mBAajD,CAAC;AAEF,oBAAY,wBAAwB;IAClC,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,qBAAqB,0BAA0B;IAC/C,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAEjC,2BAA2B,qBAAqB;IAChD,wBAAwB,YAAY;CACrC;AAED,oBAAY,qCAAqC;IAC/C,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,KAAK,UAAU;CAChB"}
1
+ {"version":3,"file":"ModelClassifierUtils.d.ts","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,IAAI,EAMV,MAAM,qBAAqB,CAAC;AAG7B,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,KAAG,mBAajD,CAAC;AAEF,oBAAY,wBAAwB;IAClC,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,qBAAqB,0BAA0B;IAC/C,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,eAAe,oBAAoB;IACnC,wBAAwB,6BAA6B;IACrD,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAEjC,aAAa,sBAAsB;IAEnC,2BAA2B,qBAAqB;IAChD,wBAAwB,YAAY;CACrC;AAED,oBAAY,qCAAqC;IAC/C,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,KAAK,UAAU;CAChB"}
@@ -66,6 +66,8 @@ export var PACKAGEABLE_ELEMENT_TYPE;
66
66
  PACKAGEABLE_ELEMENT_TYPE["DATA"] = "DATA";
67
67
  PACKAGEABLE_ELEMENT_TYPE["SNOWFLAKE_APP"] = "SNOWFLAKE_APP";
68
68
  PACKAGEABLE_ELEMENT_TYPE["HOSTED_SERVICE"] = "HOSTED_SERVICE";
69
+ // New Strategical Data Product
70
+ PACKAGEABLE_ELEMENT_TYPE["_DATA_PRODUCT"] = "BETA_DATA_PRODUCT";
69
71
  PACKAGEABLE_ELEMENT_TYPE["TEMPORARY__LOCAL_CONNECTION"] = "LOCAL_CONNECTION";
70
72
  PACKAGEABLE_ELEMENT_TYPE["INTERNAL__UnknownElement"] = "UNKNOWN";
71
73
  })(PACKAGEABLE_ELEMENT_TYPE || (PACKAGEABLE_ELEMENT_TYPE = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"ModelClassifierUtils.js","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,EACL,WAAW,EACX,OAAO,EACP,aAAa,EACb,IAAI,GACL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,0CAAmB,CAAA;IACnB,oCAAa,CAAA;IACb,8CAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAuB,EAAE;IACtE,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC,WAAW,CAAC;IACzC,CAAC;SAAM,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,yBAAyB,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAN,IAAY,wBA2BX;AA3BD,WAAY,wBAAwB;IAClC,mDAAuB,CAAA;IACvB,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,uDAA2B,CAAA;IAC3B,2CAAe,CAAA;IACf,uDAA2B,CAAA;IAC3B,iDAAqB,CAAA;IACrB,+CAAmB,CAAA;IACnB,yCAAa,CAAA;IACb,+DAAmC,CAAA;IACnC,iDAAqB,CAAA;IACrB,2DAA+B,CAAA;IAC/B,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,2EAA+C,CAAA;IAC/C,qDAAyB,CAAA;IACzB,+CAAmB,CAAA;IACnB,+DAAmC,CAAA;IACnC,iFAAqD,CAAA;IACrD,2DAA+B,CAAA;IAC/B,yCAAa,CAAA;IACb,2DAA+B,CAAA;IAC/B,6DAAiC,CAAA;IAEjC,4EAAgD,CAAA;IAChD,gEAAoC,CAAA;AACtC,CAAC,EA3BW,wBAAwB,KAAxB,wBAAwB,QA2BnC;AAED,MAAM,CAAN,IAAY,qCAOX;AAPD,WAAY,qCAAqC;IAC/C,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,4EAAmC,CAAA;IACnC,kEAAyB,CAAA;IACzB,wDAAe,CAAA;AACjB,CAAC,EAPW,qCAAqC,KAArC,qCAAqC,QAOhD"}
1
+ {"version":3,"file":"ModelClassifierUtils.js","sourceRoot":"","sources":["../../../../src/stores/editor/utils/ModelClassifierUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,EACL,WAAW,EACX,OAAO,EACP,aAAa,EACb,IAAI,GACL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,kDAA2B,CAAA;IAC3B,0CAAmB,CAAA;IACnB,oCAAa,CAAA;IACb,8CAAuB,CAAA;AACzB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAuB,EAAE;IACtE,IAAI,IAAI,YAAY,aAAa,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACvC,CAAC;SAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC,WAAW,CAAC;IACzC,CAAC;SAAM,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QAChC,OAAO,mBAAmB,CAAC,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;QACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,yBAAyB,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAN,IAAY,wBA6BX;AA7BD,WAAY,wBAAwB;IAClC,mDAAuB,CAAA;IACvB,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,uDAA2B,CAAA;IAC3B,2CAAe,CAAA;IACf,uDAA2B,CAAA;IAC3B,iDAAqB,CAAA;IACrB,+CAAmB,CAAA;IACnB,yCAAa,CAAA;IACb,+DAAmC,CAAA;IACnC,iDAAqB,CAAA;IACrB,2DAA+B,CAAA;IAC/B,+CAAmB,CAAA;IACnB,+CAAmB,CAAA;IACnB,2EAA+C,CAAA;IAC/C,qDAAyB,CAAA;IACzB,+CAAmB,CAAA;IACnB,+DAAmC,CAAA;IACnC,iFAAqD,CAAA;IACrD,2DAA+B,CAAA;IAC/B,yCAAa,CAAA;IACb,2DAA+B,CAAA;IAC/B,6DAAiC,CAAA;IACjC,+BAA+B;IAC/B,+DAAmC,CAAA;IAEnC,4EAAgD,CAAA;IAChD,gEAAoC,CAAA;AACtC,CAAC,EA7BW,wBAAwB,KAAxB,wBAAwB,QA6BnC;AAED,MAAM,CAAN,IAAY,qCAOX;AAPD,WAAY,qCAAqC;IAC/C,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,wDAAe,CAAA;IACf,4EAAmC,CAAA;IACnC,kEAAyB,CAAA;IACzB,wDAAe,CAAA;AACjB,CAAC,EAPW,qCAAqC,KAArC,qCAAqC,QAOhD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { type AccessPoint, type DataProduct } from '@finos/legend-graph';
17
+ export declare const dataProduct_deleteAccessPoint: (product: DataProduct, accessPoint: AccessPoint) => void;
18
+ export declare const dataProduct_addAccessPoint: (product: DataProduct, accessPoint: AccessPoint) => void;
19
+ //# sourceMappingURL=DSL_DataProduct_GraphModifierHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DSL_DataProduct_GraphModifierHelper.d.ts","sourceRoot":"","sources":["../../../src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,6BAA6B,YAC9B,WAAW,eAAe,WAAW,SAGhD,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAC3B,WAAW,eAAe,WAAW,SAGhD,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { observe_AccessPoint, } from '@finos/legend-graph';
17
+ import { addUniqueEntry, deleteEntry } from '@finos/legend-shared';
18
+ import { action } from 'mobx';
19
+ export const dataProduct_deleteAccessPoint = action((product, accessPoint) => {
20
+ deleteEntry(product.accessPoints, accessPoint);
21
+ });
22
+ export const dataProduct_addAccessPoint = action((product, accessPoint) => {
23
+ addUniqueEntry(product.accessPoints, observe_AccessPoint(accessPoint));
24
+ });
25
+ //# sourceMappingURL=DSL_DataProduct_GraphModifierHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DSL_DataProduct_GraphModifierHelper.js","sourceRoot":"","sources":["../../../src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CACjD,CAAC,OAAoB,EAAE,WAAwB,EAAE,EAAE;IACjD,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAC9C,CAAC,OAAoB,EAAE,WAAwB,EAAE,EAAE;IACjD,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC,CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finos/legend-application-studio",
3
- "version": "28.18.113",
3
+ "version": "28.18.115",
4
4
  "description": "Legend Studio application core",
5
5
  "keywords": [
6
6
  "legend",
@@ -45,18 +45,18 @@
45
45
  "test:watch": "jest --watch"
46
46
  },
47
47
  "dependencies": {
48
- "@finos/legend-application": "16.0.35",
49
- "@finos/legend-art": "7.1.92",
50
- "@finos/legend-code-editor": "2.0.60",
51
- "@finos/legend-data-cube": "0.1.23",
52
- "@finos/legend-graph": "32.1.18",
53
- "@finos/legend-lego": "2.0.64",
54
- "@finos/legend-query-builder": "4.16.24",
55
- "@finos/legend-server-depot": "6.0.87",
56
- "@finos/legend-server-sdlc": "5.3.55",
57
- "@finos/legend-server-showcase": "0.2.51",
58
- "@finos/legend-shared": "11.0.10",
59
- "@finos/legend-storage": "3.0.129",
48
+ "@finos/legend-application": "16.0.36",
49
+ "@finos/legend-art": "7.1.93",
50
+ "@finos/legend-code-editor": "2.0.62",
51
+ "@finos/legend-data-cube": "0.1.25",
52
+ "@finos/legend-graph": "32.1.20",
53
+ "@finos/legend-lego": "2.0.66",
54
+ "@finos/legend-query-builder": "4.16.26",
55
+ "@finos/legend-server-depot": "6.0.88",
56
+ "@finos/legend-server-sdlc": "5.3.56",
57
+ "@finos/legend-server-showcase": "0.2.52",
58
+ "@finos/legend-shared": "11.0.11",
59
+ "@finos/legend-storage": "3.0.130",
60
60
  "@testing-library/dom": "10.4.0",
61
61
  "@testing-library/react": "16.2.0",
62
62
  "@types/react": "19.0.10",
@@ -44,6 +44,7 @@ import {
44
44
  PURE_SnowflakeAppIcon,
45
45
  LaunchIcon,
46
46
  LinkIcon,
47
+ PURE_DataProductIcon,
47
48
  } from '@finos/legend-art';
48
49
  import { PACKAGEABLE_ELEMENT_TYPE } from '../stores/editor/utils/ModelClassifierUtils.js';
49
50
 
@@ -90,6 +91,8 @@ export const getElementTypeIcon = (
90
91
  return <PURE_ServiceIcon />;
91
92
  case PACKAGEABLE_ELEMENT_TYPE.CONNECTION:
92
93
  return <PURE_ConnectionIcon />;
94
+ case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
95
+ return <PURE_DataProductIcon />;
93
96
  case PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION:
94
97
  return <LinkIcon />;
95
98
  case PACKAGEABLE_ELEMENT_TYPE.RUNTIME:
@@ -88,6 +88,8 @@ import {
88
88
  } from '../../workspace-setup/WorkspaceSetup.js';
89
89
  import { HostedServiceFunctionActivatorEditorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.js';
90
90
  import { HostedServiceFunctionActivatorEditor } from './function-activator/HostedServiceFunctionActivatorEditor.js';
91
+ import { DataProductEditorState } from '../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
92
+ import { DataProductEditor } from './dataProduct/DataPoductEditor.js';
91
93
 
92
94
  export const ViewerEditorGroupSplashScreen: React.FC = () => {
93
95
  const commandListWidth = 300;
@@ -274,6 +276,8 @@ export const EditorGroup = observer(() => {
274
276
  return <MappingEditor key={currentTabState.uuid} />;
275
277
  } else if (currentTabState instanceof ServiceEditorState) {
276
278
  return <ServiceEditor key={currentTabState.uuid} />;
279
+ } else if (currentTabState instanceof DataProductEditorState) {
280
+ return <DataProductEditor key={currentTabState.uuid} />;
277
281
  } else if (currentTabState instanceof PackageableRuntimeEditorState) {
278
282
  return <PackageableRuntimeEditor key={currentTabState.uuid} />;
279
283
  } else if (
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { observer } from 'mobx-react-lite';
18
+ import { useEditorStore } from '../../EditorStoreProvider.js';
19
+ import {
20
+ DataProductEditorState,
21
+ LakehouseAccessPointState,
22
+ } from '../../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
23
+ import {
24
+ clsx,
25
+ LockIcon,
26
+ PanelContent,
27
+ PanelHeader,
28
+ PanelHeaderActions,
29
+ Dialog,
30
+ PanelDivider,
31
+ InputWithInlineValidation,
32
+ useResizeDetector,
33
+ AccessPointIcon,
34
+ TimesIcon,
35
+ PlusIcon,
36
+ PanelHeaderActionItem,
37
+ } from '@finos/legend-art';
38
+ import { useRef, useState, useEffect } from 'react';
39
+ import { filterByType } from '@finos/legend-shared';
40
+ import { InlineLambdaEditor } from '@finos/legend-query-builder';
41
+ import { flowResult } from 'mobx';
42
+
43
+ const NewAccessPointAccessPOint = observer(
44
+ (props: { dataProductEditorState: DataProductEditorState }) => {
45
+ const { dataProductEditorState: dataProductEditorState } = props;
46
+ const accessPointInputRef = useRef<HTMLInputElement>(null);
47
+ const [id, setId] = useState<string | undefined>(undefined);
48
+ const handleIdChange: React.ChangeEventHandler<HTMLInputElement> = (
49
+ event,
50
+ ) => setId(event.target.value);
51
+ const handleClose = () => {
52
+ dataProductEditorState.setAccessPointModal(false);
53
+ };
54
+ const handleSubmit = () => {
55
+ if (id) {
56
+ dataProductEditorState.addAccessPoint(id);
57
+ handleClose();
58
+ }
59
+ };
60
+ const handleEnter = (): void => {
61
+ accessPointInputRef.current?.focus();
62
+ };
63
+ const disableCreateButton =
64
+ id === '' ||
65
+ id === undefined ||
66
+ dataProductEditorState.accessPointStates
67
+ .map((e) => e.accessPoint.id)
68
+ .includes(id);
69
+ const errors =
70
+ id === ''
71
+ ? `ID is empty`
72
+ : dataProductEditorState.accessPointStates
73
+ .map((e) => e.accessPoint.id)
74
+ .includes(id ?? '')
75
+ ? `ID already exists`
76
+ : undefined;
77
+ return (
78
+ <Dialog
79
+ open={true}
80
+ onClose={handleClose}
81
+ TransitionProps={{
82
+ onEnter: handleEnter,
83
+ }}
84
+ classes={{
85
+ container: 'search-modal__container',
86
+ }}
87
+ PaperProps={{
88
+ classes: {
89
+ root: 'search-modal__inner-container',
90
+ },
91
+ }}
92
+ >
93
+ <form
94
+ onSubmit={(event) => {
95
+ event.preventDefault();
96
+ handleSubmit();
97
+ }}
98
+ className={clsx('modal search-modal', {
99
+ 'modal--dark': true,
100
+ })}
101
+ >
102
+ <div className="modal__title">New Access Point</div>
103
+ <div>
104
+ <InputWithInlineValidation
105
+ className={clsx('input new-access-point-modal__id-input', {
106
+ 'input--dark': true,
107
+ })}
108
+ ref={accessPointInputRef}
109
+ spellCheck={false}
110
+ value={id}
111
+ onChange={handleIdChange}
112
+ placeholder="Access Point ID"
113
+ error={errors}
114
+ />
115
+ </div>
116
+ <PanelDivider />
117
+ <div className="search-modal__actions">
118
+ <button
119
+ className={clsx('btn btn--primary', {
120
+ 'btn--dark': true,
121
+ })}
122
+ disabled={disableCreateButton}
123
+ >
124
+ Create
125
+ </button>
126
+ </div>
127
+ </form>
128
+ </Dialog>
129
+ );
130
+ },
131
+ );
132
+
133
+ export const LakehouseDataProductAcccessPointEditor = observer(
134
+ (props: {
135
+ accessPointState: LakehouseAccessPointState;
136
+ isReadOnly: boolean;
137
+ }) => {
138
+ const { accessPointState } = props;
139
+ const accessPoint = accessPointState.accessPoint;
140
+ const productEditorState = accessPointState.state;
141
+ const lambdaEditorState = accessPointState.lambdaState;
142
+ const propertyHasParserError = productEditorState.accessPointStates
143
+ .filter(filterByType(LakehouseAccessPointState))
144
+ .find((pm) => pm.lambdaState.parserError);
145
+ return (
146
+ <div
147
+ className={clsx('access-point-editor', {
148
+ backdrop__element: propertyHasParserError,
149
+ })}
150
+ >
151
+ <div className="access-point-editor__metadata">
152
+ <div className={clsx('access-point-editor__name', {})}>
153
+ <div className="access-point-editor__name__label">
154
+ {accessPoint.id}
155
+ </div>
156
+ </div>
157
+ <div className="access-point-editor__info">
158
+ <div
159
+ className={clsx('access-point-editor__type')}
160
+ title={accessPoint.targetEnvironment}
161
+ >
162
+ <div className="access-point-editor__type__label">
163
+ {accessPoint.targetEnvironment}
164
+ </div>
165
+ </div>
166
+ </div>
167
+ </div>
168
+ <div className="access-point-editor__content">
169
+ <div className="access-point-editor__generic-entry">
170
+ <div className="access-point-editor__entry__container">
171
+ <div className="access-point-editor__entry">
172
+ <InlineLambdaEditor
173
+ className={'access-point-editor__lambda-editor'}
174
+ disabled={
175
+ lambdaEditorState.val.state
176
+ .isConvertingTransformLambdaObjects
177
+ }
178
+ lambdaEditorState={lambdaEditorState}
179
+ forceBackdrop={Boolean(lambdaEditorState.parserError)}
180
+ />
181
+ </div>
182
+ </div>
183
+ <button
184
+ className="access-point-editor__generic-entry__remove-btn"
185
+ onClick={() => {
186
+ productEditorState.deleteAccessPoint(accessPointState);
187
+ }}
188
+ tabIndex={-1}
189
+ title="Remove"
190
+ >
191
+ <TimesIcon />
192
+ </button>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ );
197
+ },
198
+ );
199
+
200
+ const DataProductEditorSplashScreen = observer(
201
+ (props: { dataProductEditorState: DataProductEditorState }) => {
202
+ const { dataProductEditorState } = props;
203
+ const logoWidth = 280;
204
+ const logoHeight = 270;
205
+ const [showLogo, setShowLogo] = useState(false);
206
+ const { ref, height, width } = useResizeDetector<HTMLDivElement>();
207
+
208
+ useEffect(() => {
209
+ setShowLogo((width ?? 0) > logoWidth && (height ?? 0) > logoHeight);
210
+ }, [height, width]);
211
+
212
+ return (
213
+ <div ref={ref} className="data-product-editor__splash-screen">
214
+ <div
215
+ onClick={() => dataProductEditorState.setAccessPointModal(true)}
216
+ className="data-product-editor__splash-screen__label"
217
+ >
218
+ Add Access Point
219
+ </div>
220
+ <div className="data-product-editor__splash-screen__spacing"></div>
221
+ <div
222
+ onClick={() => dataProductEditorState.setAccessPointModal(true)}
223
+ title="Add new Access Point"
224
+ className={clsx('data-product-editor__splash-screen__logo', {
225
+ 'data-product-editor__splash-screen__logo--hidden': !showLogo,
226
+ })}
227
+ >
228
+ <AccessPointIcon />
229
+ </div>
230
+ </div>
231
+ );
232
+ },
233
+ );
234
+
235
+ export const DataProductEditor = observer(() => {
236
+ const editorStore = useEditorStore();
237
+ const dataProductEditorState =
238
+ editorStore.tabManagerState.getCurrentEditorState(DataProductEditorState);
239
+ const product = dataProductEditorState.product;
240
+ const accessPointStates = dataProductEditorState.accessPointStates;
241
+ const isReadOnly = dataProductEditorState.isReadOnly;
242
+ const openNewModal = () => {
243
+ dataProductEditorState.setAccessPointModal(true);
244
+ };
245
+
246
+ useEffect(() => {
247
+ flowResult(dataProductEditorState.convertAccessPointsFuncObjects()).catch(
248
+ dataProductEditorState.editorStore.applicationStore.alertUnhandledError,
249
+ );
250
+ }, [dataProductEditorState]);
251
+
252
+ return (
253
+ <div className="data-product-editor">
254
+ <div className="panel">
255
+ <div className="panel__header">
256
+ <div className="panel__header__title">
257
+ {isReadOnly && (
258
+ <div className="uml-element-editor__header__lock">
259
+ <LockIcon />
260
+ </div>
261
+ )}
262
+ <div className="panel__header__title__label">data product</div>
263
+ <div className="panel__header__title__content">{product.name}</div>
264
+ </div>
265
+ </div>
266
+ <div className="panel">
267
+ <PanelHeader>
268
+ <div className="panel__header__title">
269
+ <div className="panel__header__title__content">ACCESS POINTS</div>
270
+ </div>
271
+ <PanelHeaderActions>
272
+ <PanelHeaderActionItem
273
+ className="panel__header__action"
274
+ onClick={openNewModal}
275
+ disabled={isReadOnly}
276
+ title="Create new access point"
277
+ >
278
+ <PlusIcon />
279
+ </PanelHeaderActionItem>
280
+ </PanelHeaderActions>
281
+ </PanelHeader>
282
+ <PanelContent>
283
+ {accessPointStates
284
+ .filter(filterByType(LakehouseAccessPointState))
285
+ .map((apState) => (
286
+ <LakehouseDataProductAcccessPointEditor
287
+ key={apState.accessPoint.id}
288
+ isReadOnly={isReadOnly}
289
+ accessPointState={apState}
290
+ />
291
+ ))}
292
+ {!accessPointStates.length && (
293
+ <DataProductEditorSplashScreen
294
+ dataProductEditorState={dataProductEditorState}
295
+ />
296
+ )}
297
+ </PanelContent>
298
+ {dataProductEditorState.accessPointModal && (
299
+ <NewAccessPointAccessPOint
300
+ dataProductEditorState={dataProductEditorState}
301
+ />
302
+ )}
303
+ </div>
304
+ </div>
305
+ </div>
306
+ );
307
+ });
@@ -88,6 +88,8 @@ export const getElementTypeLabel = (
88
88
  return 'data';
89
89
  case PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION:
90
90
  return 'local connection';
91
+ case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
92
+ return 'lakehouse data product';
91
93
  default: {
92
94
  if (type) {
93
95
  const extraElementTypeLabelGetters = editorStore.pluginManager
@@ -90,6 +90,7 @@ import {
90
90
  SnowflakeApp,
91
91
  GraphEntities,
92
92
  HostedService,
93
+ DataProduct,
93
94
  } from '@finos/legend-graph';
94
95
  import { CONFIGURATION_EDITOR_TAB } from './editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js';
95
96
  import { PACKAGEABLE_ELEMENT_TYPE } from './utils/ModelClassifierUtils.js';
@@ -854,6 +855,8 @@ export class EditorGraphState {
854
855
  return PACKAGEABLE_ELEMENT_TYPE.SNOWFLAKE_APP;
855
856
  } else if (element instanceof HostedService) {
856
857
  return PACKAGEABLE_ELEMENT_TYPE.HOSTED_SERVICE;
858
+ } else if (element instanceof DataProduct) {
859
+ return PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT;
857
860
  }
858
861
  const extraElementTypeLabelGetters = this.editorStore.pluginManager
859
862
  .getApplicationPlugins()
@@ -1161,6 +1161,7 @@ export class EditorStore implements CommandRegistrar {
1161
1161
  PACKAGEABLE_ELEMENT_TYPE.RUNTIME,
1162
1162
  PACKAGEABLE_ELEMENT_TYPE.MAPPING,
1163
1163
  PACKAGEABLE_ELEMENT_TYPE.SERVICE,
1164
+ PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT,
1164
1165
  this.applicationStore.config.options
1165
1166
  .TEMPORARY__enableLocalConnectionBuilder
1166
1167
  ? PACKAGEABLE_ELEMENT_TYPE.TEMPORARY__LOCAL_CONNECTION
@@ -35,6 +35,7 @@ import {
35
35
  INTERNAL__UnknownFunctionActivator,
36
36
  SnowflakeApp,
37
37
  HostedService,
38
+ DataProduct,
38
39
  } from '@finos/legend-graph';
39
40
  import {
40
41
  type Clazz,
@@ -64,6 +65,7 @@ import { INTERNAL__UnknownFunctionActivatorEdtiorState } from './editor-state/el
64
65
  import { SnowflakeAppFunctionActivatorEdtiorState } from './editor-state/element-editor-state/function-activator/SnowflakeAppFunctionActivatorEditorState.js';
65
66
  import { HostedServiceFunctionActivatorEditorState } from './editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.js';
66
67
  import { ArtifactGenerationViewerState } from './editor-state/ArtifactGenerationViewerState.js';
68
+ import { DataProductEditorState } from './editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
67
69
 
68
70
  export class EditorTabManagerState extends TabManagerState {
69
71
  readonly editorStore: EditorStore;
@@ -173,6 +175,8 @@ export class EditorTabManagerState extends TabManagerState {
173
175
  return new MappingEditorState(this.editorStore, element);
174
176
  } else if (element instanceof Service) {
175
177
  return new ServiceEditorState(this.editorStore, element);
178
+ } else if (element instanceof DataProduct) {
179
+ return new DataProductEditorState(this.editorStore, element);
176
180
  } else if (element instanceof GenerationSpecification) {
177
181
  return new GenerationSpecificationEditorState(this.editorStore, element);
178
182
  } else if (element instanceof FileGenerationSpecification) {
@@ -84,6 +84,7 @@ import {
84
84
  RuntimePointer,
85
85
  GenericTypeExplicitReference,
86
86
  GenericType,
87
+ DataProduct,
87
88
  } from '@finos/legend-graph';
88
89
  import type { DSL_Mapping_LegendStudioApplicationPlugin_Extension } from '../extensions/DSL_Mapping_LegendStudioApplicationPlugin_Extension.js';
89
90
  import {
@@ -999,6 +1000,9 @@ export class NewElementState {
999
1000
  case PACKAGEABLE_ELEMENT_TYPE.GENERATION_SPECIFICATION:
1000
1001
  element = new GenerationSpecification(name);
1001
1002
  break;
1003
+ case PACKAGEABLE_ELEMENT_TYPE._DATA_PRODUCT:
1004
+ element = new DataProduct(name);
1005
+ break;
1002
1006
  default: {
1003
1007
  const extraNewElementFromStateCreators = this.editorStore.pluginManager
1004
1008
  .getApplicationPlugins()