@genexus/genexus-ide-ui 1.1.16 → 1.1.17

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 (37) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
  3. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +30 -17
  5. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/collection/components/object-selector/object-selector.js +2 -2
  8. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  9. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +2 -2
  10. package/dist/collection/components/team-dev/bring-changes/bring-changes.js +54 -17
  11. package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
  12. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +9 -3
  13. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +9 -3
  14. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +9 -3
  15. package/dist/components/gx-ide-object-selector.js +2 -2
  16. package/dist/components/gx-ide-object-selector.js.map +1 -1
  17. package/dist/components/gx-ide-team-dev-bring-changes.js +31 -17
  18. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  19. package/dist/esm/genexus-ide-ui.js +1 -1
  20. package/dist/esm/gx-ide-object-selector.entry.js +2 -2
  21. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  22. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +30 -17
  23. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  24. package/dist/esm/loader.js +1 -1
  25. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  26. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  27. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +9 -3
  28. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +9 -3
  29. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +9 -3
  30. package/dist/genexus-ide-ui/{p-16138f55.entry.js → p-3fbc5a02.entry.js} +38 -37
  31. package/dist/genexus-ide-ui/p-3fbc5a02.entry.js.map +1 -0
  32. package/dist/genexus-ide-ui/{p-83cc3bcd.entry.js → p-ac131847.entry.js} +7 -7
  33. package/dist/genexus-ide-ui/{p-83cc3bcd.entry.js.map → p-ac131847.entry.js.map} +1 -1
  34. package/dist/types/components/team-dev/bring-changes/bring-changes.d.ts +8 -3
  35. package/dist/types/components.d.ts +10 -2
  36. package/package.json +1 -1
  37. package/dist/genexus-ide-ui/p-16138f55.entry.js.map +0 -1
@@ -92,7 +92,7 @@ export class GxIdeTeamDevBringChanges {
92
92
  this.merging = true;
93
93
  const newobjectsStatesMap = new Map(this.objectsStatesMap);
94
94
  __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, "f").forEach(checkedObjectId => {
95
- newobjectsStatesMap.set(checkedObjectId, "merging");
95
+ newobjectsStatesMap.set(checkedObjectId, this.operationType === "revert" ? "reverting" : "merging");
96
96
  });
97
97
  this.objectsStatesMap = newobjectsStatesMap;
98
98
  await this.mergeObjectsCallback(__classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, "f"));
@@ -100,7 +100,7 @@ export class GxIdeTeamDevBringChanges {
100
100
  _GxIdeTeamDevBringChanges_mergeSingleObject.set(this, objectId => async () => {
101
101
  this.merging = true;
102
102
  const newobjectsStatesMap = new Map(this.objectsStatesMap);
103
- newobjectsStatesMap.set(objectId, "merging");
103
+ newobjectsStatesMap.set(objectId, this.operationType === "revert" ? "reverting" : "merging");
104
104
  this.objectsStatesMap = newobjectsStatesMap;
105
105
  await this.mergeObjectsCallback([objectId]);
106
106
  });
@@ -170,12 +170,16 @@ export class GxIdeTeamDevBringChanges {
170
170
  ];
171
171
  });
172
172
  _GxIdeTeamDevBringChanges_renderObjectState.set(this, (objectType, objectId) => {
173
- if (objectType === "merging") {
174
- return (h("span", { class: "merging-spinner-caption" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.merging));
173
+ if (objectType === "merging" || objectType === "reverting") {
174
+ return (h("span", { class: "merging-spinner-caption" }, this.operationType === "revert"
175
+ ? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.reverting
176
+ : __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.merging));
175
177
  }
176
178
  const classes = `pill pill--${objectType}`;
177
179
  if (this.mergePillAsButton &&
178
- (objectType === "to-merge" || objectType === "to-merge-marked")) {
180
+ (objectType === "to-merge" ||
181
+ objectType === "to-merge-marked" ||
182
+ objectType === "to-revert")) {
179
183
  return (h("button", { class: { [classes]: true, "button-secondary": true }, onClick: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_mergeSingleObject, "f").call(this, objectId) }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").statesForButton[objectType]));
180
184
  }
181
185
  else {
@@ -292,11 +296,12 @@ export class GxIdeTeamDevBringChanges {
292
296
  this.commitObjects = [];
293
297
  this.enableRowOptions = false;
294
298
  this.hideFilters = false;
299
+ this.operationType = "merge";
295
300
  this.mergeObjectsCallback = undefined;
296
301
  this.mergePillAsButton = undefined;
297
302
  }
298
303
  objectsStatesMapChanged(newCommitObjectsStateMap) {
299
- const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(([, state]) => state === "merging");
304
+ const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(([, state]) => state === "merging" || state === "reverting");
300
305
  if (!someObjectIsMerging) {
301
306
  this.merging = false;
302
307
  }
@@ -307,7 +312,7 @@ export class GxIdeTeamDevBringChanges {
307
312
  this.loading = false;
308
313
  // All commit objects begin as "pending to merge"
309
314
  newCommitObjects.forEach(commitObject => {
310
- this.objectsStatesMap.set(commitObject.id, "to-merge");
315
+ this.objectsStatesMap.set(commitObject.id, this.operationType === "revert" ? "to-revert" : "to-merge");
311
316
  });
312
317
  this.objectsFiltered = this.commitObjects;
313
318
  }
@@ -325,8 +330,10 @@ export class GxIdeTeamDevBringChanges {
325
330
  value: COMBO_BOX_ALL_VALUE
326
331
  },
327
332
  {
328
- caption: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states["to-merge"],
329
- value: "to-merge"
333
+ caption: this.operationType === "revert"
334
+ ? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states["to-revert"]
335
+ : __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states["to-merge"],
336
+ value: this.operationType === "revert" ? "to-revert" : "to-merge"
330
337
  },
331
338
  {
332
339
  caption: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.warning,
@@ -337,8 +344,10 @@ export class GxIdeTeamDevBringChanges {
337
344
  value: "error"
338
345
  },
339
346
  {
340
- caption: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.merged,
341
- value: "merged"
347
+ caption: this.operationType === "revert"
348
+ ? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.reverted
349
+ : __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.merged,
350
+ value: this.operationType === "revert" ? "reverted" : "merged"
342
351
  }
343
352
  ], "f");
344
353
  if ((_a = this.commitObjects) === null || _a === void 0 ? void 0 : _a.length) {
@@ -365,7 +374,7 @@ export class GxIdeTeamDevBringChanges {
365
374
  if ((message === null || message === void 0 ? void 0 : message.length) > 0) {
366
375
  this.commitObjectsMessagesMap.set(objectId, message);
367
376
  }
368
- if (newState === "merged") {
377
+ if (newState === "merged" || newState === "reverted") {
369
378
  // remove from checked
370
379
  __classPrivateFieldSet(this, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, "f").filter(checkedObject => checkedObject !== objectId), "f");
371
380
  // add to "already merged". This will hide the checkbox
@@ -382,7 +391,9 @@ export class GxIdeTeamDevBringChanges {
382
391
  return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, h("header", { class: "header spacing-body-inline spacing-body-block-start" }, h("div", {
383
392
  // header details
384
393
  class: "header__detail"
385
- }, h("p", { class: "detail__title subtitle-semi-bold-xs" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.bringChangesDetail), h("p", { class: "detail__commit-name subtitle-semi-bold-s" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_renderCommitsNumbers, "f").call(this)), h("div", {
394
+ }, h("p", { class: "detail__title subtitle-semi-bold-xs" }, this.operationType === "revert"
395
+ ? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.revertChangesDetail
396
+ : __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.bringChangesDetail), h("p", { class: "detail__commit-name subtitle-semi-bold-s" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_renderCommitsNumbers, "f").call(this)), h("div", {
386
397
  // genexus server
387
398
  class: "detail__genexus-server field field-block"
388
399
  }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.genexusServer), h("a", { class: "detail__link body-regular-s", href: this.commitDetail.genexusServer, target: "_blank" }, this.commitDetail.genexusServer)), h("div", {
@@ -391,10 +402,10 @@ export class GxIdeTeamDevBringChanges {
391
402
  }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.knowledgeBase), h("p", { class: "body-regular-s" }, this.commitDetail.knowledgeBase)), h("div", {
392
403
  // current version
393
404
  class: "detail__current-version field field-block"
394
- }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.currentVersion), h("a", { class: "body-regular-s" }, this.commitDetail.currentVersion)), h("div", {
405
+ }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.currentVersion), h("a", { class: "body-regular-s" }, this.commitDetail.currentVersion)), this.operationType === "merge" && (h("div", {
395
406
  // merge from version
396
407
  class: "detail__merge-from-version field field-block"
397
- }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.mergeFromVersion), h("p", { class: "body-regular-s" }, this.commitDetail.mergeFromVersion))), h("div", {
408
+ }, h("span", { class: DETAIL_LABEL_CLASSES }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitDetail.mergeFromVersion), h("p", { class: "body-regular-s" }, this.commitDetail.mergeFromVersion)))), h("div", {
398
409
  // header information
399
410
  class: "header__information"
400
411
  }, h("p", { class: "information__title subtitle-semi-bold-xs" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").commitInformation.title), h("div", {
@@ -423,7 +434,9 @@ export class GxIdeTeamDevBringChanges {
423
434
  } }, !this.hideFilters && [
424
435
  h("ch-edit", { class: "input", disabled: disableControls, startImgSrc: SEARCH_ICON, placeholder: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").filter.searchPlaceholder, type: "search", onInput: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_searchInputHandler, "f") }),
425
436
  h("ch-combo-box-render", { class: "combo-box", disabled: disableControls, model: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_comboBoxStatesModel, "f"), value: this.stateFilterValue, onInput: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_stateChangedHandler, "f"), placeholder: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").filter.statePlaceholder })
426
- ], h("button", { class: "button-primary button-merge-checked", disabled: !this.atLeastOneObjectIsChecked || disableControls, onClick: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler, "f") }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").filter.mergeChecked)), h("div", { class: "main spacing-body" }, this.commitObjects.length ? (h("ch-tabular-grid", { class: {
437
+ ], h("button", { class: "button-primary button-merge-checked", disabled: !this.atLeastOneObjectIsChecked || disableControls, onClick: __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler, "f") }, this.operationType === "revert"
438
+ ? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").filter.revertSelected
439
+ : __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").filter.mergeSelected)), h("div", { class: "main spacing-body" }, this.commitObjects.length ? (h("ch-tabular-grid", { class: {
427
440
  "tabular-grid": true,
428
441
  "objects-tabular-grid": true,
429
442
  "disabled-custom-selector": this.merging,
@@ -550,6 +563,30 @@ export class GxIdeTeamDevBringChanges {
550
563
  "reflect": false,
551
564
  "defaultValue": "false"
552
565
  },
566
+ "operationType": {
567
+ "type": "string",
568
+ "mutable": false,
569
+ "complexType": {
570
+ "original": "OperationType",
571
+ "resolved": "\"merge\" | \"revert\"",
572
+ "references": {
573
+ "OperationType": {
574
+ "location": "local",
575
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/team-dev/bring-changes/bring-changes.tsx",
576
+ "id": "src/components/team-dev/bring-changes/bring-changes.tsx::OperationType"
577
+ }
578
+ }
579
+ },
580
+ "required": false,
581
+ "optional": false,
582
+ "docs": {
583
+ "tags": [],
584
+ "text": "The type of operation to perform: \"merge\" or \"revert\"."
585
+ },
586
+ "attribute": "operation-type",
587
+ "reflect": false,
588
+ "defaultValue": "\"merge\""
589
+ },
553
590
  "mergeObjectsCallback": {
554
591
  "type": "unknown",
555
592
  "mutable": false,
@@ -616,7 +653,7 @@ export class GxIdeTeamDevBringChanges {
616
653
  "docs": "The ID of the object to update."
617
654
  }, {
618
655
  "name": "newState",
619
- "type": "\"error\" | \"warning\" | \"to-merge\" | \"to-merge-marked\" | \"merging\" | \"pending\" | \"merged\"",
656
+ "type": "\"error\" | \"warning\" | \"to-merge\" | \"to-merge-marked\" | \"to-revert\" | \"merging\" | \"pending\" | \"merged\" | \"reverted\" | \"reverting\"",
620
657
  "docs": "The new state to set on the object."
621
658
  }, {
622
659
  "name": "message",
@@ -1 +1 @@
1
- {"version":3,"file":"bring-changes.js","sourceRoot":"","sources":["../../../../src/components/team-dev/bring-changes/bring-changes.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(commitObject.id, \"to-merge\");\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly mergePillAsButton: boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption: this.#componentLocale.states[\"to-merge\"],\n value: \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption: this.#componentLocale.states.merged,\n value: \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(checkedObjectId, \"merging\");\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, \"merging\");\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\n ];\n };\n\n #renderObjectState = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType}`;\n if (\n this.mergePillAsButton &&\n (objectType === \"to-merge\" || objectType === \"to-merge-marked\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectType = (objectType: ObjectType): JSX.Element[] => {\n const icon = objectType.icon;\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image class=\"icon-md\" src={icon}></ch-image>\n {`${objectType.name}`}\n </span>\n );\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderObjectType(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectState(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\n ></ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n <p class=\"detail__commit-name subtitle-semi-bold-s\">\n {this.#renderCommitsNumbers()}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>\n ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.#componentLocale.filter.mergeChecked}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={el =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\";\n\ntype ObjectStateForFilter =\n | Extract<ObjectState, \"to-merge\" | \"warning\" | \"error\" | \"merged\">\n | \"all\";\n\nexport type ObjectType = {\n name: string;\n icon: string;\n};\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"]}
1
+ {"version":3,"file":"bring-changes.js","sourceRoot":"","sources":["../../../../src/components/team-dev/bring-changes/bring-changes.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,OAAO,EACP,KAAK,EACL,MAAM,EAEN,KAAK,EACN,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOhD,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,yBAAyB;IACzB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,qBAAqB;CACtB,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAE9D,MAAM,QAAQ,GAAG,WAAW,CAAC;IAC3B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,WAAW,CAAC;IACjC,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,WAAW,CAAC;IAC/B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,WAAW,CAAC;IAC7B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AAQH,MAAM,OAAO,wBAAwB;;QACnC;;WAEG;QACH,wEAAwE;QACxE,4DAAsB;QACtB,wDAAqB;QACrB,gEAAyE;QACzE,2DAAoC,EAAE,EAAC;QA2KvC,mDAAkB,GAAW,EAAE;YAC7B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,wCAAwC;gBACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aAC1C;YAED,sCAAsC;YACtC,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvD,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnD,aAAa,IAAI,UAAU,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,OAAO,GAAG,qBAAqB,EAAE,CAAC;YACrF,CAAC,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACvB,CAAC,EAAC;QAEF,+DAA8B,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3D,uBAAA,IAAI,wDAAwB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;gBACrD,mBAAmB,CAAC,GAAG,CACrB,eAAe,EACf,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAC5C,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAA,IAAI,wDAAwB,CAAC,CAAC;QAChE,CAAC,EAAC;QAEF,sDACE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3D,mBAAmB,CAAC,GAAG,CACrB,QAAQ,EACR,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAC1D,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAC5C,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,CAAC,EAAC;QAEJ,4DAA2B,CACzB,WAA8B,EACf,EAAE;YACjB,IAAI,IAAY,CAAC;YACjB,IAAI,OAAe,CAAC;YACpB,IAAI,SAAiB,CAAC;YAEtB,IAAI,WAAW,KAAK,SAAS,EAAE;gBAC7B,IAAI,GAAG,cAAc,CAAC;gBACtB,OAAO,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,SAAS,GAAG,mBAAmB,CAAC;aACjC;iBAAM,IAAI,WAAW,KAAK,UAAU,EAAE;gBACrC,IAAI,GAAG,QAAQ,CAAC;gBAChB,OAAO,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,SAAS,GAAG,qBAAqB,CAAC;aACnC;iBAAM;gBACL,WAAW;gBACX,IAAI,GAAG,WAAW,CAAC;gBACnB,OAAO,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,SAAS,GAAG,qBAAqB,CAAC;aACnC;YAED,OAAO,CACL,YAAM,KAAK,EAAC,0BAA0B;gBACpC,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,SAAS,GAAG,EAAE,GACrC;gBACX,GAAG,OAAO,EAAE,CACR,CACR,CAAC;QACJ,CAAC,EAAC;QAEF,yDAAwB,CAAC,cAAuB,KAAK,EAAU,EAAE;;YAC/D,IAAI,CAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,IAAG,CAAC,EAAE;gBACtC,uBAAuB;gBACvB,OAAO,WAAW;oBAChB,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAC5D,EAAE;oBACJ,CAAC,CAAC,GAAG,uBAAA,IAAI,6CAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,QAClD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAC5D,EAAE,CAAC;aACR;iBAAM,IAAI,CAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,MAAK,CAAC,EAAE;gBAC/C,kBAAkB;gBAClB,OAAO,WAAW;oBAChB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9B,CAAC,CAAC,GAAG,uBAAA,IAAI,6CAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAC5D;iBAAM;gBACL,4DAA4D;gBAC5D,OAAO,WAAW;oBAChB,CAAC,CAAC,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,EAAE;oBACpC,CAAC,CAAC,GAAG,uBAAA,IAAI,6CAAa,IAAI,uBAAA,IAAI,iDAAiB,CAAC,OAAO,EAAE,CAAC;aAC7D;QACH,CAAC,EAAC;QAEF,uDAAsB,CAAC,IAAU,EAAU,EAAE;;YAC3C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,CAAA,MAAA,SAAS,CAAC,SAAS,0CAAG,CAAC,CAAC,KAAI,SAAS,CAAC,QAAQ,CAAC;YAE5D,OAAO,GAAG,UAAU,CAAC,kBAAkB,CACrC,IAAI,CACL,IAAI,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBACvC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,KAAK;aACd,CAAC,EAAE,CAAC;QACP,CAAC,EAAC;QAEF,wDAAuB,GAAkB,EAAE;YACzC,MAAM,YAAY,GAAG,KAAK,CAAC;YAC3B,MAAM,kCAAkC,GACtC,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC;YACxC,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAC;YACtE,MAAM,oBAAoB,GAAG,KAAK,CAAC;YAEnC,OAAO;gBACL,cAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,EAAE,YAAY,IACjE,uBAAA,IAAI,iDAAiB,CAAC,aAAa,CAAC,IAAI,CAClC;gBACT,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,kCAAkC,IAE3C,uBAAA,IAAI,iDAAiB,CAAC,aAAa,CAAC,0BAA0B,CACxD;gBACT,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,uBAAuB,IAEhC,uBAAA,IAAI,iDAAiB,CAAC,aAAa,CAAC,eAAe,CAC7C;gBACT,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,oBAAoB,IAE7B,uBAAA,IAAI,iDAAiB,CAAC,aAAa,CAAC,YAAY,CAC1C;aACV,CAAC;QACJ,CAAC,EAAC;QAEF,sDAAqB,CACnB,UAAuB,EACvB,QAAgB,EACD,EAAE;YACjB,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,WAAW,EAAE;gBAC1D,OAAO,CACL,YAAM,KAAK,EAAC,yBAAyB,IAClC,IAAI,CAAC,aAAa,KAAK,QAAQ;oBAC9B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,SAAS;oBACxC,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,OAAO,CACnC,CACR,CAAC;aACH;YACD,MAAM,OAAO,GAAG,cAAc,UAAU,EAAE,CAAC;YAC3C,IACE,IAAI,CAAC,iBAAiB;gBACtB,CAAC,UAAU,KAAK,UAAU;oBACxB,UAAU,KAAK,iBAAiB;oBAChC,UAAU,KAAK,WAAW,CAAC,EAC7B;gBACA,OAAO,CACL,cACE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EACpD,OAAO,EAAE,uBAAA,IAAI,mDAAmB,MAAvB,IAAI,EAAoB,QAAQ,CAAC,IAEzC,uBAAA,IAAI,iDAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,CAC3C,CACV,CAAC;aACH;iBAAM;gBACL,OAAO,CACL,YAAM,KAAK,EAAE,OAAO,IAAG,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAQ,CACxE,CAAC;aACH;QACH,CAAC,EAAC;QAEF,qDAAoB,CAAC,UAAsB,EAAiB,EAAE;YAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAE7B,OAAO,CACL,YAAM,KAAK,EAAC,0BAA0B;gBACpC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,IAAI,GAAa;gBAC/C,GAAG,UAAU,CAAC,IAAI,EAAE,CAChB,CACR,CAAC;QACJ,CAAC,EAAC;QAEF,sDAAqB,GAAkB,EAAE;YACvC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAE1D,MAAM,aAAa,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAC1D,eAAe,CAAC,EAAE,CAAC,eAAe,KAAK,YAAY,CAAC,EAAE,CACvD,CAAC;gBACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAC7D,YAAY,CAAC,EAAE,CAChB,CAAC;gBACF,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAEzD,IAAI,YAAY,CAAC;gBACjB,IAAI,KAAK,KAAK,OAAO,EAAE;oBACrB,YAAY,GAAG,UAAU,CAAC;iBAC3B;qBAAM,IAAI,KAAK,KAAK,SAAS,EAAE;oBAC9B,YAAY,GAAG,YAAY,CAAC;iBAC7B;gBAED,OAAO,CACL,2BACE,KAAK,EAAC,kBAAkB,EACxB,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,KAAK,EAAE,YAAY,CAAC,EAAE,EACtB,GAAG,EAAE,CAAC,EAAe,EAAE,EAAE,CACvB,MAAM,KAAI,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;oBAG9C,yCACY,MAAM,kBACH,MAAM,EACnB,KAAK,EAAE;4BACL,mBAAmB,EAAE,IAAI;4BACzB,6BAA6B,EAAE,aAAa;yBAC7C,EACD,IAAI,EAAC,aAAa,IAEjB,YAAY,CAAC,IAAI,CACG;oBACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,uBAAA,IAAI,kDAAkB,MAAtB,IAAI,EAAmB,YAAY,CAAC,IAAI,CAAC,CACrB;oBACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,YAAY,CAAC,WAAW,CACJ;oBACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,uBAAA,IAAI,yDAAyB,MAA7B,IAAI,EAA0B,YAAY,CAAC,WAAW,CAAC,CACnC;oBACvB,4BAAsB,KAAK,EAAC,+CAA+C,IACxE,uBAAA,IAAI,mDAAmB,MAAvB,IAAI,EACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAC1C,YAAY,CAAC,EAAE,CAChB,CACoB;oBACvB,4BACE,KAAK,EAAC,+DAA+D,eAC3D,MAAM,iBACJ,MAAM,GACI;oBACvB,qBAAqB,IAAI,CACxB,8BAAwB,KAAK,EAAC,qBAAqB;wBACjD,oCACE,KAAK,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;4BAE3D,SAAG,KAAK,EAAC,2BAA2B;gCAClC,gBACE,KAAK,EAAC,4BAA4B,EAClC,GAAG,EAAE,YAAY,GACP;gCACX,qBAAqB,CACpB,CACyB,CACR,CAC1B,CACmB,CACvB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,EAAC;QAEF,0DAAyB,CACvB,KAAkD,EAClD,EAAE;YACF,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,uBAAA,IAAI,0DAA0B,MAA9B,IAAI,EAA2B,KAAK,CAAC,CAAC;QACxC,CAAC,EAAC;QAEF,6DAA4B,CAC1B,KAAkD,EAClD,EAAE;YACF,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC9C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC1C,MAAM,mCAAmC,GAAG,aAAa,CAAC,MAAM,CAC9D,cAAc,CAAC,EAAE,CACf,CAAC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC9D,CAAC;YACF,uBAAA,IAAI,oDAA2B,CAAC,GAAG,mCAAmC,CAAC,MAAA,CAAC;YAExE,0BAA0B;YAC1B,uBAAA,IAAI,wDAAwB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;gBACrD,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAE5C,IAAI,CAAC,yBAAyB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAE1D,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/D,IACE,kBAAkB,KAAK,UAAU;oBACjC,kBAAkB,KAAK,iBAAiB,EACxC;oBACA,OAAO;iBACR;gBAED,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;gBACtE,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;oBACzB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;oBACrD,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;oBACxC,aAAa,CAAC;iBACf;qBAAM;oBACL,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;QAC9C,CAAC,EAAC;QAEF,uDAAsB,CAAC,KAA6C,EAAE,EAAE;YACtE,IAAI,CAAC,WAAW,GAAI,KAAK,CAAC,MAAiB,CAAC,WAAW,EAAE,CAAC;YAC1D,uBAAA,IAAI,uDAAuB,MAA3B,IAAI,CAAyB,CAAC;QAChC,CAAC,EAAC;QAEF,wDAAuB,CAAC,KAAuC,EAAE,EAAE;YACjE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAA8B,CAAC;YAC7D,uBAAA,IAAI,uDAAuB,MAA3B,IAAI,CAAyB,CAAC;QAChC,CAAC,EAAC;QAEF,6DAA4B,CAAC,0BAAkC,EAAQ,EAAE;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACpC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,0BAA0B,CAC/D,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9C,CAAC,EAAC;QAEF,0DAAyB,GAAG,EAAE;YAC5B,IAAI,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9C,4CAA4C;YAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACnC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBAChD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACzD,OAAO,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC;gBAC/C,CAAC,CAAC,CAAC;aACJ;YAED,wCAAwC;YACxC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE1E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;qBAClC,WAAW,EAAE;qBACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9B,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW;qBAC3C,WAAW,EAAE;qBACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE9B,IAAI,YAAY,IAAI,YAAY,IAAI,mBAAmB,EAAE;oBACvD,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACzC,CAAC,EAAC;4CAphBgD,EAAE;yCAKN,KAAK;uBAKvB,IAAI;;+BAUW,EAAE;2BAKd,EAAE;gCAKiB,mBAAmB;gCAK5B,IAAI,GAAG,EAAU;gCAKJ,IAAI,GAAG,EAAE;wCAeN,IAAI,GAAG,EAAE;uBAKtC,KAAK;;iCAUyB,EAAE;6BAKX,EAAE;gCAsBN,KAAK;2BAKV,KAAK;6BAKG,OAAO;;;;IAjEvD,uBAAuB,CAAC,wBAAkD;QACxE,MAAM,mBAAmB,GAAG,CAAC,GAAG,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACtE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,WAAW,CAC5D,CAAC;QAEF,IAAI,CAAC,mBAAmB,EAAE;YACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;IACH,CAAC;IA2BD,oBAAoB,CAAC,gBAAgC;QACnD,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC3B,+CAA+C;YAC/C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,iDAAiD;YACjD,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,YAAY,CAAC,EAAE,EACf,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAC3D,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;SAC3C;IACH,CAAC;IA2BD,KAAK,CAAC,iBAAiB;;QACrB,uBAAA,IAAI,6CAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QAClE,uBAAA,IAAI,yCACF,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,QAAQ;YAChC,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,OAAO,MAAA,CAAC;QAEpC,qCAAqC;QACrC,uBAAA,IAAI,iDAAwB;YAC1B;gBACE,OAAO,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,GAAG;gBACzC,KAAK,EAAE,mBAAmB;aAC3B;YACD;gBACE,OAAO,EACL,IAAI,CAAC,aAAa,KAAK,QAAQ;oBAC7B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC3C,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9C,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;aAClE;YACD;gBACE,OAAO,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,OAAO;gBAC7C,KAAK,EAAE,SAAS;aACjB;YACD;gBACE,OAAO,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,KAAK;gBAC3C,KAAK,EAAE,OAAO;aACf;YACD;gBACE,OAAO,EACL,IAAI,CAAC,aAAa,KAAK,QAAQ;oBAC7B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,QAAQ;oBACvC,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,MAAM;gBACzC,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;aAC/D;SACF,MAAA,CAAC;QAEF,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM,EAAE;YAC9B,kCAAkC;YAClC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC/C;IACH,CAAC;IAsXD;;;;;;;;;OASG;IAEH,KAAK,CAAC,iBAAiB,CACrB,QAAgB,EAChB,QAAqB,EACrB,OAAe;QAEf,sBAAsB;QACtB,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3D,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;QAE5C,+CAA+C;QAC/C,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,IAAG,CAAC,EAAE;YACvB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACtD;QAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,UAAU,EAAE;YACpD,sBAAsB;YACtB,uBAAA,IAAI,oDAA2B,uBAAA,IAAI,wDAAwB,CAAC,MAAM,CAChE,aAAa,CAAC,EAAE,CAAC,aAAa,KAAK,QAAQ,CAC5C,MAAA,CAAC;YAEF,uDAAuD;YACvD,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjD,mBAAmB;YACnB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAE5C,wBAAwB;YACxB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAChD;IACH,CAAC;IAED,MAAM;QACJ,MAAM,qBAAqB,GACzB,IAAI,CAAC,4BAA4B,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAEzE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QACrD,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ;YAClB,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,eAAS,KAAK,EAAC,SAAS;gBACtB,cAAQ,KAAK,EAAC,qDAAqD;oBACjE;wBACE,iBAAiB;wBACjB,KAAK,EAAC,gBAAgB;wBAEtB,SAAG,KAAK,EAAC,qCAAqC,IAC3C,IAAI,CAAC,aAAa,KAAK,QAAQ;4BAC9B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,mBAAmB;4BACxD,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,kBAAkB,CACvD;wBACJ,SAAG,KAAK,EAAC,0CAA0C,IAChD,uBAAA,IAAI,sDAAsB,MAA1B,IAAI,CAAwB,CAC3B;wBACJ;4BACE,iBAAiB;4BACjB,KAAK,EAAC,0CAA0C;4BAEhD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,aAAa,CAC5C;4BACP,SACE,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EACrC,MAAM,EAAC,QAAQ,IAEd,IAAI,CAAC,YAAY,CAAC,aAAa,CAC9B,CACA;wBAEN;4BACE,iBAAiB;4BACjB,KAAK,EAAC,0CAA0C;4BAEhD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,aAAa,CAC5C;4BACP,SAAG,KAAK,EAAC,gBAAgB,IAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAK,CAC3D;wBAEN;4BACE,kBAAkB;4BAClB,KAAK,EAAC,2CAA2C;4BAEjD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,cAAc,CAC7C;4BACP,SAAG,KAAK,EAAC,gBAAgB,IAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAK,CAC5D;wBACL,IAAI,CAAC,aAAa,KAAK,OAAO,IAAI,CACjC;4BACE,qBAAqB;4BACrB,KAAK,EAAC,8CAA8C;4BAEpD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,gBAAgB,CAC/C;4BACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CACjC,CACA,CACP,CACG;oBACN;wBACE,qBAAqB;wBACrB,KAAK,EAAC,qBAAqB;wBAE3B,SAAG,KAAK,EAAC,0CAA0C,IAChD,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,KAAK,CAC5C;wBACJ;4BACE,6BAA6B;4BAC7B,KAAK,EAAC,oBAAoB;4BAE1B;gCACE,MAAM;gCACN,KAAK,EAAC,mBAAmB;gCAEzB,YAAM,KAAK,EAAE,oBAAoB,IAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;oCAClC,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,EAAE;oCAC5C,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,GAAG,CAC1C;gCACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,sDAAsB,MAA1B,IAAI,EAAuB,IAAI,CAAC,CAC/B,CACA;4BACL,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACrC,WAAK,KAAK,EAAC,mBAAmB;gCAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,IAAI,CACxC;gCACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,oDAAoB,MAAxB,IAAI,EAAqB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CACvD,CACA,CACP,CAAC,CAAC,CAAC,CACF;gCACE,WAAK,KAAK,EAAC,mBAAmB;oCAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,IAAI,CACxC;oCACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,oDAAoB,MAAxB,IAAI,EACH,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/B,CACC,CACA;gCACN,WAAK,KAAK,EAAC,mBAAmB;oCAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,EAAE,CACtC;oCACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,oDAAoB,MAAxB,IAAI,EACH,IAAI,CAAC,iBAAiB,CACpB,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAClC,CAAC,IAAI,CACP,CACC,CACA;6BACP,CACF,CACG;wBAEN;4BACE,6BAA6B;4BAC7B,KAAK,EAAC,oBAAoB;4BAE1B;gCACE,KAAK;gCACL,KAAK,EAAC,mBAAmB;gCAEzB,aAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAC,iBAAiB,IAC1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;oCAChC,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,QAAQ;oCAClD,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,OAAO,CAC7C;gCACR,WAAK,KAAK,EAAC,0BAA0B;oCACnC,eACE,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAC,gDAAgD,EACtD,IAAI,EAAC,MAAM,EACX,SAAS,QACT,QAAQ,QACR,KAAK,EAAE,uBAAA,IAAI,gDAAgB,MAApB,IAAI,CAAkB,GACpB,CACP,CACF,CACF,CACF,CACC;gBACT,WACE,KAAK,EAAE;wBACL,oBAAoB,EAAE,IAAI;wBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW;wBAC3B,qBAAqB,EAAE,IAAI;qBAC5B;oBAEA,CAAC,IAAI,CAAC,WAAW,IAAI;wBACpB,eACE,KAAK,EAAC,OAAO,EACb,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,iBAAiB,EAC3D,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,uBAAA,IAAI,oDAAoB,GACxB;wBACX,2BACE,KAAK,EAAC,WAAW,EACjB,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,uBAAA,IAAI,qDAAqB,EAChC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAC5B,OAAO,EAAE,uBAAA,IAAI,qDAAqB,EAClC,WAAW,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,gBAAgB,GACrC;qBACxB;oBAED,cACE,KAAK,EAAC,qCAAqC,EAC3C,QAAQ,EAAE,CAAC,IAAI,CAAC,yBAAyB,IAAI,eAAe,EAC5D,OAAO,EAAE,uBAAA,IAAI,4DAA4B,IAExC,IAAI,CAAC,aAAa,KAAK,QAAQ;wBAC9B,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,cAAc;wBAC7C,CAAC,CAAC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,aAAa,CACvC,CACL;gBACN,WAAK,KAAK,EAAC,mBAAmB,IAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3B,uBACE,KAAK,EAAE;wBACL,cAAc,EAAE,IAAI;wBACpB,sBAAsB,EAAE,IAAI;wBAC5B,0BAA0B,EAAE,IAAI,CAAC,OAAO;wBACxC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;qBAClD,EACD,sBAAsB,EAAC,OAAO,EAC9B,gBAAgB,EAAC,UAAU,EAC3B,mBAAmB,EAAE,uBAAA,IAAI,0DAA0B,EACnD,gBAAgB,EAAE,uBAAA,IAAI,uDAAuB,EAC7C,GAAG,EAAE,EAAE,CAAC,EAAE,CACR,CAAC,IAAI,CAAC,aAAa,GAAG,EAA8B,CAAC;oBAGvD,iCAA2B,KAAK,EAAC,yBAAyB;wBACxD,8BACE,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,MAAM,EACf,UAAU,EAAE,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,IAAI,EAC9C,UAAU,EAAC,MAAM,EACjB,eAAe,EAAE,qBAAqB,EACtC,mBAAmB,EAAC,MAAM,EAC1B,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GAClB;wBACF,8BACE,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,MAAM,EACf,UAAU,EAAE,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,IAAI,EAC9C,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GAClB;wBACF,8BACE,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,aAAa,EACtB,UAAU,EAAE,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,WAAW,EACrD,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,MAAM,GACX;wBACF,8BACE,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,MAAM,EAChD,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,aAAa,GAClB;wBACF;4BACE,2EAA2E;4BAC3E,wDAAwD;4BACxD,KAAK,EAAC,qBAAqB,EAC3B,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,MAAM,EAChD,WAAW,EAAE,KAAK,EAClB,IAAI,EAAC,OAAO,GACZ;wBACF,8BACE,KAAK,EAAC,mEAAmE,EACzE,QAAQ,EAAC,SAAS,EAClB,UAAU,EAAC,SAAS,EACpB,gBAAgB,QAChB,IAAI,EAAC,aAAa,EAClB,UAAU,EAAC,MAAM,EACjB,cAAc,QACd,WAAW,EAAE,KAAK,GACM,CACA;oBAC3B,uBAAA,IAAI,mDAAmB,MAAvB,IAAI,CAAqB;oBACzB,IAAI,CAAC,gBAAgB,IAAI,CACxB,mCACE,KAAK,EAAC,0BAA0B,EAChC,gBAAgB,UAEf,uBAAA,IAAI,qDAAqB,MAAzB,IAAI,CAAuB,CACA,CAC/B;oBACA,IAAI,CAAC,gBAAgB,IAAI,CACxB,mCACE,KAAK,EAAC,0BAA0B,EAChC,gBAAgB,UAEf,uBAAA,IAAI,qDAAqB,MAAzB,IAAI,CAAuB,CACA,CAC/B;oBAED,8BAAwB,KAAK,EAAC,qBAAqB,IAChD,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CACpC;wBACE,0BACE,KAAK,EAAC,aAAa,EACnB,UAAU,QACV,YAAY,EAAE,WAAW,EACzB,UAAU,EAAC,+BAA+B,GACtB,CACO,CAChC,CACsB,CACT,CACnB,CAAC,CAAC,CAAC,CACF,qBACE,WAAW,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,WAAW,EACrD,WAAW,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,KAAK,EAC/C,WAAW,EAAE,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,WAAW,EACrD,IAAI,QACJ,KAAK,EAAC,QAAQ,GACC,CAClB,CACG,CACE,CACL,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\" | \"reverted\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\" || state === \"reverting\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(\n commitObject.id,\n this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n );\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The type of operation to perform: \"merge\" or \"revert\".\n */\n @Prop() readonly operationType: OperationType = \"merge\";\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly mergePillAsButton: boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states[\"to-revert\"]\n : this.#componentLocale.states[\"to-merge\"],\n value: this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states.reverted\n : this.#componentLocale.states.merged,\n value: this.operationType === \"revert\" ? \"reverted\" : \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(\n checkedObjectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(\n objectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\n ];\n };\n\n #renderObjectState = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\" || objectType === \"reverting\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.states.reverting\n : this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType}`;\n if (\n this.mergePillAsButton &&\n (objectType === \"to-merge\" ||\n objectType === \"to-merge-marked\" ||\n objectType === \"to-revert\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectType = (objectType: ObjectType): JSX.Element[] => {\n const icon = objectType.icon;\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image class=\"icon-md\" src={icon}></ch-image>\n {`${objectType.name}`}\n </span>\n );\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderObjectType(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectState(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\n ></ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\" || newState === \"reverted\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-xs\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.commitDetail.revertChangesDetail\n : this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n <p class=\"detail__commit-name subtitle-semi-bold-s\">\n {this.#renderCommitsNumbers()}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n {this.operationType === \"merge\" && (\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n )}\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>\n ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.operationType === \"revert\"\n ? this.#componentLocale.filter.revertSelected\n : this.#componentLocale.filter.mergeSelected}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={el =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type OperationType = \"merge\" | \"revert\";\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"to-revert\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\"\n | \"reverted\"\n | \"reverting\";\n\ntype ObjectStateForFilter =\n | Extract<\n ObjectState,\n \"to-merge\" | \"to-revert\" | \"warning\" | \"error\" | \"merged\" | \"reverted\"\n >\n | \"all\";\n\nexport type ObjectType = {\n name: string;\n icon: string;\n};\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"]}
@@ -10,12 +10,16 @@
10
10
  "error": "Error",
11
11
  "to-merge": "To Merge",
12
12
  "to-merge-marked": "To Merge",
13
+ "to-revert": "To Revert",
13
14
  "merged": "Merged",
14
- "merging": "Merging"
15
+ "merging": "Merging",
16
+ "reverting": "Reverting",
17
+ "reverted": "Reverted"
15
18
  },
16
19
  "statesForButton": {
17
20
  "to-merge": "Merge",
18
- "to-merge-marked": "Merge"
21
+ "to-merge-marked": "Merge",
22
+ "to-revert": "Revert"
19
23
  },
20
24
  "objectActions": {
21
25
  "open": "Open",
@@ -25,6 +29,7 @@
25
29
  },
26
30
  "commitDetail": {
27
31
  "bringChangesDetail": "Bring changes detail",
32
+ "revertChangesDetail": "Revert changes detail",
28
33
  "genexusServer": "GeneXus Server",
29
34
  "knowledgeBase": "Knowledge Base",
30
35
  "currentVersion": "Current Version",
@@ -43,7 +48,8 @@
43
48
  "filter": {
44
49
  "searchPlaceholder": "Search",
45
50
  "statePlaceholder": "State",
46
- "mergeChecked": "Merge Selected",
51
+ "mergeSelected": "Merge Selected",
52
+ "revertSelected": "Revert Selected",
47
53
  "emptyState": "No results found for your filter"
48
54
  },
49
55
  "objects": {
@@ -10,12 +10,16 @@
10
10
  "error": "エラー",
11
11
  "to-merge": "マージ待ち",
12
12
  "to-merge-marked": "マージ待ち",
13
+ "to-revert": "To Revert",
13
14
  "merged": "マージ済み",
14
- "merging": "マージ中"
15
+ "merging": "マージ中",
16
+ "reverting": "Reverting",
17
+ "reverted": "Reverted"
15
18
  },
16
19
  "statesForButton": {
17
20
  "to-merge": "マージ",
18
- "to-merge-marked": "マージ"
21
+ "to-merge-marked": "マージ",
22
+ "to-revert": "Revert"
19
23
  },
20
24
  "objectActions": {
21
25
  "open": "開く",
@@ -25,6 +29,7 @@
25
29
  },
26
30
  "commitDetail": {
27
31
  "bringChangesDetail": "変更の詳細を取得",
32
+ "revertChangesDetail": "Revert changes detail",
28
33
  "genexusServer": "GeneXus サーバー",
29
34
  "knowledgeBase": "ナレッジベース",
30
35
  "currentVersion": "現在のバージョン",
@@ -43,7 +48,8 @@
43
48
  "filter": {
44
49
  "searchPlaceholder": "検索",
45
50
  "statePlaceholder": "状態",
46
- "mergeChecked": "選択したものをマージ",
51
+ "mergeSelected": "選択したものをマージ",
52
+ "revertSelected": "Revert Selected",
47
53
  "emptyState": "フィルターに一致する結果が見つかりません"
48
54
  },
49
55
  "objects": {
@@ -10,12 +10,16 @@
10
10
  "error": "Error",
11
11
  "to-merge": "To Merge",
12
12
  "to-merge-marked": "To Merge",
13
+ "to-revert": "To Revert",
13
14
  "merged": "Merged",
14
- "merging": "Merging"
15
+ "merging": "Merging",
16
+ "reverting": "Reverting",
17
+ "reverted": "Reverted"
15
18
  },
16
19
  "statesForButton": {
17
20
  "to-merge": "Merge",
18
- "to-merge-marked": "Merge"
21
+ "to-merge-marked": "Merge",
22
+ "to-revert": "Revert"
19
23
  },
20
24
  "objectActions": {
21
25
  "open": "Open",
@@ -25,6 +29,7 @@
25
29
  },
26
30
  "commitDetail": {
27
31
  "bringChangesDetail": "Bring changes detail",
32
+ "revertChangesDetail": "Revert changes detail",
28
33
  "genexusServer": "GeneXus Server",
29
34
  "knowledgeBase": "Knowledge Base",
30
35
  "currentVersion": "Current Version",
@@ -43,7 +48,8 @@
43
48
  "filter": {
44
49
  "searchPlaceholder": "Search",
45
50
  "statePlaceholder": "State",
46
- "mergeChecked": "Merge Selected",
51
+ "mergeSelected": "Merge Selected",
52
+ "revertSelected": "Revert Selected",
47
53
  "emptyState": "No results found for your filter"
48
54
  },
49
55
  "objects": {
@@ -211,10 +211,10 @@ const GxIdeObjectSelector$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeObject
211
211
  }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnNew), h("div", { class: "end buttons-spacer" }, h("button", {
212
212
  // button cancel
213
213
  class: "button-secondary", part: "button button-cancel", onClick: __classPrivateFieldGet(this, _GxIdeObjectSelector_cancelCallbackHandler, "f")
214
- }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnCancel), h("button", {
214
+ }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnCancel), this.multiSelection ? (h("button", { class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeObjectSelector_selectAll, "f"), part: "button button-select-all" }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnSelectAll)) : null, h("button", {
215
215
  // button confirm
216
216
  class: "button-primary", part: "button button-confirm", onClick: __classPrivateFieldGet(this, _GxIdeObjectSelector_openSelectionCallbackHandler, "f"), disabled: this.loading
217
- }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnConfirm), this.multiSelection ? (h("button", { class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeObjectSelector_selectAll, "f"), part: "button button-select-all" }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnSelectAll)) : null))));
217
+ }, __classPrivateFieldGet(this, _GxIdeObjectSelector_componentLocale, "f").footer.btnConfirm)))));
218
218
  });
219
219
  _GxIdeObjectSelector_renderObjects.set(this, () => {
220
220
  return (h("ch-tabular-grid", { class: {