@genexus/genexus-ide-ui 1.1.21 → 1.1.23
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.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +28 -7
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +6 -9
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +345 -177
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +13 -36
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +17 -13
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/{helpers-30f109a4.js → helpers-b30b36b4.js} +2 -2
- package/dist/cjs/{helpers-30f109a4.js.map → helpers-b30b36b4.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/utilities-6118dc24.js +78 -0
- package/dist/cjs/utilities-6118dc24.js.map +1 -0
- package/dist/collection/common/helpers.js +1 -1
- package/dist/collection/common/helpers.js.map +1 -1
- package/dist/collection/common/types.js.map +1 -1
- package/dist/collection/components/plugin-details/plugin-details.js +28 -7
- package/dist/collection/components/plugin-details/plugin-details.js.map +1 -1
- package/dist/collection/components/team-dev/bring-changes/bring-changes.css +6 -6
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js +5 -8
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
- package/dist/collection/components/team-dev/commit/commit.css +48 -665
- package/dist/collection/components/team-dev/commit/commit.js +407 -251
- package/dist/collection/components/team-dev/commit/commit.js.map +1 -1
- package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +20 -3
- package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +20 -3
- package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +20 -3
- package/dist/collection/components/team-dev/commit/helpers.js +10 -0
- package/dist/collection/components/team-dev/commit/helpers.js.map +1 -0
- package/dist/collection/components/team-dev/common/types.js +2 -0
- package/dist/collection/components/team-dev/common/types.js.map +1 -0
- package/dist/collection/components/team-dev/common/utilities.js +67 -0
- package/dist/collection/components/team-dev/common/utilities.js.map +1 -0
- package/dist/collection/components/team-dev/history/history.css +6 -0
- package/dist/collection/components/team-dev/history/history.js +11 -34
- package/dist/collection/components/team-dev/history/history.js.map +1 -1
- package/dist/collection/components/team-dev/update/update.js +4 -10
- package/dist/collection/components/team-dev/update/update.js.map +1 -1
- package/dist/components/gx-ide-plugin-details.js +28 -7
- package/dist/components/gx-ide-plugin-details.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +6 -9
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +369 -191
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +12 -35
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +16 -12
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/helpers.js +1 -1
- package/dist/components/helpers.js.map +1 -1
- package/dist/components/utilities.js +75 -0
- package/dist/components/utilities.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +28 -7
- package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +6 -9
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +345 -177
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js +13 -36
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +17 -13
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/{helpers-10479d69.js → helpers-a4f16ffb.js} +2 -2
- package/dist/esm/{helpers-10479d69.js.map → helpers-a4f16ffb.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/utilities-6fdb43e4.js +75 -0
- package/dist/esm/utilities-6fdb43e4.js.map +1 -0
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +20 -3
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +20 -3
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +20 -3
- package/dist/genexus-ide-ui/{p-b465f29d.entry.js → p-012cfb1d.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-0f8a8202.js +87 -0
- package/dist/genexus-ide-ui/p-0f8a8202.js.map +1 -0
- package/dist/genexus-ide-ui/{p-3b5a4e2e.entry.js → p-11b8f81d.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-82878950.entry.js → p-19d197c5.entry.js} +8 -8
- package/dist/genexus-ide-ui/{p-667965d3.entry.js → p-72b5d3e4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-84c1c1bb.entry.js → p-75c1634c.entry.js} +72 -59
- package/dist/genexus-ide-ui/p-75c1634c.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-74a0cb25.entry.js → p-810ad95f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ac131847.entry.js → p-863ef4de.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-3fbc5a02.entry.js → p-884e0ed9.entry.js} +97 -104
- package/dist/genexus-ide-ui/p-884e0ed9.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-9ddea83b.js → p-957046fd.js} +2 -2
- package/dist/genexus-ide-ui/p-957046fd.js.map +1 -0
- package/dist/genexus-ide-ui/p-ca706700.entry.js +484 -0
- package/dist/genexus-ide-ui/p-ca706700.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-d4ef0c35.entry.js +683 -0
- package/dist/genexus-ide-ui/p-d4ef0c35.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-75a5c51f.entry.js → p-fa52a417.entry.js} +153 -149
- package/dist/genexus-ide-ui/p-fa52a417.entry.js.map +1 -0
- package/dist/types/common/types.d.ts +0 -1
- package/dist/types/components/plugin-details/plugin-details.d.ts +1 -0
- package/dist/types/components/team-dev/bring-changes/bring-changes.d.ts +1 -4
- package/dist/types/components/team-dev/commit/commit.d.ts +53 -70
- package/dist/types/components/team-dev/commit/helpers.d.ts +4 -0
- package/dist/types/components/team-dev/common/types.d.ts +1 -0
- package/dist/types/components/team-dev/common/utilities.d.ts +25 -0
- package/dist/types/components/team-dev/history/history.d.ts +1 -1
- package/dist/types/components/team-dev/update/update.d.ts +2 -1
- package/dist/types/components.d.ts +7 -15
- package/package.json +1 -1
- package/dist/cjs/render-combo-items-e774f796.js +0 -18
- package/dist/cjs/render-combo-items-e774f796.js.map +0 -1
- package/dist/components/render-combo-items.js +0 -16
- package/dist/components/render-combo-items.js.map +0 -1
- package/dist/esm/render-combo-items-e9c8df5e.js +0 -16
- package/dist/esm/render-combo-items-e9c8df5e.js.map +0 -1
- package/dist/genexus-ide-ui/p-34fd4875.entry.js +0 -573
- package/dist/genexus-ide-ui/p-34fd4875.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-3fbc5a02.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-60e39b2f.entry.js +0 -541
- package/dist/genexus-ide-ui/p-60e39b2f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-75a5c51f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-84c1c1bb.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-9ddea83b.js.map +0 -1
- package/dist/genexus-ide-ui/p-f549f6e1.js +0 -17
- package/dist/genexus-ide-ui/p-f549f6e1.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-b465f29d.entry.js.map → p-012cfb1d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3b5a4e2e.entry.js.map → p-11b8f81d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-82878950.entry.js.map → p-19d197c5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-667965d3.entry.js.map → p-72b5d3e4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-74a0cb25.entry.js.map → p-810ad95f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ac131847.entry.js.map → p-863ef4de.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-plugin-details.js","mappings":"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","names":["GxIdePluginDetails"],"sources":["src/components/plugin-details/plugin-details.scss?tag=gx-ide-plugin-details&encapsulation=shadow","src/components/plugin-details/plugin-details.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-areas:\n \"header header\"\n \"main aside\";\n grid-template-rows: max-content 1fr;\n grid-template-columns: 1fr 280px;\n row-gap: 12px;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n display: grid;\n grid-area: header;\n grid-template-areas: \"plugin-icon plugin-details\";\n grid-template-columns: 64px 1fr;\n column-gap: 16px;\n padding: 24px 24px 16px 24px;\n}\n.plugin__icon {\n grid-area: plugin-icon;\n max-width: 100%;\n}\n.plugin__details {\n grid-area: plugin-details;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.plugin__publisher {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.plugin__description {\n line-height: 1.5; // WA: Text appears too tight.\n}\n.plugin__actions-container {\n margin-block-start: 8px;\n align-items: center;\n}\n.action-button {\n min-inline-size: 100px;\n\n &.more-versions-available {\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n }\n}\n.installed-container {\n display: flex;\n align-items: center;\n gap: 6px;\n\n // WA Biggest Mercury icon (icon-md) looks small in this case.\n // Mercury should expose more icon sizes.\n ch-image {\n --ch-image-size: 20px;\n }\n}\n\n// main\n.main {\n grid-area: main;\n}\n.docsTab {\n block-size: 100%;\n}\n\n// aside\n.aside {\n grid-area: aside;\n overflow: auto;\n border-block-start: 1px solid var(--items-container__border-color);\n}\n.fields__list {\n list-style: none;\n padding: 0;\n margin: 0;\n font-size: 12px;\n}\n.plugin__info-category {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &:not(:first-child) {\n $space: 16px;\n padding-block-start: $space;\n margin-block-start: $space;\n border-block-start: 1px solid var(--mer-border-color__on-elevation--01);\n }\n}\n.fields__list:not(.fields__list--as-tags) {\n display: flex;\n flex-direction: column;\n gap: 8px;\n .field__li {\n display: flex;\n gap: 16px;\n }\n}\n.fields__list--as-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n .field__li {\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: 2px 8px;\n border-radius: 4px;\n\n text-transform: lowercase;\n }\n .field__link {\n color: var(--mer-text__on-surface);\n\n &:hover {\n color: var(--mer-accent__primary);\n }\n &:active {\n color: var(--mer-accent__primary--hover);\n }\n }\n}\n\n.field__name,\n.field__value {\n flex: 1;\n}\n// WA: Link styles should be defined Mercury\n.field__link {\n color: var(--mer-accent__primary);\n &:hover {\n color: var(--mer-accent__primary--hover);\n }\n &:active {\n color: var(--mer-accent__primary--active);\n }\n}\n// WA: Remove tab elevation background color\n.docsTab {\n background-color: transparent !important;\n}\n\n// WA: Styles for \"button-icon-only\" should be defined on mercury\n.dropdown.button-icon-only::part(expandable-button) {\n padding: calc(\n (\n var(--control__block-size) - 2 * var(--control__border-width) -\n var(--mer-icon__box--md)\n ) / 2\n ) !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n\n.version-buttons-container {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n\nch-markdown-viewer {\n block-size: 100%;\n overflow: auto;\n}\n\n// WA: Need text with underline. This should be defined on Mercury\n.text-underline {\n text-decoration: underline;\n}\n","import {\n Component,\n Host,\n State,\n Prop,\n Element,\n h,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ActionMenuModel, TabModel } from \"@genexus/chameleon-controls-library\";\nimport { TabItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/tab/types\";\n\nconst USER_ICON = getIconPath({\n category: \"system\",\n name: \"user\",\n colorType: \"on-elevation\"\n});\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"system\",\n name: \"chevron-down\",\n colorType: \"on-primary\"\n});\nconst CHECK_CIRCLE_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\n// plugin icon if no iconUri was provided\nconst EXTENSION_ICON_IMG = getAssetPath(\n `./gx-ide-assets/plugin-manager/images/plugin-icon.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/dropdown\",\n \"components/edit\",\n \"components/icon\",\n \"components/list-box\",\n \"components/tab\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-plugin-details\",\n styleUrl: \"plugin-details.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/plugin-details\"]\n})\nexport class GxIdePluginDetails {\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\n // A map between docSection \"id\", and docSection \"description\".\n // \"id\" is generated inside this component.\n #docSectionIdDescriptionMap: Map<string, string> = new Map();\n\n @Element() el: HTMLGxIdePluginDetailsElement;\n\n @State() docsTabModel: TabModel = [];\n @State() selectedTabId: string;\n\n /**\n * Specifies all the information related to a plugin.\n */\n @Prop() readonly data!: PluginDetailsData;\n\n /**\n * Callback that should be invoked when the user performs the install or update action.\n * Receives an optional version string when a specific version is selected.\n */\n @Prop() readonly installCallback!: (version?: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user attempts to open any link displayed in this component.\n */\n @Prop() readonly openLinkCallback!: (url: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user performs the uninstall action.\n */\n @Prop() readonly uninstallCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n if (this.data.docSections?.length) {\n this.docsTabModel = this.data.docSections.map((docSection, i) => {\n const formatedId = this.#returnFormatedId(docSection.name);\n\n this.#docSectionIdDescriptionMap.set(formatedId, docSection.content);\n\n if (i === 0) {\n this.selectedTabId = formatedId;\n }\n return {\n id: formatedId,\n name: docSection.name\n } as TabItemModel;\n });\n }\n }\n\n #versionsMenuOptionsModel = (): ActionMenuModel => {\n const versionsToUpdateMenusModel: ActionMenuModel = this.data.versions?.map(\n version => {\n return { id: version, caption: version };\n }\n );\n return versionsToUpdateMenusModel;\n };\n\n #menuVersionSelectedHandler = (\n event: CustomEvent<{\n id?: string;\n }>\n ) => {\n const selectedVersion = event.detail.id;\n this.installCallback(selectedVersion);\n };\n\n #renderUninstallButton = (): JSX.Element => {\n return (\n <button class=\"button-tertiary\" onClick={this.#uninstallClickedHandler}>\n {this.#componentLocale.actions.uninstall}\n </button>\n );\n };\n\n #installClickedHandler = () => {\n this.installCallback();\n };\n\n #updateVersionHandler = (id: string) => () => {\n this.installCallback(id);\n };\n\n #openLinkHandler = (link: string) => (event: MouseEvent) => {\n event.preventDefault();\n this.openLinkCallback(link);\n };\n\n #uninstallClickedHandler = () => {\n this.uninstallCallback();\n };\n\n #renderActionButtons = (): JSX.Element => {\n let actionButtonCaption;\n let actionButtonClasses = \"button-primary action-button\";\n let actionButtonCallback;\n const moreVersionsToUpdate = this.data.versions?.length;\n\n if (!this.data.installed) {\n actionButtonCaption = this.#componentLocale.actions.install;\n actionButtonCallback = this.#installClickedHandler;\n } else if (this.data.updateVersion) {\n actionButtonCaption = `${this.#componentLocale.actions.updateTo} ${\n this.data.updateVersion\n }`;\n actionButtonCallback = this.#updateVersionHandler(\n this.data.updateVersion\n );\n } else {\n actionButtonCaption = this.#componentLocale.actions.installed;\n }\n\n if (moreVersionsToUpdate) {\n actionButtonClasses = `${actionButtonClasses} more-versions-available`;\n }\n\n return [\n <div class=\"version-buttons-container\">\n <button class={actionButtonClasses} onClick={actionButtonCallback}>\n {actionButtonCaption}\n </button>\n {moreVersionsToUpdate ? (\n <ch-action-menu-render\n class=\"dropdown button-primary button-icon-only\"\n blockAlign=\"outside-end\"\n inlineAlign=\"inside-start\"\n model={this.#versionsMenuOptionsModel()}\n onButtonClick={this.#menuVersionSelectedHandler}\n >\n <ch-image src={CHEVRON_DOWN_ICON} class=\"icon-md\"></ch-image>\n </ch-action-menu-render>\n ) : null}\n </div>\n ];\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTabId = event.detail.newSelectedId;\n };\n\n #renderDocSectionsSlots = (): JSX.Element => {\n return this.docsTabModel.map(docSectionTab => {\n if (docSectionTab.id === this.selectedTabId) {\n const markdownValue = this.#docSectionIdDescriptionMap.get(\n docSectionTab.id\n );\n\n return (\n <ch-markdown-viewer\n slot={docSectionTab.id}\n key={docSectionTab.id}\n class=\"markdown spacing-body scrollable\"\n theme=\"components/markdown-viewer\"\n value={markdownValue}\n ></ch-markdown-viewer>\n );\n }\n });\n };\n\n #returnFormatedId = (rawId: string): string => {\n return rawId.toLowerCase().replace(/\\s+/g, \"-\");\n };\n\n #renderAsideContent = (): JSX.Element => {\n return this.data.infoCategories.map(infoCategory => {\n return (\n <div class=\"plugin__info-category\">\n <h3 class=\"subtitle-semi-bold-s\">{infoCategory.name}</h3>\n <ul\n class={{\n \"fields__list\": true,\n \"fields__list--as-tags\": infoCategory.displayAsTags\n }}\n >\n {infoCategory.fields.map(field => {\n // If the field name isn’t specified, only the value is shown — usually a link.\n const fieldValue: string | HTMLAnchorElement =\n typeof field.value === \"string\" ? (\n (field.value as string)\n ) : (\n <a\n class=\"field__link\"\n onClick={this.#openLinkHandler(\n (field.value as LinkData).url\n )}\n >\n {(field.value as LinkData).text}\n </a>\n );\n return (\n <li class=\"field__li\">\n {field.name && !infoCategory.displayAsTags\n ? // displaysAsTags forces the items to be displayed as tags\n // no span.field__name and span.field__value\n [\n <span class=\"field__name body-semi-bold-s\">\n {field.name}\n </span>,\n <span class=\"field__value body-regular-s\">\n {fieldValue}\n </span>\n ]\n : fieldValue}\n </li>\n );\n })}\n </ul>\n </div>\n );\n });\n };\n\n render() {\n const renderActionButtons =\n !this.data.installed ||\n (this.data.installed && !!this.data.updateVersion);\n\n const titleLinkDataText = (this.data.name as LinkData).text;\n const titleLinkDataUrl = (this.data.name as LinkData).url;\n const titleHasLink = titleLinkDataText && titleLinkDataUrl;\n const titleText = titleLinkDataText || this.data.name;\n\n const publisherDataText = (this.data.publisher as LinkData).text;\n const publisherDataUrl = (this.data.publisher as LinkData).url;\n const publisherHasLink = publisherDataText && publisherDataUrl;\n const publisherText = publisherDataText || this.data.publisher;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header\">\n <img\n class=\"plugin__icon\"\n src={this.data.iconUrl || EXTENSION_ICON_IMG}\n alt=\"plugin extension icon\"\n />\n <div class=\"plugin__details\">\n {titleHasLink ? (\n <h2 class=\"heading-5\">\n <a\n href={titleLinkDataUrl}\n onClick={this.#openLinkHandler(titleLinkDataUrl)}\n class=\"text-underline\"\n >\n {titleText}\n </a>\n </h2>\n ) : (\n <h2 class=\"heading-5\">{titleText}</h2>\n )}\n\n {publisherHasLink ? (\n <a\n href={publisherDataUrl}\n onClick={this.#openLinkHandler(publisherDataUrl)}\n class=\"text-underline plugin__publisher tiny-semi-bold-l\"\n >\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </a>\n ) : (\n <p class=\"plugin__publisher tiny-semi-bold-l\">\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </p>\n )}\n\n <p class=\"plugin__description\">{this.data.description}</p>\n <div class=\"buttons-spacer plugin__actions-container\">\n {renderActionButtons ? (\n this.#renderActionButtons()\n ) : (\n // installed and no updates\n <p class=\"installed-container subtitle-semi-bold-s\">\n <ch-image\n src={CHECK_CIRCLE_ICON}\n class=\"icon-md\"\n ></ch-image>\n {this.#componentLocale.actions.installed}\n </p>\n )}\n {this.data.installed && this.#renderUninstallButton()}\n </div>\n </div>\n </header>\n <div class=\"main\">\n {this.docsTabModel.length > 0 && (\n <ch-tab-render\n class=\"tab docsTab scrollable\"\n tabListPosition=\"block-start\"\n overflow=\"auto\"\n contain=\"size\"\n model={this.docsTabModel}\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n selectedId={this.selectedTabId}\n >\n {this.#renderDocSectionsSlots()}\n </ch-tab-render>\n )}\n </div>\n <div class=\"aside spacing-body scrollable\">\n {this.#renderAsideContent()}\n </div>\n </section>\n {/* <slot></slot> */}\n </Host>\n );\n }\n}\n\n// plugin-details.types.ts\n\nexport type LinkData = {\n text: string;\n url: string;\n};\n\nexport type PluginFieldData = {\n name?: string;\n value: string | LinkData;\n};\n\nexport type PluginInfoCategoryData = {\n name: string;\n fields: PluginFieldData[];\n displayAsTags: boolean;\n};\n\nexport type DocSectionData = {\n name: string;\n content: string;\n};\n\nexport type PluginDetailsData = {\n id: string;\n name: string | LinkData;\n publisher: string | LinkData;\n installed: boolean;\n updateVersion?: string;\n versions: string[];\n iconUrl: string;\n description: string;\n docSections: DocSectionData[];\n infoCategories: PluginInfoCategoryData[];\n};\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-plugin-details.js","mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,2jFAA2jF;;;;;;;;;;;;;;;;;;;ACgBplF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH;AACA,MAAM,kBAAkB,GAAG,YAAY,CACrC,uDAAuD,CACxD,CAAC;AAEF,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,eAAe;IACf,kBAAkB;CACnB,CAAC;MAQWA,oBAAkB;;;;;;;;;QAK7B,sDAAsB;QAEtB,uDAA+C;;;QAI/C,yDAAmD,IAAI,GAAG,EAAE,EAAC;QAkE7D,uDAA4B;;YAC1B,MAAM,0BAA0B,GAAoB,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,0CAAE,GAAG,CACzE,OAAO;gBACL,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC1C,CACF,CAAC;YACF,OAAO,0BAA0B,CAAC;SACnC,EAAC;QAEF,yDAA8B,CAC5B,KAEE;YAEF,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SACvC,EAAC;QAEF,oDAAyB;YACvB,QACE,cAAQ,KAAK,EAAC,iBAAiB,EAAC,OAAO,EAAE,uBAAA,IAAI,mDAAyB,IACnE,uBAAA,IAAI,2CAAiB,CAAC,OAAO,CAAC,SAAS,CACjC,EACT;SACH,EAAC;QAEF,oDAAyB;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB,EAAC;QAEF,mDAAwB,CAAC,EAAU,KAAK;YACtC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SAC1B,EAAC;QAEF,8CAAmB,CAAC,IAAY,KAAK,CAAC,KAAiB;YACrD,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aAC7B;SACF,EAAC;QAEF,sDAA2B;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,EAAC;QAEF,kDAAuB;;YACrB,IAAI,mBAAmB,CAAC;YACxB,IAAI,mBAAmB,GAAG,8BAA8B,CAAC;YACzD,IAAI,oBAAoB,CAAC;YACzB,MAAM,oBAAoB,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,0CAAE,MAAM,CAAC;YAExD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACxB,mBAAmB,GAAG,uBAAA,IAAI,2CAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC5D,oBAAoB,GAAG,uBAAA,IAAI,iDAAuB,CAAC;aACpD;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAClC,mBAAmB,GAAG,GAAG,uBAAA,IAAI,2CAAiB,CAAC,OAAO,CAAC,QAAQ,IAC7D,IAAI,CAAC,IAAI,CAAC,aACZ,EAAE,CAAC;gBACH,oBAAoB,GAAG,uBAAA,IAAI,gDAAsB,MAA1B,IAAI,EACzB,IAAI,CAAC,IAAI,CAAC,aAAa,CACxB,CAAC;aACH;iBAAM;gBACL,mBAAmB,GAAG,uBAAA,IAAI,2CAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/D;YAED,IAAI,oBAAoB,EAAE;gBACxB,mBAAmB,GAAG,GAAG,mBAAmB,0BAA0B,CAAC;aACxE;YAED,OAAO;gBACL,WAAK,KAAK,EAAC,2BAA2B,IACpC,cAAQ,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,IAC9D,mBAAmB,CACb,EACR,oBAAoB,IACnB,6BACE,KAAK,EAAC,0CAA0C,EAChD,UAAU,EAAC,aAAa,EACxB,WAAW,EAAC,cAAc,EAC1B,KAAK,EAAE,uBAAA,IAAI,oDAA0B,MAA9B,IAAI,CAA4B,EACvC,aAAa,EAAE,uBAAA,IAAI,sDAA4B,IAE/C,gBAAU,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAC,SAAS,GAAY,CACvC,IACtB,IAAI,CACJ;aACP,CAAC;SACH,EAAC;QAEF,yDAA8B,CAC5B,KAIE;YAEF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;SACjD,EAAC;QAEF,qDAA0B;YACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa;gBACxC,IAAI,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE;oBAC3C,MAAM,aAAa,GAAG,uBAAA,IAAI,sDAA4B,CAAC,GAAG,CACxD,aAAa,CAAC,EAAE,CACjB,CAAC;oBAEF,QACE,0BACE,GAAG,EAAE,EAAE,KACJ,uBAAA,IAAI,wCAAqB,EAAiC,MAAA,CAAC,EAE9D,IAAI,EAAE,aAAa,CAAC,EAAE,EACtB,GAAG,EAAE,aAAa,CAAC,EAAE,EACrB,KAAK,EAAC,kCAAkC,EACxC,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,aAAa,GACA,EACtB;iBACH;aACF,CAAC,CAAC;SACJ,EAAC;QAEF,+CAAoB,CAAC,KAAa;YAChC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACjD,EAAC;QAEF,4CAAiB,CACf,IAAY,EACZ,KAAa,EACb,QAAiB,EACjB,UAAmB;YAEnB,QACE,SACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,QAAQ,EACf,OAAO,EAAE,uBAAA,IAAI,2CAAiB,MAArB,IAAI,EAAkB,IAAI,CAAC,EACpC,KAAK,EAAE,QAAQ,IAEd,UAAU,IAAI,gBAAU,GAAG,EAAE,UAAU,EAAE,KAAK,EAAC,SAAS,GAAY,EACpE,KAAK,CACJ,EACJ;SACH,EAAC;QAEF,iDAAsB;YACpB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY;gBAC9C,QACE,WAAK,KAAK,EAAC,uBAAuB,IAChC,UAAI,KAAK,EAAC,sBAAsB,IAAE,YAAY,CAAC,IAAI,CAAM,EACzD,UACE,KAAK,EAAE;wBACL,cAAc,EAAE,IAAI;wBACpB,uBAAuB,EAAE,YAAY,CAAC,aAAa;qBACpD,IAEA,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;;oBAE5B,MAAM,UAAU,GACd,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;0BAC1B,KAAK,CAAC,KAAgB;0BACvB,uBAAA,IAAI,yCAAe,MAAnB,IAAI,EACD,KAAK,CAAC,KAAkB,CAAC,GAAG,EAC5B,KAAK,CAAC,KAAkB,CAAC,IAAI,EAC9B,aAAa,CACd,CAAC;oBACR,QACE,UAAI,KAAK,EAAC,WAAW,IAClB,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;;;4BAGtC;gCACE,YAAM,KAAK,EAAC,8BAA8B,IACvC,KAAK,CAAC,IAAI,CACN;gCACP,YAAM,KAAK,EAAC,6BAA6B,IACtC,UAAU,CACN;6BACR;0BACD,UAAU,CACX,EACL;iBACH,CAAC,CACC,CACD,EACN;aACH,CAAC,CAAC;SACJ,EAAC;4BAzPgC,EAAE;;;;;;;IAwBpC,MAAM,iBAAiB;;QACrB,uBAAA,IAAI,uCAAoB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QAElE,IAAI,MAAA,IAAI,CAAC,IAAI,CAAC,WAAW,0CAAE,MAAM,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC1D,MAAM,UAAU,GAAG,uBAAA,IAAI,4CAAkB,MAAtB,IAAI,EAAmB,UAAU,CAAC,IAAI,CAAC,CAAC;gBAE3D,uBAAA,IAAI,sDAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBAErE,IAAI,CAAC,KAAK,CAAC,EAAE;oBACX,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;iBACjC;gBACD,OAAO;oBACL,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,UAAU,CAAC,IAAI;iBACN,CAAC;aACnB,CAAC,CAAC;SACJ;KACF;IAED,gBAAgB;QACd,uBAAA,IAAI,4CAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK;;;;;YAKpD,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAmB,CAAC;YAEnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,iBAAiB,CAE/C,CAAC;YAEd,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE;gBACd,uBAAA,IAAI,2CAAiB,MAArB,IAAI,EAAkB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;aACzC;SACF,CAAC,CAAC;KACJ;IA+LD,MAAM;QACJ,MAAM,mBAAmB,GACvB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;aACnB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAErD,MAAM,iBAAiB,GAAI,IAAI,CAAC,IAAI,CAAC,IAAiB,CAAC,IAAI,CAAC;QAC5D,MAAM,gBAAgB,GAAI,IAAI,CAAC,IAAI,CAAC,IAAiB,CAAC,GAAG,CAAC;QAC1D,MAAM,YAAY,GAAG,iBAAiB,IAAI,gBAAgB,CAAC;QAC3D,MAAM,SAAS,GAAG,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEtD,MAAM,iBAAiB,GAAI,IAAI,CAAC,IAAI,CAAC,SAAsB,CAAC,IAAI,CAAC;QACjE,MAAM,gBAAgB,GAAI,IAAI,CAAC,IAAI,CAAC,SAAsB,CAAC,GAAG,CAAC;QAC/D,MAAM,gBAAgB,GAAG,iBAAiB,IAAI,gBAAgB,CAAC;QAC/D,MAAM,aAAa,GAAG,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAE/D,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAClB,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACtB,cAAQ,KAAK,EAAC,QAAQ,IACpB,WACE,KAAK,EAAC,cAAc,EACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,kBAAkB,EAC5C,GAAG,EAAC,uBAAuB,GAC3B,EACF,WAAK,KAAK,EAAC,iBAAiB,IACzB,YAAY,IACX,UAAI,KAAK,EAAC,oBAAoB,IAC3B,uBAAA,IAAI,yCAAe,MAAnB,IAAI,EACH,gBAAgB,EAChB,SAAmB,EACnB,gBAAgB,CACjB,CACE,KAEL,UAAI,KAAK,EAAC,WAAW,IAAE,SAAS,CAAM,CACvC,EACA,gBAAgB,IACf,uBAAA,IAAI,yCAAe,MAAnB,IAAI,EACF,gBAAgB,EAChB,SAAmB,EACnB,mDAAmD,EACnD,SAAS,CACV,KAED,SAAG,KAAK,EAAC,oCAAoC,IAC3C,gBAAU,GAAG,EAAE,SAAS,EAAE,KAAK,EAAC,SAAS,GAAY,EACpD,aAAa,CACZ,CACL,EAED,SAAG,KAAK,EAAC,qBAAqB,IAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAK,EAC1D,WAAK,KAAK,EAAC,0CAA0C,IAClD,mBAAmB,IAClB,uBAAA,IAAI,+CAAqB,MAAzB,IAAI,CAAuB;;QAG3B,SAAG,KAAK,EAAC,0CAA0C,IACjD,gBACE,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAC,SAAS,GACL,EACX,uBAAA,IAAI,2CAAiB,CAAC,OAAO,CAAC,SAAS,CACtC,CACL,EACA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,uBAAA,IAAI,iDAAuB,MAA3B,IAAI,CAAyB,CACjD,CACF,CACC,EACT,WAAK,KAAK,EAAC,MAAM,IACd,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,KAC3B,qBACE,KAAK,EAAC,wBAAwB,EAC9B,eAAe,EAAC,aAAa,EAC7B,QAAQ,EAAC,MAAM,EACf,OAAO,EAAC,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,oBAAoB,EAAE,uBAAA,IAAI,sDAA4B,EACtD,UAAU,EAAE,IAAI,CAAC,aAAa,IAE7B,uBAAA,IAAI,kDAAwB,MAA5B,IAAI,CAA0B,CACjB,CACjB,CACG,EACN,WAAK,KAAK,EAAC,+BAA+B,IACvC,uBAAA,IAAI,8CAAoB,MAAxB,IAAI,CAAsB,CACvB,CACE,CAEL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdePluginDetails"],"sources":["src/components/plugin-details/plugin-details.scss?tag=gx-ide-plugin-details&encapsulation=shadow","src/components/plugin-details/plugin-details.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-areas:\n \"header header\"\n \"main aside\";\n grid-template-rows: max-content 1fr;\n grid-template-columns: 1fr 280px;\n row-gap: 12px;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n display: grid;\n grid-area: header;\n grid-template-areas: \"plugin-icon plugin-details\";\n grid-template-columns: 64px 1fr;\n column-gap: 16px;\n padding: 24px 24px 16px 24px;\n}\n.plugin__icon {\n grid-area: plugin-icon;\n max-width: 100%;\n}\n.plugin__details {\n grid-area: plugin-details;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.plugin__publisher {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.plugin__description {\n line-height: 1.5; // WA: Text appears too tight.\n}\n.plugin__actions-container {\n margin-block-start: 8px;\n align-items: center;\n}\n.action-button {\n min-inline-size: 100px;\n\n &.more-versions-available {\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n }\n}\n.installed-container {\n display: flex;\n align-items: center;\n gap: 6px;\n\n // WA Biggest Mercury icon (icon-md) looks small in this case.\n // Mercury should expose more icon sizes.\n ch-image {\n --ch-image-size: 20px;\n }\n}\n\n// main\n.main {\n grid-area: main;\n}\n.docsTab {\n block-size: 100%;\n}\n\n// aside\n.aside {\n grid-area: aside;\n overflow: auto;\n border-block-start: 1px solid var(--items-container__border-color);\n}\n.fields__list {\n list-style: none;\n padding: 0;\n margin: 0;\n font-size: 12px;\n}\n.plugin__info-category {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &:not(:first-child) {\n $space: 16px;\n padding-block-start: $space;\n margin-block-start: $space;\n border-block-start: 1px solid var(--mer-border-color__on-elevation--01);\n }\n}\n.fields__list:not(.fields__list--as-tags) {\n display: flex;\n flex-direction: column;\n gap: 8px;\n .field__li {\n display: flex;\n gap: 16px;\n }\n}\n.fields__list--as-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n .field__li {\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: 2px 8px;\n border-radius: 4px;\n\n text-transform: lowercase;\n }\n .field__link {\n color: var(--mer-text__on-surface);\n\n &:hover {\n color: var(--mer-accent__primary);\n }\n &:active {\n color: var(--mer-accent__primary--hover);\n }\n }\n}\n\n.field__name,\n.field__value {\n flex: 1;\n}\n// WA: Link styles should be defined Mercury\n.field__link {\n color: var(--mer-accent__primary);\n &:hover {\n color: var(--mer-accent__primary--hover);\n }\n &:active {\n color: var(--mer-accent__primary--active);\n }\n}\n// WA: Remove tab elevation background color\n.docsTab {\n background-color: transparent !important;\n}\n\n// WA: Styles for \"button-icon-only\" should be defined on mercury\n.dropdown.button-icon-only::part(expandable-button) {\n padding: calc(\n (\n var(--control__block-size) - 2 * var(--control__border-width) -\n var(--mer-icon__box--md)\n ) / 2\n ) !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n\n.version-buttons-container {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n\nch-markdown-viewer {\n block-size: 100%;\n overflow: auto;\n}\n\n// WA: Need text with underline. This should be defined on Mercury\n.text-underline {\n text-decoration: underline;\n}\n","import {\n Component,\n Host,\n State,\n Prop,\n Element,\n h,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ActionMenuModel, TabModel } from \"@genexus/chameleon-controls-library\";\nimport { TabItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/tab/types\";\n\nconst USER_ICON = getIconPath({\n category: \"system\",\n name: \"user\",\n colorType: \"on-elevation\"\n});\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"system\",\n name: \"chevron-down\",\n colorType: \"on-primary\"\n});\nconst CHECK_CIRCLE_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\n// plugin icon if no iconUri was provided\nconst EXTENSION_ICON_IMG = getAssetPath(\n `./gx-ide-assets/plugin-manager/images/plugin-icon.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/dropdown\",\n \"components/edit\",\n \"components/icon\",\n \"components/list-box\",\n \"components/tab\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-plugin-details\",\n styleUrl: \"plugin-details.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/plugin-details\"]\n})\nexport class GxIdePluginDetails {\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\n #chMarkdownViewer: HTMLChMarkdownViewerElement;\n\n // A map between docSection \"id\", and docSection \"description\".\n // \"id\" is generated inside this component.\n #docSectionIdDescriptionMap: Map<string, string> = new Map();\n\n @Element() el: HTMLGxIdePluginDetailsElement;\n\n @State() docsTabModel: TabModel = [];\n @State() selectedTabId: string;\n\n /**\n * Specifies all the information related to a plugin.\n */\n @Prop() readonly data!: PluginDetailsData;\n\n /**\n * Callback that should be invoked when the user performs the install or update action.\n * Receives an optional version string when a specific version is selected.\n */\n @Prop() readonly installCallback!: (version?: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user attempts to open any link displayed in this component.\n */\n @Prop() readonly openLinkCallback!: (url: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user performs the uninstall action.\n */\n @Prop() readonly uninstallCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n if (this.data.docSections?.length) {\n this.docsTabModel = this.data.docSections.map((docSection, i) => {\n const formatedId = this.#returnFormatedId(docSection.name);\n\n this.#docSectionIdDescriptionMap.set(formatedId, docSection.content);\n\n if (i === 0) {\n this.selectedTabId = formatedId;\n }\n return {\n id: formatedId,\n name: docSection.name\n } as TabItemModel;\n });\n }\n }\n\n componentDidLoad() {\n this.#chMarkdownViewer.addEventListener(\"click\", event => {\n // Listens for clicks on links inside <ch-markdown-viewer>.\n // If a link (<a>) is clicked and openLinkCallback is defined,\n // it prevents the default navigation and delegates the event\n // to this.#openLinkHandler, passing the link's href.\n const path = event.composedPath() as EventTarget[];\n\n const link = path.find(el => el instanceof HTMLAnchorElement) as\n | HTMLAnchorElement\n | undefined;\n\n if (link?.href) {\n this.#openLinkHandler(link.href)(event);\n }\n });\n }\n\n #versionsMenuOptionsModel = (): ActionMenuModel => {\n const versionsToUpdateMenusModel: ActionMenuModel = this.data.versions?.map(\n version => {\n return { id: version, caption: version };\n }\n );\n return versionsToUpdateMenusModel;\n };\n\n #menuVersionSelectedHandler = (\n event: CustomEvent<{\n id?: string;\n }>\n ) => {\n const selectedVersion = event.detail.id;\n this.installCallback(selectedVersion);\n };\n\n #renderUninstallButton = (): JSX.Element => {\n return (\n <button class=\"button-tertiary\" onClick={this.#uninstallClickedHandler}>\n {this.#componentLocale.actions.uninstall}\n </button>\n );\n };\n\n #installClickedHandler = () => {\n this.installCallback();\n };\n\n #updateVersionHandler = (id: string) => () => {\n this.installCallback(id);\n };\n\n #openLinkHandler = (link: string) => (event: MouseEvent) => {\n if (this.openLinkCallback) {\n event.preventDefault();\n this.openLinkCallback(link);\n }\n };\n\n #uninstallClickedHandler = () => {\n this.uninstallCallback();\n };\n\n #renderActionButtons = (): JSX.Element => {\n let actionButtonCaption;\n let actionButtonClasses = \"button-primary action-button\";\n let actionButtonCallback;\n const moreVersionsToUpdate = this.data.versions?.length;\n\n if (!this.data.installed) {\n actionButtonCaption = this.#componentLocale.actions.install;\n actionButtonCallback = this.#installClickedHandler;\n } else if (this.data.updateVersion) {\n actionButtonCaption = `${this.#componentLocale.actions.updateTo} ${\n this.data.updateVersion\n }`;\n actionButtonCallback = this.#updateVersionHandler(\n this.data.updateVersion\n );\n } else {\n actionButtonCaption = this.#componentLocale.actions.installed;\n }\n\n if (moreVersionsToUpdate) {\n actionButtonClasses = `${actionButtonClasses} more-versions-available`;\n }\n\n return [\n <div class=\"version-buttons-container\">\n <button class={actionButtonClasses} onClick={actionButtonCallback}>\n {actionButtonCaption}\n </button>\n {moreVersionsToUpdate ? (\n <ch-action-menu-render\n class=\"dropdown button-primary button-icon-only\"\n blockAlign=\"outside-end\"\n inlineAlign=\"inside-start\"\n model={this.#versionsMenuOptionsModel()}\n onButtonClick={this.#menuVersionSelectedHandler}\n >\n <ch-image src={CHEVRON_DOWN_ICON} class=\"icon-md\"></ch-image>\n </ch-action-menu-render>\n ) : null}\n </div>\n ];\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTabId = event.detail.newSelectedId;\n };\n\n #renderDocSectionsSlots = (): JSX.Element => {\n return this.docsTabModel.map(docSectionTab => {\n if (docSectionTab.id === this.selectedTabId) {\n const markdownValue = this.#docSectionIdDescriptionMap.get(\n docSectionTab.id\n );\n\n return (\n <ch-markdown-viewer\n ref={el =>\n (this.#chMarkdownViewer = el as HTMLChMarkdownViewerElement)\n }\n slot={docSectionTab.id}\n key={docSectionTab.id}\n class=\"markdown spacing-body scrollable\"\n theme=\"components/markdown-viewer\"\n value={markdownValue}\n ></ch-markdown-viewer>\n );\n }\n });\n };\n\n #returnFormatedId = (rawId: string): string => {\n return rawId.toLowerCase().replace(/\\s+/g, \"-\");\n };\n\n #renderLinkTag = (\n href: string,\n label: string,\n cssClass?: string,\n chImageSrc?: string\n ): HTMLAnchorElement => {\n return (\n <a\n href={href}\n target=\"_blank\"\n onClick={this.#openLinkHandler(href)}\n class={cssClass}\n >\n {chImageSrc && <ch-image src={chImageSrc} class=\"icon-md\"></ch-image>}\n {label}\n </a>\n );\n };\n\n #renderAsideContent = (): JSX.Element => {\n return this.data.infoCategories.map(infoCategory => {\n return (\n <div class=\"plugin__info-category\">\n <h3 class=\"subtitle-semi-bold-s\">{infoCategory.name}</h3>\n <ul\n class={{\n \"fields__list\": true,\n \"fields__list--as-tags\": infoCategory.displayAsTags\n }}\n >\n {infoCategory.fields.map(field => {\n // If the field name isn’t specified, only the value is shown — usually a link.\n const fieldValue: string | HTMLAnchorElement =\n typeof field.value === \"string\"\n ? (field.value as string)\n : this.#renderLinkTag(\n (field.value as LinkData).url,\n (field.value as LinkData).text,\n \"field__link\"\n );\n return (\n <li class=\"field__li\">\n {field.name && !infoCategory.displayAsTags\n ? // displaysAsTags forces the items to be displayed as tags\n // no span.field__name and span.field__value\n [\n <span class=\"field__name body-semi-bold-s\">\n {field.name}\n </span>,\n <span class=\"field__value body-regular-s\">\n {fieldValue}\n </span>\n ]\n : fieldValue}\n </li>\n );\n })}\n </ul>\n </div>\n );\n });\n };\n\n render() {\n const renderActionButtons =\n !this.data.installed ||\n (this.data.installed && !!this.data.updateVersion);\n\n const titleLinkDataText = (this.data.name as LinkData).text;\n const titleLinkDataUrl = (this.data.name as LinkData).url;\n const titleHasLink = titleLinkDataText && titleLinkDataUrl;\n const titleText = titleLinkDataText || this.data.name;\n\n const publisherDataText = (this.data.publisher as LinkData).text;\n const publisherDataUrl = (this.data.publisher as LinkData).url;\n const publisherHasLink = publisherDataText && publisherDataUrl;\n const publisherText = publisherDataText || this.data.publisher;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header\">\n <img\n class=\"plugin__icon\"\n src={this.data.iconUrl || EXTENSION_ICON_IMG}\n alt=\"plugin extension icon\"\n />\n <div class=\"plugin__details\">\n {titleHasLink ? (\n <h2 class=\"heading-5 has-link\">\n {this.#renderLinkTag(\n titleLinkDataUrl,\n titleText as string,\n \"text-underline\"\n )}\n </h2>\n ) : (\n <h2 class=\"heading-5\">{titleText}</h2>\n )}\n {publisherHasLink ? (\n this.#renderLinkTag(\n publisherDataUrl,\n titleText as string,\n \"text-underline plugin__publisher tiny-semi-bold-l\",\n USER_ICON\n )\n ) : (\n <p class=\"plugin__publisher tiny-semi-bold-l\">\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </p>\n )}\n\n <p class=\"plugin__description\">{this.data.description}</p>\n <div class=\"buttons-spacer plugin__actions-container\">\n {renderActionButtons ? (\n this.#renderActionButtons()\n ) : (\n // installed and no updates\n <p class=\"installed-container subtitle-semi-bold-s\">\n <ch-image\n src={CHECK_CIRCLE_ICON}\n class=\"icon-md\"\n ></ch-image>\n {this.#componentLocale.actions.installed}\n </p>\n )}\n {this.data.installed && this.#renderUninstallButton()}\n </div>\n </div>\n </header>\n <div class=\"main\">\n {this.docsTabModel.length > 0 && (\n <ch-tab-render\n class=\"tab docsTab scrollable\"\n tabListPosition=\"block-start\"\n overflow=\"auto\"\n contain=\"size\"\n model={this.docsTabModel}\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n selectedId={this.selectedTabId}\n >\n {this.#renderDocSectionsSlots()}\n </ch-tab-render>\n )}\n </div>\n <div class=\"aside spacing-body scrollable\">\n {this.#renderAsideContent()}\n </div>\n </section>\n {/* <slot></slot> */}\n </Host>\n );\n }\n}\n\n// plugin-details.types.ts\n\nexport type LinkData = {\n text: string;\n url: string;\n};\n\nexport type PluginFieldData = {\n name?: string;\n value: string | LinkData;\n};\n\nexport type PluginInfoCategoryData = {\n name: string;\n fields: PluginFieldData[];\n displayAsTags: boolean;\n};\n\nexport type DocSectionData = {\n name: string;\n content: string;\n};\n\nexport type PluginDetailsData = {\n id: string;\n name: string | LinkData;\n publisher: string | LinkData;\n installed: boolean;\n updateVersion?: string;\n versions: string[];\n iconUrl: string;\n description: string;\n docSections: DocSectionData[];\n infoCategories: PluginInfoCategoryData[];\n};\n"],"version":3}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { g as getIconPath } from './MERCURY_ASSETS.js';
|
|
3
3
|
import { L as Locale } from './locale.js';
|
|
4
|
+
import { r as renderObjectTypeWithIcon } from './utilities.js';
|
|
4
5
|
import { d as defineCustomElement$3 } from './gx-ide-empty-state2.js';
|
|
5
6
|
import { d as defineCustomElement$2 } from './ide-loader.js';
|
|
6
7
|
|
|
7
|
-
const bringChangesCss = ":host{--pill-border-radius:12px;--pill-padding-inline:8px;--pill-padding-block:2px;--pill-font-size:var(--font-size-body-s);display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content max-content 1fr}.detail__current-version,.detail__knowledge-base{max-inline-size:250px;min-inline-size:180px}.detail__current-version,.detail__knowledge-base{padding-inline:24px;border-inline-end:1px solid var(--mer-border-color__on-elevation--01)}.information__col-1,.detail__genexus-server{padding-inline-end:24px;border-inline-end:1px solid var(--mer-border-color__on-elevation--01)}.information__col-2,.detail__merge-from-version{padding-inline-start:24px}.section{display:contents}.header{display:grid;gap:24px}.header__detail{display:grid;grid-template-areas:\"detail-title detail-title detail-title detail-title\" \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\" \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";row-gap:16px;grid-template-columns:minmax(250px, 350px) repeat(3, minmax(180px, 250px))}.detail__label{color:var(--mer-color__neutral-gray--400)}.detail__title{grid-area:detail-title}.detail__commit-name{grid-area:detail-commit-name}.detail__genexus-server{grid-area:detail-genexus-server}.detail__genexus-server>a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.detail__link{align-items:start;color:var(--mer-text__primary);text-decoration:underline}.detail__link:hover{color:var(--mer-text__primary--hover)}.detail__link:active{color:var(--mer-text__primary--active)}.detail__knowledge-base{grid-area:detail-knowledge-base}.detail__current-version{grid-area:detail-current-version}.detail__merge-from-version{grid-area:detail-merge-from-version}.header__information{display:grid;row-gap:10px;grid-template-areas:\"information-title information-title\" \"information-col-1 information-col-2\";grid-template-columns:max-content 1fr;grid-template-rows:max-content 64px}.information__title{grid-area:information-title}.information__col-1{grid-area:information-col-1;display:flex;gap:24px}.information__col-2{display:grid;grid-area:information-col-2}.controls-container{display:grid;margin-block-start:24px}.filter{grid-template-columns:232px 186px 1fr;gap:12px}.button-merge-checked{margin-inline-start:auto}.main{position:relative;display:grid;overflow:auto}.loader{position:relative;inline-size:100%;block-size:100%;inset-block-start:0}.tabular-grid{border-radius:4px;overflow:hidden}.empty-state{block-size:100%}.loader{--elevation-background-color:var(--mer-surface__elevation--01)}.warning-error-description{display:flex;align-items:center;gap:8px;padding:8px;max-inline-size:800px;line-height:1.5}.warning-error-icon{flex-shrink:0}.tabular-grid.empty-result::part(main){overflow:hidden}.input-comments-container{position:relative}.input-comments{--control__border-color:transparent;padding-block:0 !important;padding-inline:0 !important;--line-height-tight:1.4;block-size:100%;background-color:var(--mer-surface);transition:var(--mer-timing--super-fast) block-size, var(--mer-timing--super-fast) background-color, var(--mer-timing--super-fast) padding-block, var(--mer-timing--super-fast) padding-inline}.input-comments:focus{position:absolute;block-size:200px;inline-size:100%;z-index:99;background-color:var(--mer-surface__elevation--01);padding-block:var(--control__padding-block) !important;padding-inline:var(--control__padding-inline) !important}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon){background-size:contain;margin-inline-end:0;--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--enabled);cursor:pointer}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):hover{--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--hover)}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):active{--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--active)}.tabular-grid-row-actions::part(main),.property-grid-row-actions::part(main){gap:0 !important}.
|
|
8
|
+
const bringChangesCss = ".custom-icon-text-wrapper{display:flex;align-items:center;gap:10px}:host{--pill-border-radius:12px;--pill-padding-inline:8px;--pill-padding-block:2px;--pill-font-size:var(--font-size-body-s);display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content max-content 1fr}.detail__current-version,.detail__knowledge-base{max-inline-size:250px;min-inline-size:180px}.detail__current-version,.detail__knowledge-base{padding-inline:24px;border-inline-end:1px solid var(--mer-border-color__on-elevation--01)}.information__col-1,.detail__genexus-server{padding-inline-end:24px;border-inline-end:1px solid var(--mer-border-color__on-elevation--01)}.information__col-2,.detail__merge-from-version{padding-inline-start:24px}.section{display:contents}.header{display:grid;gap:24px}.header__detail{display:grid;grid-template-areas:\"detail-title detail-title detail-title detail-title\" \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\" \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";row-gap:16px;grid-template-columns:minmax(250px, 350px) repeat(3, minmax(180px, 250px))}.detail__label{color:var(--mer-color__neutral-gray--400)}.detail__title{grid-area:detail-title}.detail__commit-name{grid-area:detail-commit-name}.detail__genexus-server{grid-area:detail-genexus-server}.detail__genexus-server>a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.detail__link{align-items:start;color:var(--mer-text__primary);text-decoration:underline}.detail__link:hover{color:var(--mer-text__primary--hover)}.detail__link:active{color:var(--mer-text__primary--active)}.detail__knowledge-base{grid-area:detail-knowledge-base}.detail__current-version{grid-area:detail-current-version}.detail__merge-from-version{grid-area:detail-merge-from-version}.header__information{display:grid;row-gap:10px;grid-template-areas:\"information-title information-title\" \"information-col-1 information-col-2\";grid-template-columns:max-content 1fr;grid-template-rows:max-content 64px}.information__title{grid-area:information-title}.information__col-1{grid-area:information-col-1;display:flex;gap:24px}.information__col-2{display:grid;grid-area:information-col-2}.controls-container{display:grid;margin-block-start:24px}.filter{grid-template-columns:232px 186px 1fr;gap:12px}.button-merge-checked{margin-inline-start:auto}.main{position:relative;display:grid;overflow:auto}.loader{position:relative;inline-size:100%;block-size:100%;inset-block-start:0}.tabular-grid{border-radius:4px;overflow:hidden}.empty-state{block-size:100%}.loader{--elevation-background-color:var(--mer-surface__elevation--01)}.warning-error-description{display:flex;align-items:center;gap:8px;padding:8px;max-inline-size:800px;line-height:1.5}.warning-error-icon{flex-shrink:0}.tabular-grid.empty-result::part(main){overflow:hidden}.input-comments-container{position:relative}.input-comments{--control__border-color:transparent;padding-block:0 !important;padding-inline:0 !important;--line-height-tight:1.4;block-size:100%;background-color:var(--mer-surface);transition:var(--mer-timing--super-fast) block-size, var(--mer-timing--super-fast) background-color, var(--mer-timing--super-fast) padding-block, var(--mer-timing--super-fast) padding-inline}.input-comments:focus{position:absolute;block-size:200px;inline-size:100%;z-index:99;background-color:var(--mer-surface__elevation--01);padding-block:var(--control__padding-block) !important;padding-inline:var(--control__padding-inline) !important}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon){background-size:contain;margin-inline-end:0;--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--enabled);cursor:pointer}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):hover{--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--hover)}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon):active{--icon-path:var(--icon__gemini-tools_show-more-vertical_neutral--active)}.tabular-grid-row-actions::part(main),.property-grid-row-actions::part(main){gap:0 !important}.tabular-grid-row-actions>button{justify-content:start}.pill{--pill-background-color:transparent;--pill-color:transparent;--pill-border-color:transparent;background-color:var(--pill-background-color);color:var(--pill-color);border:1px solid var(--pill-border-color);inline-size:100%;padding:var(--pill-padding-block) var(--pill-padding-inline);display:flex;align-items:center;justify-content:center;border-radius:var(--pill-border-radius);position:relative;font-weight:var(--font-weight-semi-bold)}.pill--to-merge,.pill--to-revert{--pill-background-color:var();--pill-color:var(--mer-color__neutral-gray--400);--pill-border-color:var()}.pill--to-merge-marked{--pill-background-color:var();--pill-color:var(--mer-border-color__primary);--pill-border-color:var()}.pill--pending{--pill-background-color:var(--mer-color__tinted-primary--8);--pill-color:var(--mer-border-color__primary);--pill-border-color:var(--mer-color__tinted-primary--50)}.pill--warning{--pill-background-color:var(--mer-color__tinted-yellow--5);--pill-color:var(--mer-border-color__warning);--pill-border-color:var(--mer-color__tinted-yellow--60)}.pill--error{--pill-background-color:var(--mer-color__tinted-red--5);--pill-color:var(--mer-border-color__error);--pill-border-color:var(--mer-color__tinted-red--60)}.pill--merged,.pill--reverted{--pill-background-color:var(--mer-color__tinted-green--5);--pill-color:var(--mer-border-color__success);--pill-border-color:var(--mer-color__tinted-green--60)}.pill--transitioning{--pill-color:transparent}.merging-spinner-caption{display:flex;align-items:center;gap:6px;--status-circle-color:transparent;--status-circle-size:$size;--status-circle-inset-inline-start:14px;--pill-color:var(--mer-border-color__primary)}.merging-spinner-caption::before{display:inline-block;content:\"\";width:14px;height:14px;border:calc(14px / 7) solid var(--mer-color__tinted-primary--50);border-top:calc(14px / 7) solid var(--mer-color__primary--300);border-radius:50%;animation:spin var(--mer-timing--regular) linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.tabular-grid .button-secondary{--control__padding-block:var(--pill-padding-block);--control__padding-inline:var(--pill-padding-inline);font-size:inherit;font-weight:inherit;}.tabular-grid .tabular-grid-cell--for-pill{--grid-cell__padding-block:4px;align-items:center;justify-content:center}.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon){pointer-events:none;opacity:0.5}.tabular-grid-column--settings-custom-selector,.tabular-grid-cell--settings-custom-selector{--grid-cell__padding-inline:0;--grid-cell__padding-block:0}.tabular-grid-cell::part(actions-icon){padding-block:6px}ch-tabular-grid-cell.tabular-grid-cell::part(actions-icon){block-size:100%;display:block;background-size:14px;padding-inline:16px}.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label){visibility:hidden}.tabular-grid-row-actions::part(window){background-color:var(--mer-surface__elevation--02) !important}.tabular-grid-row .tabular-grid-cell:nth-child(3){min-inline-size:400px}";
|
|
8
9
|
|
|
9
10
|
var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
10
11
|
if (kind === "a" && !f)
|
|
@@ -22,7 +23,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
|
|
|
22
23
|
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
23
24
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
24
25
|
};
|
|
25
|
-
var _GxIdeTeamDevBringChanges_componentLocale, _GxIdeTeamDevBringChanges_commitLabel, _GxIdeTeamDevBringChanges_comboBoxStatesModel, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, _GxIdeTeamDevBringChanges_formatComments, _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler, _GxIdeTeamDevBringChanges_mergeSingleObject, _GxIdeTeamDevBringChanges_renderActionCellContent, _GxIdeTeamDevBringChanges_renderCommitsNumbers, _GxIdeTeamDevBringChanges_renderFormatedDate, _GxIdeTeamDevBringChanges_renderObjectActions,
|
|
26
|
+
var _GxIdeTeamDevBringChanges_componentLocale, _GxIdeTeamDevBringChanges_commitLabel, _GxIdeTeamDevBringChanges_comboBoxStatesModel, _GxIdeTeamDevBringChanges_checkedObjectsIdsArray, _GxIdeTeamDevBringChanges_formatComments, _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler, _GxIdeTeamDevBringChanges_mergeSingleObject, _GxIdeTeamDevBringChanges_renderActionCellContent, _GxIdeTeamDevBringChanges_renderCommitsNumbers, _GxIdeTeamDevBringChanges_renderFormatedDate, _GxIdeTeamDevBringChanges_renderObjectActions, _GxIdeTeamDevBringChanges_renderObjectStateWithIcon, _GxIdeTeamDevBringChanges_renderObjectsRows, _GxIdeTeamDevBringChanges_rowContextMenuHandler, _GxIdeTeamDevBringChanges_rowMarkingChangedHandler, _GxIdeTeamDevBringChanges_searchInputHandler, _GxIdeTeamDevBringChanges_stateChangedHandler, _GxIdeTeamDevBringChanges_updateMenuContextActions, _GxIdeTeamDevBringChanges_updateFilteredObjects;
|
|
26
27
|
const CSS_BUNDLES = [
|
|
27
28
|
"resets/box-sizing",
|
|
28
29
|
"components/tabular-grid",
|
|
@@ -177,7 +178,7 @@ const GxIdeTeamDevBringChanges$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeT
|
|
|
177
178
|
h("button", { type: "button", class: "button-tertiary", disabled: previewMergeDisabled }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").objectActions.previewMerge)
|
|
178
179
|
];
|
|
179
180
|
});
|
|
180
|
-
|
|
181
|
+
_GxIdeTeamDevBringChanges_renderObjectStateWithIcon.set(this, (objectType, objectId) => {
|
|
181
182
|
if (objectType === "merging" || objectType === "reverting") {
|
|
182
183
|
return (h("span", { class: "merging-spinner-caption" }, this.operationType === "revert"
|
|
183
184
|
? __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states.reverting
|
|
@@ -194,10 +195,6 @@ const GxIdeTeamDevBringChanges$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeT
|
|
|
194
195
|
return (h("span", { class: classes }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_componentLocale, "f").states[objectType]));
|
|
195
196
|
}
|
|
196
197
|
});
|
|
197
|
-
_GxIdeTeamDevBringChanges_renderObjectType.set(this, (objectType) => {
|
|
198
|
-
const icon = objectType.icon;
|
|
199
|
-
return (h("span", { class: "custom-icon-text-wrapper" }, h("ch-image", { class: "icon-md", src: icon }), `${objectType.name}`));
|
|
200
|
-
});
|
|
201
198
|
_GxIdeTeamDevBringChanges_renderObjectsRows.set(this, () => {
|
|
202
199
|
return this.objectsFiltered.map(commitObject => {
|
|
203
200
|
const marked = this.markedObjectsSet.has(commitObject.id);
|
|
@@ -214,7 +211,7 @@ const GxIdeTeamDevBringChanges$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeT
|
|
|
214
211
|
return (h("ch-tabular-grid-row", { class: "tabular-grid-row", key: commitObject.id, rowid: commitObject.id, ref: (el) => marked && (el === null || el === void 0 ? void 0 : el.setAttribute("marked", "true")) }, h("ch-tabular-grid-cell", { "cell-type": "rich", "row-selector": "true", class: {
|
|
215
212
|
"tabular-grid-cell": true,
|
|
216
213
|
"no-checkbox-custom-selector": alreadyMerged
|
|
217
|
-
}, size: "max-content" }, commitObject.name), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" },
|
|
214
|
+
}, size: "max-content" }, commitObject.name), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, renderObjectTypeWithIcon(commitObject.type)), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, commitObject.description), h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_renderActionCellContent, "f").call(this, commitObject.actionTaken)), h("ch-tabular-grid-cell", { class: "tabular-grid-cell tabular-grid-cell--for-pill" }, __classPrivateFieldGet(this, _GxIdeTeamDevBringChanges_renderObjectStateWithIcon, "f").call(this, this.objectsStatesMap.get(commitObject.id), commitObject.id)), h("ch-tabular-grid-cell", { class: "tabular-grid-cell tabular-grid-cell--settings-custom-selector", "cell-type": "rich", "row-actions": "true" }), errorOrWarningMessage && (h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-empty", { class: { "tabular-grid-rowset-empty": true, [state]: true } }, h("p", { class: "warning-error-description" }, h("ch-image", { class: "icon-md warning-error-icon", src: MESSAGE_ICON }), errorOrWarningMessage))))));
|
|
218
215
|
});
|
|
219
216
|
});
|
|
220
217
|
_GxIdeTeamDevBringChanges_rowContextMenuHandler.set(this, (event) => {
|
|
@@ -486,7 +483,7 @@ const GxIdeTeamDevBringChanges$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeT
|
|
|
486
483
|
"objectsStatesMap": ["objectsStatesMapChanged"],
|
|
487
484
|
"commitObjects": ["commitObjectsChanged"]
|
|
488
485
|
}]);
|
|
489
|
-
_GxIdeTeamDevBringChanges_componentLocale = new WeakMap(), _GxIdeTeamDevBringChanges_commitLabel = new WeakMap(), _GxIdeTeamDevBringChanges_comboBoxStatesModel = new WeakMap(), _GxIdeTeamDevBringChanges_checkedObjectsIdsArray = new WeakMap(), _GxIdeTeamDevBringChanges_formatComments = new WeakMap(), _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevBringChanges_mergeSingleObject = new WeakMap(), _GxIdeTeamDevBringChanges_renderActionCellContent = new WeakMap(), _GxIdeTeamDevBringChanges_renderCommitsNumbers = new WeakMap(), _GxIdeTeamDevBringChanges_renderFormatedDate = new WeakMap(), _GxIdeTeamDevBringChanges_renderObjectActions = new WeakMap(),
|
|
486
|
+
_GxIdeTeamDevBringChanges_componentLocale = new WeakMap(), _GxIdeTeamDevBringChanges_commitLabel = new WeakMap(), _GxIdeTeamDevBringChanges_comboBoxStatesModel = new WeakMap(), _GxIdeTeamDevBringChanges_checkedObjectsIdsArray = new WeakMap(), _GxIdeTeamDevBringChanges_formatComments = new WeakMap(), _GxIdeTeamDevBringChanges_mergeCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevBringChanges_mergeSingleObject = new WeakMap(), _GxIdeTeamDevBringChanges_renderActionCellContent = new WeakMap(), _GxIdeTeamDevBringChanges_renderCommitsNumbers = new WeakMap(), _GxIdeTeamDevBringChanges_renderFormatedDate = new WeakMap(), _GxIdeTeamDevBringChanges_renderObjectActions = new WeakMap(), _GxIdeTeamDevBringChanges_renderObjectStateWithIcon = new WeakMap(), _GxIdeTeamDevBringChanges_renderObjectsRows = new WeakMap(), _GxIdeTeamDevBringChanges_rowContextMenuHandler = new WeakMap(), _GxIdeTeamDevBringChanges_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevBringChanges_searchInputHandler = new WeakMap(), _GxIdeTeamDevBringChanges_stateChangedHandler = new WeakMap(), _GxIdeTeamDevBringChanges_updateMenuContextActions = new WeakMap(), _GxIdeTeamDevBringChanges_updateFilteredObjects = new WeakMap();
|
|
490
487
|
function defineCustomElement$1() {
|
|
491
488
|
if (typeof customElements === "undefined") {
|
|
492
489
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-team-dev-bring-changes.js","mappings":";;;;;;AAAA,MAAM,eAAe,GAAG,0sOAA0sO;;;;;;;;;;;;;;;;;;;ACoBluO,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;MAQUA,0BAAwB;;;;;;;;;QAKnC,4DAAsB;QACtB,wDAAqB;QACrB,gEAAyE;QACzE,2DAAoC,EAAE,EAAC;QA2KvC,mDAAkB;YAChB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;;gBAEvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aAC1C;;YAGD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvD,MAAM,qBAAqB,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;gBACnD,aAAa,IAAI,UAAU,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,OAAO,GAAG,qBAAqB,EAAE,CAAC;aACpF,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;SACtB,EAAC;QAEF,+DAA8B;YAC5B,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;gBAClD,mBAAmB,CAAC,GAAG,CACrB,eAAe,EACf,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,WAAW,GAAG,SAAS,CAC1D,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAC5C,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAA,IAAI,wDAAwB,CAAC,CAAC;SAC/D,EAAC;QAEF,sDACE,QAAQ,IAAI;YACV,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,GAAG,WAAW,GAAG,SAAS,CAC1D,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;YAC5C,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7C,EAAC;QAEJ,4DAA2B,CACzB,WAA8B;YAE9B,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;;gBAEL,IAAI,GAAG,WAAW,CAAC;gBACnB,OAAO,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;gBACvD,SAAS,GAAG,qBAAqB,CAAC;aACnC;YAED,QACE,YAAM,KAAK,EAAC,0BAA0B,IACpC,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,SAAS,EACf,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,EAAE,eAAe,EAAE,OAAO,SAAS,GAAG,EAAE,GACrC,EACX,GAAG,OAAO,EAAE,CACR,EACP;SACH,EAAC;QAEF,yDAAwB,CAAC,cAAuB,KAAK;;YACnD,IAAI,CAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,IAAG,CAAC,EAAE;;gBAEtC,OAAO,WAAW;sBACd,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;sBACF,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;;gBAE/C,OAAO,WAAW;sBACd,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;sBAC5B,GAAG,uBAAA,IAAI,6CAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAC5D;iBAAM;;gBAEL,OAAO,WAAW;sBACd,GAAG,uBAAA,IAAI,iDAAiB,CAAC,OAAO,EAAE;sBAClC,GAAG,uBAAA,IAAI,6CAAa,IAAI,uBAAA,IAAI,iDAAiB,CAAC,OAAO,EAAE,CAAC;aAC7D;SACF,EAAC;QAEF,uDAAsB,CAAC,IAAU;;YAC/B,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;SACN,EAAC;QAEF,wDAAuB;YACrB,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;SACH,EAAC;QAEF,sDAAqB,CACnB,UAAuB,EACvB,QAAgB;YAEhB,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,WAAW,EAAE;gBAC1D,QACE,YAAM,KAAK,EAAC,yBAAyB,IAClC,IAAI,CAAC,aAAa,KAAK,QAAQ;sBAC5B,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,SAAS;sBACtC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,OAAO,CACnC,EACP;aACH;YACD,MAAM,OAAO,GAAG,cAAc,UAAU,EAAE,CAAC;YAC3C,IACE,IAAI,CAAC,iBAAiB;iBACrB,UAAU,KAAK,UAAU;oBACxB,UAAU,KAAK,iBAAiB;oBAChC,UAAU,KAAK,WAAW,CAAC,EAC7B;gBACA,QACE,cACE,KAAK,EAAE,EAAE,CAAC,OAAO,GAAG,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,EACT;aACH;iBAAM;gBACL,QACE,YAAM,KAAK,EAAE,OAAO,IAAG,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAQ,EACvE;aACH;SACF,EAAC;QAEF,qDAAoB,CAAC,UAAsB;YACzC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAE7B,QACE,YAAM,KAAK,EAAC,0BAA0B,IACpC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,IAAI,GAAa,EAC/C,GAAG,UAAU,CAAC,IAAI,EAAE,CAChB,EACP;SACH,EAAC;QAEF,sDAAqB;YACnB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY;gBAC1C,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,IAAI,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,QACE,2BACE,KAAK,EAAC,kBAAkB,EACxB,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,KAAK,EAAE,YAAY,CAAC,EAAE,EACtB,GAAG,EAAE,CAAC,EAAe,KACnB,MAAM,KAAI,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA,IAG9C,yCACY,MAAM,kBACH,MAAM,EACnB,KAAK,EAAE;wBACL,mBAAmB,EAAE,IAAI;wBACzB,6BAA6B,EAAE,aAAa;qBAC7C,EACD,IAAI,EAAC,aAAa,IAEjB,YAAY,CAAC,IAAI,CACG,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,uBAAA,IAAI,kDAAkB,MAAtB,IAAI,EAAmB,YAAY,CAAC,IAAI,CAAC,CACrB,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,YAAY,CAAC,WAAW,CACJ,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,uBAAA,IAAI,yDAAyB,MAA7B,IAAI,EAA0B,YAAY,CAAC,WAAW,CAAC,CACnC,EACvB,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,EACvB,4BACE,KAAK,EAAC,+DAA+D,eAC3D,MAAM,iBACJ,MAAM,GACI,EACvB,qBAAqB,KACpB,8BAAwB,KAAK,EAAC,qBAAqB,IACjD,oCACE,KAAK,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,IAE3D,SAAG,KAAK,EAAC,2BAA2B,IAClC,gBACE,KAAK,EAAC,4BAA4B,EAClC,GAAG,EAAE,YAAY,GACP,EACX,qBAAqB,CACpB,CACyB,CACR,CAC1B,CACmB,EACtB;aACH,CAAC,CAAC;SACJ,EAAC;QAEF,0DAAyB,CACvB,KAAkD;YAElD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,uBAAA,IAAI,0DAA0B,MAA9B,IAAI,EAA2B,KAAK,CAAC,CAAC;SACvC,EAAC;QAEF,6DAA4B,CAC1B,KAAkD;YAElD,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,IACZ,CAAC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC9D,CAAC;YACF,uBAAA,IAAI,oDAA2B,CAAC,GAAG,mCAAmC,CAAC,MAAA,CAAC;;YAGxE,uBAAA,IAAI,wDAAwB,CAAC,OAAO,CAAC,eAAe;gBAClD,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aAC1C,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;gBAClC,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,IAAI,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;iBAEzC;qBAAM;oBACL,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC/C;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;SAC7C,EAAC;QAEF,uDAAsB,CAAC,KAA6C;YAClE,IAAI,CAAC,WAAW,GAAI,KAAK,CAAC,MAAiB,CAAC,WAAW,EAAE,CAAC;YAC1D,uBAAA,IAAI,uDAAuB,MAA3B,IAAI,CAAyB,CAAC;SAC/B,EAAC;QAEF,wDAAuB,CAAC,KAAuC;YAC7D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAA8B,CAAC;YAC7D,uBAAA,IAAI,uDAAuB,MAA3B,IAAI,CAAyB,CAAC;SAC/B,EAAC;QAEF,6DAA4B,CAAC,0BAAkC;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACpC,YAAY,IAAI,YAAY,CAAC,EAAE,KAAK,0BAA0B,CAC/D,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;SAC7C,EAAC;QAEF,0DAAyB;YACvB,IAAI,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;;YAG9C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACnC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM;oBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACzD,OAAO,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC;iBAC9C,CAAC,CAAC;aACJ;;YAGD,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM;gBAC7C,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;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SACxC,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,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,WAAW,CAC5D,CAAC;QAEF,IAAI,CAAC,mBAAmB,EAAE;YACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;KACF;IA2BD,oBAAoB,CAAC,gBAAgC;QACnD,IAAI,gBAAgB,CAAC,MAAM,EAAE;;YAE3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;YAGrB,gBAAgB,CAAC,OAAO,CAAC,YAAY;gBACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,YAAY,CAAC,EAAE,EACf,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,WAAW,GAAG,UAAU,CAC3D,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;SAC3C;KACF;IA2BD,MAAM,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;cAC7B,uBAAA,IAAI,iDAAiB,CAAC,QAAQ;cAC9B,uBAAA,IAAI,iDAAiB,CAAC,OAAO,MAAA,CAAC;;QAGpC,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;sBAC3B,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,WAAW,CAAC;sBACzC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9C,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,WAAW,GAAG,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;sBAC3B,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,QAAQ;sBACrC,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,MAAM;gBACzC,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,UAAU,GAAG,QAAQ;aAC/D;SACF,MAAA,CAAC;QAEF,IAAI,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM,EAAE;;YAE9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC/C;KACF;;;;;;;;;;;IAiYD,MAAM,iBAAiB,CACrB,QAAgB,EAChB,QAAqB,EACrB,OAAe;;QAGf,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;;QAG5C,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;;YAEpD,uBAAA,IAAI,oDAA2B,uBAAA,IAAI,wDAAwB,CAAC,MAAM,CAChE,aAAa,IAAI,aAAa,KAAK,QAAQ,CAC5C,MAAA,CAAC;;YAGF,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAGjD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;;YAG5C,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAChD;KACF;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,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,IAClB,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACtB,cAAQ,KAAK,EAAC,qDAAqD,IACjE;;YAEE,KAAK,EAAC,gBAAgB;WAEtB,SAAG,KAAK,EAAC,qCAAqC,IAC3C,IAAI,CAAC,aAAa,KAAK,QAAQ;cAC5B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,mBAAmB;cACtD,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,kBAAkB,CACvD,EACJ,SAAG,KAAK,EAAC,0CAA0C,IAChD,uBAAA,IAAI,sDAAsB,MAA1B,IAAI,CAAwB,CAC3B,EACJ;;YAEE,KAAK,EAAC,0CAA0C;WAEhD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,aAAa,CAC5C,EACP,SACE,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EACrC,MAAM,EAAC,QAAQ,IAEd,IAAI,CAAC,YAAY,CAAC,aAAa,CAC9B,CACA,EAEN;;YAEE,KAAK,EAAC,0CAA0C;WAEhD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,aAAa,CAC5C,EACP,SAAG,KAAK,EAAC,gBAAgB,IAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAK,CAC3D,EAEN;;YAEE,KAAK,EAAC,2CAA2C;WAEjD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,cAAc,CAC7C,EACP,SAAG,KAAK,EAAC,gBAAgB,IAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAK,CAC5D,EACL,IAAI,CAAC,aAAa,KAAK,OAAO,KAC7B;;YAEE,KAAK,EAAC,8CAA8C;WAEpD,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,YAAY,CAAC,gBAAgB,CAC/C,EACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CACjC,CACA,CACP,CACG,EACN;;YAEE,KAAK,EAAC,qBAAqB;WAE3B,SAAG,KAAK,EAAC,0CAA0C,IAChD,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,KAAK,CAC5C,EACJ;;YAEE,KAAK,EAAC,oBAAoB;WAE1B;;YAEE,KAAK,EAAC,mBAAmB;WAEzB,YAAM,KAAK,EAAE,oBAAoB,IAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;cAChC,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,EAAE;cAC1C,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,GAAG,CAC1C,EACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,sDAAsB,MAA1B,IAAI,EAAuB,IAAI,CAAC,CAC/B,CACA,EACL,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAClC,WAAK,KAAK,EAAC,mBAAmB,IAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,IAAI,CACxC,EACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,oDAAoB,MAAxB,IAAI,EAAqB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CACvD,CACA,KAEN;YACE,WAAK,KAAK,EAAC,mBAAmB,IAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,IAAI,CACxC,EACP,SAAG,KAAK,EAAC,gBAAgB,IACtB,uBAAA,IAAI,oDAAoB,MAAxB,IAAI,EACH,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/B,CACC,CACA;YACN,WAAK,KAAK,EAAC,mBAAmB,IAC5B,YAAM,KAAK,EAAE,oBAAoB,IAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,EAAE,CACtC,EACP,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;SACP,CACF,CACG,EAEN;;YAEE,KAAK,EAAC,oBAAoB;WAE1B;;YAEE,KAAK,EAAC,mBAAmB;WAEzB,aAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAC,iBAAiB,IAC1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;cAC9B,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,QAAQ;cAChD,uBAAA,IAAI,iDAAiB,CAAC,iBAAiB,CAAC,OAAO,CAC7C,EACR,WAAK,KAAK,EAAC,0BAA0B,IACnC,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,EACT,WACE,KAAK,EAAE;gBACL,oBAAoB,EAAE,IAAI;gBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW;gBAC3B,qBAAqB,EAAE,IAAI;aAC5B,IAEA,CAAC,IAAI,CAAC,WAAW,IAAI;YACpB,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;YACX,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;SACxB,EAED,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;cAC5B,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,cAAc;cAC3C,uBAAA,IAAI,iDAAiB,CAAC,MAAM,CAAC,aAAa,CACvC,CACL,EACN,WAAK,KAAK,EAAC,mBAAmB,IAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,IACxB,uBACE,KAAK,EAAE;gBACL,cAAc,EAAE,IAAI;gBACpB,sBAAsB,EAAE,IAAI;gBAC5B,0BAA0B,EAAE,IAAI,CAAC,OAAO;gBACxC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;aAClD,EACD,sBAAsB,EAAC,OAAO,EAC9B,gBAAgB,EAAC,UAAU,EAC3B,mBAAmB,EAAE,uBAAA,IAAI,0DAA0B,EACnD,gBAAgB,EAAE,uBAAA,IAAI,uDAAuB,EAC7C,GAAG,EAAE,EAAE,KACJ,IAAI,CAAC,aAAa,GAAG,EAA8B,CAAC,IAGvD,iCAA2B,KAAK,EAAC,yBAAyB,IACxD,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,EACF,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,EACF,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,EACF,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,EACF;;;YAGE,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;UACZ,EACF,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,EAC3B,uBAAA,IAAI,mDAAmB,MAAvB,IAAI,CAAqB,EACzB,IAAI,CAAC,gBAAgB,KACpB,mCACE,KAAK,EAAC,0BAA0B,EAChC,gBAAgB,UAEf,uBAAA,IAAI,qDAAqB,MAAzB,IAAI,CAAuB,CACA,CAC/B,EACA,IAAI,CAAC,gBAAgB,KACpB,mCACE,KAAK,EAAC,0BAA0B,EAChC,gBAAgB,UAEf,uBAAA,IAAI,qDAAqB,MAAzB,IAAI,CAAuB,CACA,CAC/B,EAED,8BAAwB,KAAK,EAAC,qBAAqB,IAChD,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,KAChC,wCACE,0BACE,KAAK,EAAC,aAAa,EACnB,UAAU,QACV,YAAY,EAAE,WAAW,EACzB,UAAU,EAAC,+BAA+B,GACtB,CACO,CAChC,CACsB,CACT,KAElB,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,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeTeamDevBringChanges"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: 24px;\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: 16px;\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: 10px;\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content 64px;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.custom-icon-text-wrapper {\n // To align an icon and a text, with gap\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","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"],"version":3}
|
|
1
|
+
{"file":"gx-ide-team-dev-bring-changes.js","mappings":"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","names":["GxIdeTeamDevBringChanges"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../common/styles.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: 24px;\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: 16px;\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: 10px;\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content 64px;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","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\";\nimport { ObjectType } from \"../../../components\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\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 #renderObjectStateWithIcon = (\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 #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 {renderObjectTypeWithIcon(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.#renderObjectStateWithIcon(\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 MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"],"version":3}
|