d2aura 23.0.37 → 23.0.38

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.
@@ -1,4 +1,3 @@
1
- import Entity from "../types/entity";
2
1
  export default class EntityComparisonUtils {
3
- static compare(a?: Entity, b?: Entity): string[];
2
+ static compare(a?: any, b?: any): string[];
4
3
  }
@@ -1,15 +1,8 @@
1
+ import { isEqual, union } from "lodash";
1
2
  export default class EntityComparisonUtils {
2
3
  static compare(a, b) {
3
- if (!a || !b) {
4
- return [];
5
- }
6
- const differences = [];
7
- Object.keys(a).forEach(key => {
8
- if (b[key] !== a[key]) {
9
- differences.push(key);
10
- }
11
- });
12
- return differences;
4
+ const keys = union(Object.keys(a), Object.keys(b));
5
+ return keys.filter(key => !isEqual(a[key], b[key]));
13
6
  }
14
7
  }
15
8
  //# sourceMappingURL=entityComparisonUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entityComparisonUtils.js","sourceRoot":"","sources":["../../../../api/comparison/entityComparisonUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAEtC,MAAM,CAAC,OAAO,CAAC,CAAU,EAAE,CAAU;QACjC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAEzB,IAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC;gBAClB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAC;IACvB,CAAC;CAEJ","sourcesContent":["import Entity from \"../types/entity\";\r\n\r\nexport default class EntityComparisonUtils {\r\n\r\n static compare(a?: Entity, b?: Entity): string[] {\r\n if (!a || !b) {\r\n return [];\r\n }\r\n\r\n const differences: string[] = [];\r\n Object.keys(a).forEach(key => {\r\n // @ts-ignore\r\n if(b[key] !== a[key]){\r\n differences.push(key);\r\n }\r\n })\r\n return differences;\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"entityComparisonUtils.js","sourceRoot":"","sources":["../../../../api/comparison/entityComparisonUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,QAAQ,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAEtC,MAAM,CAAC,OAAO,CAAC,CAAO,EAAE,CAAO;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;CAEJ","sourcesContent":["import {isEqual, union} from \"lodash\";\r\n\r\nexport default class EntityComparisonUtils {\r\n\r\n static compare(a?: any, b?: any): string[] {\r\n const keys = union(Object.keys(a), Object.keys(b));\r\n return keys.filter(key => !isEqual(a[key], b[key]));\r\n }\r\n\r\n}"]}
@@ -8,7 +8,6 @@ import DetailHeaderPanel from "../grid/detailHeaderPanel";
8
8
  import { Divider } from "antd";
9
9
  import EntityComparisonUtils from "../../../api/comparison/entityComparisonUtils";
10
10
  import { LocaleHolder } from "d2core/i18n/localeHolder";
11
- import cloneDeep from "lodash/cloneDeep";
12
11
  export default class EntityHistoryListPanel extends React.Component {
13
12
  constructor(props) {
14
13
  super(props);
@@ -102,7 +101,7 @@ export default class EntityHistoryListPanel extends React.Component {
102
101
  }
103
102
  getLeftContentEntity() {
104
103
  if (this.state.selectedData[0]) {
105
- const leftContentEntity = cloneDeep(this.state.selectedData[0]);
104
+ const leftContentEntity = this.state.selectedData[0];
106
105
  leftContentEntity.id = this.props.entity.id;
107
106
  return leftContentEntity;
108
107
  }
@@ -110,7 +109,7 @@ export default class EntityHistoryListPanel extends React.Component {
110
109
  }
111
110
  getRightContentEntity() {
112
111
  if (this.state.selectedData.length === 2) {
113
- const rightContentEntity = cloneDeep(this.state.selectedData[1]);
112
+ const rightContentEntity = this.state.selectedData[1];
114
113
  rightContentEntity.id = this.props.entity.id;
115
114
  return rightContentEntity;
116
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entityHistoryListPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/history/entityHistoryListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {GridApi, GridReadyEvent, IDatasource, IGetRowsParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport AuditableEntity from \"../../../api/types/auditableEntity\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\nimport {getDateTimeColumn, getStringColumn} from \"../grid/standardColumns\";\r\nimport {GeneralEntityColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport DetailHeaderPanel from \"../grid/detailHeaderPanel\";\r\nimport {Divider} from \"antd\";\r\nimport EntityComparisonUtils from \"../../../api/comparison/entityComparisonUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\n\r\ninterface Props<T extends AuditableEntity> {\r\n api: AbstractEntityApi<T>\r\n entity?: T\r\n detailPanelWidth: number\r\n\r\n onSelectionChanged(): void\r\n\r\n renderDetail(entity: T | undefined, differences: string[]): React.ReactNode\r\n}\r\n\r\ninterface State<T extends AuditableEntity> {\r\n columnDefs: DataGridColDef[]\r\n loading: boolean\r\n datasource: IDatasource\r\n selectedData: T[]\r\n}\r\n\r\nexport default class EntityHistoryListPanel<T extends AuditableEntity> extends React.Component<Props<T>, State<T>> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<T> | null = null;\r\n private gridApi?: GridApi;\r\n private firstLoadedPage: PageableList<T> | null = null;\r\n private manualReload = true;\r\n private mask = LocaleHolder.getDateTimeFormat(true, true, false);\r\n\r\n constructor(props: Readonly<Props<T>>) {\r\n super(props);\r\n\r\n this.state = {\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n if (this.state.selectedData.length === 0) {\r\n const rowNode = this.gridApi?.getRowNode(\"0\");\r\n if (rowNode) {\r\n rowNode.setSelected(true);\r\n this.setState({selectedData: [rowNode.data]});\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n setTimeout(() => {\r\n this.forceUpdate();\r\n }, 400);\r\n }\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onLoadData = this.onLoadData.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n }\r\n\r\n private async onLoadData(callback: OnLoadDataCallback) {\r\n this.manualReload = true;\r\n this.firstLoadedPage = await this.getRecords(0, 100);\r\n callback(this.firstLoadedPage.totalNumberOfRows);\r\n this.gridApi?.onFilterChanged();\r\n }\r\n\r\n private async getRecords(from: number, to: number): Promise<PageableList<T>> {\r\n this.setState({loading: true});\r\n const pageableList = await this.props.api.getHistory(this.props.entity?.id!, from, to);\r\n this.setState({loading: false});\r\n return pageableList;\r\n }\r\n\r\n private getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, undefined, {sortable: false, headerName: i18n(\"Date\")}),\r\n getStringColumn(GeneralEntityColumn.CREATED_BY, undefined, {headerName: i18n(\"User\"), sortable: false}),\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n private renderConfigHeader() {\r\n let rightContentTitle = i18n(\"Current\");\r\n if (this.state.selectedData.length === 2) {\r\n rightContentTitle = dayjs(this.state.selectedData[1]?.date_in).format(this.mask);\r\n }\r\n\r\n return (\r\n <div>\r\n <DetailHeaderPanel\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onClose={() => this.onCloseDetailPanel()}\r\n />\r\n <div style={{display: \"flex\", marginTop: 4, fontWeight: 500}}>\r\n <div style={{width: \"50%\"}}>\r\n <span style={{marginLeft: 12}}>\r\n {dayjs(this.state.selectedData[0]?.date_in).format(this.mask)}\r\n </span>\r\n </div>\r\n <Divider style={{height: \"auto\", margin: \"8px 0px 0px\"}} type=\"vertical\"/>\r\n <div style={{width: \"50%\"}}>\r\n <span style={{marginLeft: 12}}>{rightContentTitle}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderDetailPanel(): React.ReactElement {\r\n const leftContentEntity = this.getLeftContentEntity();\r\n const rightContentEntity = this.getRightContentEntity();\r\n const differences = EntityComparisonUtils.compare(leftContentEntity, rightContentEntity);\r\n\r\n return (\r\n <div>\r\n {this.renderConfigHeader()}\r\n <div style={{display: \"flex\"}}>\r\n {this.props.renderDetail(leftContentEntity, differences)}\r\n <Divider style={{height: \"auto\", margin: 0}} type=\"vertical\"/>\r\n {this.props.renderDetail(rightContentEntity, differences)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n private getLeftContentEntity(): T | undefined {\r\n if (this.state.selectedData[0]) {\r\n const leftContentEntity = cloneDeep(this.state.selectedData[0]);\r\n leftContentEntity.id = this.props.entity!.id;\r\n return leftContentEntity;\r\n }\r\n return undefined;\r\n }\r\n\r\n private getRightContentEntity(): T | undefined {\r\n if (this.state.selectedData.length === 2) {\r\n const rightContentEntity = cloneDeep(this.state.selectedData[1]);\r\n rightContentEntity.id = this.props.entity!.id;\r\n return rightContentEntity;\r\n }\r\n return this.props.entity;\r\n }\r\n\r\n private onCloseDetailPanel() {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent) {\r\n this.props.onSelectionChanged();\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: []});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<T>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedData: [event.data]});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: this.props.detailPanelWidth,\r\n renderer: this.renderDetailPanel\r\n }}\r\n rowSelection=\"multiple\"\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"entityHistoryListPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/history/entityHistoryListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {GridApi, GridReadyEvent, IDatasource, IGetRowsParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport AuditableEntity from \"../../../api/types/auditableEntity\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport AbstractEntityApi, {PageableList} from \"../../../api/abstractEntityApi\";\r\nimport {getDateTimeColumn, getStringColumn} from \"../grid/standardColumns\";\r\nimport {GeneralEntityColumn} from \"../advancedFilter/advancedFilterColumnDefinitions\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport DetailHeaderPanel from \"../grid/detailHeaderPanel\";\r\nimport {Divider} from \"antd\";\r\nimport EntityComparisonUtils from \"../../../api/comparison/entityComparisonUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\n\r\ninterface Props<T extends AuditableEntity> {\r\n api: AbstractEntityApi<T>\r\n entity?: T\r\n detailPanelWidth: number\r\n\r\n onSelectionChanged(): void\r\n\r\n renderDetail(entity: T | undefined, differences: string[]): React.ReactNode\r\n}\r\n\r\ninterface State<T extends AuditableEntity> {\r\n columnDefs: DataGridColDef[]\r\n loading: boolean\r\n datasource: IDatasource\r\n selectedData: T[]\r\n}\r\n\r\nexport default class EntityHistoryListPanel<T extends AuditableEntity> extends React.Component<Props<T>, State<T>> {\r\n private initialColumnDefs?: DataGridColDef[];\r\n private dataGrid: ExtendedDataGrid<T> | null = null;\r\n private gridApi?: GridApi;\r\n private firstLoadedPage: PageableList<T> | null = null;\r\n private manualReload = true;\r\n private mask = LocaleHolder.getDateTimeFormat(true, true, false);\r\n\r\n constructor(props: Readonly<Props<T>>) {\r\n super(props);\r\n\r\n this.state = {\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n if (this.state.selectedData.length === 0) {\r\n const rowNode = this.gridApi?.getRowNode(\"0\");\r\n if (rowNode) {\r\n rowNode.setSelected(true);\r\n this.setState({selectedData: [rowNode.data]});\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n setTimeout(() => {\r\n this.forceUpdate();\r\n }, 400);\r\n }\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n }\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onLoadData = this.onLoadData.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n }\r\n\r\n private async onLoadData(callback: OnLoadDataCallback) {\r\n this.manualReload = true;\r\n this.firstLoadedPage = await this.getRecords(0, 100);\r\n callback(this.firstLoadedPage.totalNumberOfRows);\r\n this.gridApi?.onFilterChanged();\r\n }\r\n\r\n private async getRecords(from: number, to: number): Promise<PageableList<T>> {\r\n this.setState({loading: true});\r\n const pageableList = await this.props.api.getHistory(this.props.entity?.id!, from, to);\r\n this.setState({loading: false});\r\n return pageableList;\r\n }\r\n\r\n private getInitialColumnDefs(): DataGridColDef[] {\r\n if (!this.initialColumnDefs) {\r\n this.initialColumnDefs = [\r\n getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, undefined, {sortable: false, headerName: i18n(\"Date\")}),\r\n getStringColumn(GeneralEntityColumn.CREATED_BY, undefined, {headerName: i18n(\"User\"), sortable: false}),\r\n ]\r\n }\r\n\r\n return this.initialColumnDefs;\r\n }\r\n\r\n private renderConfigHeader() {\r\n let rightContentTitle = i18n(\"Current\");\r\n if (this.state.selectedData.length === 2) {\r\n rightContentTitle = dayjs(this.state.selectedData[1]?.date_in).format(this.mask);\r\n }\r\n\r\n return (\r\n <div>\r\n <DetailHeaderPanel\r\n onPrevRecord={() => this.dataGrid?.selectNextPreviousRecord(true)}\r\n onNextRecord={() => this.dataGrid?.selectNextPreviousRecord(false)}\r\n onClose={() => this.onCloseDetailPanel()}\r\n />\r\n <div style={{display: \"flex\", marginTop: 4, fontWeight: 500}}>\r\n <div style={{width: \"50%\"}}>\r\n <span style={{marginLeft: 12}}>\r\n {dayjs(this.state.selectedData[0]?.date_in).format(this.mask)}\r\n </span>\r\n </div>\r\n <Divider style={{height: \"auto\", margin: \"8px 0px 0px\"}} type=\"vertical\"/>\r\n <div style={{width: \"50%\"}}>\r\n <span style={{marginLeft: 12}}>{rightContentTitle}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n renderDetailPanel(): React.ReactElement {\r\n const leftContentEntity = this.getLeftContentEntity();\r\n const rightContentEntity = this.getRightContentEntity();\r\n const differences = EntityComparisonUtils.compare(leftContentEntity, rightContentEntity);\r\n\r\n return (\r\n <div>\r\n {this.renderConfigHeader()}\r\n <div style={{display: \"flex\"}}>\r\n {this.props.renderDetail(leftContentEntity, differences)}\r\n <Divider style={{height: \"auto\", margin: 0}} type=\"vertical\"/>\r\n {this.props.renderDetail(rightContentEntity, differences)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n private getLeftContentEntity(): T | undefined {\r\n if (this.state.selectedData[0]) {\r\n const leftContentEntity = this.state.selectedData[0];//cloneDeep(this.state.selectedData[0]);\r\n leftContentEntity.id = this.props.entity!.id;\r\n return leftContentEntity;\r\n }\r\n return undefined;\r\n }\r\n\r\n private getRightContentEntity(): T | undefined {\r\n if (this.state.selectedData.length === 2) {\r\n const rightContentEntity = this.state.selectedData[1];//cloneDeep(this.state.selectedData[1]);\r\n rightContentEntity.id = this.props.entity!.id;\r\n return rightContentEntity;\r\n }\r\n return this.props.entity;\r\n }\r\n\r\n private onCloseDetailPanel() {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent) {\r\n this.props.onSelectionChanged();\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: []});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{position: \"relative\", width: \"100%\", height: \"100%\"}}>\r\n <ExtendedDataGrid<T>\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType=\"infinite\"\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onRowDoubleClicked={(event) => {\r\n this.setState({selectedData: [event.data]});\r\n this.dataGrid?.showDetailPanel(true);\r\n }}\r\n detailPanel={{\r\n defaultWidth: this.props.detailPanelWidth,\r\n renderer: this.renderDetailPanel\r\n }}\r\n rowSelection=\"multiple\"\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2aura",
3
- "version": "23.0.37",
3
+ "version": "23.0.38",
4
4
  "description": "D2 AURA - Advanced User Interface Resource Architecture",
5
5
  "author": "Ipesoft s.r.o.",
6
6
  "license": "MIT",