@genexus/genexus-ide-ui 1.1.55 → 1.1.57
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/assets-manager-089e91b1.js +7 -0
- package/dist/cjs/assets-manager-089e91b1.js.map +1 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +12 -16
- package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js +11 -7
- package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-file-item.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +10 -6
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-version.cjs.entry.js +15 -3
- package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +263 -20
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +14 -10
- 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 +7 -3
- 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 +10 -6
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.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-welcome-page.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +0 -3
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mer-animated-dots-001c7465.js +79 -0
- package/dist/cjs/mer-animated-dots-001c7465.js.map +1 -0
- package/dist/cjs/{tabular-grid-render-b1767da2.js → tabular-grid-render-f97a5ab3.js} +18 -14
- package/dist/cjs/tabular-grid-render-f97a5ab3.js.map +1 -0
- package/dist/cjs/{utilities-0e316b39.js → utilities-0815a260.js} +10 -6
- package/dist/cjs/utilities-0815a260.js.map +1 -0
- package/dist/collection/components/chat/chat-container/chat-container.js +2 -10
- package/dist/collection/components/chat/chat-container/chat-container.js.map +1 -1
- package/dist/collection/components/new-version/gx-ide-assets/new-version/shortcuts.json +15 -0
- package/dist/collection/components/new-version/new-version.js +17 -4
- package/dist/collection/components/new-version/new-version.js.map +1 -1
- package/dist/collection/index.js +0 -2
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/showcase/chat-container/callbacks.js +9 -9
- package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +4 -4
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/collection/showcase/chat-container/models.js +18 -18
- package/dist/collection/showcase/chat-container/models.js.map +1 -1
- package/dist/components/chat-container.js +6 -11
- package/dist/components/chat-container.js.map +1 -1
- package/dist/components/chat-welcome.js +4 -1
- package/dist/components/chat-welcome.js.map +1 -1
- package/dist/components/entity-selector.js +4 -1
- package/dist/components/entity-selector.js.map +1 -1
- package/dist/components/file-item.js +4 -1
- package/dist/components/file-item.js.map +1 -1
- package/dist/components/gx-ide-bpm-app-declaration.js +4 -1
- package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
- package/dist/components/gx-ide-bpm-task-documents.js +4 -1
- package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +4 -1
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-current-user-info.js +4 -1
- package/dist/components/gx-ide-current-user-info.js.map +1 -1
- package/dist/components/gx-ide-data-selector.js +4 -1
- package/dist/components/gx-ide-data-selector.js.map +1 -1
- package/dist/components/gx-ide-data-type-selector.js +4 -1
- package/dist/components/gx-ide-data-type-selector.js.map +1 -1
- package/dist/components/gx-ide-design-import.js +4 -1
- package/dist/components/gx-ide-design-import.js.map +1 -1
- package/dist/components/gx-ide-details-acknowledgements.js +4 -1
- package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
- package/dist/components/gx-ide-file-uploader.js +4 -1
- package/dist/components/gx-ide-file-uploader.js.map +1 -1
- package/dist/components/gx-ide-json-import.js +4 -1
- package/dist/components/gx-ide-json-import.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +4 -1
- package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +4 -1
- package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
- package/dist/components/gx-ide-manage-module-references.js +4 -1
- package/dist/components/gx-ide-manage-module-references.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +4 -1
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/components/gx-ide-new-version.js +17 -4
- package/dist/components/gx-ide-new-version.js.map +1 -1
- package/dist/components/gx-ide-object-selector.js +4 -1
- package/dist/components/gx-ide-object-selector.js.map +1 -1
- package/dist/components/gx-ide-open-api-import.js +4 -1
- package/dist/components/gx-ide-open-api-import.js.map +1 -1
- package/dist/components/gx-ide-plugin-details.js +4 -1
- package/dist/components/gx-ide-plugin-details.js.map +1 -1
- package/dist/components/gx-ide-plugin-explorer.js +4 -1
- package/dist/components/gx-ide-plugin-explorer.js.map +1 -1
- package/dist/components/gx-ide-references.js +4 -1
- package/dist/components/gx-ide-references.js.map +1 -1
- package/dist/components/gx-ide-sc-chat-container.js +263 -20
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +4 -1
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +4 -1
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-splash.js +4 -1
- package/dist/components/gx-ide-splash.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +4 -1
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/gx-ide-starting-template.js +4 -1
- package/dist/components/gx-ide-starting-template.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +4 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +4 -1
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js +4 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +4 -1
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/gx-ide-welcome-page.js +4 -1
- package/dist/components/gx-ide-welcome-page.js.map +1 -1
- package/dist/components/gx-ide-ww-attributes.js +4 -1
- package/dist/components/gx-ide-ww-attributes.js.map +1 -1
- package/dist/components/gx-ide-ww-files.js +4 -1
- package/dist/components/gx-ide-ww-files.js.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/mer-animated-dots.js +81 -0
- package/dist/components/mer-animated-dots.js.map +1 -0
- package/dist/components/select-kb-items.js +4 -1
- package/dist/components/select-kb-items.js.map +1 -1
- package/dist/components/tabular-grid-render.js +4 -1
- package/dist/components/tabular-grid-render.js.map +1 -1
- package/dist/components/utilities.js +4 -1
- package/dist/components/utilities.js.map +1 -1
- package/dist/esm/assets-manager-7d6fc08f.js +5 -0
- package/dist/esm/assets-manager-7d6fc08f.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +5 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js +5 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
- package/dist/esm/gx-ide-chat-container_2.entry.js +7 -11
- package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +5 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-current-user-info.entry.js +5 -1
- package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-selector.entry.js +5 -1
- package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js +5 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-design-import.entry.js +5 -1
- package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js +5 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +5 -1
- package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-file-item.entry.js +5 -1
- package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js +5 -1
- package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +5 -1
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +5 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +5 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js +5 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +5 -1
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-version.entry.js +16 -4
- package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +5 -1
- package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-open-api-import.entry.js +5 -1
- package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +5 -1
- package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js +5 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js.map +1 -1
- package/dist/esm/gx-ide-references.entry.js +5 -1
- package/dist/esm/gx-ide-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-sc-chat-container.entry.js +263 -20
- package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +5 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +5 -1
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +5 -1
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-splash.entry.js +5 -1
- package/dist/esm/gx-ide-splash.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +5 -1
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-starting-template.entry.js +5 -1
- package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +7 -3
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +7 -3
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js +6 -2
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +5 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +7 -3
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +5 -1
- package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +5 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-files.entry.js +5 -1
- package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/mer-animated-dots-75d88f7e.js +77 -0
- package/dist/esm/mer-animated-dots-75d88f7e.js.map +1 -0
- package/dist/esm/{tabular-grid-render-96d67a8c.js → tabular-grid-render-2fca02f4.js} +7 -3
- package/dist/esm/tabular-grid-render-2fca02f4.js.map +1 -0
- package/dist/esm/{utilities-6624d90e.js → utilities-0cdc28eb.js} +6 -2
- package/dist/esm/utilities-0cdc28eb.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/new-version/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/index.esm.js +0 -2
- package/dist/genexus-ide-ui/index.esm.js.map +1 -1
- package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js → p-02883452.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js.map → p-02883452.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-c5eac770.entry.js → p-0548097b.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-c5eac770.entry.js.map → p-0548097b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js → p-082780cc.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js.map → p-082780cc.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js → p-1baf026c.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js.map → p-1baf026c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-098a7288.entry.js → p-1d647672.entry.js} +19 -11
- package/dist/genexus-ide-ui/{p-098a7288.entry.js.map → p-1d647672.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-13630aa2.entry.js → p-1e1d2672.entry.js} +51 -43
- package/dist/genexus-ide-ui/{p-13630aa2.entry.js.map → p-1e1d2672.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-b6a75c44.entry.js → p-207a698a.entry.js} +57 -49
- package/dist/genexus-ide-ui/{p-b6a75c44.entry.js.map → p-207a698a.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d18c51fe.entry.js → p-2726ab59.entry.js} +18 -10
- package/dist/genexus-ide-ui/{p-d18c51fe.entry.js.map → p-2726ab59.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js → p-27633aae.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js.map → p-27633aae.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js → p-28c11aff.entry.js} +32 -24
- package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js.map → p-28c11aff.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-3b955964.entry.js → p-2a51ea80.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-3b955964.entry.js.map → p-2a51ea80.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-1056dfe7.entry.js → p-336bb2ce.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-1056dfe7.entry.js.map → p-336bb2ce.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-ac026635.entry.js → p-364e8ecb.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-ac026635.entry.js.map → p-364e8ecb.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/p-3c14bdfc.entry.js +234 -0
- package/dist/genexus-ide-ui/p-3c14bdfc.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-1d044bf5.entry.js → p-4548ae72.entry.js} +17 -9
- package/dist/genexus-ide-ui/{p-1d044bf5.entry.js.map → p-4548ae72.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-80e49324.entry.js → p-46bb921b.entry.js} +36 -28
- package/dist/genexus-ide-ui/{p-80e49324.entry.js.map → p-46bb921b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-11a60dbe.entry.js → p-506760d7.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-11a60dbe.entry.js.map → p-506760d7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/p-6e29711e.entry.js +608 -0
- package/dist/genexus-ide-ui/p-6e29711e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-7b986243.entry.js → p-71d4d3dd.entry.js} +32 -24
- package/dist/genexus-ide-ui/{p-7b986243.entry.js.map → p-71d4d3dd.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-891faf90.entry.js → p-77c315d9.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-891faf90.entry.js.map → p-77c315d9.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-18bbaa49.entry.js → p-7c95f511.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-18bbaa49.entry.js.map → p-7c95f511.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-eedb407c.entry.js → p-7e3cccf7.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-eedb407c.entry.js.map → p-7e3cccf7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-410a35da.entry.js → p-8925fc99.entry.js} +40 -32
- package/dist/genexus-ide-ui/{p-410a35da.entry.js.map → p-8925fc99.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-072419f9.entry.js → p-94f74c12.entry.js} +18 -10
- package/dist/genexus-ide-ui/{p-072419f9.entry.js.map → p-94f74c12.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d24c1115.entry.js → p-97f6438c.entry.js} +67 -59
- package/dist/genexus-ide-ui/{p-d24c1115.entry.js.map → p-97f6438c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-9270c80f.entry.js → p-981873da.entry.js} +114 -118
- package/dist/genexus-ide-ui/p-981873da.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-17b54532.entry.js → p-99b1dfd7.entry.js} +39 -31
- package/dist/genexus-ide-ui/{p-17b54532.entry.js.map → p-99b1dfd7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js → p-9f7c347c.entry.js} +24 -16
- package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js.map → p-9f7c347c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-eacc81c8.entry.js → p-a28c2a64.entry.js} +122 -114
- package/dist/genexus-ide-ui/{p-eacc81c8.entry.js.map → p-a28c2a64.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-cccd6565.entry.js → p-a73db549.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-cccd6565.entry.js.map → p-a73db549.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-547fbde8.entry.js → p-be1ceb01.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-547fbde8.entry.js.map → p-be1ceb01.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js → p-c133095b.entry.js} +78 -70
- package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js.map → p-c133095b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-a58048e9.entry.js → p-c1c3996c.entry.js} +12 -4
- package/dist/genexus-ide-ui/{p-a58048e9.entry.js.map → p-c1c3996c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7551c2e9.entry.js → p-c426a3e7.entry.js} +22 -14
- package/dist/genexus-ide-ui/{p-7551c2e9.entry.js.map → p-c426a3e7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-4f88fecd.entry.js → p-d12739cf.entry.js} +17 -9
- package/dist/genexus-ide-ui/{p-4f88fecd.entry.js.map → p-d12739cf.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-c8270f7d.js → p-d3ee56a4.js} +45 -37
- package/dist/genexus-ide-ui/{p-c8270f7d.js.map → p-d3ee56a4.js.map} +1 -1
- package/dist/genexus-ide-ui/p-d42e842b.js +7 -0
- package/dist/genexus-ide-ui/p-d42e842b.js.map +1 -0
- package/dist/genexus-ide-ui/{p-401bfc97.js → p-d4ecd3bb.js} +9366 -7152
- package/dist/genexus-ide-ui/p-d4ecd3bb.js.map +1 -0
- package/dist/genexus-ide-ui/{p-48e87e4f.entry.js → p-de6e9132.entry.js} +71 -63
- package/dist/genexus-ide-ui/{p-48e87e4f.entry.js.map → p-de6e9132.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-05fa08d7.entry.js → p-e4e3a7af.entry.js} +19 -11
- package/dist/genexus-ide-ui/{p-05fa08d7.entry.js.map → p-e4e3a7af.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-a24571ca.js → p-ea4b35b6.js} +19 -11
- package/dist/genexus-ide-ui/{p-a24571ca.js.map → p-ea4b35b6.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js → p-f47b08c5.entry.js} +44 -36
- package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js.map → p-f47b08c5.entry.js.map} +1 -1
- package/dist/types/components/new-version/new-version.d.ts +4 -0
- package/dist/types/index.d.ts +0 -2
- package/package.json +9 -8
- package/dist/cjs/MERCURY_ASSETS-f14e91ff.js +0 -9
- package/dist/cjs/MERCURY_ASSETS-f14e91ff.js.map +0 -1
- package/dist/cjs/render-item.lit-3f18e009.js +0 -329
- package/dist/cjs/render-item.lit-3f18e009.js.map +0 -1
- package/dist/cjs/tabular-grid-render-b1767da2.js.map +0 -1
- package/dist/cjs/utilities-0e316b39.js.map +0 -1
- package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/chat-lit.css +0 -376
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js +0 -27
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js +0 -46
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js +0 -61
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js +0 -122
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js +0 -58
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/types.js +0 -2
- package/dist/collection/components/chat/lit-custom-render/types.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/utils.js +0 -50
- package/dist/collection/components/chat/lit-custom-render/utils.js.map +0 -1
- package/dist/components/MERCURY_ASSETS.js +0 -7
- package/dist/components/MERCURY_ASSETS.js.map +0 -1
- package/dist/components/render-item.lit.js +0 -327
- package/dist/components/render-item.lit.js.map +0 -1
- package/dist/esm/MERCURY_ASSETS-ccf43ae3.js +0 -7
- package/dist/esm/MERCURY_ASSETS-ccf43ae3.js.map +0 -1
- package/dist/esm/render-item.lit-449f2946.js +0 -327
- package/dist/esm/render-item.lit-449f2946.js.map +0 -1
- package/dist/esm/tabular-grid-render-96d67a8c.js.map +0 -1
- package/dist/esm/utilities-6624d90e.js.map +0 -1
- package/dist/genexus-ide-ui/gx-ide-assets/chat-container/chat-lit.css +0 -376
- package/dist/genexus-ide-ui/p-401bfc97.js.map +0 -1
- package/dist/genexus-ide-ui/p-5f65a4bb.entry.js +0 -218
- package/dist/genexus-ide-ui/p-5f65a4bb.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js +0 -359
- package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-9270c80f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-fd4f9904.js +0 -955
- package/dist/genexus-ide-ui/p-fd4f9904.js.map +0 -1
- package/dist/types/components/chat/lit-custom-render/actions.lit.d.ts +0 -2
- package/dist/types/components/chat/lit-custom-render/code-block.lit.d.ts +0 -2
- package/dist/types/components/chat/lit-custom-render/dots-animation.d.ts +0 -5
- package/dist/types/components/chat/lit-custom-render/render-item.lit.d.ts +0 -3
- package/dist/types/components/chat/lit-custom-render/spinner-animation.d.ts +0 -5
- package/dist/types/components/chat/lit-custom-render/types.d.ts +0 -4
- package/dist/types/components/chat/lit-custom-render/utils.d.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mapStylesToComboBoxItemModel","styles","map","style","value","id","caption","label","name","TAB_DATA","layout","slot","code","tokens","composition","TAB_MODEL","panels","stencils","images","fonts","designSystem","DESIGN_TYPE_TO_TAB_MODEL_MAP","Map","designImportCss","DESIGN_DATA_TYPE_PANELS","DESIGN_DATA_TYPE_STENCILS","DESIGN_DATA_TYPE_IMAGES","DESIGN_DATA_TYPE_DESIGN_SYSTEM","DESIGN_DATA_TYPE_FONTS","ITEM_COMPOSE_ID_SEPARATOR","CHECKED_VALUE","MENU_DELETE","getIconPath","category","colorType","DESIGN","FILE_UPLOAD","WEBPANEL_ICON","PANEL_FOR_SD_ICON","CSS_BUNDLES","GxIdeImportFromDesign","_GxIdeImportFromDesign_componentLocale","set","this","_GxIdeImportFromDesign_loadedItems","_GxIdeImportFromDesign_emptyStateAnimated","_GxIdeImportFromDesign_formattedExtensions","_GxIdeImportFromDesign_objectTreeCheckedStatus","all","none","_GxIdeImportFromDesign_accessTokenEl","_GxIdeImportFromDesign_importAsWebPanelsEl","_GxIdeImportFromDesign_moduleEl","_GxIdeImportFromDesign_messagesList","_GxIdeImportFromDesign_panelsSelected","_GxIdeImportFromDesign_stencilsSelected","_GxIdeImportFromDesign_imagesSelected","_GxIdeImportFromDesign_fontsSelected","_GxIdeImportFromDesign_fileInputHiddenEl","_GxIdeImportFromDesign_pathEl","_GxIdeImportFromDesign_countDesignDataItems","tree","count","countItemsRecursively","designItemsArray","designItem","variants","Array","isArray","_GxIdeImportFromDesign_warningTreeItem","leaf","startImgSrc","order","checkbox","disabled","_GxIdeImportFromDesign_initializeActiveTabs","activeTabs","_GxIdeImportFromDesign_evaluateAccessTokenRender","async","requiresAccessToken","requiresAccessTokenCallback","path","accessToken","length","accessTokenHasError","_GxIdeImportFromDesign_pathURLBlurHandler","loadDataCondition1","isLoaded","reactiveSettings","pathIsValid","lastLoadCallbackSettingValues","loadDataCondition2","__classPrivateFieldGet","_GxIdeImportFromDesign_loadData","call","_GxIdeImportFromDesign_objectsTreeSelectedItemsChangedHandler","event","detail","item","_a","itemComposedId","idList","split","itemId","itemDesignType","isChildNode","isDesignSystem","tabsModel","get","selectedDesignType","loadedItem","_GxIdeImportFromDesign_getLoadedItem","designDataDetail","_GxIdeImportFromDesign_getDesignDataDetail","designType","selectedDesignItem","_GxIdeImportFromDesign_instances","_GxIdeImportFromDesign_getCodeFactory","_GxIdeImportFromDesign_renderDetailDataTree","renderedTabs","clear","add","_GxIdeImportFromDesign_validatePath","validPathRegex","figmaURLRegex","urlWithExtensionRegex","test","_GxIdeImportFromDesign_objectsTreeCheckedItemsChangedHandler","items","from","values","currentParentId","result","startsWith","checked","parentId","push","__classPrivateFieldSet","_GxIdeImportFromDesign_selectFileHandler","click","_GxIdeImportFromDesign_styleComboBoxInputHandler","styleValue","target","_GxIdeImportFromDesign_moduleInputHandler","module","defaultModule","isLoading","source","selectedFile","token","undefined","importAsWebPanels","designData","loadCallback","_GxIdeImportFromDesign_messageCallback","messages","success","firstDesignSystemName","_b","moduleId","message","loadFn","loadImageCallback","loadDesignSystemCallback","loadFontCallback","loadPanelDataCallback","returnedData","then","data","_GxIdeImportFromDesign_evaluateDesignItemsChecked","designItemsData","selectedItems","itemsToImport","totalItemsInTree","selectedItemsLength","_GxIdeImportFromDesign_confirm","panelsToImport","stencilsToImport","imagesToImport","fontsToImport","confirmCallback","styleName","_GxIdeImportFromDesign_cancel","cancelCallback","_GxIdeImportFromDesign_fitImagesHandler","fitImages","_GxIdeImportFromDesign_getPanelsSelectedItem","reduce","minIndex","index","_GxIdeImportFromDesign_importAsWebPanelsChangedHandler","loadData","_GxIdeImportFromDesign_removeFileSelection","_GxIdeImportFromDesign_selectFileInputChangedHandler","files","_GxIdeImportFromDesign_accessFocusHandler","element","type","_GxIdeImportFromDesign_accessBlurHandler","accessTokenChanged","_GxIdeImportFromDesign_pathUrlInputHandler","_GxIdeImportFromDesign_renderHeader","primaryButtonDisabled","clearFileButtonDisabled","stylesComboDisabled","moduleDisabled","pathWithErrorStyles","displayPathErrorTooltip","fitImagesIsDisabled","designDataTreeDataModel","primaryButtonCaption","header","btnReload","btnLoad","selectFileButton","h","class","input","debounce","config","inputDebounce","part","onInput","onBlur","placeholder","pathPlaceholder","ref","el","actionElement","blockAlign","tooltipSettings","inlineAlign","delay","pathErrorMessage","hidden","accept","onChange","removeFileSelection","title","onClick","src","accessTokenPlaceholder","onFocus","accessTokenErrorMessage","suggest","suggestOptions","alreadyProcessed","model","stylesAsComboBoxModel","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","onValueChanged","importAs","checkedValue","_GxIdeImportFromDesign_renderMessages","text","_GxIdeImportFromDesign_renderMain","_GxIdeImportFromDesign_renderDesignTree","_GxIdeImportFromDesign_renderDesignTabsCh","stateIconSrc","isAnimated","stateTitle","noDesignSelected","key","selectDesign","showLines","dragDisabled","dropDisabled","expandableButton","expandOnClick","toggleCheckboxes","onCheckedItemsChange","onSelectedItemsChange","_GxIdeImportFromDesign_renderFooter","buttonOkDisabled","footer","btnCancel","btnOk","_GxIdeImportFromDesign_evaluatePanelPreview","preview","alt","noPanelPreviewAvailable","_GxIdeImportFromDesign_renderPanelTab","renderControlsTree","detailTreeModel","_GxIdeImportFromDesign_renderImageTab","height","_GxIdeImportFromDesign_tabSelectionChangedHandler","newSelectedId","reRenderCounter","tab","scrollable","tabListPosition","selectedId","overflow","contain","onSelectedItemChange","display","has","Set","pathIsValidChanged","designDataChanged","newDesignData","panelsSelectedItem","isForWeb","panelsIconSrc","imagesIconSrc","webPanels","expanded","_GxIdeImportFromDesign_recursiveDesignTreeItems","warning","pathChanged","newPath","fileIsLoaded","size","validatePathResult","newAccessToken","trim","stylesChanged","newStyles","componentWillLoad","Locale","getComponentStrings","extensions","ext","join","watchMessagesHandler","newValue","oldValue","scrollTop","scrollHeight","render","Host","iconSrc","selectedIndex","i","hasVariants","itemWithWarning","isLeaf","selected","_GxIdeImportFromDesign_loadTreeItemCompositionModel","controls","modelList","control","Object","assign","textEditorFactoryCallback"],"sources":["src/components/design-import/helpers.ts","src/components/design-import/models.ts","src/components/design-import/design-import.scss?tag=gx-ide-design-import&encapsulation=shadow","src/components/design-import/design-import.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../common/types\";\n\nexport const mapStylesToComboBoxItemModel = (\n styles: GxOption[]\n): ComboBoxModel =>\n styles?.map(style => ({\n value: style.id,\n caption: style.label || style.name\n }));\n","import { TabModel } from \"@genexus/chameleon-controls-library\";\nimport { DesignType } from \"./design-import\";\n\nexport const TAB_DATA: { [key in TAB_SELECTOR]: TabData } = {\n layout: { id: \"layout\", caption: \"Layout\", slot: \"layout\" },\n code: { id: \"code\", caption: \"Code\", slot: \"code\" },\n tokens: { id: \"tokens\", caption: \"Tokens\", slot: \"tokens\" },\n styles: { id: \"styles\", caption: \"Styles\", slot: \"styles\" },\n composition: {\n id: \"composition\",\n caption: \"Composition\",\n slot: \"composition\"\n }\n};\n\nexport const TAB_MODEL: TabDataModel = {\n panels: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n },\n {\n id: TAB_DATA.layout.id,\n name: TAB_DATA.layout.caption\n },\n {\n id: TAB_DATA.code.id,\n name: TAB_DATA.code.caption\n }\n ],\n stencils: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n },\n {\n id: TAB_DATA.layout.id,\n name: TAB_DATA.layout.caption\n },\n {\n id: TAB_DATA.code.id,\n name: TAB_DATA.code.caption\n }\n ],\n images: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n }\n ],\n fonts: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n }\n ],\n designSystem: [\n {\n id: TAB_DATA.tokens.id,\n name: TAB_DATA.tokens.caption\n },\n {\n id: TAB_DATA.styles.id,\n name: TAB_DATA.styles.caption\n }\n ]\n};\n\nexport type TabDataModel = {\n panels: TabModel;\n stencils: TabModel;\n images: TabModel;\n fonts: TabModel;\n designSystem: TabModel;\n};\n\ntype TabData = {\n id: TAB_SELECTOR;\n caption: string;\n slot: TAB_SELECTOR;\n};\n\nexport type TAB_SELECTOR =\n | \"layout\"\n | \"code\"\n | \"tokens\"\n | \"styles\"\n | \"composition\";\n\nexport const DESIGN_TYPE_TO_TAB_MODEL_MAP = new Map<DesignType, TabModel>([\n [\"panels\", TAB_MODEL.panels],\n [\"stencils\", TAB_MODEL.stencils],\n [\"images\", TAB_MODEL.images],\n [\"design_system\", TAB_MODEL.designSystem],\n [\"fonts\", TAB_MODEL.fonts]\n]);\n","@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n: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 display: contents;\n}\n\n// - - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - - -\n\n.header {\n display: grid;\n grid-auto-rows: max-content;\n // 88px is the inline-size of the largest label (Access Token) that is not always visible.\n // Setting 88px as the minimum inline size prevents an undesired difference when Access Token\n // is visible. This fix has been made for english only. The value should work with .ja and .zh also.\n grid-template-columns: minmax(88px, max-content) 1fr !important;\n\n &--show-access-token {\n grid-template-areas:\n \"path-url-label path-url-wrapper\"\n \"access-token-label access-token\"\n \"style-label style\"\n \"module-label module\"\n \"checkboxes-options checkboxes-options\";\n }\n &--hide-access-token {\n grid-template-areas:\n \"path-url-label path-url-wrapper\"\n \"style-label style\"\n \"module-label module\"\n \"checkboxes-options checkboxes-options\";\n }\n}\n// path url\n.path-url-wrapper {\n grid-template-columns: 1fr max-content;\n}\n.path-url-label {\n grid-area: path-url-label;\n}\n.path-url-control {\n flex-grow: 1;\n}\n.select-load-button {\n min-inline-size: 80px;\n}\n// access token\n.access-token-label {\n grid-area: access-token-label;\n}\n.access-token {\n grid-area: access-token;\n}\n// style\n.style-label {\n grid-area: style-label;\n}\n.style {\n grid-area: style;\n}\n// module\n.module-label {\n grid-area: module-label;\n}\n.module {\n grid-area: module;\n}\n// checkboxes options\n.checkboxes-options {\n grid-area: checkboxes-options;\n grid-template-columns: max-content max-content;\n justify-content: space-between;\n}\n\n// - - - - - - - - - - - - -\n// Main\n// - - - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 250px 1fr;\n block-size: 100%;\n overflow: auto;\n\n &--loading {\n grid-template-columns: 1fr;\n }\n}\n\n.panel-tab {\n block-size: 100%;\n display: grid;\n grid-template-columns: 1fr 300px;\n\n .panel-item {\n overflow: auto;\n }\n}\n.panel-tab:has(> :only-child) {\n grid-template-columns: 1fr;\n}\n\n.tree-view {\n padding-block: var(--mer-spacing--2xs);\n}\n\n.tree-view-panel-item {\n border-inline-start: var(--section-common-border);\n}\n\n.checker-board {\n --white-square-color: #fff1;\n --black-square-color: #0000;\n background: linear-gradient(\n 45deg,\n var(--white-square-color) 25%,\n var(--black-square-color) 25%\n ),\n linear-gradient(\n -45deg,\n var(--white-square-color) 25%,\n var(--black-square-color) 25%\n ),\n linear-gradient(\n 45deg,\n var(--black-square-color) 75%,\n var(--white-square-color) 75%\n ),\n linear-gradient(\n -45deg,\n var(--black-square-color) 75%,\n var(--white-square-color) 75%\n );\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0px;\n}\n\n/*--- Tabs ---*/\n.tab {\n border-width: 0 !important; // WA/TODO this should be a class on mercury\n}\n.tab.fit-images .composition-tab-slot {\n font-size: 0; // WA to prevent scroll\n}\n.tab.fit-images img {\n object-fit: scale-down;\n object-position: left top;\n max-height: 100%;\n}\n.tab--hidden {\n display: none;\n}\n\n// - - - - - - - - - - - - -\n// Footer\n// - - - - - - - - - - - - -\n\n.button-cancel,\n.button-ok {\n min-inline-size: var(--mer-spacing--4xl);\n}\n\n// - - - - - - - - - - - - -\n// Other\n// - - - - - - - - - - - - -\n\n.messages-slot-container {\n block-size: 100%;\n}\n\n.composition-tab-slot {\n block-size: 100%;\n overflow: auto;\n}\n\n.empty-state {\n overflow: auto;\n}\n.empty-state-button {\n // WA (It looks more pleasing with a little bit less of gap)\n transform: translateY(-12px);\n}\n\n// Messages Styles\n.messages-container {\n}\n.message {\n animation: fadeIn var(--mer-timing--fast) ease-in-out forwards;\n\n &--info {\n color: var(--mer-text__on-surface);\n }\n &--warning {\n color: var(--mer-text__warning);\n }\n &--error {\n color: var(--mer-text__error);\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n// WA's\n.combo-box.ch-disabled {\n --control__bg-color: var(--control__background-color--disabled);\n --control__border-color: var(--control__border-color--disabled);\n --control__color: var(--control__color--disabled);\n --ch-placeholder-color: var(--control-placeholder__color--disabled);\n}\n\n.tree-view::part(item__header) {\n // TODO: Remove this when Mercury is updated to >= 0.12.8\n min-inline-size: var(--tree-view__min-inline-size);\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\n// Other Libraries\nimport {\n ChCheckboxCustomEvent,\n ChEditCustomEvent,\n ComboBoxModel,\n TabModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../common/config\";\nimport { mapStylesToComboBoxItemModel } from \"./helpers\";\nimport { Locale } from \"../../common/locale\";\nimport { EntityData, GxOption } from \"../../common/types\";\nimport { TAB_DATA, DESIGN_TYPE_TO_TAB_MODEL_MAP, TAB_MODEL } from \"./models\";\n\nconst DESIGN_DATA_TYPE_PANELS = \"panels\";\nconst DESIGN_DATA_TYPE_STENCILS = \"stencils\";\nconst DESIGN_DATA_TYPE_IMAGES = \"images\";\nconst DESIGN_DATA_TYPE_DESIGN_SYSTEM = \"design_system\";\nconst DESIGN_DATA_TYPE_FONTS = \"fonts\";\n\nconst ITEM_COMPOSE_ID_SEPARATOR = \"@@@\";\n\n// ch-checkbox\nconst CHECKED_VALUE = \"on\";\n\n// Icons\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\nconst DESIGN = getIconPath({\n category: \"objects\",\n name: \"design\"\n});\nconst FILE_UPLOAD = getIconPath({\n category: \"controls\",\n name: \"file-upload\"\n});\n// For empty states\nconst WEBPANEL_ICON = getIconPath({\n category: \"objects\",\n name: \"webpanel\"\n});\nconst PANEL_FOR_SD_ICON = getIconPath({\n category: \"objects\",\n name: \"panel-for-sd\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/tree-view\",\n \"components/combo-box\",\n \"components/tab\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-design-import\",\n styleUrl: \"design-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/design-import\"]\n})\nexport class GxIdeImportFromDesign {\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 /**\n * An array that keeps track of the tree items id's (design system data type\n * + item id) along with the content, that will be used to save and retrieve\n * items information, in order to avoid using a callback to get items\n * information that was already get. loadedItemsArray will be reset every time\n * a new design is loaded.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #loadedItems: Map<string, ItemLoadedInfo> = new Map();\n\n #emptyStateAnimated: boolean = false;\n #formattedExtensions: string;\n #objectTreeCheckedStatus: ObjectTreeCheckedStatus = {\n all: [],\n none: [\"-\"]\n };\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeDesignImportElement;\n\n /* References needed to collect data */\n #accessTokenEl!: HTMLChEditElement;\n #importAsWebPanelsEl!: HTMLChCheckboxElement;\n #moduleEl!: HTMLGxIdeEntitySelectorElement;\n #messagesList: HTMLElement;\n #panelsSelected: string[] = [];\n #stencilsSelected: string[] = [];\n #imagesSelected: string[] = [];\n #fontsSelected: string[] = [];\n #fileInputHiddenEl: HTMLInputElement;\n #pathEl: HTMLChEditElement;\n\n // Use to force a re-render\n @State() reRenderCounter: number = 0;\n\n // Maps to Chameleon Models:\n @State() stylesAsComboBoxModel: ComboBoxModel;\n\n // The current style value\n @State() styleValue: string = \"\";\n\n @State() accessTokenHasError: boolean = false;\n\n @State() pathIsValid: boolean;\n @Watch(\"pathIsValid\")\n pathIsValidChanged(pathIsValid: boolean) {\n if (pathIsValid) {\n this.#evaluateAccessTokenRender();\n } else {\n // hide access token input if path is not valid\n this.requiresAccessToken = false;\n }\n }\n\n @State() tabsModel: TabModel = [];\n\n @State() activeTabs: Map<DesignType, string> = new Map();\n\n @State() renderedTabs: Set<string> = new Set();\n\n /**\n * The design data loaded from file\n */\n @State() designData: DesignData = null;\n @Watch(\"designData\")\n designDataChanged(newDesignData: DesignData) {\n if (newDesignData) {\n // panels\n const panelsSelectedItem = this.#getPanelsSelectedItem(\n this.designData.panels\n );\n const isForWeb = this.#importAsWebPanelsEl.value === CHECKED_VALUE;\n const panelsIconSrc = isForWeb\n ? \"objects/webpanel\"\n : \"objects/panel-for-sd\";\n\n // images\n const imagesIconSrc = \"objects/image\";\n\n this.designDataTreeDataModel = [\n {\n order: 0,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_PANELS}`,\n leaf: false,\n caption: isForWeb\n ? this.#componentLocale.tree.webPanels\n : this.#componentLocale.tree.panels,\n startImgSrc: panelsIconSrc,\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.#recursiveDesignTreeItems(\n this.designData.panels,\n DESIGN_DATA_TYPE_PANELS,\n panelsIconSrc,\n panelsSelectedItem\n )\n },\n {\n order: 1,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_STENCILS}`,\n leaf: false,\n caption: this.#componentLocale.tree.stencils,\n startImgSrc: \"objects/stencil\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.designData.stencils.map(item => ({\n id: `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_STENCILS}`,\n class: \"object tree-view-item\",\n leaf: !item.warning,\n caption: item.name,\n startImgSrc: \"objects/stencil\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: item.warning && this.#warningTreeItem(item.warning)\n }))\n },\n {\n order: 2,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_IMAGES}`,\n leaf: false,\n caption: this.#componentLocale.tree.images,\n startImgSrc: imagesIconSrc,\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.#recursiveDesignTreeItems(\n this.designData.images,\n DESIGN_DATA_TYPE_IMAGES,\n imagesIconSrc\n )\n },\n {\n order: 3,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_FONTS}`,\n leaf: false,\n caption: this.#componentLocale.tree.fonts,\n startImgSrc: \"controls/font\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.designData.fonts.map(item => ({\n id: `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_FONTS}`,\n leaf: !item.warning,\n caption: item.name,\n startImgSrc: \"controls/font\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: item.warning && this.#warningTreeItem(item.warning)\n }))\n },\n {\n order: 4,\n id: `${\n this.designData.designSystem.length > 0\n ? this.designData.designSystem[0].id\n : \"parent\"\n }${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_DESIGN_SYSTEM}`,\n leaf: true,\n caption: this.#componentLocale.tree.designSystem,\n startImgSrc: \"objects/dso\",\n checkbox: true,\n checked: true\n }\n ];\n }\n }\n\n /**\n * The model data loaded into the detail tree\n */\n @State() detailTreeModel: TreeViewItemModel[] = [];\n\n /**\n * If the design data is loading or not, for disabled actions\n */\n @State() isLoading = false;\n\n /**\n * If the design data is loaded or not, for conditioning input file\n */\n @State() isLoaded = false;\n\n /**\n * The messages receive when the file is loading\n */\n @State() messages: MessageData[] = [];\n\n /**\n * The file selected for load the design data\n */\n @State() selectedFile: File;\n\n /**\n * The type of the design data selected for show it visual tabs\n */\n @State() selectedDesignType: DesignType;\n\n /**\n * The item of the design data selected for show its contents on visual tabs\n */\n @State() selectedDesignItem: any;\n\n /**\n * Whether to show or not the access token input field\n */\n @State() requiresAccessToken: boolean;\n\n /**\n * the design data tree view data model\n */\n @State() designDataTreeDataModel: TreeViewItemModel[] = [];\n\n /**\n * Used to trigger a re-render after an item has been selected on\n * renderDesignTree, in order to set the first tab as the active tab\n * (setFirstActiveTab()), since calling this method inside\n * objectsTreeSelectedItemsChangedHandler does not always work without a\n * setTimeOut.\n */\n @State() updateTabsActiveTab: boolean = false;\n\n /**\n * If true, images will be fitted in the container\n */\n @State() fitImages = false;\n\n /**\n * Represents a collection of settings where each key is a specific option. Its\n * boolean value determines whether changes to that option are listened to and\n * trigger the loadCallback callback.\n */\n @Prop() readonly reactiveSettings: ReactiveSettings = {\n path: true,\n style: false,\n module: false,\n importAsWebPanels: true\n };\n\n /**\n * Used to keep track of the settings values since the last loadCallback.\n * Used to know if loadCallback is required to be called again, when any\n * of these values are changed.\n */\n @State() lastLoadCallbackSettingValues: ReactiveSettingsValues = {\n path: undefined,\n style: undefined,\n moduleId: undefined,\n importAsWebPanels: undefined\n };\n\n /**\n * The valid extensions for the files that will be loaded in Path/URL\n * (ie.: \".fig, .sketch\")\n */\n @Prop() readonly extensions!: string[];\n\n /**\n * Default value for the 'Module' field.\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * The path/URL for load the design data\n */\n @Prop({ mutable: true }) path: string = \"\";\n @Watch(\"path\")\n pathChanged(newPath: string) {\n const fileIsLoaded = this.selectedFile?.size > 0;\n const validatePathResult = this.#validatePath(newPath) || fileIsLoaded;\n this.pathIsValid = validatePathResult;\n }\n\n /**\n * The access token for the given path, which is not always required\n */\n @Prop({ mutable: true }) accessToken: string = \"\";\n @Watch(\"accessToken\")\n accessTokenChanged(newAccessToken: string) {\n if (!newAccessToken.trim().length) {\n this.accessTokenHasError = true;\n return;\n }\n this.accessTokenHasError = false;\n this.accessToken = newAccessToken;\n }\n\n /**\n * The value for \"Import as Web Panels\" checkbox.\n */\n @Prop() readonly importAsWebPanels: boolean = false;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter.\n * It returns the information of the selected object (id and name) or\n * 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer that cancel the load operation.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * This is a function provided by the developer that initiates the process\n * of importing a design.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * This is a function provided by the developer that returns the list of\n * data types loaded from a file or URL.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Design System type of data.\n */\n // eslint-disable-next-line prettier/prettier\n @Prop() readonly loadDesignSystemCallback!: LoadDesignSystemCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Font type of data.\n */\n @Prop() readonly loadFontCallback!: LoadFontCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of an Image System type of data.\n */\n @Prop() readonly loadImageCallback!: LoadImageCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Panel type of data.\n */\n @Prop() readonly loadPanelDataCallback!: LoadPanelDataCallback;\n\n /**\n * Callback invoked to determine if accessing a design requires an authentication token.\n */\n @Prop() readonly requiresAccessTokenCallback!: RequiresAccessTokenCallback;\n\n /**\n * The styles render in the option style selector\n */\n @Prop() readonly styles!: GxOption[];\n @Watch(\"styles\")\n stylesChanged(newStyles: GxOption[]) {\n this.stylesAsComboBoxModel = mapStylesToComboBoxItemModel(newStyles);\n }\n\n /**\n * This is a function provided by the developer for create an instance of a text editor.\n */\n // eslint-disable-next-line prettier/prettier\n @Prop() readonly textEditorFactoryCallback!: TextEditorFactoryCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#formattedExtensions = this.extensions\n .map(ext => `.${ext}`)\n .join(\", \");\n this.stylesChanged(this.styles);\n this.#initializeActiveTabs();\n this.pathChanged(this.path);\n this.styleValue =\n this.stylesAsComboBoxModel?.length > 0\n ? this.stylesAsComboBoxModel[0]?.value\n : \"\";\n }\n\n @Watch(\"messages\")\n watchMessagesHandler(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n if (this.#messagesList) {\n this.#messagesList.scrollTop = this.#messagesList.scrollHeight;\n }\n }\n }\n\n #countDesignDataItems = (tree: DesignItemData[]) => {\n let count = 0;\n\n function countItemsRecursively(designItemsArray: DesignItemData[]) {\n for (const designItem of designItemsArray) {\n count++;\n if (designItem.variants && Array.isArray(designItem.variants)) {\n countItemsRecursively(designItem.variants);\n }\n }\n }\n\n countItemsRecursively(tree);\n\n return count;\n };\n\n #warningTreeItem = (caption: string) => {\n return [\n {\n leaf: true,\n caption: `Warning: ${caption}`,\n startImgSrc: getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n }),\n order: -1,\n checkbox: false,\n disabled: true\n } as TreeViewItemModel\n ];\n };\n\n #recursiveDesignTreeItems(\n items: DesignItemData[],\n designType: DesignType,\n iconSrc: string,\n selectedIndex: number = undefined\n ): TreeViewItemModel[] {\n return items.map((item, i) => {\n const id = `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${designType}`;\n const hasVariants = item.variants?.length > 0;\n const itemWithWarning = item.warning\n ? this.#warningTreeItem(item.warning)\n : [];\n const isLeaf = !hasVariants && !item.warning;\n\n return {\n id: id,\n leaf: isLeaf,\n caption: item.name,\n startImgSrc: iconSrc,\n checkbox: true,\n checked: true,\n expanded: !isLeaf,\n selected: selectedIndex === i,\n order: i,\n items: [\n ...itemWithWarning,\n ...(hasVariants\n ? this.#recursiveDesignTreeItems(item.variants, designType, iconSrc)\n : [])\n ]\n };\n });\n }\n\n #initializeActiveTabs = () => {\n this.activeTabs.set(\"panels\", TAB_MODEL.panels[0].id);\n this.activeTabs.set(\"stencils\", TAB_MODEL.stencils[0].id);\n this.activeTabs.set(\"images\", TAB_MODEL.images[0].id);\n this.activeTabs.set(\"fonts\", TAB_MODEL.fonts[0].id);\n this.activeTabs.set(\"design_system\", TAB_MODEL.designSystem[0].id);\n };\n\n #evaluateAccessTokenRender = async () => {\n this.requiresAccessToken = await this.requiresAccessTokenCallback(\n this.path\n );\n // evaluate access token error\n if (this.accessToken.length) {\n this.accessTokenHasError = false;\n }\n };\n\n #pathURLBlurHandler = async () => {\n const loadDataCondition1 =\n this.isLoaded &&\n this.reactiveSettings.path &&\n this.pathIsValid &&\n this.path !== this.lastLoadCallbackSettingValues.path;\n const loadDataCondition2 =\n !this.requiresAccessToken ||\n (this.requiresAccessToken && this.accessToken.length > 0);\n if (loadDataCondition1 && loadDataCondition2) {\n this.#loadData();\n }\n };\n\n #loadTreeItemCompositionModel(\n controls: DesignPanelControlData[]\n ): TreeViewItemModel[] {\n const modelList: TreeViewItemModel[] = [];\n for (const control of controls) {\n let model: TreeViewItemModel = {\n id: control.name,\n caption: control.name,\n startImgSrc: control.type,\n checkbox: false,\n expanded: true,\n leaf: control.leaf\n };\n if (control.controls) {\n model = {\n ...model,\n items: this.#loadTreeItemCompositionModel(control.controls)\n };\n }\n modelList.push(model);\n }\n return modelList;\n }\n\n #objectsTreeSelectedItemsChangedHandler = async (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (event.detail.length) {\n const item = event.detail[0]?.item;\n const itemComposedId = item.id;\n const idList = itemComposedId.split(ITEM_COMPOSE_ID_SEPARATOR);\n const itemId = idList[0];\n const itemDesignType: DesignType = idList[1] as DesignType;\n const isChildNode = itemId && itemId !== \"parent\";\n const isDesignSystem = itemDesignType === \"design_system\";\n if (isChildNode || isDesignSystem) {\n this.tabsModel = DESIGN_TYPE_TO_TAB_MODEL_MAP.get(itemDesignType);\n this.selectedDesignType = itemDesignType;\n const loadedItem = this.#getLoadedItem(itemComposedId);\n if (!loadedItem) {\n const designDataDetail: DesignItemDataDetail =\n await this.#getDesignDataDetail(itemId, this.selectedDesignType);\n this.#loadedItems.set(itemComposedId, {\n designType: this.selectedDesignType,\n designDataDetail: designDataDetail\n });\n } else {\n // Item has been queried already. The item content exists already.\n this.selectedDesignType = loadedItem.designType;\n this.selectedDesignItem = loadedItem.designDataDetail;\n this.#getCodeFactory(loadedItem.designType);\n this.#renderDetailDataTree(loadedItem.designType);\n }\n this.renderedTabs.clear();\n this.renderedTabs.add(this.activeTabs.get(this.selectedDesignType));\n }\n }\n };\n\n #getLoadedItem = (id: string): ItemLoadedInfo | undefined => {\n return this.#loadedItems?.get(id);\n };\n\n #validatePath = (path: string): boolean => {\n const validPathRegex = /^(\\/|\\.\\/|(\\w:))[^:*?\"<>|]*\\.(sketch|gxsketch)$/i; // Match valid file paths\n const figmaURLRegex = /^https?:\\/\\/(www\\.)?figma\\.com/; // Match URLs containing \"www.figma.com\"\n const urlWithExtensionRegex =\n /^https?:\\/\\/[^\\s/$.?#].[^\\s]*\\.(sketch|gxsketch)$/i; // Match URLs ending with .sketch or .gxsketch\n const pathIsValid =\n validPathRegex.test(path) ||\n figmaURLRegex.test(path) ||\n urlWithExtensionRegex.test(path);\n return pathIsValid;\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const items = Array.from(event.detail.values());\n let currentParentId = null;\n const result: { [key: string]: string[] } = {};\n\n for (const item of items) {\n if (item.item.id.startsWith(`parent${ITEM_COMPOSE_ID_SEPARATOR}`)) {\n currentParentId = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[1];\n result[currentParentId] = [];\n } else if (item.item.checked && currentParentId) {\n const parentId = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[1];\n if (parentId === currentParentId) {\n const id = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[0];\n result[currentParentId].push(id);\n }\n }\n }\n // const { designSystem, fonts, images, panels, stencils } = result;\n const { fonts, panels, stencils, images } = result;\n\n // this.designSystemSelected = designSystem;\n this.#panelsSelected = panels;\n this.#stencilsSelected = stencils;\n this.#imagesSelected = images;\n this.#fontsSelected = fonts;\n };\n\n #selectFileHandler = (): void => {\n this.#fileInputHiddenEl.click();\n };\n\n #styleComboBoxInputHandler = (event: CustomEvent<string> | InputEvent) => {\n this.styleValue = (event.target as HTMLChComboBoxRenderElement).value;\n if (\n this.reactiveSettings.style &&\n this.styleValue !== this.lastLoadCallbackSettingValues.style\n ) {\n this.#loadData();\n }\n };\n\n #moduleInputHandler = (event: CustomEvent<EntityData>) => {\n if (\n this.reactiveSettings.module &&\n this.defaultModule.id !== event.detail.id &&\n this.pathIsValid\n ) {\n this.#loadData();\n }\n };\n\n #loadData = async (): Promise<void> => {\n this.isLoading = true;\n const source = this.selectedFile ? this.selectedFile : this.path;\n const token = this.#accessTokenEl ? this.#accessTokenEl.value : undefined;\n const style = this.styleValue;\n const importAsWebPanels = this.#importAsWebPanelsEl.value === CHECKED_VALUE;\n const designData: DesignData = await this.loadCallback(\n source,\n style,\n importAsWebPanels,\n token,\n this.#messageCallback\n );\n\n // clear\n this.#panelsSelected = [];\n this.#stencilsSelected = [];\n this.#fontsSelected = [];\n this.selectedDesignType = undefined;\n this.selectedDesignItem = undefined;\n this.messages = [];\n\n this.designData = designData;\n this.isLoaded = designData?.success ?? false;\n this.isLoading = false;\n\n const firstDesignSystemName = designData.designSystem[0]?.name;\n if (firstDesignSystemName && !this.styleValue) {\n this.styleValue = firstDesignSystemName;\n }\n\n // update the settings that were used for the last load\n if (this.reactiveSettings.path && this.pathIsValid) {\n this.lastLoadCallbackSettingValues.path = this.path;\n }\n if (this.reactiveSettings.style) {\n this.lastLoadCallbackSettingValues.style = style;\n }\n if (this.reactiveSettings.module) {\n this.lastLoadCallbackSettingValues.moduleId = this.#moduleEl.value.id;\n }\n if (this.reactiveSettings.importAsWebPanels) {\n this.lastLoadCallbackSettingValues.importAsWebPanels = importAsWebPanels;\n }\n };\n\n #messageCallback: LoadMessageCallback = message => {\n this.messages = [...this.messages, message];\n };\n\n #getDesignDataDetail = async (\n id: string,\n designType: DesignType\n ): Promise<DesignItemDataDetail> => {\n let loadFn:\n | LoadPanelDataCallback\n | LoadImageCallback\n | LoadFontCallback\n | LoadDesignSystemCallback;\n\n switch (designType) {\n case DESIGN_DATA_TYPE_IMAGES:\n loadFn = this.loadImageCallback;\n break;\n case DESIGN_DATA_TYPE_DESIGN_SYSTEM:\n loadFn = this.loadDesignSystemCallback;\n break;\n case DESIGN_DATA_TYPE_FONTS:\n loadFn = this.loadFontCallback;\n break;\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n loadFn = this.loadPanelDataCallback;\n break;\n }\n\n let returnedData: DesignItemDataDetail;\n await loadFn(id).then((data: DesignItemDataDetail) => {\n this.selectedDesignType = designType;\n this.selectedDesignItem = data;\n this.#getCodeFactory(designType);\n this.#renderDetailDataTree(designType);\n returnedData = data;\n });\n\n return returnedData;\n };\n\n #getCodeFactory(designType: string) {\n switch (designType) {\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n this.textEditorFactoryCallback(\n \"code\",\n TAB_DATA.code.slot,\n this.selectedDesignItem.code\n );\n this.textEditorFactoryCallback(\n \"html\",\n TAB_DATA.layout.slot,\n this.selectedDesignItem.layout\n );\n break;\n case DESIGN_DATA_TYPE_DESIGN_SYSTEM:\n this.textEditorFactoryCallback(\n \"tokens\",\n TAB_DATA.tokens.slot,\n this.selectedDesignItem.tokens\n );\n this.textEditorFactoryCallback(\n \"styles\",\n TAB_DATA.styles.slot,\n this.selectedDesignItem.styles\n );\n break;\n }\n }\n\n #evaluateDesignItemsChecked = (\n designItemsData: DesignItemData[],\n selectedItems: string[]\n ) => {\n let itemsToImport: string[] = selectedItems;\n\n const totalItemsInTree = this.#countDesignDataItems(designItemsData);\n const selectedItemsLength = selectedItems.length;\n if (totalItemsInTree === selectedItemsLength) {\n itemsToImport = this.#objectTreeCheckedStatus.all;\n } else if (selectedItemsLength === 0) {\n itemsToImport = this.#objectTreeCheckedStatus.none;\n }\n\n return itemsToImport;\n };\n\n #confirm = (): void => {\n const panelsToImport = this.#evaluateDesignItemsChecked(\n this.designData.panels,\n this.#panelsSelected\n );\n const stencilsToImport = this.#evaluateDesignItemsChecked(\n this.designData.stencils,\n this.#stencilsSelected\n );\n const imagesToImport = this.#evaluateDesignItemsChecked(\n this.designData.images,\n this.#imagesSelected\n );\n const fontsToImport = this.#evaluateDesignItemsChecked(\n this.designData.fonts,\n this.#fontsSelected\n );\n\n this.confirmCallback({\n panels: panelsToImport,\n stencils: stencilsToImport,\n images: imagesToImport,\n fonts: fontsToImport,\n moduleId: this.#moduleEl?.value?.id,\n styleName: this.styleValue,\n importAsWebPanels: this.#importAsWebPanelsEl.value === CHECKED_VALUE\n });\n };\n\n #cancel = (): void => {\n this.cancelCallback();\n this.isLoading = false;\n };\n\n #fitImagesHandler = (event: ChCheckboxCustomEvent<any> | InputEvent) => {\n this.fitImages = event.detail === CHECKED_VALUE;\n };\n\n #getPanelsSelectedItem = (panels: DesignItemData[]): number => {\n return panels.reduce((minIndex, item, index, panels) => {\n return panels[minIndex].name <= item.name ? minIndex : index;\n }, 0);\n };\n\n #importAsWebPanelsChangedHandler = () => {\n const loadData =\n this.reactiveSettings.importAsWebPanels && this.pathIsValid;\n if (loadData) {\n this.#loadData();\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.path = \"\";\n this.accessToken = \"\";\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.path = this.selectedFile.name;\n // we know the path is valid because the extensions are restricted by \"extensions\" Prop.\n }\n };\n\n #accessFocusHandler = (event: ChEditCustomEvent<string> | FocusEvent) => {\n const element = event.target as HTMLChEditElement;\n element.type = \"text\"; // display token on focus\n };\n\n #accessBlurHandler = (event: ChEditCustomEvent<string> | FocusEvent) => {\n const element = event.target as HTMLChEditElement;\n element.type = \"password\"; // hide token on blur\n\n this.accessTokenChanged(element.value);\n };\n\n #pathUrlInputHandler = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.path = event.detail as string;\n this.#evaluateAccessTokenRender();\n this.selectedFile = null;\n if (!this.path.length) {\n this.designData = null;\n }\n };\n\n #renderHeader = (): Element => {\n const primaryButtonDisabled =\n this.isLoading ||\n (this.pathIsValid &&\n this.requiresAccessToken &&\n this.accessToken.length === 0);\n const clearFileButtonDisabled = this.isLoading || this.path.length === 0;\n const stylesComboDisabled = this.isLoading;\n const moduleDisabled = this.isLoading;\n const pathWithErrorStyles = !this.pathIsValid && this.path.length > 0;\n const displayPathErrorTooltip = !this.pathIsValid && this.path.length > 0;\n const fitImagesIsDisabled =\n this.isLoading ||\n !this.designDataTreeDataModel.length ||\n this.selectedDesignType === \"stencils\" ||\n this.selectedDesignType === \"design_system\";\n\n let primaryButtonCaption;\n if (\n this.pathIsValid &&\n this.path === this.lastLoadCallbackSettingValues.path\n ) {\n primaryButtonCaption = this.#componentLocale.header.btnReload;\n } else if (this.pathIsValid) {\n primaryButtonCaption = this.#componentLocale.header.btnLoad;\n } else {\n primaryButtonCaption = this.#componentLocale.header.selectFileButton;\n }\n\n return (\n <header\n class={{\n \"header\": true,\n \"control-header-with-border\": true,\n \"spacing-body-inline\": true,\n \"spacing-body-block-start\": true,\n \"header--show-access-token\": this.requiresAccessToken,\n \"header--hide-access-token\": !this.requiresAccessToken,\n \"field-group-justified-start\": true\n }}\n >\n <label\n // path/url label\n class=\"label path-url-label\"\n >\n {this.#componentLocale.header.path}\n </label>\n <div class=\"path-url-wrapper buttons-spacer\">\n <ch-edit\n // path/url/file input\n id=\"path-url\"\n class={{\n \"input\": true,\n \"input-error\": pathWithErrorStyles,\n \"path-url-control\": true\n }}\n debounce={config.inputDebounce}\n part=\"option-path\"\n type=\"text\"\n value={this.path}\n onInput={this.#pathUrlInputHandler}\n onBlur={this.reactiveSettings.path && this.#pathURLBlurHandler}\n disabled={this.isLoading}\n placeholder={`${this.#componentLocale.header.pathPlaceholder}`}\n startImgSrc={FILE_UPLOAD}\n ref={(el: HTMLChEditElement) =>\n (this.#pathEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {displayPathErrorTooltip && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#pathEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.header.pathErrorMessage}{\" \"}\n {this.#formattedExtensions}\n </ch-tooltip>\n )}\n\n <input\n hidden\n type=\"file\"\n accept={this.#formattedExtensions}\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n disabled={clearFileButtonDisabled}\n onClick={!clearFileButtonDisabled && this.#removeFileSelection}\n >\n <ch-image\n class=\"icon-md\"\n src={MENU_DELETE}\n disabled={clearFileButtonDisabled}\n ></ch-image>\n </button>\n <button\n // load file button\n id=\"button-load\"\n type=\"primary-text-only\"\n onClick={\n this.pathIsValid ? this.#loadData : this.#selectFileHandler\n }\n part=\"button button--load\"\n disabled={primaryButtonDisabled}\n class={{\n \"button-primary\": this.pathIsValid,\n \"button-secondary\": !this.pathIsValid,\n \"select-load-button\": true\n }}\n >\n {primaryButtonCaption}\n </button>\n </div>\n </div>\n\n {this.requiresAccessToken && [\n <label\n // access token label\n class=\"label access-token-label\"\n >\n {this.#componentLocale.header.accessToken}\n </label>,\n <div>\n <ch-edit\n class={{\n \"input\": true,\n \"access-token\": true,\n \"input-error\": this.accessTokenHasError\n }}\n ref={(el: HTMLChEditElement) =>\n (this.#accessTokenEl = el as HTMLChEditElement)\n }\n value={this.accessToken}\n placeholder={this.#componentLocale.header.accessTokenPlaceholder}\n onFocus={this.#accessFocusHandler}\n onBlur={this.#accessBlurHandler}\n part=\"access-token\"\n disabled={this.isLoading}\n type=\"password\"\n ></ch-edit>\n {this.accessTokenHasError && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#accessTokenEl as unknown as HTMLButtonElement\n }\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.header.accessTokenErrorMessage}\n </ch-tooltip>\n )}\n </div>\n ]}\n <label\n // style label\n class=\"label style-label\"\n >\n {this.#componentLocale.header.style}\n </label>\n <ch-combo-box-render\n // style combo box\n suggest={true}\n suggestOptions={{\n alreadyProcessed: true\n }}\n disabled={stylesComboDisabled}\n model={this.stylesAsComboBoxModel}\n value={this.styleValue}\n onInput={this.#styleComboBoxInputHandler}\n part=\"option-style\"\n class=\"combo-box style\"\n ></ch-combo-box-render>\n\n <label\n // module label\n class=\"label module-label\"\n >\n {this.#componentLocale.header.module}\n </label>\n <gx-ide-entity-selector\n // module entity selector\n labelPosition=\"none\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={\n this.reactiveSettings.module && this.#moduleInputHandler\n }\n disabled={moduleDisabled}\n class=\"module\"\n ></gx-ide-entity-selector>\n\n <div\n // import as web panels\n class=\"checkboxes-options field-group\"\n >\n <ch-checkbox\n caption={this.#componentLocale.header.importAs}\n checkedValue={CHECKED_VALUE}\n class=\"checkbox import-as-web-panels\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#importAsWebPanelsEl = el as HTMLChCheckboxElement)\n }\n value={this.importAsWebPanels ? CHECKED_VALUE : undefined}\n part=\"option-import-as-web-panels\"\n disabled={this.isLoading}\n onInput={this.#importAsWebPanelsChangedHandler}\n ></ch-checkbox>\n\n <div\n class={{\n \"field-group-inline\": true,\n \"checkboxes-options__col-right\": true\n }}\n >\n <ch-checkbox\n // fit images\n caption={this.#componentLocale.header.fitImages}\n checkedValue={CHECKED_VALUE}\n class=\"checkbox\"\n part=\"fit-images-checkbox\"\n disabled={fitImagesIsDisabled}\n onInput={this.#fitImagesHandler}\n ></ch-checkbox>\n </div>\n </div>\n </header>\n );\n };\n\n #renderMessages = (): HTMLParagraphElement[] => {\n return (\n this.messages.length > 0 &&\n this.messages.map(message => (\n <p\n class={{\n \"body-regular-m\": true,\n \"message\": true,\n [`message--${message.type}`]: true\n }}\n >\n {message.type}: {message.text}\n </p>\n ))\n );\n };\n\n #renderDetailDataTree(designType: string) {\n switch (designType) {\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n this.detailTreeModel = this.#loadTreeItemCompositionModel(\n this.selectedDesignItem.composition.controls\n );\n break;\n }\n }\n\n #renderMain = () => {\n if (this.isLoading || this.designData?.success === false) {\n return (\n <div\n class=\"main main--loading scrollable\"\n ref={(el: HTMLElement) => (this.#messagesList = el as HTMLElement)}\n >\n {this.#renderMessages()}\n <div class=\"body-regular-m spacing-body\">\n <slot name=\"messages\"></slot>\n </div>\n </div>\n );\n } else if (this.designData?.success) {\n return (\n /* #main*/\n <div class=\"main\">\n {[this.#renderDesignTree(), this.#renderDesignTabsCh()]}\n </div>\n );\n } else {\n return (\n <gx-ide-empty-state\n class=\"empty-state scrollable\"\n stateIconSrc={DESIGN}\n isAnimated={this.#emptyStateAnimated}\n stateTitle={this.#componentLocale.messages.noDesignSelected}\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-tertiary empty-state-button\"\n onClick={this.#selectFileHandler}\n >\n {this.#componentLocale.messages.selectDesign}\n </button>\n </gx-ide-empty-state>\n );\n }\n };\n\n #renderDesignTree = (): HTMLChTreeViewElement => {\n return (\n <ch-tree-view-render\n part=\"data-tree\"\n class=\"tree-view\"\n id=\"data-tree\"\n showLines=\"last\"\n model={this.designDataTreeDataModel}\n dragDisabled={true}\n dropDisabled={true}\n expandableButton=\"action\"\n expandOnClick={false}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n onCheckedItemsChange={this.#objectsTreeCheckedItemsChangedHandler}\n onSelectedItemsChange={this.#objectsTreeSelectedItemsChangedHandler}\n ></ch-tree-view-render>\n );\n };\n\n #renderFooter = () => {\n const buttonOkDisabled =\n this.designData?.success !== true || this.isLoading;\n return (\n <footer class=\"control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n // button cancel\n id=\"button-cancel\"\n class=\"button-secondary button-cancel\"\n type=\"outlined\"\n onClick={this.#cancel}\n part=\"button button--cancel\"\n slot=\"footer-end\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // button ok\n id=\"button-ok\"\n class=\"button-primary button-ok\"\n type=\"primary-text-only\"\n onClick={!buttonOkDisabled && this.#confirm}\n part=\"button button--ok\"\n disabled={buttonOkDisabled}\n slot=\"footer-end\"\n >\n {this.#componentLocale.footer.btnOk}\n </button>\n </div>\n </footer>\n );\n };\n\n #evaluatePanelPreview = () => {\n if (this.selectedDesignType === \"panels\") {\n return this.selectedDesignItem?.composition?.preview ? (\n <div\n part=\"data-panel-composition-preview\"\n class=\"panel-item scrollable\"\n >\n <img\n src={this.selectedDesignItem.composition.preview}\n alt=\"Preview\"\n />\n </div>\n ) : (\n <gx-ide-empty-state\n class=\"panel-tab__empty-state\"\n stateTitle={this.#componentLocale.messages.noPanelPreviewAvailable}\n stateIconSrc={\n this.#importAsWebPanelsEl.value === CHECKED_VALUE\n ? WEBPANEL_ICON\n : PANEL_FOR_SD_ICON\n }\n ></gx-ide-empty-state>\n );\n }\n return null;\n };\n\n #renderPanelTab = (): Element => {\n const renderControlsTree =\n (this.selectedDesignType === DESIGN_DATA_TYPE_PANELS ||\n this.selectedDesignType === DESIGN_DATA_TYPE_STENCILS) &&\n this.detailTreeModel.length > 0;\n\n return (\n <div\n class={{\n \"panel-tab\": true,\n \"panel-tab--controls-tree\": renderControlsTree\n }}\n part=\"data-panel-composition-container\"\n >\n {this.#evaluatePanelPreview()}\n\n {renderControlsTree ? (\n <ch-tree-view-render\n part=\"data-panel-composition-tree\"\n class=\"tree-view tree-view-panel-item scrollable\"\n showLines=\"last\"\n model={this.detailTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n ></ch-tree-view-render>\n ) : null}\n </div>\n );\n };\n\n #renderImageTab = () => {\n return (\n <div\n part=\"data-panel-composition-preview\"\n class=\"data-preview\"\n style={{ height: \"100%\" }}\n >\n <img\n src={this.selectedDesignItem ? this.selectedDesignItem : undefined}\n alt=\"Preview\"\n class={\n this.selectedDesignType === DESIGN_DATA_TYPE_IMAGES\n ? \"checker-board\"\n : undefined\n }\n />\n </div>\n );\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.renderedTabs.clear();\n this.renderedTabs.add(event.detail.newSelectedId);\n this.reRenderCounter++;\n this.activeTabs.set(this.selectedDesignType, event.detail.newSelectedId);\n };\n\n #renderDesignTabsCh = (): HTMLChTabRenderElement => {\n return (\n <ch-tab-render\n // main section\n class={{\n \"tab\": true,\n \"scrollable\": true,\n \"fit-images\": this.fitImages\n }}\n tabListPosition=\"block-start\"\n model={this.tabsModel}\n selectedId={this.activeTabs.get(this.selectedDesignType)}\n overflow=\"auto\"\n contain=\"size\"\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n >\n <div\n slot={TAB_DATA.tokens.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.tokens.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.tokens.slot}></slot>\n </div>\n\n <div\n slot={TAB_DATA.styles.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.styles.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.styles.slot}></slot>\n </div>\n\n <div\n class=\"composition-tab-slot scrollable\"\n slot={TAB_DATA.composition.slot}\n style={{\n display: this.renderedTabs.has(TAB_DATA.composition.id)\n ? \"\"\n : \"none\"\n }}\n >\n {this.selectedDesignType === DESIGN_DATA_TYPE_IMAGES ||\n this.selectedDesignType === DESIGN_DATA_TYPE_FONTS\n ? this.#renderImageTab()\n : this.#renderPanelTab()}\n </div>\n\n <div\n slot={TAB_DATA.layout.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.layout.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.layout.slot}></slot>\n </div>\n\n <div\n slot={TAB_DATA.code.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.code.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.code.slot}></slot>\n </div>\n </ch-tab-render>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.#renderHeader()}\n {this.#renderMain()}\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type LoadMessageCallback = (message: MessageData) => void;\nexport type LoadCallback = (\n source: string | File,\n designSystem: string,\n importAsWebPanels: boolean,\n token: string | undefined,\n onMessage: LoadMessageCallback\n) => Promise<DesignData | undefined>;\nexport type LoadPanelDataCallback = (id: string) => Promise<DesignPanelData>;\nexport type LoadImageCallback = (id: string) => Promise<string>;\nexport type LoadFontCallback = (id: string) => Promise<string>;\nexport type LoadDesignSystemCallback = (\n id: string\n) => Promise<DesignSystemData>;\nexport type TextEditorFactoryCallback = (\n type: TextEditorType,\n parent: string,\n text: string\n) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type RequiresAccessTokenCallback = (source: string) => Promise<boolean>;\nexport type ConfirmCallback = (data: DesignImportData) => Promise<boolean>;\nexport type CancelCallback = () => Promise<void>;\n\nexport interface MessageData {\n type: \"error\" | \"warning\" | \"info\";\n text: string;\n}\n\nexport interface DesignData {\n panels: DesignItemData[];\n stencils: DesignItemData[];\n images: DesignItemData[];\n designSystem: DesignItemData[];\n fonts: DesignItemData[];\n success: boolean;\n}\n\nexport interface DesignItemData {\n id: string;\n name: string;\n warning?: string;\n variants?: DesignItemData[];\n}\n\nexport interface DesignPanelData {\n composition: DesignPanelCompositionData;\n code?: string;\n layout?: string;\n}\n\nexport interface DesignPanelCompositionData {\n preview?: string;\n controls: DesignPanelControlData[];\n}\n\nexport interface DesignPanelControlData {\n name: string;\n type: string;\n leaf?: boolean;\n controls: DesignPanelControlData[];\n}\n\nexport interface DesignSystemData {\n tokens: string;\n styles: string;\n}\n\ntype DesignItemDataDetail = DesignPanelData | DesignSystemData | string;\n\nexport interface DesignImportData {\n panels: string[];\n stencils: string[];\n fonts: string[];\n moduleId: string;\n images: string[];\n styleName: string;\n importAsWebPanels: boolean;\n}\n\nexport type DesignType =\n | typeof DESIGN_DATA_TYPE_PANELS\n | typeof DESIGN_DATA_TYPE_STENCILS\n | typeof DESIGN_DATA_TYPE_IMAGES\n | typeof DESIGN_DATA_TYPE_DESIGN_SYSTEM\n | typeof DESIGN_DATA_TYPE_FONTS;\n\nexport type DesignObjectType = {\n [Key in DesignType]: string;\n};\n\nexport type ItemLoadedInfo = {\n designType: DesignType;\n designDataDetail: DesignItemDataDetail;\n};\n\nexport type TextEditorType = \"code\" | \"html\" | \"styles\" | \"tokens\";\n\nexport type ReactiveSettings = {\n path: boolean;\n style: boolean;\n module: boolean;\n importAsWebPanels: boolean;\n};\n\nexport type ObjectTreeCheckedStatus = {\n all: [];\n none: [\"-\"];\n};\n\ntype ReactiveSettingsValues = {\n path: string;\n style: string;\n moduleId: string;\n importAsWebPanels: boolean;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["mapStylesToComboBoxItemModel","styles","map","style","value","id","caption","label","name","TAB_DATA","layout","slot","code","tokens","composition","TAB_MODEL","panels","stencils","images","fonts","designSystem","DESIGN_TYPE_TO_TAB_MODEL_MAP","Map","designImportCss","DESIGN_DATA_TYPE_PANELS","DESIGN_DATA_TYPE_STENCILS","DESIGN_DATA_TYPE_IMAGES","DESIGN_DATA_TYPE_DESIGN_SYSTEM","DESIGN_DATA_TYPE_FONTS","ITEM_COMPOSE_ID_SEPARATOR","CHECKED_VALUE","MENU_DELETE","getIconPath","category","colorType","DESIGN","FILE_UPLOAD","WEBPANEL_ICON","PANEL_FOR_SD_ICON","CSS_BUNDLES","GxIdeImportFromDesign","_GxIdeImportFromDesign_componentLocale","set","this","_GxIdeImportFromDesign_loadedItems","_GxIdeImportFromDesign_emptyStateAnimated","_GxIdeImportFromDesign_formattedExtensions","_GxIdeImportFromDesign_objectTreeCheckedStatus","all","none","_GxIdeImportFromDesign_accessTokenEl","_GxIdeImportFromDesign_importAsWebPanelsEl","_GxIdeImportFromDesign_moduleEl","_GxIdeImportFromDesign_messagesList","_GxIdeImportFromDesign_panelsSelected","_GxIdeImportFromDesign_stencilsSelected","_GxIdeImportFromDesign_imagesSelected","_GxIdeImportFromDesign_fontsSelected","_GxIdeImportFromDesign_fileInputHiddenEl","_GxIdeImportFromDesign_pathEl","_GxIdeImportFromDesign_countDesignDataItems","tree","count","countItemsRecursively","designItemsArray","designItem","variants","Array","isArray","_GxIdeImportFromDesign_warningTreeItem","leaf","startImgSrc","order","checkbox","disabled","_GxIdeImportFromDesign_initializeActiveTabs","activeTabs","_GxIdeImportFromDesign_evaluateAccessTokenRender","async","requiresAccessToken","requiresAccessTokenCallback","path","accessToken","length","accessTokenHasError","_GxIdeImportFromDesign_pathURLBlurHandler","loadDataCondition1","isLoaded","reactiveSettings","pathIsValid","lastLoadCallbackSettingValues","loadDataCondition2","__classPrivateFieldGet","_GxIdeImportFromDesign_loadData","call","_GxIdeImportFromDesign_objectsTreeSelectedItemsChangedHandler","event","detail","item","_a","itemComposedId","idList","split","itemId","itemDesignType","isChildNode","isDesignSystem","tabsModel","get","selectedDesignType","loadedItem","_GxIdeImportFromDesign_getLoadedItem","designDataDetail","_GxIdeImportFromDesign_getDesignDataDetail","designType","selectedDesignItem","_GxIdeImportFromDesign_instances","_GxIdeImportFromDesign_getCodeFactory","_GxIdeImportFromDesign_renderDetailDataTree","renderedTabs","clear","add","_GxIdeImportFromDesign_validatePath","validPathRegex","figmaURLRegex","urlWithExtensionRegex","test","_GxIdeImportFromDesign_objectsTreeCheckedItemsChangedHandler","items","from","values","currentParentId","result","startsWith","checked","parentId","push","__classPrivateFieldSet","_GxIdeImportFromDesign_selectFileHandler","click","_GxIdeImportFromDesign_styleComboBoxInputHandler","styleValue","target","_GxIdeImportFromDesign_moduleInputHandler","module","defaultModule","isLoading","source","selectedFile","token","undefined","importAsWebPanels","designData","loadCallback","_GxIdeImportFromDesign_messageCallback","messages","success","firstDesignSystemName","_b","moduleId","message","loadFn","loadImageCallback","loadDesignSystemCallback","loadFontCallback","loadPanelDataCallback","returnedData","then","data","_GxIdeImportFromDesign_evaluateDesignItemsChecked","designItemsData","selectedItems","itemsToImport","totalItemsInTree","selectedItemsLength","_GxIdeImportFromDesign_confirm","panelsToImport","stencilsToImport","imagesToImport","fontsToImport","confirmCallback","styleName","_GxIdeImportFromDesign_cancel","cancelCallback","_GxIdeImportFromDesign_fitImagesHandler","fitImages","_GxIdeImportFromDesign_getPanelsSelectedItem","reduce","minIndex","index","_GxIdeImportFromDesign_importAsWebPanelsChangedHandler","loadData","_GxIdeImportFromDesign_removeFileSelection","_GxIdeImportFromDesign_selectFileInputChangedHandler","files","_GxIdeImportFromDesign_accessFocusHandler","element","type","_GxIdeImportFromDesign_accessBlurHandler","accessTokenChanged","_GxIdeImportFromDesign_pathUrlInputHandler","_GxIdeImportFromDesign_renderHeader","primaryButtonDisabled","clearFileButtonDisabled","stylesComboDisabled","moduleDisabled","pathWithErrorStyles","displayPathErrorTooltip","fitImagesIsDisabled","designDataTreeDataModel","primaryButtonCaption","header","btnReload","btnLoad","selectFileButton","h","class","input","debounce","config","inputDebounce","part","onInput","onBlur","placeholder","pathPlaceholder","ref","el","actionElement","blockAlign","tooltipSettings","inlineAlign","delay","pathErrorMessage","hidden","accept","onChange","removeFileSelection","title","onClick","src","accessTokenPlaceholder","onFocus","accessTokenErrorMessage","suggest","suggestOptions","alreadyProcessed","model","stylesAsComboBoxModel","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","onValueChanged","importAs","checkedValue","_GxIdeImportFromDesign_renderMessages","text","_GxIdeImportFromDesign_renderMain","_GxIdeImportFromDesign_renderDesignTree","_GxIdeImportFromDesign_renderDesignTabsCh","stateIconSrc","isAnimated","stateTitle","noDesignSelected","key","selectDesign","showLines","dragDisabled","dropDisabled","expandableButton","expandOnClick","toggleCheckboxes","onCheckedItemsChange","onSelectedItemsChange","_GxIdeImportFromDesign_renderFooter","buttonOkDisabled","footer","btnCancel","btnOk","_GxIdeImportFromDesign_evaluatePanelPreview","preview","alt","noPanelPreviewAvailable","_GxIdeImportFromDesign_renderPanelTab","renderControlsTree","detailTreeModel","_GxIdeImportFromDesign_renderImageTab","height","_GxIdeImportFromDesign_tabSelectionChangedHandler","newSelectedId","reRenderCounter","tab","scrollable","tabListPosition","selectedId","overflow","contain","onSelectedItemChange","display","has","Set","pathIsValidChanged","designDataChanged","newDesignData","panelsSelectedItem","isForWeb","panelsIconSrc","imagesIconSrc","webPanels","expanded","_GxIdeImportFromDesign_recursiveDesignTreeItems","warning","pathChanged","newPath","fileIsLoaded","size","validatePathResult","newAccessToken","trim","stylesChanged","newStyles","componentWillLoad","Locale","getComponentStrings","extensions","ext","join","watchMessagesHandler","newValue","oldValue","scrollTop","scrollHeight","render","Host","iconSrc","selectedIndex","i","hasVariants","itemWithWarning","isLeaf","selected","_GxIdeImportFromDesign_loadTreeItemCompositionModel","controls","modelList","control","Object","assign","textEditorFactoryCallback"],"sources":["src/components/design-import/helpers.ts","src/components/design-import/models.ts","src/components/design-import/design-import.scss?tag=gx-ide-design-import&encapsulation=shadow","src/components/design-import/design-import.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../../common/types\";\n\nexport const mapStylesToComboBoxItemModel = (\n styles: GxOption[]\n): ComboBoxModel =>\n styles?.map(style => ({\n value: style.id,\n caption: style.label || style.name\n }));\n","import { TabModel } from \"@genexus/chameleon-controls-library\";\nimport { DesignType } from \"./design-import\";\n\nexport const TAB_DATA: { [key in TAB_SELECTOR]: TabData } = {\n layout: { id: \"layout\", caption: \"Layout\", slot: \"layout\" },\n code: { id: \"code\", caption: \"Code\", slot: \"code\" },\n tokens: { id: \"tokens\", caption: \"Tokens\", slot: \"tokens\" },\n styles: { id: \"styles\", caption: \"Styles\", slot: \"styles\" },\n composition: {\n id: \"composition\",\n caption: \"Composition\",\n slot: \"composition\"\n }\n};\n\nexport const TAB_MODEL: TabDataModel = {\n panels: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n },\n {\n id: TAB_DATA.layout.id,\n name: TAB_DATA.layout.caption\n },\n {\n id: TAB_DATA.code.id,\n name: TAB_DATA.code.caption\n }\n ],\n stencils: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n },\n {\n id: TAB_DATA.layout.id,\n name: TAB_DATA.layout.caption\n },\n {\n id: TAB_DATA.code.id,\n name: TAB_DATA.code.caption\n }\n ],\n images: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n }\n ],\n fonts: [\n {\n id: TAB_DATA.composition.id,\n name: TAB_DATA.composition.caption\n }\n ],\n designSystem: [\n {\n id: TAB_DATA.tokens.id,\n name: TAB_DATA.tokens.caption\n },\n {\n id: TAB_DATA.styles.id,\n name: TAB_DATA.styles.caption\n }\n ]\n};\n\nexport type TabDataModel = {\n panels: TabModel;\n stencils: TabModel;\n images: TabModel;\n fonts: TabModel;\n designSystem: TabModel;\n};\n\ntype TabData = {\n id: TAB_SELECTOR;\n caption: string;\n slot: TAB_SELECTOR;\n};\n\nexport type TAB_SELECTOR =\n | \"layout\"\n | \"code\"\n | \"tokens\"\n | \"styles\"\n | \"composition\";\n\nexport const DESIGN_TYPE_TO_TAB_MODEL_MAP = new Map<DesignType, TabModel>([\n [\"panels\", TAB_MODEL.panels],\n [\"stencils\", TAB_MODEL.stencils],\n [\"images\", TAB_MODEL.images],\n [\"design_system\", TAB_MODEL.designSystem],\n [\"fonts\", TAB_MODEL.fonts]\n]);\n","@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n: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 display: contents;\n}\n\n// - - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - - -\n\n.header {\n display: grid;\n grid-auto-rows: max-content;\n // 88px is the inline-size of the largest label (Access Token) that is not always visible.\n // Setting 88px as the minimum inline size prevents an undesired difference when Access Token\n // is visible. This fix has been made for english only. The value should work with .ja and .zh also.\n grid-template-columns: minmax(88px, max-content) 1fr !important;\n\n &--show-access-token {\n grid-template-areas:\n \"path-url-label path-url-wrapper\"\n \"access-token-label access-token\"\n \"style-label style\"\n \"module-label module\"\n \"checkboxes-options checkboxes-options\";\n }\n &--hide-access-token {\n grid-template-areas:\n \"path-url-label path-url-wrapper\"\n \"style-label style\"\n \"module-label module\"\n \"checkboxes-options checkboxes-options\";\n }\n}\n// path url\n.path-url-wrapper {\n grid-template-columns: 1fr max-content;\n}\n.path-url-label {\n grid-area: path-url-label;\n}\n.path-url-control {\n flex-grow: 1;\n}\n.select-load-button {\n min-inline-size: 80px;\n}\n// access token\n.access-token-label {\n grid-area: access-token-label;\n}\n.access-token {\n grid-area: access-token;\n}\n// style\n.style-label {\n grid-area: style-label;\n}\n.style {\n grid-area: style;\n}\n// module\n.module-label {\n grid-area: module-label;\n}\n.module {\n grid-area: module;\n}\n// checkboxes options\n.checkboxes-options {\n grid-area: checkboxes-options;\n grid-template-columns: max-content max-content;\n justify-content: space-between;\n}\n\n// - - - - - - - - - - - - -\n// Main\n// - - - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 250px 1fr;\n block-size: 100%;\n overflow: auto;\n\n &--loading {\n grid-template-columns: 1fr;\n }\n}\n\n.panel-tab {\n block-size: 100%;\n display: grid;\n grid-template-columns: 1fr 300px;\n\n .panel-item {\n overflow: auto;\n }\n}\n.panel-tab:has(> :only-child) {\n grid-template-columns: 1fr;\n}\n\n.tree-view {\n padding-block: var(--mer-spacing--2xs);\n}\n\n.tree-view-panel-item {\n border-inline-start: var(--section-common-border);\n}\n\n.checker-board {\n --white-square-color: #fff1;\n --black-square-color: #0000;\n background: linear-gradient(\n 45deg,\n var(--white-square-color) 25%,\n var(--black-square-color) 25%\n ),\n linear-gradient(\n -45deg,\n var(--white-square-color) 25%,\n var(--black-square-color) 25%\n ),\n linear-gradient(\n 45deg,\n var(--black-square-color) 75%,\n var(--white-square-color) 75%\n ),\n linear-gradient(\n -45deg,\n var(--black-square-color) 75%,\n var(--white-square-color) 75%\n );\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0px;\n}\n\n/*--- Tabs ---*/\n.tab {\n border-width: 0 !important; // WA/TODO this should be a class on mercury\n}\n.tab.fit-images .composition-tab-slot {\n font-size: 0; // WA to prevent scroll\n}\n.tab.fit-images img {\n object-fit: scale-down;\n object-position: left top;\n max-height: 100%;\n}\n.tab--hidden {\n display: none;\n}\n\n// - - - - - - - - - - - - -\n// Footer\n// - - - - - - - - - - - - -\n\n.button-cancel,\n.button-ok {\n min-inline-size: var(--mer-spacing--4xl);\n}\n\n// - - - - - - - - - - - - -\n// Other\n// - - - - - - - - - - - - -\n\n.messages-slot-container {\n block-size: 100%;\n}\n\n.composition-tab-slot {\n block-size: 100%;\n overflow: auto;\n}\n\n.empty-state {\n overflow: auto;\n}\n.empty-state-button {\n // WA (It looks more pleasing with a little bit less of gap)\n transform: translateY(-12px);\n}\n\n// Messages Styles\n.messages-container {\n}\n.message {\n animation: fadeIn var(--mer-timing--fast) ease-in-out forwards;\n\n &--info {\n color: var(--mer-text__on-surface);\n }\n &--warning {\n color: var(--mer-text__warning);\n }\n &--error {\n color: var(--mer-text__error);\n }\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n// WA's\n.combo-box.ch-disabled {\n --control__bg-color: var(--control__background-color--disabled);\n --control__border-color: var(--control__border-color--disabled);\n --control__color: var(--control__color--disabled);\n --ch-placeholder-color: var(--control-placeholder__color--disabled);\n}\n\n.tree-view::part(item__header) {\n // TODO: Remove this when Mercury is updated to >= 0.12.8\n min-inline-size: var(--tree-view__min-inline-size);\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\n// Other Libraries\nimport {\n ChCheckboxCustomEvent,\n ChEditCustomEvent,\n ComboBoxModel,\n TabModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../common/config\";\nimport { mapStylesToComboBoxItemModel } from \"./helpers\";\nimport { Locale } from \"../../common/locale\";\nimport { EntityData, GxOption } from \"../../common/types\";\nimport { TAB_DATA, DESIGN_TYPE_TO_TAB_MODEL_MAP, TAB_MODEL } from \"./models\";\n\nconst DESIGN_DATA_TYPE_PANELS = \"panels\";\nconst DESIGN_DATA_TYPE_STENCILS = \"stencils\";\nconst DESIGN_DATA_TYPE_IMAGES = \"images\";\nconst DESIGN_DATA_TYPE_DESIGN_SYSTEM = \"design_system\";\nconst DESIGN_DATA_TYPE_FONTS = \"fonts\";\n\nconst ITEM_COMPOSE_ID_SEPARATOR = \"@@@\";\n\n// ch-checkbox\nconst CHECKED_VALUE = \"on\";\n\n// Icons\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\nconst DESIGN = getIconPath({\n category: \"objects\",\n name: \"design\"\n});\nconst FILE_UPLOAD = getIconPath({\n category: \"controls\",\n name: \"file-upload\"\n});\n// For empty states\nconst WEBPANEL_ICON = getIconPath({\n category: \"objects\",\n name: \"webpanel\"\n});\nconst PANEL_FOR_SD_ICON = getIconPath({\n category: \"objects\",\n name: \"panel-for-sd\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/tree-view\",\n \"components/combo-box\",\n \"components/tab\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-design-import\",\n styleUrl: \"design-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/design-import\"]\n})\nexport class GxIdeImportFromDesign {\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 /**\n * An array that keeps track of the tree items id's (design system data type\n * + item id) along with the content, that will be used to save and retrieve\n * items information, in order to avoid using a callback to get items\n * information that was already get. loadedItemsArray will be reset every time\n * a new design is loaded.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #loadedItems: Map<string, ItemLoadedInfo> = new Map();\n\n #emptyStateAnimated: boolean = false;\n #formattedExtensions: string;\n #objectTreeCheckedStatus: ObjectTreeCheckedStatus = {\n all: [],\n none: [\"-\"]\n };\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeDesignImportElement;\n\n /* References needed to collect data */\n #accessTokenEl!: HTMLChEditElement;\n #importAsWebPanelsEl!: HTMLChCheckboxElement;\n #moduleEl!: HTMLGxIdeEntitySelectorElement;\n #messagesList: HTMLElement;\n #panelsSelected: string[] = [];\n #stencilsSelected: string[] = [];\n #imagesSelected: string[] = [];\n #fontsSelected: string[] = [];\n #fileInputHiddenEl: HTMLInputElement;\n #pathEl: HTMLChEditElement;\n\n // Use to force a re-render\n @State() reRenderCounter: number = 0;\n\n // Maps to Chameleon Models:\n @State() stylesAsComboBoxModel: ComboBoxModel;\n\n // The current style value\n @State() styleValue: string = \"\";\n\n @State() accessTokenHasError: boolean = false;\n\n @State() pathIsValid: boolean;\n @Watch(\"pathIsValid\")\n pathIsValidChanged(pathIsValid: boolean) {\n if (pathIsValid) {\n this.#evaluateAccessTokenRender();\n } else {\n // hide access token input if path is not valid\n this.requiresAccessToken = false;\n }\n }\n\n @State() tabsModel: TabModel = [];\n\n @State() activeTabs: Map<DesignType, string> = new Map();\n\n @State() renderedTabs: Set<string> = new Set();\n\n /**\n * The design data loaded from file\n */\n @State() designData: DesignData = null;\n @Watch(\"designData\")\n designDataChanged(newDesignData: DesignData) {\n if (newDesignData) {\n // panels\n const panelsSelectedItem = this.#getPanelsSelectedItem(\n this.designData.panels\n );\n const isForWeb = this.#importAsWebPanelsEl.value === CHECKED_VALUE;\n const panelsIconSrc = isForWeb\n ? \"objects/webpanel\"\n : \"objects/panel-for-sd\";\n\n // images\n const imagesIconSrc = \"objects/image\";\n\n this.designDataTreeDataModel = [\n {\n order: 0,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_PANELS}`,\n leaf: false,\n caption: isForWeb\n ? this.#componentLocale.tree.webPanels\n : this.#componentLocale.tree.panels,\n startImgSrc: panelsIconSrc,\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.#recursiveDesignTreeItems(\n this.designData.panels,\n DESIGN_DATA_TYPE_PANELS,\n panelsIconSrc,\n panelsSelectedItem\n )\n },\n {\n order: 1,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_STENCILS}`,\n leaf: false,\n caption: this.#componentLocale.tree.stencils,\n startImgSrc: \"objects/stencil\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.designData.stencils.map(item => ({\n id: `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_STENCILS}`,\n class: \"object tree-view-item\",\n leaf: !item.warning,\n caption: item.name,\n startImgSrc: \"objects/stencil\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: item.warning && this.#warningTreeItem(item.warning)\n }))\n },\n {\n order: 2,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_IMAGES}`,\n leaf: false,\n caption: this.#componentLocale.tree.images,\n startImgSrc: imagesIconSrc,\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.#recursiveDesignTreeItems(\n this.designData.images,\n DESIGN_DATA_TYPE_IMAGES,\n imagesIconSrc\n )\n },\n {\n order: 3,\n id: `parent${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_FONTS}`,\n leaf: false,\n caption: this.#componentLocale.tree.fonts,\n startImgSrc: \"controls/font\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: this.designData.fonts.map(item => ({\n id: `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_FONTS}`,\n leaf: !item.warning,\n caption: item.name,\n startImgSrc: \"controls/font\",\n checkbox: true,\n checked: true,\n expanded: true,\n items: item.warning && this.#warningTreeItem(item.warning)\n }))\n },\n {\n order: 4,\n id: `${\n this.designData.designSystem.length > 0\n ? this.designData.designSystem[0].id\n : \"parent\"\n }${ITEM_COMPOSE_ID_SEPARATOR}${DESIGN_DATA_TYPE_DESIGN_SYSTEM}`,\n leaf: true,\n caption: this.#componentLocale.tree.designSystem,\n startImgSrc: \"objects/dso\",\n checkbox: true,\n checked: true\n }\n ];\n }\n }\n\n /**\n * The model data loaded into the detail tree\n */\n @State() detailTreeModel: TreeViewItemModel[] = [];\n\n /**\n * If the design data is loading or not, for disabled actions\n */\n @State() isLoading = false;\n\n /**\n * If the design data is loaded or not, for conditioning input file\n */\n @State() isLoaded = false;\n\n /**\n * The messages receive when the file is loading\n */\n @State() messages: MessageData[] = [];\n\n /**\n * The file selected for load the design data\n */\n @State() selectedFile: File;\n\n /**\n * The type of the design data selected for show it visual tabs\n */\n @State() selectedDesignType: DesignType;\n\n /**\n * The item of the design data selected for show its contents on visual tabs\n */\n @State() selectedDesignItem: any;\n\n /**\n * Whether to show or not the access token input field\n */\n @State() requiresAccessToken: boolean;\n\n /**\n * the design data tree view data model\n */\n @State() designDataTreeDataModel: TreeViewItemModel[] = [];\n\n /**\n * Used to trigger a re-render after an item has been selected on\n * renderDesignTree, in order to set the first tab as the active tab\n * (setFirstActiveTab()), since calling this method inside\n * objectsTreeSelectedItemsChangedHandler does not always work without a\n * setTimeOut.\n */\n @State() updateTabsActiveTab: boolean = false;\n\n /**\n * If true, images will be fitted in the container\n */\n @State() fitImages = false;\n\n /**\n * Represents a collection of settings where each key is a specific option. Its\n * boolean value determines whether changes to that option are listened to and\n * trigger the loadCallback callback.\n */\n @Prop() readonly reactiveSettings: ReactiveSettings = {\n path: true,\n style: false,\n module: false,\n importAsWebPanels: true\n };\n\n /**\n * Used to keep track of the settings values since the last loadCallback.\n * Used to know if loadCallback is required to be called again, when any\n * of these values are changed.\n */\n @State() lastLoadCallbackSettingValues: ReactiveSettingsValues = {\n path: undefined,\n style: undefined,\n moduleId: undefined,\n importAsWebPanels: undefined\n };\n\n /**\n * The valid extensions for the files that will be loaded in Path/URL\n * (ie.: \".fig, .sketch\")\n */\n @Prop() readonly extensions!: string[];\n\n /**\n * Default value for the 'Module' field.\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * The path/URL for load the design data\n */\n @Prop({ mutable: true }) path: string = \"\";\n @Watch(\"path\")\n pathChanged(newPath: string) {\n const fileIsLoaded = this.selectedFile?.size > 0;\n const validatePathResult = this.#validatePath(newPath) || fileIsLoaded;\n this.pathIsValid = validatePathResult;\n }\n\n /**\n * The access token for the given path, which is not always required\n */\n @Prop({ mutable: true }) accessToken: string = \"\";\n @Watch(\"accessToken\")\n accessTokenChanged(newAccessToken: string) {\n if (!newAccessToken.trim().length) {\n this.accessTokenHasError = true;\n return;\n }\n this.accessTokenHasError = false;\n this.accessToken = newAccessToken;\n }\n\n /**\n * The value for \"Import as Web Panels\" checkbox.\n */\n @Prop() readonly importAsWebPanels: boolean = false;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter.\n * It returns the information of the selected object (id and name) or\n * 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer that cancel the load operation.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * This is a function provided by the developer that initiates the process\n * of importing a design.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * This is a function provided by the developer that returns the list of\n * data types loaded from a file or URL.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Design System type of data.\n */\n // eslint-disable-next-line prettier/prettier\n @Prop() readonly loadDesignSystemCallback!: LoadDesignSystemCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Font type of data.\n */\n @Prop() readonly loadFontCallback!: LoadFontCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of an Image System type of data.\n */\n @Prop() readonly loadImageCallback!: LoadImageCallback;\n\n /**\n * This is a function provided by the developer that returns the information\n * of a Panel type of data.\n */\n @Prop() readonly loadPanelDataCallback!: LoadPanelDataCallback;\n\n /**\n * Callback invoked to determine if accessing a design requires an authentication token.\n */\n @Prop() readonly requiresAccessTokenCallback!: RequiresAccessTokenCallback;\n\n /**\n * The styles render in the option style selector\n */\n @Prop() readonly styles!: GxOption[];\n @Watch(\"styles\")\n stylesChanged(newStyles: GxOption[]) {\n this.stylesAsComboBoxModel = mapStylesToComboBoxItemModel(newStyles);\n }\n\n /**\n * This is a function provided by the developer for create an instance of a text editor.\n */\n // eslint-disable-next-line prettier/prettier\n @Prop() readonly textEditorFactoryCallback!: TextEditorFactoryCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#formattedExtensions = this.extensions\n .map(ext => `.${ext}`)\n .join(\", \");\n this.stylesChanged(this.styles);\n this.#initializeActiveTabs();\n this.pathChanged(this.path);\n this.styleValue =\n this.stylesAsComboBoxModel?.length > 0\n ? this.stylesAsComboBoxModel[0]?.value\n : \"\";\n }\n\n @Watch(\"messages\")\n watchMessagesHandler(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n if (this.#messagesList) {\n this.#messagesList.scrollTop = this.#messagesList.scrollHeight;\n }\n }\n }\n\n #countDesignDataItems = (tree: DesignItemData[]) => {\n let count = 0;\n\n function countItemsRecursively(designItemsArray: DesignItemData[]) {\n for (const designItem of designItemsArray) {\n count++;\n if (designItem.variants && Array.isArray(designItem.variants)) {\n countItemsRecursively(designItem.variants);\n }\n }\n }\n\n countItemsRecursively(tree);\n\n return count;\n };\n\n #warningTreeItem = (caption: string) => {\n return [\n {\n leaf: true,\n caption: `Warning: ${caption}`,\n startImgSrc: getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n }),\n order: -1,\n checkbox: false,\n disabled: true\n } as TreeViewItemModel\n ];\n };\n\n #recursiveDesignTreeItems(\n items: DesignItemData[],\n designType: DesignType,\n iconSrc: string,\n selectedIndex: number = undefined\n ): TreeViewItemModel[] {\n return items.map((item, i) => {\n const id = `${item.id}${ITEM_COMPOSE_ID_SEPARATOR}${designType}`;\n const hasVariants = item.variants?.length > 0;\n const itemWithWarning = item.warning\n ? this.#warningTreeItem(item.warning)\n : [];\n const isLeaf = !hasVariants && !item.warning;\n\n return {\n id: id,\n leaf: isLeaf,\n caption: item.name,\n startImgSrc: iconSrc,\n checkbox: true,\n checked: true,\n expanded: !isLeaf,\n selected: selectedIndex === i,\n order: i,\n items: [\n ...itemWithWarning,\n ...(hasVariants\n ? this.#recursiveDesignTreeItems(item.variants, designType, iconSrc)\n : [])\n ]\n };\n });\n }\n\n #initializeActiveTabs = () => {\n this.activeTabs.set(\"panels\", TAB_MODEL.panels[0].id);\n this.activeTabs.set(\"stencils\", TAB_MODEL.stencils[0].id);\n this.activeTabs.set(\"images\", TAB_MODEL.images[0].id);\n this.activeTabs.set(\"fonts\", TAB_MODEL.fonts[0].id);\n this.activeTabs.set(\"design_system\", TAB_MODEL.designSystem[0].id);\n };\n\n #evaluateAccessTokenRender = async () => {\n this.requiresAccessToken = await this.requiresAccessTokenCallback(\n this.path\n );\n // evaluate access token error\n if (this.accessToken.length) {\n this.accessTokenHasError = false;\n }\n };\n\n #pathURLBlurHandler = async () => {\n const loadDataCondition1 =\n this.isLoaded &&\n this.reactiveSettings.path &&\n this.pathIsValid &&\n this.path !== this.lastLoadCallbackSettingValues.path;\n const loadDataCondition2 =\n !this.requiresAccessToken ||\n (this.requiresAccessToken && this.accessToken.length > 0);\n if (loadDataCondition1 && loadDataCondition2) {\n this.#loadData();\n }\n };\n\n #loadTreeItemCompositionModel(\n controls: DesignPanelControlData[]\n ): TreeViewItemModel[] {\n const modelList: TreeViewItemModel[] = [];\n for (const control of controls) {\n let model: TreeViewItemModel = {\n id: control.name,\n caption: control.name,\n startImgSrc: control.type,\n checkbox: false,\n expanded: true,\n leaf: control.leaf\n };\n if (control.controls) {\n model = {\n ...model,\n items: this.#loadTreeItemCompositionModel(control.controls)\n };\n }\n modelList.push(model);\n }\n return modelList;\n }\n\n #objectsTreeSelectedItemsChangedHandler = async (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (event.detail.length) {\n const item = event.detail[0]?.item;\n const itemComposedId = item.id;\n const idList = itemComposedId.split(ITEM_COMPOSE_ID_SEPARATOR);\n const itemId = idList[0];\n const itemDesignType: DesignType = idList[1] as DesignType;\n const isChildNode = itemId && itemId !== \"parent\";\n const isDesignSystem = itemDesignType === \"design_system\";\n if (isChildNode || isDesignSystem) {\n this.tabsModel = DESIGN_TYPE_TO_TAB_MODEL_MAP.get(itemDesignType);\n this.selectedDesignType = itemDesignType;\n const loadedItem = this.#getLoadedItem(itemComposedId);\n if (!loadedItem) {\n const designDataDetail: DesignItemDataDetail =\n await this.#getDesignDataDetail(itemId, this.selectedDesignType);\n this.#loadedItems.set(itemComposedId, {\n designType: this.selectedDesignType,\n designDataDetail: designDataDetail\n });\n } else {\n // Item has been queried already. The item content exists already.\n this.selectedDesignType = loadedItem.designType;\n this.selectedDesignItem = loadedItem.designDataDetail;\n this.#getCodeFactory(loadedItem.designType);\n this.#renderDetailDataTree(loadedItem.designType);\n }\n this.renderedTabs.clear();\n this.renderedTabs.add(this.activeTabs.get(this.selectedDesignType));\n }\n }\n };\n\n #getLoadedItem = (id: string): ItemLoadedInfo | undefined => {\n return this.#loadedItems?.get(id);\n };\n\n #validatePath = (path: string): boolean => {\n const validPathRegex = /^(\\/|\\.\\/|(\\w:))[^:*?\"<>|]*\\.(sketch|gxsketch)$/i; // Match valid file paths\n const figmaURLRegex = /^https?:\\/\\/(www\\.)?figma\\.com/; // Match URLs containing \"www.figma.com\"\n const urlWithExtensionRegex =\n /^https?:\\/\\/[^\\s/$.?#].[^\\s]*\\.(sketch|gxsketch)$/i; // Match URLs ending with .sketch or .gxsketch\n const pathIsValid =\n validPathRegex.test(path) ||\n figmaURLRegex.test(path) ||\n urlWithExtensionRegex.test(path);\n return pathIsValid;\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const items = Array.from(event.detail.values());\n let currentParentId = null;\n const result: { [key: string]: string[] } = {};\n\n for (const item of items) {\n if (item.item.id.startsWith(`parent${ITEM_COMPOSE_ID_SEPARATOR}`)) {\n currentParentId = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[1];\n result[currentParentId] = [];\n } else if (item.item.checked && currentParentId) {\n const parentId = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[1];\n if (parentId === currentParentId) {\n const id = item.item.id.split(ITEM_COMPOSE_ID_SEPARATOR)[0];\n result[currentParentId].push(id);\n }\n }\n }\n // const { designSystem, fonts, images, panels, stencils } = result;\n const { fonts, panels, stencils, images } = result;\n\n // this.designSystemSelected = designSystem;\n this.#panelsSelected = panels;\n this.#stencilsSelected = stencils;\n this.#imagesSelected = images;\n this.#fontsSelected = fonts;\n };\n\n #selectFileHandler = (): void => {\n this.#fileInputHiddenEl.click();\n };\n\n #styleComboBoxInputHandler = (event: CustomEvent<string> | InputEvent) => {\n this.styleValue = (event.target as HTMLChComboBoxRenderElement).value;\n if (\n this.reactiveSettings.style &&\n this.styleValue !== this.lastLoadCallbackSettingValues.style\n ) {\n this.#loadData();\n }\n };\n\n #moduleInputHandler = (event: CustomEvent<EntityData>) => {\n if (\n this.reactiveSettings.module &&\n this.defaultModule.id !== event.detail.id &&\n this.pathIsValid\n ) {\n this.#loadData();\n }\n };\n\n #loadData = async (): Promise<void> => {\n this.isLoading = true;\n const source = this.selectedFile ? this.selectedFile : this.path;\n const token = this.#accessTokenEl ? this.#accessTokenEl.value : undefined;\n const style = this.styleValue;\n const importAsWebPanels = this.#importAsWebPanelsEl.value === CHECKED_VALUE;\n const designData: DesignData = await this.loadCallback(\n source,\n style,\n importAsWebPanels,\n token,\n this.#messageCallback\n );\n\n // clear\n this.#panelsSelected = [];\n this.#stencilsSelected = [];\n this.#fontsSelected = [];\n this.selectedDesignType = undefined;\n this.selectedDesignItem = undefined;\n this.messages = [];\n\n this.designData = designData;\n this.isLoaded = designData?.success ?? false;\n this.isLoading = false;\n\n const firstDesignSystemName = designData.designSystem[0]?.name;\n if (firstDesignSystemName && !this.styleValue) {\n this.styleValue = firstDesignSystemName;\n }\n\n // update the settings that were used for the last load\n if (this.reactiveSettings.path && this.pathIsValid) {\n this.lastLoadCallbackSettingValues.path = this.path;\n }\n if (this.reactiveSettings.style) {\n this.lastLoadCallbackSettingValues.style = style;\n }\n if (this.reactiveSettings.module) {\n this.lastLoadCallbackSettingValues.moduleId = this.#moduleEl.value.id;\n }\n if (this.reactiveSettings.importAsWebPanels) {\n this.lastLoadCallbackSettingValues.importAsWebPanels = importAsWebPanels;\n }\n };\n\n #messageCallback: LoadMessageCallback = message => {\n this.messages = [...this.messages, message];\n };\n\n #getDesignDataDetail = async (\n id: string,\n designType: DesignType\n ): Promise<DesignItemDataDetail> => {\n let loadFn:\n | LoadPanelDataCallback\n | LoadImageCallback\n | LoadFontCallback\n | LoadDesignSystemCallback;\n\n switch (designType) {\n case DESIGN_DATA_TYPE_IMAGES:\n loadFn = this.loadImageCallback;\n break;\n case DESIGN_DATA_TYPE_DESIGN_SYSTEM:\n loadFn = this.loadDesignSystemCallback;\n break;\n case DESIGN_DATA_TYPE_FONTS:\n loadFn = this.loadFontCallback;\n break;\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n loadFn = this.loadPanelDataCallback;\n break;\n }\n\n let returnedData: DesignItemDataDetail;\n await loadFn(id).then((data: DesignItemDataDetail) => {\n this.selectedDesignType = designType;\n this.selectedDesignItem = data;\n this.#getCodeFactory(designType);\n this.#renderDetailDataTree(designType);\n returnedData = data;\n });\n\n return returnedData;\n };\n\n #getCodeFactory(designType: string) {\n switch (designType) {\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n this.textEditorFactoryCallback(\n \"code\",\n TAB_DATA.code.slot,\n this.selectedDesignItem.code\n );\n this.textEditorFactoryCallback(\n \"html\",\n TAB_DATA.layout.slot,\n this.selectedDesignItem.layout\n );\n break;\n case DESIGN_DATA_TYPE_DESIGN_SYSTEM:\n this.textEditorFactoryCallback(\n \"tokens\",\n TAB_DATA.tokens.slot,\n this.selectedDesignItem.tokens\n );\n this.textEditorFactoryCallback(\n \"styles\",\n TAB_DATA.styles.slot,\n this.selectedDesignItem.styles\n );\n break;\n }\n }\n\n #evaluateDesignItemsChecked = (\n designItemsData: DesignItemData[],\n selectedItems: string[]\n ) => {\n let itemsToImport: string[] = selectedItems;\n\n const totalItemsInTree = this.#countDesignDataItems(designItemsData);\n const selectedItemsLength = selectedItems.length;\n if (totalItemsInTree === selectedItemsLength) {\n itemsToImport = this.#objectTreeCheckedStatus.all;\n } else if (selectedItemsLength === 0) {\n itemsToImport = this.#objectTreeCheckedStatus.none;\n }\n\n return itemsToImport;\n };\n\n #confirm = (): void => {\n const panelsToImport = this.#evaluateDesignItemsChecked(\n this.designData.panels,\n this.#panelsSelected\n );\n const stencilsToImport = this.#evaluateDesignItemsChecked(\n this.designData.stencils,\n this.#stencilsSelected\n );\n const imagesToImport = this.#evaluateDesignItemsChecked(\n this.designData.images,\n this.#imagesSelected\n );\n const fontsToImport = this.#evaluateDesignItemsChecked(\n this.designData.fonts,\n this.#fontsSelected\n );\n\n this.confirmCallback({\n panels: panelsToImport,\n stencils: stencilsToImport,\n images: imagesToImport,\n fonts: fontsToImport,\n moduleId: this.#moduleEl?.value?.id,\n styleName: this.styleValue,\n importAsWebPanels: this.#importAsWebPanelsEl.value === CHECKED_VALUE\n });\n };\n\n #cancel = (): void => {\n this.cancelCallback();\n this.isLoading = false;\n };\n\n #fitImagesHandler = (event: ChCheckboxCustomEvent<any> | InputEvent) => {\n this.fitImages = event.detail === CHECKED_VALUE;\n };\n\n #getPanelsSelectedItem = (panels: DesignItemData[]): number => {\n return panels.reduce((minIndex, item, index, panels) => {\n return panels[minIndex].name <= item.name ? minIndex : index;\n }, 0);\n };\n\n #importAsWebPanelsChangedHandler = () => {\n const loadData =\n this.reactiveSettings.importAsWebPanels && this.pathIsValid;\n if (loadData) {\n this.#loadData();\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.path = \"\";\n this.accessToken = \"\";\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.path = this.selectedFile.name;\n // we know the path is valid because the extensions are restricted by \"extensions\" Prop.\n }\n };\n\n #accessFocusHandler = (event: ChEditCustomEvent<string> | FocusEvent) => {\n const element = event.target as HTMLChEditElement;\n element.type = \"text\"; // display token on focus\n };\n\n #accessBlurHandler = (event: ChEditCustomEvent<string> | FocusEvent) => {\n const element = event.target as HTMLChEditElement;\n element.type = \"password\"; // hide token on blur\n\n this.accessTokenChanged(element.value);\n };\n\n #pathUrlInputHandler = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.path = event.detail as string;\n this.#evaluateAccessTokenRender();\n this.selectedFile = null;\n if (!this.path.length) {\n this.designData = null;\n }\n };\n\n #renderHeader = (): Element => {\n const primaryButtonDisabled =\n this.isLoading ||\n (this.pathIsValid &&\n this.requiresAccessToken &&\n this.accessToken.length === 0);\n const clearFileButtonDisabled = this.isLoading || this.path.length === 0;\n const stylesComboDisabled = this.isLoading;\n const moduleDisabled = this.isLoading;\n const pathWithErrorStyles = !this.pathIsValid && this.path.length > 0;\n const displayPathErrorTooltip = !this.pathIsValid && this.path.length > 0;\n const fitImagesIsDisabled =\n this.isLoading ||\n !this.designDataTreeDataModel.length ||\n this.selectedDesignType === \"stencils\" ||\n this.selectedDesignType === \"design_system\";\n\n let primaryButtonCaption;\n if (\n this.pathIsValid &&\n this.path === this.lastLoadCallbackSettingValues.path\n ) {\n primaryButtonCaption = this.#componentLocale.header.btnReload;\n } else if (this.pathIsValid) {\n primaryButtonCaption = this.#componentLocale.header.btnLoad;\n } else {\n primaryButtonCaption = this.#componentLocale.header.selectFileButton;\n }\n\n return (\n <header\n class={{\n \"header\": true,\n \"control-header-with-border\": true,\n \"spacing-body-inline\": true,\n \"spacing-body-block-start\": true,\n \"header--show-access-token\": this.requiresAccessToken,\n \"header--hide-access-token\": !this.requiresAccessToken,\n \"field-group-justified-start\": true\n }}\n >\n <label\n // path/url label\n class=\"label path-url-label\"\n >\n {this.#componentLocale.header.path}\n </label>\n <div class=\"path-url-wrapper buttons-spacer\">\n <ch-edit\n // path/url/file input\n id=\"path-url\"\n class={{\n \"input\": true,\n \"input-error\": pathWithErrorStyles,\n \"path-url-control\": true\n }}\n debounce={config.inputDebounce}\n part=\"option-path\"\n type=\"text\"\n value={this.path}\n onInput={this.#pathUrlInputHandler}\n onBlur={this.reactiveSettings.path && this.#pathURLBlurHandler}\n disabled={this.isLoading}\n placeholder={`${this.#componentLocale.header.pathPlaceholder}`}\n startImgSrc={FILE_UPLOAD}\n ref={(el: HTMLChEditElement) =>\n (this.#pathEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {displayPathErrorTooltip && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#pathEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.header.pathErrorMessage}{\" \"}\n {this.#formattedExtensions}\n </ch-tooltip>\n )}\n\n <input\n hidden\n type=\"file\"\n accept={this.#formattedExtensions}\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n disabled={clearFileButtonDisabled}\n onClick={!clearFileButtonDisabled && this.#removeFileSelection}\n >\n <ch-image\n class=\"icon-md\"\n src={MENU_DELETE}\n disabled={clearFileButtonDisabled}\n ></ch-image>\n </button>\n <button\n // load file button\n id=\"button-load\"\n type=\"primary-text-only\"\n onClick={\n this.pathIsValid ? this.#loadData : this.#selectFileHandler\n }\n part=\"button button--load\"\n disabled={primaryButtonDisabled}\n class={{\n \"button-primary\": this.pathIsValid,\n \"button-secondary\": !this.pathIsValid,\n \"select-load-button\": true\n }}\n >\n {primaryButtonCaption}\n </button>\n </div>\n </div>\n\n {this.requiresAccessToken && [\n <label\n // access token label\n class=\"label access-token-label\"\n >\n {this.#componentLocale.header.accessToken}\n </label>,\n <div>\n <ch-edit\n class={{\n \"input\": true,\n \"access-token\": true,\n \"input-error\": this.accessTokenHasError\n }}\n ref={(el: HTMLChEditElement) =>\n (this.#accessTokenEl = el as HTMLChEditElement)\n }\n value={this.accessToken}\n placeholder={this.#componentLocale.header.accessTokenPlaceholder}\n onFocus={this.#accessFocusHandler}\n onBlur={this.#accessBlurHandler}\n part=\"access-token\"\n disabled={this.isLoading}\n type=\"password\"\n ></ch-edit>\n {this.accessTokenHasError && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#accessTokenEl as unknown as HTMLButtonElement\n }\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.header.accessTokenErrorMessage}\n </ch-tooltip>\n )}\n </div>\n ]}\n <label\n // style label\n class=\"label style-label\"\n >\n {this.#componentLocale.header.style}\n </label>\n <ch-combo-box-render\n // style combo box\n suggest={true}\n suggestOptions={{\n alreadyProcessed: true\n }}\n disabled={stylesComboDisabled}\n model={this.stylesAsComboBoxModel}\n value={this.styleValue}\n onInput={this.#styleComboBoxInputHandler}\n part=\"option-style\"\n class=\"combo-box style\"\n ></ch-combo-box-render>\n\n <label\n // module label\n class=\"label module-label\"\n >\n {this.#componentLocale.header.module}\n </label>\n <gx-ide-entity-selector\n // module entity selector\n labelPosition=\"none\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={\n this.reactiveSettings.module && this.#moduleInputHandler\n }\n disabled={moduleDisabled}\n class=\"module\"\n ></gx-ide-entity-selector>\n\n <div\n // import as web panels\n class=\"checkboxes-options field-group\"\n >\n <ch-checkbox\n caption={this.#componentLocale.header.importAs}\n checkedValue={CHECKED_VALUE}\n class=\"checkbox import-as-web-panels\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#importAsWebPanelsEl = el as HTMLChCheckboxElement)\n }\n value={this.importAsWebPanels ? CHECKED_VALUE : undefined}\n part=\"option-import-as-web-panels\"\n disabled={this.isLoading}\n onInput={this.#importAsWebPanelsChangedHandler}\n ></ch-checkbox>\n\n <div\n class={{\n \"field-group-inline\": true,\n \"checkboxes-options__col-right\": true\n }}\n >\n <ch-checkbox\n // fit images\n caption={this.#componentLocale.header.fitImages}\n checkedValue={CHECKED_VALUE}\n class=\"checkbox\"\n part=\"fit-images-checkbox\"\n disabled={fitImagesIsDisabled}\n onInput={this.#fitImagesHandler}\n ></ch-checkbox>\n </div>\n </div>\n </header>\n );\n };\n\n #renderMessages = (): HTMLParagraphElement[] => {\n return (\n this.messages.length > 0 &&\n this.messages.map(message => (\n <p\n class={{\n \"body-regular-m\": true,\n \"message\": true,\n [`message--${message.type}`]: true\n }}\n >\n {message.type}: {message.text}\n </p>\n ))\n );\n };\n\n #renderDetailDataTree(designType: string) {\n switch (designType) {\n case DESIGN_DATA_TYPE_PANELS:\n case DESIGN_DATA_TYPE_STENCILS:\n this.detailTreeModel = this.#loadTreeItemCompositionModel(\n this.selectedDesignItem.composition.controls\n );\n break;\n }\n }\n\n #renderMain = () => {\n if (this.isLoading || this.designData?.success === false) {\n return (\n <div\n class=\"main main--loading scrollable\"\n ref={(el: HTMLElement) => (this.#messagesList = el as HTMLElement)}\n >\n {this.#renderMessages()}\n <div class=\"body-regular-m spacing-body\">\n <slot name=\"messages\"></slot>\n </div>\n </div>\n );\n } else if (this.designData?.success) {\n return (\n /* #main*/\n <div class=\"main\">\n {[this.#renderDesignTree(), this.#renderDesignTabsCh()]}\n </div>\n );\n } else {\n return (\n <gx-ide-empty-state\n class=\"empty-state scrollable\"\n stateIconSrc={DESIGN}\n isAnimated={this.#emptyStateAnimated}\n stateTitle={this.#componentLocale.messages.noDesignSelected}\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-tertiary empty-state-button\"\n onClick={this.#selectFileHandler}\n >\n {this.#componentLocale.messages.selectDesign}\n </button>\n </gx-ide-empty-state>\n );\n }\n };\n\n #renderDesignTree = (): HTMLChTreeViewElement => {\n return (\n <ch-tree-view-render\n part=\"data-tree\"\n class=\"tree-view\"\n id=\"data-tree\"\n showLines=\"last\"\n model={this.designDataTreeDataModel}\n dragDisabled={true}\n dropDisabled={true}\n expandableButton=\"action\"\n expandOnClick={false}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n onCheckedItemsChange={this.#objectsTreeCheckedItemsChangedHandler}\n onSelectedItemsChange={this.#objectsTreeSelectedItemsChangedHandler}\n ></ch-tree-view-render>\n );\n };\n\n #renderFooter = () => {\n const buttonOkDisabled =\n this.designData?.success !== true || this.isLoading;\n return (\n <footer class=\"control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n // button cancel\n id=\"button-cancel\"\n class=\"button-secondary button-cancel\"\n type=\"outlined\"\n onClick={this.#cancel}\n part=\"button button--cancel\"\n slot=\"footer-end\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // button ok\n id=\"button-ok\"\n class=\"button-primary button-ok\"\n type=\"primary-text-only\"\n onClick={!buttonOkDisabled && this.#confirm}\n part=\"button button--ok\"\n disabled={buttonOkDisabled}\n slot=\"footer-end\"\n >\n {this.#componentLocale.footer.btnOk}\n </button>\n </div>\n </footer>\n );\n };\n\n #evaluatePanelPreview = () => {\n if (this.selectedDesignType === \"panels\") {\n return this.selectedDesignItem?.composition?.preview ? (\n <div\n part=\"data-panel-composition-preview\"\n class=\"panel-item scrollable\"\n >\n <img\n src={this.selectedDesignItem.composition.preview}\n alt=\"Preview\"\n />\n </div>\n ) : (\n <gx-ide-empty-state\n class=\"panel-tab__empty-state\"\n stateTitle={this.#componentLocale.messages.noPanelPreviewAvailable}\n stateIconSrc={\n this.#importAsWebPanelsEl.value === CHECKED_VALUE\n ? WEBPANEL_ICON\n : PANEL_FOR_SD_ICON\n }\n ></gx-ide-empty-state>\n );\n }\n return null;\n };\n\n #renderPanelTab = (): Element => {\n const renderControlsTree =\n (this.selectedDesignType === DESIGN_DATA_TYPE_PANELS ||\n this.selectedDesignType === DESIGN_DATA_TYPE_STENCILS) &&\n this.detailTreeModel.length > 0;\n\n return (\n <div\n class={{\n \"panel-tab\": true,\n \"panel-tab--controls-tree\": renderControlsTree\n }}\n part=\"data-panel-composition-container\"\n >\n {this.#evaluatePanelPreview()}\n\n {renderControlsTree ? (\n <ch-tree-view-render\n part=\"data-panel-composition-tree\"\n class=\"tree-view tree-view-panel-item scrollable\"\n showLines=\"last\"\n model={this.detailTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n ></ch-tree-view-render>\n ) : null}\n </div>\n );\n };\n\n #renderImageTab = () => {\n return (\n <div\n part=\"data-panel-composition-preview\"\n class=\"data-preview\"\n style={{ height: \"100%\" }}\n >\n <img\n src={this.selectedDesignItem ? this.selectedDesignItem : undefined}\n alt=\"Preview\"\n class={\n this.selectedDesignType === DESIGN_DATA_TYPE_IMAGES\n ? \"checker-board\"\n : undefined\n }\n />\n </div>\n );\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.renderedTabs.clear();\n this.renderedTabs.add(event.detail.newSelectedId);\n this.reRenderCounter++;\n this.activeTabs.set(this.selectedDesignType, event.detail.newSelectedId);\n };\n\n #renderDesignTabsCh = (): HTMLChTabRenderElement => {\n return (\n <ch-tab-render\n // main section\n class={{\n \"tab\": true,\n \"scrollable\": true,\n \"fit-images\": this.fitImages\n }}\n tabListPosition=\"block-start\"\n model={this.tabsModel}\n selectedId={this.activeTabs.get(this.selectedDesignType)}\n overflow=\"auto\"\n contain=\"size\"\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n >\n <div\n slot={TAB_DATA.tokens.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.tokens.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.tokens.slot}></slot>\n </div>\n\n <div\n slot={TAB_DATA.styles.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.styles.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.styles.slot}></slot>\n </div>\n\n <div\n class=\"composition-tab-slot scrollable\"\n slot={TAB_DATA.composition.slot}\n style={{\n display: this.renderedTabs.has(TAB_DATA.composition.id)\n ? \"\"\n : \"none\"\n }}\n >\n {this.selectedDesignType === DESIGN_DATA_TYPE_IMAGES ||\n this.selectedDesignType === DESIGN_DATA_TYPE_FONTS\n ? this.#renderImageTab()\n : this.#renderPanelTab()}\n </div>\n\n <div\n slot={TAB_DATA.layout.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.layout.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.layout.slot}></slot>\n </div>\n\n <div\n slot={TAB_DATA.code.slot}\n class=\"spacing-body\"\n style={{\n display: this.renderedTabs.has(TAB_DATA.code.id) ? \"\" : \"none\"\n }}\n >\n <slot name={TAB_DATA.code.slot}></slot>\n </div>\n </ch-tab-render>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.#renderHeader()}\n {this.#renderMain()}\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type LoadMessageCallback = (message: MessageData) => void;\nexport type LoadCallback = (\n source: string | File,\n designSystem: string,\n importAsWebPanels: boolean,\n token: string | undefined,\n onMessage: LoadMessageCallback\n) => Promise<DesignData | undefined>;\nexport type LoadPanelDataCallback = (id: string) => Promise<DesignPanelData>;\nexport type LoadImageCallback = (id: string) => Promise<string>;\nexport type LoadFontCallback = (id: string) => Promise<string>;\nexport type LoadDesignSystemCallback = (\n id: string\n) => Promise<DesignSystemData>;\nexport type TextEditorFactoryCallback = (\n type: TextEditorType,\n parent: string,\n text: string\n) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type RequiresAccessTokenCallback = (source: string) => Promise<boolean>;\nexport type ConfirmCallback = (data: DesignImportData) => Promise<boolean>;\nexport type CancelCallback = () => Promise<void>;\n\nexport interface MessageData {\n type: \"error\" | \"warning\" | \"info\";\n text: string;\n}\n\nexport interface DesignData {\n panels: DesignItemData[];\n stencils: DesignItemData[];\n images: DesignItemData[];\n designSystem: DesignItemData[];\n fonts: DesignItemData[];\n success: boolean;\n}\n\nexport interface DesignItemData {\n id: string;\n name: string;\n warning?: string;\n variants?: DesignItemData[];\n}\n\nexport interface DesignPanelData {\n composition: DesignPanelCompositionData;\n code?: string;\n layout?: string;\n}\n\nexport interface DesignPanelCompositionData {\n preview?: string;\n controls: DesignPanelControlData[];\n}\n\nexport interface DesignPanelControlData {\n name: string;\n type: string;\n leaf?: boolean;\n controls: DesignPanelControlData[];\n}\n\nexport interface DesignSystemData {\n tokens: string;\n styles: string;\n}\n\ntype DesignItemDataDetail = DesignPanelData | DesignSystemData | string;\n\nexport interface DesignImportData {\n panels: string[];\n stencils: string[];\n fonts: string[];\n moduleId: string;\n images: string[];\n styleName: string;\n importAsWebPanels: boolean;\n}\n\nexport type DesignType =\n | typeof DESIGN_DATA_TYPE_PANELS\n | typeof DESIGN_DATA_TYPE_STENCILS\n | typeof DESIGN_DATA_TYPE_IMAGES\n | typeof DESIGN_DATA_TYPE_DESIGN_SYSTEM\n | typeof DESIGN_DATA_TYPE_FONTS;\n\nexport type DesignObjectType = {\n [Key in DesignType]: string;\n};\n\nexport type ItemLoadedInfo = {\n designType: DesignType;\n designDataDetail: DesignItemDataDetail;\n};\n\nexport type TextEditorType = \"code\" | \"html\" | \"styles\" | \"tokens\";\n\nexport type ReactiveSettings = {\n path: boolean;\n style: boolean;\n module: boolean;\n importAsWebPanels: boolean;\n};\n\nexport type ObjectTreeCheckedStatus = {\n all: [];\n none: [\"-\"];\n};\n\ntype ReactiveSettingsValues = {\n path: string;\n style: string;\n moduleId: string;\n importAsWebPanels: boolean;\n};\n"],"mappings":"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"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { r as e, h as t, H as i, a as r } from "./p-97107ecc.js";
|
|
2
2
|
|
|
3
|
-
import { g as a } from "./p-
|
|
3
|
+
import { g as a } from "./p-d42e842b.js";
|
|
4
|
+
|
|
5
|
+
import "./p-d4ecd3bb.js";
|
|
6
|
+
|
|
7
|
+
import "lit";
|
|
8
|
+
|
|
9
|
+
import "lit/directives/when.js";
|
|
10
|
+
|
|
11
|
+
import "lit/directives/if-defined.js";
|
|
4
12
|
|
|
5
13
|
import { L as s } from "./p-311eedf3.js";
|
|
6
14
|
|
|
7
15
|
import { c as l } from "./p-9a03ac9f.js";
|
|
8
16
|
|
|
9
|
-
import { r as o } from "./p-
|
|
17
|
+
import { r as o } from "./p-ea4b35b6.js";
|
|
10
18
|
|
|
11
|
-
import { C as n } from "./p-
|
|
19
|
+
import { C as n } from "./p-d3ee56a4.js";
|
|
12
20
|
|
|
13
21
|
import { s as c } from "./p-02fb496a.js";
|
|
14
22
|
|
|
@@ -627,4 +635,4 @@ W = new WeakMap, $ = new WeakMap, T = new WeakMap;
|
|
|
627
635
|
F.style = d;
|
|
628
636
|
|
|
629
637
|
export { F as gx_ide_team_dev_bring_changes };
|
|
630
|
-
//# sourceMappingURL=p-
|
|
638
|
+
//# sourceMappingURL=p-c1c3996c.entry.js.map
|