@genexus/genexus-ide-ui 1.1.30 → 1.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  3. package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +132 -0
  5. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -0
  6. package/dist/cjs/gx-ide-starting-template.cjs.entry.js +103 -0
  7. package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/collection-manifest.json +2 -1
  10. package/dist/collection/components/_starting-template/gx-ide-assets/starting-template/langs/starting-template.lang.en.json +11 -0
  11. package/dist/collection/components/_starting-template/gx-ide-assets/starting-template/langs/starting-template.lang.ja.json +11 -0
  12. package/dist/collection/components/_starting-template/gx-ide-assets/starting-template/langs/starting-template.lang.zh.json +11 -0
  13. package/dist/collection/components/_starting-template/starting-template.css +17 -0
  14. package/dist/collection/components/_starting-template/starting-template.js +199 -0
  15. package/dist/collection/components/_starting-template/starting-template.js.map +1 -0
  16. package/dist/collection/components/about/about.css +0 -1
  17. package/dist/collection/components/details-acknowledgements/details-acknowledgements.css +162 -0
  18. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js +220 -0
  19. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js.map +1 -0
  20. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/images/bottom-end.svg +46 -0
  21. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/images/bottom-start.svg +24 -0
  22. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/images/genexus-next-logo.svg +3 -0
  23. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/images/top-start.svg +36 -0
  24. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +14 -0
  25. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +14 -0
  26. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +14 -0
  27. package/dist/collection/testing/locale.e2e.js +2 -1
  28. package/dist/collection/testing/locale.e2e.js.map +1 -1
  29. package/dist/components/gx-ide-about.js +1 -1
  30. package/dist/components/gx-ide-about.js.map +1 -1
  31. package/dist/components/gx-ide-details-acknowledgements.d.ts +11 -0
  32. package/dist/components/gx-ide-details-acknowledgements.js +152 -0
  33. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -0
  34. package/dist/components/gx-ide-starting-template.d.ts +11 -0
  35. package/dist/components/gx-ide-starting-template.js +125 -0
  36. package/dist/components/gx-ide-starting-template.js.map +1 -0
  37. package/dist/esm/genexus-ide-ui.js +1 -1
  38. package/dist/esm/gx-ide-about.entry.js +1 -1
  39. package/dist/esm/gx-ide-about.entry.js.map +1 -1
  40. package/dist/esm/gx-ide-details-acknowledgements.entry.js +128 -0
  41. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -0
  42. package/dist/esm/gx-ide-starting-template.entry.js +99 -0
  43. package/dist/esm/gx-ide-starting-template.entry.js.map +1 -0
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  46. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  47. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/images/bottom-end.svg +46 -0
  48. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/images/bottom-start.svg +24 -0
  49. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/images/genexus-next-logo.svg +3 -0
  50. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/images/top-start.svg +36 -0
  51. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +14 -0
  52. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +14 -0
  53. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +14 -0
  54. package/dist/genexus-ide-ui/gx-ide-assets/starting-template/langs/starting-template.lang.en.json +11 -0
  55. package/dist/genexus-ide-ui/gx-ide-assets/starting-template/langs/starting-template.lang.ja.json +11 -0
  56. package/dist/genexus-ide-ui/gx-ide-assets/starting-template/langs/starting-template.lang.zh.json +11 -0
  57. package/dist/genexus-ide-ui/{p-c3e410cc.entry.js → p-04308eaa.entry.js} +2 -2
  58. package/dist/genexus-ide-ui/p-04308eaa.entry.js.map +1 -0
  59. package/dist/genexus-ide-ui/p-5e2f9545.entry.js +187 -0
  60. package/dist/genexus-ide-ui/p-5e2f9545.entry.js.map +1 -0
  61. package/dist/genexus-ide-ui/p-7b986243.entry.js +132 -0
  62. package/dist/genexus-ide-ui/p-7b986243.entry.js.map +1 -0
  63. package/dist/types/components/_starting-template/starting-template.d.ts +31 -0
  64. package/dist/types/components/details-acknowledgements/details-acknowledgements.d.ts +30 -0
  65. package/dist/types/components/details-acknowledgements/types.d.ts +19 -0
  66. package/dist/types/components.d.ts +94 -44
  67. package/package.json +1 -1
  68. package/dist/cjs/gx-ide-template.cjs.entry.js +0 -42
  69. package/dist/cjs/gx-ide-template.cjs.entry.js.map +0 -1
  70. package/dist/collection/components/_starting-template/gx-ide-assets/template/langs/template.lang.en.json +0 -10
  71. package/dist/collection/components/_starting-template/gx-ide-assets/template/langs/template.lang.ja.json +0 -10
  72. package/dist/collection/components/_starting-template/gx-ide-assets/template/langs/template.lang.zh.json +0 -10
  73. package/dist/collection/components/_starting-template/template.css +0 -594
  74. package/dist/collection/components/_starting-template/template.js +0 -87
  75. package/dist/collection/components/_starting-template/template.js.map +0 -1
  76. package/dist/components/gx-ide-template.d.ts +0 -11
  77. package/dist/components/gx-ide-template.js +0 -70
  78. package/dist/components/gx-ide-template.js.map +0 -1
  79. package/dist/esm/gx-ide-template.entry.js +0 -38
  80. package/dist/esm/gx-ide-template.entry.js.map +0 -1
  81. package/dist/genexus-ide-ui/gx-ide-assets/template/langs/template.lang.en.json +0 -10
  82. package/dist/genexus-ide-ui/gx-ide-assets/template/langs/template.lang.ja.json +0 -10
  83. package/dist/genexus-ide-ui/gx-ide-assets/template/langs/template.lang.zh.json +0 -10
  84. package/dist/genexus-ide-ui/p-70526bf3.entry.js +0 -62
  85. package/dist/genexus-ide-ui/p-70526bf3.entry.js.map +0 -1
  86. package/dist/genexus-ide-ui/p-c3e410cc.entry.js.map +0 -1
  87. package/dist/types/components/_starting-template/template.d.ts +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
1
+ {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-ai-assistant\": 0,\n \"gx-ide-ai-message\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-card\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-dashboard-home\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-details-acknowledgements\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-directory-selector\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-manage-module-references-v2\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-user-team\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-team\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-switch-panel\": 0,\n \"gx-ide-switcher\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-starting-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-title\": 0,\n \"gx-ide-top-bar\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-ai-message\",\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-directory-selector\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-switch-panel\",\n \"gx-ide-switcher\",\n \"gx-ide-test\",\n \"gx-ide-title\",\n \"gx-ide-top-bar\",\n \"gx-ide-file-item\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, getAssetPath, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
3
 
4
- const aboutCss = ":host{--spacing-body-block-start:var(--mer-spacing--lg);--spacing-body-block-end:var(--mer-spacing--lg);--spacing-body-inline-start:var(--mer-spacing--md);--spacing-body-inline-end:var(--mer-spacing--md);display:grid;inline-size:100%;block-size:100%;gap:var(--mer-spacing--md);overflow:auto;grid-template-rows:max-content 1fr max-content;background-color:var(--elevation-background-color, var(--mer-surface__elevation--02));color:var(--mer-text__on-elevation);text-align:center}.section{display:contents}.main{overflow:auto;display:grid;grid-template-rows:1fr max-content;gap:var(--mer-spacing--lg)}.logo__container{display:flex;flex-direction:column;gap:var(--mer-spacing--sm);align-items:center;margin:unset}.logo__img{inline-size:28px;block-size:28px}.logotype{color:var(--mer-text__bright)}.versions__container{overflow:hidden;border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--sm);display:grid;grid-template-rows:1fr max-content;inline-size:100%}.versions__container button{justify-self:center;min-inline-size:72px}.versions__container-footer{padding:14px}.versions__list{overflow:auto;list-style:none;margin:0;padding:14px;display:flex;flex-direction:column;gap:var(--mer-spacing--xs);text-align:start}.link-underlined{text-decoration:underline;color:var(--mer-text__on-elevation)}.link-underlined:hover{color:var(--mer-text__highlighted)}.link-underlined:active{color:var(--mer-text__elevation)}.links-container{display:flex;gap:var(--mer-spacing--xs)}.footer{display:flex;align-items:center;flex-direction:column;gap:var(--mer-spacing--xs);color:var(--mer-text__complementary)}";
4
+ const aboutCss = ":host{--spacing-body-block-start:var(--mer-spacing--lg);--spacing-body-block-end:var(--mer-spacing--lg);--spacing-body-inline-start:var(--mer-spacing--md);--spacing-body-inline-end:var(--mer-spacing--md);display:grid;inline-size:100%;block-size:100%;gap:var(--mer-spacing--md);overflow:auto;grid-template-rows:max-content 1fr max-content;background-color:var(--elevation-background-color, var(--mer-surface__elevation--02));color:var(--mer-text__on-elevation);text-align:center}.section{display:contents}.main{overflow:auto;display:grid;grid-template-rows:1fr max-content;gap:var(--mer-spacing--lg)}.logo__container{display:flex;flex-direction:column;gap:var(--mer-spacing--sm);align-items:center;margin:unset}.logo__img{inline-size:28px;block-size:28px}.logotype{color:var(--mer-text__bright)}.versions__container{overflow:hidden;border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--sm);display:grid;grid-template-rows:1fr max-content;inline-size:100%}.versions__container button{justify-self:center;min-inline-size:72px}.versions__container-footer{padding:14px}.versions__list{overflow:auto;list-style:none;margin:0;padding:14px;display:flex;flex-direction:column;gap:var(--mer-spacing--xs)}.link-underlined{text-decoration:underline;color:var(--mer-text__on-elevation)}.link-underlined:hover{color:var(--mer-text__highlighted)}.link-underlined:active{color:var(--mer-text__elevation)}.links-container{display:flex;gap:var(--mer-spacing--xs)}.footer{display:flex;align-items:center;flex-direction:column;gap:var(--mer-spacing--xs);color:var(--mer-text__complementary)}";
5
5
 
6
6
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
7
7
  if (kind === "a" && !f)
@@ -1 +1 @@
1
- {"file":"gx-ide-about.js","mappings":"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","names":["GxIdeAbout"],"sources":["src/components/about/about.scss?tag=gx-ide-about&encapsulation=shadow","src/components/about/about.tsx"],"sourcesContent":["$versionsListPadding: 14px;\n\n:host {\n --spacing-body-block-start: var(--mer-spacing--lg);\n --spacing-body-block-end: var(--mer-spacing--lg);\n --spacing-body-inline-start: var(--mer-spacing--md);\n --spacing-body-inline-end: var(--mer-spacing--md);\n\n display: grid;\n inline-size: 100%;\n block-size: 100%;\n gap: var(--mer-spacing--md);\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n background-color: var(\n --elevation-background-color,\n var(--mer-surface__elevation--02)\n );\n color: var(--mer-text__on-elevation);\n text-align: center;\n}\n.section {\n // section was addad for semantics, in order to allow a footer tag.\n display: contents;\n}\n\n.main {\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content;\n gap: var(--mer-spacing--lg);\n}\n\n.logo {\n &__container {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--sm);\n align-items: center;\n margin: unset;\n }\n &__img {\n $logoSize: 28px;\n inline-size: $logoSize;\n block-size: $logoSize;\n }\n}\n.logotype {\n color: var(--mer-text__bright);\n}\n\n.versions__container {\n overflow: hidden;\n border: var(--mer-border__width--sm) solid\n var(--mer-border-color__on-elevation--01);\n border-radius: var(--mer-border__radius--sm);\n display: grid;\n grid-template-rows: 1fr max-content;\n inline-size: 100%;\n\n button {\n justify-self: center;\n min-inline-size: 72px;\n }\n}\n.versions__container-footer {\n padding: $versionsListPadding;\n}\n\n.versions__list {\n overflow: auto;\n list-style: none;\n margin: 0;\n padding: $versionsListPadding;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n text-align: start;\n}\n\n.link-underlined {\n // TODO: Add link helper class in Mercury\n text-decoration: underline;\n color: var(--mer-text__on-elevation);\n &:hover {\n color: var(--mer-text__highlighted);\n }\n &:active {\n color: var(--mer-text__elevation);\n }\n}\n\n.links-container {\n display: flex;\n gap: var(--mer-spacing--xs);\n}\n\n.footer {\n // TODO: Add color helper classes in Mercury\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n color: var(--mer-text__complementary);\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-about\",\n styleUrl: \"about.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/about\"]\n})\nexport class GxIdeAbout {\n #componentLocale: any;\n #nextLogo = getAssetPath(`./gx-ide-assets/about/images/next-logo.svg`);\n\n @Element() el: HTMLGxIdeAboutElement;\n\n /**\n * GeneXus Next version, and also related dependencies versions\n */\n @Prop() readonly versions: string[] = [];\n\n /**\n * Callback invoked when the user clicks on \"Details & Acknowledgements\"\n */\n @Prop() readonly detailsCallback: DetailsCallback;\n\n /**\n * Callback invoked when the user clicks on \"Privacy policy\"\n */\n @Prop() readonly privacyPolicyCallback: PrivacyPolicyCallback;\n\n /**\n * Callback invoked when the user clicks on \"Terms and conditions\"\n */\n @Prop() readonly termsAndConditionsCallback: TermsAndConditionsCallback;\n\n /**\n * True when the user copies the versions\n */\n @State() copying: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #copyVersionsHandler = () => {\n this.copying = true;\n setTimeout(() => {\n this.copying = false;\n }, 1000);\n\n navigator.clipboard.writeText(\n `${this.#componentLocale.copyVersionsAdditionalText}${this.versions\n .map(version => `- ${version}`)\n .join(\"\\n\")}`\n );\n };\n\n render() {\n const renderPrivacyAndTerms =\n this.privacyPolicyCallback && this.termsAndConditionsCallback;\n const renderPrivacyOrTerms =\n this.privacyPolicyCallback || this.termsAndConditionsCallback;\n\n return (\n <Host class=\"scrollable\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header>\n <figure class=\"logo__container\">\n <img\n class=\"logo__img\"\n src={this.#nextLogo}\n alt={this.#componentLocale.logoAlt}\n />\n <figcaption class=\"body-semi-bold-m logotype\">\n GeneXus Next\n </figcaption>\n </figure>\n </header>\n <div class=\"main\">\n {this.versions.length ? (\n <div class=\"versions__container elevation-1\">\n <ul class=\"versions__list scrollable\">\n {this.versions.map(version => {\n return <li class=\"body-regular-s\">{version}</li>;\n })}\n </ul>\n <div class=\"versions__container-footer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#copyVersionsHandler}\n disabled={this.copying}\n >\n {this.copying\n ? this.#componentLocale.copied\n : this.#componentLocale.copy}\n {}\n </button>\n </div>\n </div>\n ) : null}\n\n {this.detailsCallback && (\n <button\n class=\"button-tertiary\"\n type=\"button\"\n onClick={this.detailsCallback}\n >\n {this.#componentLocale.detailsAndAcknowledgmentes}\n </button>\n )}\n </div>\n\n <footer class=\"body-regular-s footer\">\n {renderPrivacyOrTerms && (\n <div class=\"links-container\" hidden={!renderPrivacyAndTerms}>\n {this.privacyPolicyCallback && (\n <button\n class=\"link-underlined tiny-regular-s\"\n type=\"button\"\n onClick={this.privacyPolicyCallback}\n >\n {this.#componentLocale.privacyPolicy}\n </button>\n )}\n\n {renderPrivacyAndTerms && \"|\"}\n\n {this.termsAndConditionsCallback && (\n <button\n class=\"link-underlined tiny-regular-s\"\n type=\"button\"\n onClick={this.termsAndConditionsCallback}\n >\n {this.#componentLocale.termsAndConditions}\n </button>\n )}\n </div>\n )}\n {this.#componentLocale.copyright}\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type DetailsCallback = () => Promise<void>;\nexport type PrivacyPolicyCallback = () => Promise<void>;\nexport type TermsAndConditionsCallback = () => Promise<void>;\n"],"version":3}
1
+ {"file":"gx-ide-about.js","mappings":"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","names":["GxIdeAbout"],"sources":["src/components/about/about.scss?tag=gx-ide-about&encapsulation=shadow","src/components/about/about.tsx"],"sourcesContent":["$versionsListPadding: 14px;\n\n:host {\n --spacing-body-block-start: var(--mer-spacing--lg);\n --spacing-body-block-end: var(--mer-spacing--lg);\n --spacing-body-inline-start: var(--mer-spacing--md);\n --spacing-body-inline-end: var(--mer-spacing--md);\n\n display: grid;\n inline-size: 100%;\n block-size: 100%;\n gap: var(--mer-spacing--md);\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n background-color: var(\n --elevation-background-color,\n var(--mer-surface__elevation--02)\n );\n color: var(--mer-text__on-elevation);\n text-align: center;\n}\n.section {\n // section was addad for semantics, in order to allow a footer tag.\n display: contents;\n}\n\n.main {\n overflow: auto;\n display: grid;\n grid-template-rows: 1fr max-content;\n gap: var(--mer-spacing--lg);\n}\n\n.logo {\n &__container {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--sm);\n align-items: center;\n margin: unset;\n }\n &__img {\n $logoSize: 28px;\n inline-size: $logoSize;\n block-size: $logoSize;\n }\n}\n.logotype {\n color: var(--mer-text__bright);\n}\n\n.versions__container {\n overflow: hidden;\n border: var(--mer-border__width--sm) solid\n var(--mer-border-color__on-elevation--01);\n border-radius: var(--mer-border__radius--sm);\n display: grid;\n grid-template-rows: 1fr max-content;\n inline-size: 100%;\n\n button {\n justify-self: center;\n min-inline-size: 72px;\n }\n}\n.versions__container-footer {\n padding: $versionsListPadding;\n}\n\n.versions__list {\n overflow: auto;\n list-style: none;\n margin: 0;\n padding: $versionsListPadding;\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n}\n\n.link-underlined {\n // TODO: Add link helper class in Mercury\n text-decoration: underline;\n color: var(--mer-text__on-elevation);\n &:hover {\n color: var(--mer-text__highlighted);\n }\n &:active {\n color: var(--mer-text__elevation);\n }\n}\n\n.links-container {\n display: flex;\n gap: var(--mer-spacing--xs);\n}\n\n.footer {\n // TODO: Add color helper classes in Mercury\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: var(--mer-spacing--xs);\n color: var(--mer-text__complementary);\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-about\",\n styleUrl: \"about.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/about\"]\n})\nexport class GxIdeAbout {\n #componentLocale: any;\n #nextLogo = getAssetPath(`./gx-ide-assets/about/images/next-logo.svg`);\n\n @Element() el: HTMLGxIdeAboutElement;\n\n /**\n * GeneXus Next version, and also related dependencies versions\n */\n @Prop() readonly versions: string[] = [];\n\n /**\n * Callback invoked when the user clicks on \"Details & Acknowledgements\"\n */\n @Prop() readonly detailsCallback: DetailsCallback;\n\n /**\n * Callback invoked when the user clicks on \"Privacy policy\"\n */\n @Prop() readonly privacyPolicyCallback: PrivacyPolicyCallback;\n\n /**\n * Callback invoked when the user clicks on \"Terms and conditions\"\n */\n @Prop() readonly termsAndConditionsCallback: TermsAndConditionsCallback;\n\n /**\n * True when the user copies the versions\n */\n @State() copying: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #copyVersionsHandler = () => {\n this.copying = true;\n setTimeout(() => {\n this.copying = false;\n }, 1000);\n\n navigator.clipboard.writeText(\n `${this.#componentLocale.copyVersionsAdditionalText}${this.versions\n .map(version => `- ${version}`)\n .join(\"\\n\")}`\n );\n };\n\n render() {\n const renderPrivacyAndTerms =\n this.privacyPolicyCallback && this.termsAndConditionsCallback;\n const renderPrivacyOrTerms =\n this.privacyPolicyCallback || this.termsAndConditionsCallback;\n\n return (\n <Host class=\"scrollable\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header>\n <figure class=\"logo__container\">\n <img\n class=\"logo__img\"\n src={this.#nextLogo}\n alt={this.#componentLocale.logoAlt}\n />\n <figcaption class=\"body-semi-bold-m logotype\">\n GeneXus Next\n </figcaption>\n </figure>\n </header>\n <div class=\"main\">\n {this.versions.length ? (\n <div class=\"versions__container elevation-1\">\n <ul class=\"versions__list scrollable\">\n {this.versions.map(version => {\n return <li class=\"body-regular-s\">{version}</li>;\n })}\n </ul>\n <div class=\"versions__container-footer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#copyVersionsHandler}\n disabled={this.copying}\n >\n {this.copying\n ? this.#componentLocale.copied\n : this.#componentLocale.copy}\n {}\n </button>\n </div>\n </div>\n ) : null}\n\n {this.detailsCallback && (\n <button\n class=\"button-tertiary\"\n type=\"button\"\n onClick={this.detailsCallback}\n >\n {this.#componentLocale.detailsAndAcknowledgmentes}\n </button>\n )}\n </div>\n\n <footer class=\"body-regular-s footer\">\n {renderPrivacyOrTerms && (\n <div class=\"links-container\" hidden={!renderPrivacyAndTerms}>\n {this.privacyPolicyCallback && (\n <button\n class=\"link-underlined tiny-regular-s\"\n type=\"button\"\n onClick={this.privacyPolicyCallback}\n >\n {this.#componentLocale.privacyPolicy}\n </button>\n )}\n\n {renderPrivacyAndTerms && \"|\"}\n\n {this.termsAndConditionsCallback && (\n <button\n class=\"link-underlined tiny-regular-s\"\n type=\"button\"\n onClick={this.termsAndConditionsCallback}\n >\n {this.#componentLocale.termsAndConditions}\n </button>\n )}\n </div>\n )}\n {this.#componentLocale.copyright}\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type DetailsCallback = () => Promise<void>;\nexport type PrivacyPolicyCallback = () => Promise<void>;\nexport type TermsAndConditionsCallback = () => Promise<void>;\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface GxIdeDetailsAcknowledgements extends Components.GxIdeDetailsAcknowledgements, HTMLElement {}
4
+ export const GxIdeDetailsAcknowledgements: {
5
+ prototype: GxIdeDetailsAcknowledgements;
6
+ new (): GxIdeDetailsAcknowledgements;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,152 @@
1
+ import { getAssetPath, proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { g as getIconPath } from './MERCURY_ASSETS.js';
3
+ import { L as Locale } from './locale.js';
4
+
5
+ const detailsAcknowledgementsCss = "@charset \"UTF-8\";:host{display:grid;block-size:100%;grid-auto-rows:max-content;justify-content:center;padding:95px var(--mer-spacing--lg) 95px var(--mer-spacing--lg);overflow:auto}.licenses-descriptions-list,.licenses-names-list{list-style:none;margin:0;padding:0}.main-wrapper{max-inline-size:1000px;display:grid;gap:var(--mer-spacing--xl)}.logo{inline-size:200px;margin:0 auto;margin-block-end:var(--mer-spacing--2xl);opacity:0;transform:translateY(var(--mer-spacing--2xs));animation:showLogo var(--mer-timing--regular) ease-out forwards;animation-delay:var(--mer-timing--regular)}@keyframes showLogo{100%{opacity:1;transform:translateY(0)}}.card{display:grid;border-radius:var(--mer-border__radius--sm);border-width:var(--mer-border__width--sm);border-color:var(--elevation-border-color);border-style:solid;padding:var(--mer-spacing--lg);gap:var(--mer-spacing--md);opacity:0;animation:showCard var(--mer-timing--fast) ease-out forwards;animation-delay:calc(var(--mer-timing--regular) * 2)}@keyframes showCard{100%{opacity:1}}h1.title{font-weight:600}.intro-container{display:grid;gap:var(--mer-spacing--md)}.date-container{display:grid;gap:var(--mer-spacing--sm)}.card-package{opacity:0;transition:opacity var(--mer-timing--fast)}.package-name{--package-name-color:var(--mer-text__primary);color:var(--package-name-color)}.package-name a{display:flex;align-items:center;gap:8px}.package-name.has-link:hover{--package-name-color:var(--mer-text__primary--hover)}.package-name.has-link:active{--package-name-color:var(--mer-text__primary--active)}.package-link{display:inline-block}.licenses-names-list{display:flex;align-items:center}.licenses-names-item:not(:first-child)::before{content:\"•\";padding-inline:8px}.licenses-descriptions-description{white-space:break-spaces;max-block-size:940px;overflow:auto;line-height:1.5}.licenses-descriptions-item{display:grid;gap:var(--mer-spacing--md)}.code-box{border-radius:var(--mer-border__radius--sm);background-color:var(--mer-surface);border:1px solid var(--mer-border-color__on-elevation--01);padding:var(--mer-spacing--md);font-family:var(--font-family-code);font-size:var(--font-size-body-s);display:grid;gap:var(--mer-spacing--lg)}.description-list{display:grid;gap:var(--mer-spacing--xs);max-inline-size:400px;margin:0 auto}.show-more-button{justify-self:start}.color-default{color:var(--mer-text__highlighted)}.color-neutral{color:var(--mer-color__neutral-gray--400)}.color-primary{color:var(--mer-text__primary)}p{--line-height-tight:1.5;--font-weight-regular:300}hr{border-block-start:0;border-color:var(--mer-border-color__on-elevation--01);inline-size:100%;margin:0}";
6
+
7
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f)
9
+ throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
11
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
12
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
+ };
14
+ var _GxIdeDetailsAcknowledgements_getFormatedDate, _GxIdeDetailsAcknowledgements_renderLicensesInfo, _GxIdeDetailsAcknowledgements_renderLicensesViewButtons, _GxIdeDetailsAcknowledgements_getLicenseId, _GxIdeDetailsAcknowledgements_viewLicenseClickedHandler, _GxIdeDetailsAcknowledgements_openLinkClickedHandler;
15
+ const OPEN_WINDOW_ICON = getIconPath({
16
+ category: "gemini-tools",
17
+ name: "open-window",
18
+ colorType: "primary"
19
+ });
20
+ const EXPAND_ICON = getIconPath({
21
+ category: "system",
22
+ name: "expand",
23
+ colorType: "on-primary"
24
+ });
25
+ const COLLAPSE_ICON = getIconPath({
26
+ category: "system",
27
+ name: "collapse-content",
28
+ colorType: "on-primary"
29
+ });
30
+ const IMAGES_PATH = "./gx-ide-assets/details-acknowledgements/images";
31
+ const BACKGROUND_SIZE = "300px";
32
+ const GENEXUS_NEXT_LOGO_SRC = getAssetPath(`${IMAGES_PATH}/genexus-next-logo.svg`);
33
+ const BG_IMAGE_TOP_START = getAssetPath(`${IMAGES_PATH}/top-start.svg`);
34
+ const BG_IMAGE_BOTTOM_START = getAssetPath(`${IMAGES_PATH}/bottom-start.svg`);
35
+ const BG_IMAGE_BOTTOM_END = getAssetPath(`${IMAGES_PATH}/bottom-end.svg`);
36
+ const CSS_BUNDLES = [
37
+ "resets/box-sizing",
38
+ "utils/typography",
39
+ "utils/elevation",
40
+ "components/button",
41
+ "components/icon",
42
+ "chameleon/scrollbar"
43
+ ];
44
+ const GxIdeDetailsAcknowledgements$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeDetailsAcknowledgements extends HTMLElement {
45
+ constructor() {
46
+ super();
47
+ this.__registerHost();
48
+ this.__attachShadow();
49
+ _GxIdeDetailsAcknowledgements_getFormatedDate.set(this, (date) => {
50
+ return date === null || date === void 0 ? void 0 : date.toISOString().split("T")[0];
51
+ });
52
+ _GxIdeDetailsAcknowledgements_renderLicensesInfo.set(this, (licenses, type = "name", packageData) => {
53
+ return type === "name" ? (h("ul", { class: "licenses-names-list" }, licenses.map(license => {
54
+ return (h("li", { class: "color-default body-regular-m licenses-names-item" }, license.name));
55
+ }))) : (h("ul", { class: "licenses-descriptions-list" }, licenses.map(license => {
56
+ const licenseId = __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_getLicenseId, "f").call(this, packageData, license.name);
57
+ const showDescription = licenseId === this.expandedLicenseId;
58
+ return (h("li", { class: "licenses-descriptions-item", key: licenseId }, showDescription ? (h("p", { class: "code-box color-neutral licenses-descriptions-description scrollable" }, license.description)) : null));
59
+ })));
60
+ });
61
+ _GxIdeDetailsAcknowledgements_renderLicensesViewButtons.set(this, (licenses, packageData) => {
62
+ return (h("div", { class: "licenses-buttons-container buttons-spacer" }, licenses.map(license => {
63
+ const licenseId = __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_getLicenseId, "f").call(this, packageData, license.name);
64
+ const visibleLicenseButton = licenseId === this.expandedLicenseId;
65
+ const icon = visibleLicenseButton ? COLLAPSE_ICON : EXPAND_ICON;
66
+ const viewLicenseButtonLabel = `${license.name} ${this._componentLocale.packageCard.licenseLabel}`;
67
+ return (h("button", { class: {
68
+ "button-icon-and-text": true,
69
+ "button-primary": !visibleLicenseButton,
70
+ "button-secondary": visibleLicenseButton,
71
+ "show-more-button": true
72
+ }, onClick: __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_viewLicenseClickedHandler, "f").call(this, licenseId) }, h("ch-image", { src: icon, class: "package-icon icon-md" }), viewLicenseButtonLabel));
73
+ })));
74
+ });
75
+ _GxIdeDetailsAcknowledgements_getLicenseId.set(this, (packageData, licenseName) => {
76
+ return `${packageData.packageName}-${packageData.packageVersion}-${licenseName}`;
77
+ });
78
+ _GxIdeDetailsAcknowledgements_viewLicenseClickedHandler.set(this, (licenseId) => () => {
79
+ if (licenseId === this.expandedLicenseId) {
80
+ // collapse
81
+ this.expandedLicenseId = undefined;
82
+ }
83
+ else {
84
+ // expand collapse
85
+ this.expandedLicenseId = licenseId;
86
+ }
87
+ });
88
+ _GxIdeDetailsAcknowledgements_openLinkClickedHandler.set(this, (url) => (e) => {
89
+ if (this.openPackageUrlCallback) {
90
+ e.preventDefault();
91
+ this.openPackageUrlCallback(url);
92
+ }
93
+ });
94
+ this.expandedLicenseId = undefined;
95
+ this.dateGenerated = undefined;
96
+ this.release = undefined;
97
+ this.packages = undefined;
98
+ this.openPackageUrlCallback = undefined;
99
+ }
100
+ async componentWillLoad() {
101
+ this._componentLocale = await Locale.getComponentStrings(this.el);
102
+ }
103
+ render() {
104
+ var _a;
105
+ const formatedDate = __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_getFormatedDate, "f").call(this, this.dateGenerated);
106
+ return (h(Host, { class: "scrollable", style: {
107
+ backgroundImage: `url(${BG_IMAGE_TOP_START}), url(${BG_IMAGE_BOTTOM_START}), url(${BG_IMAGE_BOTTOM_END})`,
108
+ backgroundPosition: "left top, left bottom, right bottom",
109
+ backgroundRepeat: "no-repeat, no-repeat, no-repeat",
110
+ backgroundSize: `${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}`
111
+ } }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "main-wrapper" }, h("img", { src: GENEXUS_NEXT_LOGO_SRC, class: "logo" }), h("div", { class: "card card-details elevation-1" }, h("div", { class: "intro-container" }, h("h1", { class: "title heading-3 color-default" }, this._componentLocale.detailsCard.title), h("p", { class: "color-default body-regular-m" }, this._componentLocale.detailsCard.mainDescription), h("p", { class: "color-neutral body-italic-s" }, this._componentLocale.detailsCard.secondaryDescription)), h("hr", null), h("div", { class: "date-container" }, h("p", { class: "color-neutral" }, this._componentLocale.detailsCard.dateGenerated), h("time", { class: "color-default", dateTime: formatedDate }, formatedDate))), (_a = this.packages) === null || _a === void 0 ? void 0 :
112
+ _a.map(packageItem => {
113
+ let packageName = `${packageItem.packageName} ${packageItem.packageVersion}`;
114
+ const headingContent = packageItem.packageURL ? (h("a", { href: packageItem.packageURL, target: "_blank", onClick: __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_openLinkClickedHandler, "f").call(this, packageItem.packageURL), class: "package-link" }, packageName, h("ch-image", { src: OPEN_WINDOW_ICON, class: "package-icon icon-md" }))) : (packageName);
115
+ return (h("article", { class: "card card-package elevation-1" }, h("h2", { class: {
116
+ "subtitle-semi-bold-s": true,
117
+ "package-name": true,
118
+ "has-link": !!packageItem.packageURL
119
+ } }, headingContent), h("p", { class: "color-default subtitle-semi-bold-s" }, this._componentLocale.packageCard.declaredLicenses), __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_renderLicensesInfo, "f").call(this, packageItem.declaredLicenses, "name"), __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_renderLicensesInfo, "f").call(this, packageItem.declaredLicenses, "description", packageItem), __classPrivateFieldGet(this, _GxIdeDetailsAcknowledgements_renderLicensesViewButtons, "f").call(this, packageItem.declaredLicenses, packageItem)));
120
+ }))));
121
+ }
122
+ static get assetsDirs() { return ["gx-ide-assets/details-acknowledgements"]; }
123
+ get el() { return this; }
124
+ static get style() { return detailsAcknowledgementsCss; }
125
+ }, [1, "gx-ide-details-acknowledgements", {
126
+ "dateGenerated": [16],
127
+ "release": [1],
128
+ "packages": [16],
129
+ "openPackageUrlCallback": [16],
130
+ "expandedLicenseId": [32]
131
+ }]);
132
+ _GxIdeDetailsAcknowledgements_getFormatedDate = new WeakMap(), _GxIdeDetailsAcknowledgements_renderLicensesInfo = new WeakMap(), _GxIdeDetailsAcknowledgements_renderLicensesViewButtons = new WeakMap(), _GxIdeDetailsAcknowledgements_getLicenseId = new WeakMap(), _GxIdeDetailsAcknowledgements_viewLicenseClickedHandler = new WeakMap(), _GxIdeDetailsAcknowledgements_openLinkClickedHandler = new WeakMap();
133
+ function defineCustomElement$1() {
134
+ if (typeof customElements === "undefined") {
135
+ return;
136
+ }
137
+ const components = ["gx-ide-details-acknowledgements"];
138
+ components.forEach(tagName => { switch (tagName) {
139
+ case "gx-ide-details-acknowledgements":
140
+ if (!customElements.get(tagName)) {
141
+ customElements.define(tagName, GxIdeDetailsAcknowledgements$1);
142
+ }
143
+ break;
144
+ } });
145
+ }
146
+
147
+ const GxIdeDetailsAcknowledgements = GxIdeDetailsAcknowledgements$1;
148
+ const defineCustomElement = defineCustomElement$1;
149
+
150
+ export { GxIdeDetailsAcknowledgements, defineCustomElement };
151
+
152
+ //# sourceMappingURL=gx-ide-details-acknowledgements.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-details-acknowledgements.js","mappings":";;;;AAAA,MAAM,0BAA0B,GAAG,qkFAAqkF;;;;;;;;;;ACexmF,MAAM,gBAAgB,GAAG,WAAW,CAAC;IACnC,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,WAAW,CAAC;IAChC,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,iDAAiD,CAAC;AACtE,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,qBAAqB,GAAG,YAAY,CACxC,GAAG,WAAW,wBAAwB,CACvC,CAAC;AACF,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,WAAW,gBAAgB,CAAC,CAAC;AACxE,MAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,WAAW,mBAAmB,CAAC,CAAC;AAC9E,MAAM,mBAAmB,GAAG,YAAY,CAAC,GAAG,WAAW,iBAAiB,CAAC,CAAC;AAE1E,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,qBAAqB;CACtB,CAAC;MAQWA,8BAA4B;;;;;QAoCvC,wDAAmB,CAAC,IAAU;YAC5B,OAAO,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC1C,EAAC;QAEF,2DAAsB,CACpB,QAAmB,EACnB,OAA+B,MAAM,EACrC,WAAyB;YAEzB,OAAO,IAAI,KAAK,MAAM,IACpB,UAAI,KAAK,EAAC,qBAAqB,IAC5B,QAAQ,CAAC,GAAG,CAAC,OAAO;gBACnB,QACE,UAAI,KAAK,EAAC,kDAAkD,IACzD,OAAO,CAAC,IAAI,CACV,EACL;aACH,CAAC,CACC,KAEL,UAAI,KAAK,EAAC,4BAA4B,IACnC,QAAQ,CAAC,GAAG,CAAC,OAAO;gBACnB,MAAM,SAAS,GAAG,uBAAA,IAAI,kDAAc,MAAlB,IAAI,EAAe,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,eAAe,GAAG,SAAS,KAAK,IAAI,CAAC,iBAAiB,CAAC;gBAE7D,QACE,UAAI,KAAK,EAAC,4BAA4B,EAAC,GAAG,EAAE,SAAS,IAClD,eAAe,IACd,SAAG,KAAK,EAAC,qEAAqE,IAC3E,OAAO,CAAC,WAAW,CAClB,IACF,IAAI,CACL,EACL;aACH,CAAC,CACC,CACN,CAAC;SACH,EAAC;QAEF,kEAA6B,CAC3B,QAAmB,EACnB,WAAyB;YAEzB,QACE,WAAK,KAAK,EAAC,2CAA2C,IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO;gBACnB,MAAM,SAAS,GAAG,uBAAA,IAAI,kDAAc,MAAlB,IAAI,EAAe,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,oBAAoB,GAAG,SAAS,KAAK,IAAI,CAAC,iBAAiB,CAAC;gBAClE,MAAM,IAAI,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,CAAC;gBAEhE,MAAM,sBAAsB,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBAEnG,QACE,cACE,KAAK,EAAE;wBACL,sBAAsB,EAAE,IAAI;wBAC5B,gBAAgB,EAAE,CAAC,oBAAoB;wBACvC,kBAAkB,EAAE,oBAAoB;wBACxC,kBAAkB,EAAE,IAAI;qBACzB,EACD,OAAO,EAAE,uBAAA,IAAI,+DAA2B,MAA/B,IAAI,EAA4B,SAAS,CAAC,IAEnD,gBAAU,GAAG,EAAE,IAAI,EAAE,KAAK,EAAC,sBAAsB,GAAY,EAC5D,sBAAsB,CAChB,EACT;aACH,CAAC,CACE,EACN;SACH,EAAC;QAEF,qDAAgB,CAAC,WAAwB,EAAE,WAAmB;YAC5D,OAAO,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC;SAClF,EAAC;QAEF,kEAA6B,CAAC,SAAiB,KAAK;YAClD,IAAI,SAAS,KAAK,IAAI,CAAC,iBAAiB,EAAE;;gBAExC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACpC;iBAAM;;gBAEL,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;aACpC;SACF,EAAC;QAEF,+DAA0B,CAAC,GAAW,KAAK,CAAC,CAAa;YACvD,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;aAClC;SACF,EAAC;;;;;;;IA9FF,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnE;IA8FD,MAAM;;QACJ,MAAM,YAAY,GAAG,uBAAA,IAAI,qDAAiB,MAArB,IAAI,EAAkB,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/D,QACE,EAAC,IAAI,IACH,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE;gBACL,eAAe,EAAE,OAAO,kBAAkB,UAAU,qBAAqB,UAAU,mBAAmB,GAAG;gBACzG,kBAAkB,EAAE,qCAAqC;gBACzD,gBAAgB,EAAE,iCAAiC;gBACnD,cAAc,EAAE,GAAG,eAAe,KAAK,eAAe,KAAK,eAAe,EAAE;aAC7E,IAED,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,WAAK,KAAK,EAAC,cAAc,IACvB,WAAK,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAC,MAAM,GAAO,EACpD,WAAK,KAAK,EAAC,+BAA+B,IACxC,WAAK,KAAK,EAAC,iBAAiB,IAC1B,UAAI,KAAK,EAAC,+BAA+B,IACtC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CACrC,EACL,SAAG,KAAK,EAAC,8BAA8B,IACpC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAChD,EACJ,SAAG,KAAK,EAAC,6BAA6B,IACnC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,oBAAoB,CACrD,CACA,EAEN,aAAM,EAEN,WAAK,KAAK,EAAC,gBAAgB,IACzB,SAAG,KAAK,EAAC,eAAe,IACrB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAC9C,EACJ,YAAM,KAAK,EAAC,eAAe,EAAC,QAAQ,EAAE,YAAY,IAC/C,YAAY,CACR,CACH,CACF,EAEL,MAAA,IAAI,CAAC,QAAQ;eAAE,GAAG,CAAC,WAAW;gBAC7B,IAAI,WAAW,GAAG,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC7E,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,IAC3C,SACE,IAAI,EAAE,WAAW,CAAC,UAAU,EAC5B,MAAM,EAAC,QAAQ,EACf,OAAO,EAAE,uBAAA,IAAI,4DAAwB,MAA5B,IAAI,EAAyB,WAAW,CAAC,UAAU,CAAC,EAC7D,KAAK,EAAC,cAAc,IAEnB,WAAW,EACZ,gBACE,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAC,sBAAsB,GAClB,CACV,KAEJ,WAAW,CACZ,CAAC;gBAEF,QACE,eAAS,KAAK,EAAC,+BAA+B,IAC5C,UACE,KAAK,EAAE;wBACL,sBAAsB,EAAE,IAAI;wBAC5B,cAAc,EAAE,IAAI;wBACpB,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU;qBACrC,IAEA,cAAc,CACZ,EACL,SAAG,KAAK,EAAC,oCAAoC,IAC1C,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,gBAAgB,CACjD,EACH,uBAAA,IAAI,wDAAoB,MAAxB,IAAI,EAAqB,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAE9D,uBAAA,IAAI,wDAAoB,MAAxB,IAAI,EACH,WAAW,CAAC,gBAAgB,EAC5B,aAAa,EACb,WAAW,CACZ,EAEA,uBAAA,IAAI,+DAA2B,MAA/B,IAAI,EACH,WAAW,CAAC,gBAAgB,EAC5B,WAAW,CACZ,CACO,EACV;aACH,CAAC,CACE,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeDetailsAcknowledgements"],"sources":["src/components/details-acknowledgements/details-acknowledgements.scss?tag=gx-ide-details-acknowledgements&encapsulation=shadow","src/components/details-acknowledgements/details-acknowledgements.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-auto-rows: max-content;\n justify-content: center;\n padding: 95px var(--mer-spacing--lg) 95px var(--mer-spacing--lg);\n overflow: auto;\n}\n\n%resetList {\n // TODO: Use mixin from common\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.main-wrapper {\n max-inline-size: 1000px;\n display: grid;\n gap: var(--mer-spacing--xl);\n}\n\n.logo {\n inline-size: 200px;\n margin: 0 auto;\n margin-block-end: var(--mer-spacing--2xl);\n opacity: 0;\n transform: translateY(var(--mer-spacing--2xs));\n animation: showLogo var(--mer-timing--regular) ease-out forwards;\n animation-delay: var(--mer-timing--regular);\n}\n@keyframes showLogo {\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n// general\n\n.card {\n display: grid;\n border-radius: var(--mer-border__radius--sm);\n border-width: var(--mer-border__width--sm);\n border-color: var(--elevation-border-color);\n border-style: solid;\n padding: var(--mer-spacing--lg);\n gap: var(--mer-spacing--md);\n opacity: 0;\n animation: showCard var(--mer-timing--fast) ease-out forwards;\n animation-delay: calc(var(--mer-timing--regular) * 2);\n}\n@keyframes showCard {\n 100% {\n opacity: 1;\n }\n}\n\n// details card\n\nh1.title {\n font-weight: 600;\n}\n\n.intro-container {\n display: grid;\n gap: var(--mer-spacing--md);\n}\n\n.date-container {\n display: grid;\n gap: var(--mer-spacing--sm);\n}\n\n// package card\n\n.card-package {\n opacity: 0;\n transition: opacity var(--mer-timing--fast);\n}\n\n.package-name {\n --package-name-color: var(--mer-text__primary);\n color: var(--package-name-color);\n\n a {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n &.has-link {\n // TODO: This should be a class in Mercury\n &:hover {\n --package-name-color: var(--mer-text__primary--hover);\n }\n &:active {\n --package-name-color: var(--mer-text__primary--active);\n }\n }\n}\n.package-link {\n display: inline-block;\n}\n\n.licenses-names-list {\n @extend %resetList;\n display: flex;\n align-items: center;\n}\n.licenses-names-item:not(:first-child)::before {\n content: \"•\";\n padding-inline: 8px;\n}\n\n.licenses-descriptions-list {\n @extend %resetList;\n}\n.licenses-descriptions-description {\n white-space: break-spaces;\n max-block-size: 940px;\n overflow: auto;\n line-height: 1.5;\n}\n.licenses-descriptions-item {\n display: grid;\n gap: var(--mer-spacing--md);\n}\n\n.code-box {\n border-radius: var(--mer-border__radius--sm);\n background-color: var(--mer-surface);\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: var(--mer-spacing--md);\n font-family: var(--font-family-code);\n font-size: var(--font-size-body-s);\n display: grid;\n gap: var(--mer-spacing--lg);\n}\n\n.description-list {\n display: grid;\n gap: var(--mer-spacing--xs);\n max-inline-size: 400px;\n margin: 0 auto;\n}\n\n.show-more-button {\n justify-self: start;\n}\n\n// utilities\n// WA/TODO: This should be defined on Mercury\n.color-default {\n color: var(--mer-text__highlighted);\n}\n.color-neutral {\n color: var(--mer-color__neutral-gray--400);\n}\n.color-primary {\n color: var(--mer-text__primary);\n}\n\np {\n // TODO: Update line-height values on Mercury\n --line-height-tight: 1.5;\n --font-weight-regular: 300;\n}\n\nhr {\n // WA/TODO: A style for hr should be defined on Mercury\n border-block-start: 0;\n border-color: var(--mer-border-color__on-elevation--01);\n inline-size: 100%;\n margin: 0;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nimport type { PackageData, License, OpenPackageURLCallback } from \"./types\";\n\nconst OPEN_WINDOW_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"open-window\",\n colorType: \"primary\"\n});\nconst EXPAND_ICON = getIconPath({\n category: \"system\",\n name: \"expand\",\n colorType: \"on-primary\"\n});\nconst COLLAPSE_ICON = getIconPath({\n category: \"system\",\n name: \"collapse-content\",\n colorType: \"on-primary\"\n});\n\nconst IMAGES_PATH = \"./gx-ide-assets/details-acknowledgements/images\";\nconst BACKGROUND_SIZE = \"300px\";\n\nconst GENEXUS_NEXT_LOGO_SRC = getAssetPath(\n `${IMAGES_PATH}/genexus-next-logo.svg`\n);\nconst BG_IMAGE_TOP_START = getAssetPath(`${IMAGES_PATH}/top-start.svg`);\nconst BG_IMAGE_BOTTOM_START = getAssetPath(`${IMAGES_PATH}/bottom-start.svg`);\nconst BG_IMAGE_BOTTOM_END = getAssetPath(`${IMAGES_PATH}/bottom-end.svg`);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"components/icon\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-details-acknowledgements\",\n styleUrl: \"details-acknowledgements.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/details-acknowledgements\"]\n})\nexport class GxIdeDetailsAcknowledgements {\n /**\n * The component hard-coded strings translations.\n */\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeDetailsAcknowledgementsElement;\n\n /**\n * Identifier of the currently expanded license. Should combine:\n * packageName + packageVersion + license.name. Example:\n * @sentry/core-6.7.1-mit\n */\n @State() expandedLicenseId?: string;\n\n /** The date when the current release was published */\n @Prop() readonly dateGenerated?: Date;\n\n /** The version of the current release*/\n @Prop() readonly release?: string;\n\n /** The list of packages that the current release contains*/\n @Prop() readonly packages: PackageData[];\n\n /**\n * Callback invoked when the user clicks a package with a packageURL.\n * If openPackageUrlCallback is defined, the default link action is\n * prevented and the URL is passed to the host via the callback.\n * Otherwise, the link opens in a new tab as usual.\n */\n @Prop() readonly openPackageUrlCallback: OpenPackageURLCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #getFormatedDate = (date: Date) => {\n return date?.toISOString().split(\"T\")[0];\n };\n\n #renderLicensesInfo = (\n licenses: License[],\n type: \"name\" | \"description\" = \"name\",\n packageData?: PackageData\n ): JSX.Element => {\n return type === \"name\" ? (\n <ul class=\"licenses-names-list\">\n {licenses.map(license => {\n return (\n <li class=\"color-default body-regular-m licenses-names-item\">\n {license.name}\n </li>\n );\n })}\n </ul>\n ) : (\n <ul class=\"licenses-descriptions-list\">\n {licenses.map(license => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const showDescription = licenseId === this.expandedLicenseId;\n\n return (\n <li class=\"licenses-descriptions-item\" key={licenseId}>\n {showDescription ? (\n <p class=\"code-box color-neutral licenses-descriptions-description scrollable\">\n {license.description}\n </p>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n };\n\n #renderLicensesViewButtons = (\n licenses: License[],\n packageData?: PackageData\n ): JSX.Element => {\n return (\n <div class=\"licenses-buttons-container buttons-spacer\">\n {licenses.map(license => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const visibleLicenseButton = licenseId === this.expandedLicenseId;\n const icon = visibleLicenseButton ? COLLAPSE_ICON : EXPAND_ICON;\n\n const viewLicenseButtonLabel = `${license.name} ${this._componentLocale.packageCard.licenseLabel}`;\n\n return (\n <button\n class={{\n \"button-icon-and-text\": true,\n \"button-primary\": !visibleLicenseButton,\n \"button-secondary\": visibleLicenseButton,\n \"show-more-button\": true\n }}\n onClick={this.#viewLicenseClickedHandler(licenseId)}\n >\n <ch-image src={icon} class=\"package-icon icon-md\"></ch-image>\n {viewLicenseButtonLabel}\n </button>\n );\n })}\n </div>\n );\n };\n\n #getLicenseId = (packageData: PackageData, licenseName: string): string => {\n return `${packageData.packageName}-${packageData.packageVersion}-${licenseName}`;\n };\n\n #viewLicenseClickedHandler = (licenseId: string) => () => {\n if (licenseId === this.expandedLicenseId) {\n // collapse\n this.expandedLicenseId = undefined;\n } else {\n // expand collapse\n this.expandedLicenseId = licenseId;\n }\n };\n\n #openLinkClickedHandler = (url: string) => (e: MouseEvent) => {\n if (this.openPackageUrlCallback) {\n e.preventDefault();\n this.openPackageUrlCallback(url);\n }\n };\n\n render() {\n const formatedDate = this.#getFormatedDate(this.dateGenerated);\n return (\n <Host\n class=\"scrollable\"\n style={{\n backgroundImage: `url(${BG_IMAGE_TOP_START}), url(${BG_IMAGE_BOTTOM_START}), url(${BG_IMAGE_BOTTOM_END})`,\n backgroundPosition: \"left top, left bottom, right bottom\",\n backgroundRepeat: \"no-repeat, no-repeat, no-repeat\",\n backgroundSize: `${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}`\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"main-wrapper\">\n <img src={GENEXUS_NEXT_LOGO_SRC} class=\"logo\"></img>\n <div class=\"card card-details elevation-1\">\n <div class=\"intro-container\">\n <h1 class=\"title heading-3 color-default\">\n {this._componentLocale.detailsCard.title}\n </h1>\n <p class=\"color-default body-regular-m\">\n {this._componentLocale.detailsCard.mainDescription}\n </p>\n <p class=\"color-neutral body-italic-s\">\n {this._componentLocale.detailsCard.secondaryDescription}\n </p>\n </div>\n\n <hr />\n\n <div class=\"date-container\">\n <p class=\"color-neutral\">\n {this._componentLocale.detailsCard.dateGenerated}\n </p>\n <time class=\"color-default\" dateTime={formatedDate}>\n {formatedDate}\n </time>\n </div>\n </div>\n\n {this.packages?.map(packageItem => {\n let packageName = `${packageItem.packageName} ${packageItem.packageVersion}`;\n const headingContent = packageItem.packageURL ? (\n <a\n href={packageItem.packageURL}\n target=\"_blank\"\n onClick={this.#openLinkClickedHandler(packageItem.packageURL)}\n class=\"package-link\"\n >\n {packageName}\n <ch-image\n src={OPEN_WINDOW_ICON}\n class=\"package-icon icon-md\"\n ></ch-image>\n </a>\n ) : (\n packageName\n );\n\n return (\n <article class=\"card card-package elevation-1\">\n <h2\n class={{\n \"subtitle-semi-bold-s\": true,\n \"package-name\": true,\n \"has-link\": !!packageItem.packageURL\n }}\n >\n {headingContent}\n </h2>\n <p class=\"color-default subtitle-semi-bold-s\">\n {this._componentLocale.packageCard.declaredLicenses}\n </p>\n {this.#renderLicensesInfo(packageItem.declaredLicenses, \"name\")}\n\n {this.#renderLicensesInfo(\n packageItem.declaredLicenses,\n \"description\",\n packageItem\n )}\n\n {this.#renderLicensesViewButtons(\n packageItem.declaredLicenses,\n packageItem\n )}\n </article>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface GxIdeStartingTemplate extends Components.GxIdeStartingTemplate, HTMLElement {}
4
+ export const GxIdeStartingTemplate: {
5
+ prototype: GxIdeStartingTemplate;
6
+ new (): GxIdeStartingTemplate;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,125 @@
1
+ import { proxyCustomElement, HTMLElement, getAssetPath, h, Host } from '@stencil/core/internal/client';
2
+ import { g as getIconPath } from './MERCURY_ASSETS.js';
3
+ import { L as Locale } from './locale.js';
4
+
5
+ const startingTemplateCss = ":host{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content}.section{display:contents}.main{overflow:auto;display:flex;align-items:center;justify-content:center}";
6
+
7
+ // This is a starting template. Do not edit this file directly.
8
+ // Dupicate it and modify the new file as needed.
9
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
+ if (kind === "a" && !f)
11
+ throw new TypeError("Private accessor was defined without a getter");
12
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
13
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
17
+ if (kind === "m")
18
+ throw new TypeError("Private method is not writable");
19
+ if (kind === "a" && !f)
20
+ throw new TypeError("Private accessor was defined without a setter");
21
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
22
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
23
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
24
+ };
25
+ var _GxIdeStartingTemplate_chShortcutsEl, _GxIdeStartingTemplate_shortcutsSrc, _GxIdeStartingTemplate_cancelButtonClickedHandler, _GxIdeStartingTemplate_saveButtonClickedHandler;
26
+ const CSS_BUNDLES = [
27
+ // Use only the bundles that are needed for this component.
28
+ "resets/box-sizing",
29
+ "components/edit",
30
+ "components/button",
31
+ "components/icon",
32
+ "utils/layout",
33
+ "utils/form",
34
+ "utils/typography",
35
+ "utils/spacing",
36
+ "chameleon/scrollbar"
37
+ ];
38
+ const SYSTEM_ICON = getIconPath({
39
+ category: "system",
40
+ name: "folder",
41
+ colorType: "on-primary"
42
+ });
43
+ const GxIdeStartingTemplate$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeStartingTemplate extends HTMLElement {
44
+ constructor() {
45
+ super();
46
+ this.__registerHost();
47
+ this.__attachShadow();
48
+ _GxIdeStartingTemplate_chShortcutsEl.set(this, void 0);
49
+ _GxIdeStartingTemplate_shortcutsSrc.set(this, getAssetPath(`./gx-ide-assets/new-kb/shortcuts.json`));
50
+ _GxIdeStartingTemplate_cancelButtonClickedHandler.set(this, () => {
51
+ this.cancelCallback();
52
+ });
53
+ _GxIdeStartingTemplate_saveButtonClickedHandler.set(this, () => {
54
+ this.saveCallback();
55
+ });
56
+ this.myStateVariable = undefined;
57
+ this.firstName = undefined;
58
+ this.cancelCallback = undefined;
59
+ this.saveCallback = undefined;
60
+ }
61
+ firstNameChanged(newValue) {
62
+ console.log("First name changed:", newValue);
63
+ }
64
+ async componentWillLoad() {
65
+ this._componentLocale = await Locale.getComponentStrings(this.el);
66
+ }
67
+ componentDidLoad() {
68
+ // Here you can do any additional setup after the component has been rendered.
69
+ }
70
+ /**
71
+ * Suspends or reactivates the shortcuts
72
+ */
73
+ async suspendShortcuts(suspendShortcuts) {
74
+ if (suspendShortcuts) {
75
+ __classPrivateFieldGet(this, _GxIdeStartingTemplate_chShortcutsEl, "f").suspend = true;
76
+ }
77
+ else {
78
+ __classPrivateFieldGet(this, _GxIdeStartingTemplate_chShortcutsEl, "f").suspend = false;
79
+ }
80
+ }
81
+ render() {
82
+ return (h(Host, { class: "widget spacing-body" }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeStartingTemplate_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeStartingTemplate_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { class: "header control-header control-header-with-border" }, h("div", { class: "field field-block" }, h("label", { class: "label", htmlFor: "first-name" }, this._componentLocale.main.firstName), h("ch-edit", { class: "input", id: "first-name", value: this.firstName }))), h("div", { class: "main" }, "The main content here"), h("footer", { class: "footer control-footer control-footer-with-border" }, h("div", { class: "buttons-spacer" }, h("button", {
83
+ // #cancel
84
+ class: "button-secondary", id: "button-cancel", onClick: __classPrivateFieldGet(this, _GxIdeStartingTemplate_cancelButtonClickedHandler, "f"), part: "button-cancel"
85
+ }, this._componentLocale.footer.btnCancel), h("button", {
86
+ // #create
87
+ class: "button-primary button-icon-and-text", id: "button-create", onClick: __classPrivateFieldGet(this, _GxIdeStartingTemplate_saveButtonClickedHandler, "f"), part: "button-create"
88
+ }, h("ch-image", { class: "icon-md", src: SYSTEM_ICON }), this._componentLocale.footer.btnSave))))));
89
+ }
90
+ static get assetsDirs() { return ["gx-ide-assets/starting-template"]; }
91
+ get el() { return this; }
92
+ static get watchers() { return {
93
+ "firstName": ["firstNameChanged"]
94
+ }; }
95
+ static get style() { return startingTemplateCss; }
96
+ }, [1, "gx-ide-starting-template", {
97
+ "firstName": [1, "first-name"],
98
+ "cancelCallback": [16],
99
+ "saveCallback": [16],
100
+ "myStateVariable": [32],
101
+ "suspendShortcuts": [64]
102
+ }, undefined, {
103
+ "firstName": ["firstNameChanged"]
104
+ }]);
105
+ _GxIdeStartingTemplate_chShortcutsEl = new WeakMap(), _GxIdeStartingTemplate_shortcutsSrc = new WeakMap(), _GxIdeStartingTemplate_cancelButtonClickedHandler = new WeakMap(), _GxIdeStartingTemplate_saveButtonClickedHandler = new WeakMap();
106
+ function defineCustomElement$1() {
107
+ if (typeof customElements === "undefined") {
108
+ return;
109
+ }
110
+ const components = ["gx-ide-starting-template"];
111
+ components.forEach(tagName => { switch (tagName) {
112
+ case "gx-ide-starting-template":
113
+ if (!customElements.get(tagName)) {
114
+ customElements.define(tagName, GxIdeStartingTemplate$1);
115
+ }
116
+ break;
117
+ } });
118
+ }
119
+
120
+ const GxIdeStartingTemplate = GxIdeStartingTemplate$1;
121
+ const defineCustomElement = defineCustomElement$1;
122
+
123
+ export { GxIdeStartingTemplate, defineCustomElement };
124
+
125
+ //# sourceMappingURL=gx-ide-starting-template.js.map
@@ -0,0 +1 @@
1
+ {"file":"gx-ide-starting-template.js","mappings":";;;;AAAA,MAAM,mBAAmB,GAAG,uMAAuM;;ACAnO;AACA;;;;;;;;;;;;;;;;;;AAkBA,MAAM,WAAW,GAAmB;;IAElC,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,eAAe;IACf,qBAAqB;CACtB,CAAC;AAEF,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;MAQUA,uBAAqB;;;;;QAKhC,uDAAuC;QACvC,8CAAgB,YAAY,CAAC,uCAAuC,CAAC,EAAC;QA8CtE,4DAA8B;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,EAAC;QAEF,0DAA4B;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,EAAC;;;;;;IAxCF,gBAAgB,CAAC,QAAkB;QACjC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC9C;IAYD,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnE;IAED,gBAAgB;;KAEf;;;;IAMD,MAAM,gBAAgB,CAAC,gBAAyB;QAC9C,IAAI,gBAAgB,EAAE;YACpB,uBAAA,IAAI,4CAAe,CAAC,OAAO,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,uBAAA,IAAI,4CAAe,CAAC,OAAO,GAAG,KAAK,CAAC;SACrC;KACF;IAUD,MAAM;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,qBAAqB,IAC/B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,oBACE,GAAG,EAAE,uBAAA,IAAI,2CAAc,EACvB,GAAG,EAAE,CAAC,EAA0B,MAC7B,uBAAA,IAAI,wCAAkB,EAA4B,MAAA,CAAC,GAExC,EAChB,eAAS,KAAK,EAAC,SAAS,IACtB,cAAQ,KAAK,EAAC,kDAAkD,IAC9D,WAAK,KAAK,EAAC,mBAAmB,IAC5B,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,YAAY,IACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAC/B,EACR,eAAS,KAAK,EAAC,OAAO,EAAC,EAAE,EAAC,YAAY,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,GAAI,CAC5D,CACC,EAET,WAAK,KAAK,EAAC,MAAM,4BAA4B,EAE7C,cAAQ,KAAK,EAAC,kDAAkD,IAC9D,WAAK,KAAK,EAAC,gBAAgB,IACzB;;YAEE,KAAK,EAAC,kBAAkB,EACxB,EAAE,EAAC,eAAe,EAClB,OAAO,EAAE,uBAAA,IAAI,yDAA4B,EACzC,IAAI,EAAC,eAAe;WAEnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAChC,EACT;;YAEE,KAAK,EAAC,qCAAqC,EAC3C,EAAE,EAAC,eAAe,EAClB,OAAO,EAAE,uBAAA,IAAI,uDAA0B,EACvC,IAAI,EAAC,eAAe;WAEpB,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,EACtD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAC9B,CACL,CACC,CACD,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["GxIdeStartingTemplate"],"sources":["src/components/_starting-template/starting-template.scss?tag=gx-ide-starting-template&encapsulation=shadow","src/components/_starting-template/starting-template.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n // section is just for semantics if a header is present\n display: contents;\n}\n\n// header\n.header {\n}\n\n// main\n.main {\n overflow: auto;\n // The following styles are just to center the text.\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n// footer\n.footer {\n}\n","// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"components/edit\",\n \"components/button\",\n \"components/icon\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst SYSTEM_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"on-primary\"\n});\n\n@Component({\n tag: \"gx-ide-starting-template\",\n styleUrl: \"starting-template.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/starting-template\"]\n})\nexport class GxIdeStartingTemplate {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeStartingTemplateElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-kb/shortcuts.json`);\n\n /**\n * Description of my state variable.\n */\n @State() myStateVariable: string;\n\n /**\n * Description of my prop variable.\n */\n @Prop() readonly firstName: string;\n @Watch(\"firstName\")\n firstNameChanged(newValue: string[]) {\n console.log(\"First name changed:\", newValue);\n }\n\n /**\n * Callback that will be invoked when the user cancels.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback that will be invoked when the user saves.\n */\n @Prop() readonly saveCallback!: SaveCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n // Here you can do any additional setup after the component has been rendered.\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #cancelButtonClickedHandler = () => {\n this.cancelCallback();\n };\n\n #saveButtonClickedHandler = () => {\n this.saveCallback();\n };\n\n render() {\n return (\n <Host class=\"widget spacing-body\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header control-header control-header-with-border\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"first-name\">\n {this._componentLocale.main.firstName}\n </label>\n <ch-edit class=\"input\" id=\"first-name\" value={this.firstName} />\n </div>\n </header>\n\n <div class=\"main\">The main content here</div>\n\n <footer class=\"footer control-footer control-footer-with-border\">\n <div class=\"buttons-spacer\">\n <button\n // #cancel\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelButtonClickedHandler}\n part=\"button-cancel\"\n >\n {this._componentLocale.footer.btnCancel}\n </button>\n <button\n // #create\n class=\"button-primary button-icon-and-text\"\n id=\"button-create\"\n onClick={this.#saveButtonClickedHandler}\n part=\"button-create\"\n >\n <ch-image class=\"icon-md\" src={SYSTEM_ICON}></ch-image>\n {this._componentLocale.footer.btnSave}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"],"version":3}