graphdb-workbench 3.1.0-plugins1 → 3.1.0
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/12396.57f64bf7792ded4df148.bundle.js +2 -0
- package/dist/12396.57f64bf7792ded4df148.bundle.js.map +1 -0
- package/dist/15535.0a0251ba8c0b8b0b6cb6.bundle.js +2 -0
- package/dist/15535.0a0251ba8c0b8b0b6cb6.bundle.js.map +1 -0
- package/dist/16162.d15f619029495fed0ebc.bundle.js +2 -0
- package/dist/16162.d15f619029495fed0ebc.bundle.js.map +1 -0
- package/dist/20287.13f1a4df41ad3296ab89.bundle.js +2 -0
- package/dist/20287.13f1a4df41ad3296ab89.bundle.js.map +1 -0
- package/dist/21136.adcc7971979bb3309fb7.bundle.js +2 -0
- package/dist/21136.adcc7971979bb3309fb7.bundle.js.map +1 -0
- package/dist/21142.fa7d154aab4e4196ee15.bundle.js +2 -0
- package/dist/21142.fa7d154aab4e4196ee15.bundle.js.map +1 -0
- package/dist/21170.6a2e80c18e5aed5ec9be.bundle.js +2 -0
- package/dist/21170.6a2e80c18e5aed5ec9be.bundle.js.map +1 -0
- package/dist/21195.a6350a0800bde37d7389.bundle.js +2 -0
- package/dist/21195.a6350a0800bde37d7389.bundle.js.map +1 -0
- package/dist/25747.7a1ce8b2a54302f76b8f.bundle.js +2 -0
- package/dist/25747.7a1ce8b2a54302f76b8f.bundle.js.map +1 -0
- package/dist/27580.b71e95a28c3236448d85.bundle.js +2 -0
- package/dist/27580.b71e95a28c3236448d85.bundle.js.map +1 -0
- package/dist/31636.b0a799a7e9bf7b696c34.bundle.js +2 -0
- package/dist/31636.b0a799a7e9bf7b696c34.bundle.js.map +1 -0
- package/dist/32489.122d2fd323715b577189.bundle.js +2 -0
- package/dist/32489.122d2fd323715b577189.bundle.js.map +1 -0
- package/dist/34495.b5ed397332326a82fd84.bundle.js +2 -0
- package/dist/34495.b5ed397332326a82fd84.bundle.js.map +1 -0
- package/dist/38360.b15a558bfdc163b18398.bundle.js +2 -0
- package/dist/38360.b15a558bfdc163b18398.bundle.js.map +1 -0
- package/dist/38644.f5f755c7f868cfc5effc.bundle.js +2 -0
- package/dist/38644.f5f755c7f868cfc5effc.bundle.js.map +1 -0
- package/dist/38843.d7163009549d1f943a67.bundle.js +2 -0
- package/dist/38843.d7163009549d1f943a67.bundle.js.map +1 -0
- package/dist/39518.29d190e9d568dd15290c.bundle.js +2 -0
- package/dist/{39518.2605c04e1ba20af1e766.bundle.js.map → 39518.29d190e9d568dd15290c.bundle.js.map} +1 -1
- package/dist/39539.0bfad98c902596627e0c.bundle.js +2 -0
- package/dist/39539.0bfad98c902596627e0c.bundle.js.map +1 -0
- package/dist/{39874.ff5df6ccfc5d259d1240.bundle.js → 39874.ff510b958fcdbda4db58.bundle.js} +2 -2
- package/dist/39874.ff510b958fcdbda4db58.bundle.js.map +1 -0
- package/dist/41453.17a934b7470fd3500438.bundle.js +2 -0
- package/dist/41453.17a934b7470fd3500438.bundle.js.map +1 -0
- package/dist/42129.eb3c9840a263b0286076.bundle.js +2 -0
- package/dist/42129.eb3c9840a263b0286076.bundle.js.map +1 -0
- package/dist/44444.acf9527ea60a79fca57b.bundle.js +2 -0
- package/dist/44444.acf9527ea60a79fca57b.bundle.js.map +1 -0
- package/dist/55862.f96ae9585367b909cd91.bundle.js +2 -0
- package/dist/55862.f96ae9585367b909cd91.bundle.js.map +1 -0
- package/dist/58306.3d83e88616c1b0379c08.bundle.js +2 -0
- package/dist/58306.3d83e88616c1b0379c08.bundle.js.map +1 -0
- package/dist/67888.d4776e4b949a918c8576.bundle.js +2 -0
- package/dist/67888.d4776e4b949a918c8576.bundle.js.map +1 -0
- package/dist/72379.1731e737a91d189d6863.bundle.js +2 -0
- package/dist/72379.1731e737a91d189d6863.bundle.js.map +1 -0
- package/dist/73667.1cd2d5550d194fddb0ab.bundle.js +2 -0
- package/dist/73667.1cd2d5550d194fddb0ab.bundle.js.map +1 -0
- package/dist/73793.7b2e0da4c9137686c453.bundle.js +2 -0
- package/dist/73793.7b2e0da4c9137686c453.bundle.js.map +1 -0
- package/dist/75282.576fc3518f443c2a051d.bundle.js +2 -0
- package/dist/75282.576fc3518f443c2a051d.bundle.js.map +1 -0
- package/dist/75849.cddbdec32788ebfc4e52.bundle.js +2 -0
- package/dist/75849.cddbdec32788ebfc4e52.bundle.js.map +1 -0
- package/dist/78250.6cdf5272a8757c6ad08f.bundle.js +2 -0
- package/dist/78250.6cdf5272a8757c6ad08f.bundle.js.map +1 -0
- package/dist/79329.60e3d03195b6f5170a93.bundle.js +2 -0
- package/dist/79329.60e3d03195b6f5170a93.bundle.js.map +1 -0
- package/dist/{82926.eb6e5cdaa7f6f0a8d160.bundle.js → 82926.9807edeb09281b4bef7a.bundle.js} +2 -2
- package/dist/{82926.eb6e5cdaa7f6f0a8d160.bundle.js.map → 82926.9807edeb09281b4bef7a.bundle.js.map} +1 -1
- package/dist/9062.fe7bedf8616d6bb62120.bundle.js +2 -0
- package/dist/9062.fe7bedf8616d6bb62120.bundle.js.map +1 -0
- package/dist/99448.259dc03b85ced908b67f.bundle.js +2 -0
- package/dist/99448.259dc03b85ced908b67f.bundle.js.map +1 -0
- package/dist/api/interceptor/auth/unauthorized-interceptor.d.ts +5 -0
- package/dist/api/models/plugin-registry/plugin-registry.d.ts +5 -0
- package/dist/api/ontotext-workbench-api.d.ts +0 -2
- package/dist/api/ontotext-workbench-api.js +1 -1
- package/dist/api/ontotext-workbench-api.js.map +1 -1
- package/dist/api/services/utils/routing-utils.d.ts +0 -6
- package/dist/api/services/window/window.service.d.ts +0 -2
- package/dist/index.html +8 -8
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +2 -2
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/legacyWorkbench.fac3f92836d2be7e94fd.js +3 -0
- package/dist/{legacyWorkbench.396c3ad569fdb055b184.js.map → legacyWorkbench.fac3f92836d2be7e94fd.js.map} +1 -1
- package/dist/{main.efd2ba99bb5c64dcd211.js → main.fa0b99f721588e894d1d.js} +3 -3
- package/dist/main.fa0b99f721588e894d1d.js.map +1 -0
- package/dist/pages/aclmanagement.html +2 -2
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/login.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger5/index.html +11 -11
- package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-layout.cjs.entry.js.map +1 -1
- package/dist/shared-components/cjs/onto-layout.entry.cjs.js.map +1 -1
- package/dist/shared-components/collection/components/onto-layout/onto-layout.js +1 -1
- package/dist/shared-components/collection/components/onto-layout/onto-layout.js.map +1 -1
- package/dist/shared-components/collection/models/plugin/plugin-registry.js.map +1 -1
- package/dist/shared-components/esm/onto-layout.entry.js +1 -1
- package/dist/shared-components/esm/onto-layout.entry.js.map +1 -1
- package/dist/shared-components/shared-components/onto-layout.entry.esm.js.map +1 -1
- package/dist/shared-components/shared-components/{p-41ce23b3.entry.js → p-504c7e8e.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-504c7e8e.entry.js.map +1 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/utils/routing-utils.d.ts +0 -6
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/window/window.service.d.ts +0 -2
- package/dist/shared-components/types/models/plugin/plugin-registry.d.ts +2 -2
- package/package.json +1 -3
- package/dist/12396.5583bf0708a92ff0e683.bundle.js +0 -2
- package/dist/12396.5583bf0708a92ff0e683.bundle.js.map +0 -1
- package/dist/15535.be611e4b93264c1d24e8.bundle.js +0 -2
- package/dist/15535.be611e4b93264c1d24e8.bundle.js.map +0 -1
- package/dist/16162.d174e462d078895c1896.bundle.js +0 -2
- package/dist/16162.d174e462d078895c1896.bundle.js.map +0 -1
- package/dist/20287.09c57798d8e85984d5a3.bundle.js +0 -2
- package/dist/20287.09c57798d8e85984d5a3.bundle.js.map +0 -1
- package/dist/21136.55652782e1ad6e7e8fd3.bundle.js +0 -2
- package/dist/21136.55652782e1ad6e7e8fd3.bundle.js.map +0 -1
- package/dist/21142.71b4556e696319905885.bundle.js +0 -2
- package/dist/21142.71b4556e696319905885.bundle.js.map +0 -1
- package/dist/21170.f496748eb5930ce64a71.bundle.js +0 -2
- package/dist/21170.f496748eb5930ce64a71.bundle.js.map +0 -1
- package/dist/21195.cebee32f37e2b84e5a62.bundle.js +0 -2
- package/dist/21195.cebee32f37e2b84e5a62.bundle.js.map +0 -1
- package/dist/25747.c0d4b2b740ad31088095.bundle.js +0 -2
- package/dist/25747.c0d4b2b740ad31088095.bundle.js.map +0 -1
- package/dist/27580.d4a4a6121bba7b503ef7.bundle.js +0 -2
- package/dist/27580.d4a4a6121bba7b503ef7.bundle.js.map +0 -1
- package/dist/31636.3a2363f0362edf12812b.bundle.js +0 -2
- package/dist/31636.3a2363f0362edf12812b.bundle.js.map +0 -1
- package/dist/32489.b29a602924b6adeb19db.bundle.js +0 -2
- package/dist/32489.b29a602924b6adeb19db.bundle.js.map +0 -1
- package/dist/34495.2865eac2251c70cfe1fb.bundle.js +0 -2
- package/dist/34495.2865eac2251c70cfe1fb.bundle.js.map +0 -1
- package/dist/38360.6a3ab93f70c6bd1cb6fc.bundle.js +0 -2
- package/dist/38360.6a3ab93f70c6bd1cb6fc.bundle.js.map +0 -1
- package/dist/38644.4908c19613deb1a7bd17.bundle.js +0 -2
- package/dist/38644.4908c19613deb1a7bd17.bundle.js.map +0 -1
- package/dist/38843.71a4e2af27ca0e134064.bundle.js +0 -2
- package/dist/38843.71a4e2af27ca0e134064.bundle.js.map +0 -1
- package/dist/39518.2605c04e1ba20af1e766.bundle.js +0 -2
- package/dist/39539.9c20ba448ed347994d6f.bundle.js +0 -2
- package/dist/39539.9c20ba448ed347994d6f.bundle.js.map +0 -1
- package/dist/39874.ff5df6ccfc5d259d1240.bundle.js.map +0 -1
- package/dist/41453.6dca834f576930cb7daf.bundle.js +0 -2
- package/dist/41453.6dca834f576930cb7daf.bundle.js.map +0 -1
- package/dist/42129.114af0f72f3c4e004362.bundle.js +0 -2
- package/dist/42129.114af0f72f3c4e004362.bundle.js.map +0 -1
- package/dist/44444.6d6c183b8860926309cf.bundle.js +0 -2
- package/dist/44444.6d6c183b8860926309cf.bundle.js.map +0 -1
- package/dist/55862.36b699a56e4ab6279a4f.bundle.js +0 -2
- package/dist/55862.36b699a56e4ab6279a4f.bundle.js.map +0 -1
- package/dist/58306.595da068a2e0da617617.bundle.js +0 -2
- package/dist/58306.595da068a2e0da617617.bundle.js.map +0 -1
- package/dist/67888.ab6c39a55ee809c3ae8f.bundle.js +0 -2
- package/dist/67888.ab6c39a55ee809c3ae8f.bundle.js.map +0 -1
- package/dist/72379.c57365211e08b3bc6262.bundle.js +0 -2
- package/dist/72379.c57365211e08b3bc6262.bundle.js.map +0 -1
- package/dist/73667.0bfec02355b09d7ce4ab.bundle.js +0 -2
- package/dist/73667.0bfec02355b09d7ce4ab.bundle.js.map +0 -1
- package/dist/73793.af234af46241a49cb9dd.bundle.js +0 -2
- package/dist/73793.af234af46241a49cb9dd.bundle.js.map +0 -1
- package/dist/75282.250017012e14de4ea44c.bundle.js +0 -2
- package/dist/75282.250017012e14de4ea44c.bundle.js.map +0 -1
- package/dist/75849.792b3f20173c7836455a.bundle.js +0 -2
- package/dist/75849.792b3f20173c7836455a.bundle.js.map +0 -1
- package/dist/78250.ff5259a959fee01ec205.bundle.js +0 -2
- package/dist/78250.ff5259a959fee01ec205.bundle.js.map +0 -1
- package/dist/79329.cb5661017d457ff28f48.bundle.js +0 -2
- package/dist/79329.cb5661017d457ff28f48.bundle.js.map +0 -1
- package/dist/9062.9e15930c2d766483e7f3.bundle.js +0 -2
- package/dist/9062.9e15930c2d766483e7f3.bundle.js.map +0 -1
- package/dist/99448.bf1feaa3382f8d429277.bundle.js +0 -2
- package/dist/99448.bf1feaa3382f8d429277.bundle.js.map +0 -1
- package/dist/api/models/plugins/index.d.ts +0 -7
- package/dist/api/models/plugins/plugin-definition-list.d.ts +0 -5
- package/dist/api/models/plugins/plugin-definition.d.ts +0 -7
- package/dist/api/models/plugins/plugin-module.d.ts +0 -7
- package/dist/api/models/plugins/plugin-registry.d.ts +0 -9
- package/dist/api/models/plugins/plugins-manifest-response.d.ts +0 -6
- package/dist/api/models/plugins/plugins-manifest.d.ts +0 -7
- package/dist/api/services/plugins/index.d.ts +0 -2
- package/dist/api/services/plugins/mapper/plugins-manifest.mapper.d.ts +0 -12
- package/dist/api/services/plugins/plugins-rest.service.d.ts +0 -23
- package/dist/api/services/plugins/plugins.service.d.ts +0 -29
- package/dist/api/services/plugins/test/plugins.service.spec.d.ts +0 -1
- package/dist/legacyWorkbench.396c3ad569fdb055b184.js +0 -3
- package/dist/main.efd2ba99bb5c64dcd211.js.map +0 -1
- package/dist/plugins/guides/core-steps-plugin.js +0 -1
- package/dist/plugins/plugins-manifest.json +0 -16
- package/dist/plugins/tools/alert-tool-plugin.js +0 -1
- package/dist/plugins/tools/console-tool-plugin.js +0 -1
- package/dist/shared-components/shared-components/p-41ce23b3.entry.js.map +0 -1
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/extension-point.d.ts +0 -4
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/index.d.ts +0 -7
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugin-definition-list.d.ts +0 -5
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugin-definition.d.ts +0 -7
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugin-module.d.ts +0 -7
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugin-registry.d.ts +0 -9
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugins-manifest-response.d.ts +0 -6
- package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/models/plugins/plugins-manifest.d.ts +0 -7
- /package/dist/api/models/{plugins → plugin-registry}/extension-point.d.ts +0 -0
- /package/dist/{legacyWorkbench.396c3ad569fdb055b184.js.LICENSE.txt → legacyWorkbench.fac3f92836d2be7e94fd.js.LICENSE.txt} +0 -0
- /package/dist/{main.efd2ba99bb5c64dcd211.js.LICENSE.txt → main.fa0b99f721588e894d1d.js.LICENSE.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<link href="css/aclmanagement.css?v=3.1.0
|
|
2
|
-
<link href="css/autocomplete-select.css?v=3.1.0
|
|
1
|
+
<link href="css/aclmanagement.css?v=3.1.0" rel="stylesheet"/>
|
|
2
|
+
<link href="css/autocomplete-select.css?v=3.1.0" rel="stylesheet"/>
|
|
3
3
|
|
|
4
4
|
<div class="acl-management-view">
|
|
5
5
|
<h1 id="acl-management-view-title">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<link href="css/clustermanagement.css?v=3.1.0
|
|
2
|
-
<link href="css/rdf-details-side-panel.css?v=3.1.0
|
|
3
|
-
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0
|
|
1
|
+
<link href="css/clustermanagement.css?v=3.1.0" rel="stylesheet"/>
|
|
2
|
+
<link href="css/rdf-details-side-panel.css?v=3.1.0" rel="stylesheet"/>
|
|
3
|
+
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0" rel="stylesheet"/>
|
|
4
4
|
|
|
5
5
|
<title>{{'view.clusterManagement.title' | translate}}</title>
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<link href="css/domain-range-graph.css?v=3.1.0
|
|
2
|
-
<link href="css/rdf-details-side-panel.css?v=3.1.0
|
|
1
|
+
<link href="css/domain-range-graph.css?v=3.1.0" rel="stylesheet"/>
|
|
2
|
+
<link href="css/rdf-details-side-panel.css?v=3.1.0" rel="stylesheet"/>
|
|
3
3
|
|
|
4
4
|
<title>Explore Data Graph</title>
|
|
5
5
|
|
package/dist/pages/edit.html
CHANGED
package/dist/pages/explore.html
CHANGED
package/dist/pages/export.html
CHANGED
package/dist/pages/find.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<link href="css/graphs-config.css?v=3.1.0
|
|
1
|
+
<link href="css/graphs-config.css?v=3.1.0" rel="stylesheet"/>
|
|
2
2
|
|
|
3
3
|
<h1>
|
|
4
4
|
{{title}}
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
<label class="start-mode search image-label d-flex" ng-class="{'active': newConfig.startMode === 'search'}">
|
|
60
60
|
<input type="radio" class="form-check-input" id="checkboxSuccessSearch"
|
|
61
61
|
ng-model="newConfig.startMode" value="search">
|
|
62
|
-
<img class="image-label-image" src="css/images/search.png?v=3.1.0
|
|
62
|
+
<img class="image-label-image" src="css/images/search.png?v=3.1.0" alt="search image"
|
|
63
63
|
width="100%">
|
|
64
64
|
<div class="image-label-content">
|
|
65
65
|
<h5>{{'start.with.search.box' | translate}}</h5>
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
<label class="start-mode node image-label d-flex" ng-class="{'active': newConfig.startMode === 'node'}">
|
|
71
71
|
<input type="radio" class="form-check-input" id="checkboxSuccessNode" ng-model="newConfig.startMode"
|
|
72
72
|
value="node">
|
|
73
|
-
<img class="image-label-image" src="css/images/node.png?v=3.1.0
|
|
73
|
+
<img class="image-label-image" src="css/images/node.png?v=3.1.0" alt="node image"
|
|
74
74
|
width="100%">
|
|
75
75
|
<div class="image-label-content">
|
|
76
76
|
<h5>{{'start.with.fixed.node' | translate}}</h5>
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<label class="start-mode query image-label d-flex" ng-class="{'active': newConfig.startMode === 'query'}">
|
|
82
82
|
<input type="radio" class="form-check-input" data-cy="graph-config-by-graph-query-checkbox"
|
|
83
83
|
ng-model="newConfig.startMode" value="query">
|
|
84
|
-
<img class="image-label-image" src="css/images/query.png?v=3.1.0
|
|
84
|
+
<img class="image-label-image" src="css/images/query.png?v=3.1.0" alt="query image"
|
|
85
85
|
width="100%">
|
|
86
86
|
<div class="image-label-content">
|
|
87
87
|
<h5>{{'query.results.start' | translate}}</h5>
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
{{'sample.query.used' | translate}}</p>
|
|
129
129
|
</div>
|
|
130
130
|
<div>
|
|
131
|
-
<img src="css/images/expand.png?v=3.1.0
|
|
131
|
+
<img src="css/images/expand.png?v=3.1.0" class="info-box-img" height="220"
|
|
132
132
|
alt="expand image">
|
|
133
133
|
</div>
|
|
134
134
|
</div>
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
{{'sample.query.used' | translate}}</p>
|
|
157
157
|
</div>
|
|
158
158
|
<div>
|
|
159
|
-
<img src="css/images/labels-size.png?v=3.1.0
|
|
159
|
+
<img src="css/images/labels-size.png?v=3.1.0" class="info-box-img" height="220"
|
|
160
160
|
alt="labels size image">
|
|
161
161
|
</div>
|
|
162
162
|
</div>
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
<p>{{'query.is.optional.local.name' | translate}}</p>
|
|
180
180
|
</div>
|
|
181
181
|
<div>
|
|
182
|
-
<img src="css/images/predicates.png?v=3.1.0
|
|
182
|
+
<img src="css/images/predicates.png?v=3.1.0" class="info-box-img" height="220"
|
|
183
183
|
alt="predicates image">
|
|
184
184
|
</div>
|
|
185
185
|
</div>
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
{{'sample.query.used' | translate}}</p>
|
|
212
212
|
</div>
|
|
213
213
|
<div>
|
|
214
|
-
<img src="css/images/side-panel.png?v=3.1.0
|
|
214
|
+
<img src="css/images/side-panel.png?v=3.1.0" class="info-box-img" height="220"
|
|
215
215
|
alt="side panel image">
|
|
216
216
|
</div>
|
|
217
217
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<link href="css/graphs-vizualizations.css?v=3.1.0
|
|
2
|
-
<link href="css/rdf-details-side-panel.css?v=3.1.0
|
|
3
|
-
<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0
|
|
4
|
-
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0
|
|
1
|
+
<link href="css/graphs-vizualizations.css?v=3.1.0" rel="stylesheet"/>
|
|
2
|
+
<link href="css/rdf-details-side-panel.css?v=3.1.0" rel="stylesheet"/>
|
|
3
|
+
<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0" rel="stylesheet"/>
|
|
4
|
+
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0" rel="stylesheet"/>
|
|
5
5
|
|
|
6
6
|
<div class="container-fluid visual-graph-view">
|
|
7
7
|
|
|
@@ -127,9 +127,9 @@
|
|
|
127
127
|
<tr ng-repeat="config in graphConfigs">
|
|
128
128
|
<td width="20">
|
|
129
129
|
<a href ng-click="goToGraphConfig(config)">
|
|
130
|
-
<img ng-if="config.startMode == 'search'" src="css/images/search.png?v=3.1.0
|
|
131
|
-
<img ng-if="config.startMode == 'node'" src="css/images/node.png?v=3.1.0
|
|
132
|
-
<img ng-if="config.startMode == 'query'" src="css/images/query.png?v=3.1.0
|
|
130
|
+
<img ng-if="config.startMode == 'search'" src="css/images/search.png?v=3.1.0" alt="" width="64" uib-popover="{{'visual.config.search.box.starting.point' | translate}}" popover-trigger="mouseenter">
|
|
131
|
+
<img ng-if="config.startMode == 'node'" src="css/images/node.png?v=3.1.0" alt="" width="64" uib-popover="{{'visual.config.fixed.resource.starting.point' | translate}}" popover-trigger="mouseenter">
|
|
132
|
+
<img ng-if="config.startMode == 'query'" src="css/images/query.png?v=3.1.0" alt="" data-cy="graph-config-starting-point-query-results" width="64" uib-popover="{{'visual.config.query.results.starting.point' | translate}}" popover-trigger="mouseenter">
|
|
133
133
|
</a>
|
|
134
134
|
</td>
|
|
135
135
|
<td>
|
package/dist/pages/guides.html
CHANGED
package/dist/pages/import.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<link rel="stylesheet" type="text/css" href="css/import.css?v=3.1.0
|
|
2
|
-
<link rel="stylesheet" type="text/css" href="css/import-resource-tree.css?v=3.1.0
|
|
1
|
+
<link rel="stylesheet" type="text/css" href="css/import.css?v=3.1.0">
|
|
2
|
+
<link rel="stylesheet" type="text/css" href="css/import-resource-tree.css?v=3.1.0">
|
|
3
3
|
|
|
4
4
|
<div id="wb-import">
|
|
5
5
|
<h1>
|
package/dist/pages/login.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<link href="css/backup-and-restore.css?v=3.1.0
|
|
1
|
+
<link href="css/backup-and-restore.css?v=3.1.0" rel="stylesheet"/>
|
|
2
2
|
<div data-test="backup-and-restore-page">
|
|
3
3
|
<title>${messages.app.title} : ${messages.jmx.QueryMonitoringPage.title}</title>
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<link href="css/lib/angular-xeditable/xeditable.min.css?v=3.1.0
|
|
2
|
-
<link href="css/export.css?v=3.1.0
|
|
1
|
+
<link href="css/lib/angular-xeditable/xeditable.min.css?v=3.1.0" rel="stylesheet">
|
|
2
|
+
<link href="css/export.css?v=3.1.0" rel="stylesheet">
|
|
3
3
|
|
|
4
4
|
<title>Namespaces</title>
|
|
5
5
|
|
package/dist/pages/plugins.html
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<link href="css/rdf-class-hierarchy.css?v=3.1.0
|
|
2
|
-
<link href="css/rdf-class-hierarchy-labels.css?v=3.1.0
|
|
3
|
-
<link href="css/rdf-details-side-panel.css?v=3.1.0
|
|
4
|
-
<link href="js/lib/rzslider/rzslider.min.css?v=3.1.0
|
|
5
|
-
<link href="js/lib/angucomplete-alt/angucomplete-alt.css?v=3.1.0
|
|
6
|
-
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0
|
|
7
|
-
<link href="css/lib/animate/3.2.0/animate.min.css?v=3.1.0
|
|
1
|
+
<link href="css/rdf-class-hierarchy.css?v=3.1.0" rel="stylesheet"/>
|
|
2
|
+
<link href="css/rdf-class-hierarchy-labels.css?v=3.1.0" rel="stylesheet"/>
|
|
3
|
+
<link href="css/rdf-details-side-panel.css?v=3.1.0" rel="stylesheet"/>
|
|
4
|
+
<link href="js/lib/rzslider/rzslider.min.css?v=3.1.0" rel="stylesheet"/>
|
|
5
|
+
<link href="js/lib/angucomplete-alt/angucomplete-alt.css?v=3.1.0" rel="stylesheet"/>
|
|
6
|
+
<link href="js/lib/d3-tip/d3-tip.css?v=3.1.0" rel="stylesheet"/>
|
|
7
|
+
<link href="css/lib/animate/3.2.0/animate.min.css?v=3.1.0" rel="stylesheet"/>
|
|
8
8
|
|
|
9
9
|
<title>Explore Data Graph</title>
|
|
10
10
|
|
package/dist/pages/rdfrank.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<link href="css/rdfrank.css?v=3.1.0
|
|
2
|
-
<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0
|
|
1
|
+
<link href="css/rdfrank.css?v=3.1.0" rel="stylesheet">
|
|
2
|
+
<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0" rel="stylesheet"/>
|
|
3
3
|
|
|
4
4
|
<div id="rdfRank" class="page" data-test="rdf-rank-page">
|
|
5
5
|
<h1>
|
package/dist/pages/ux-test1.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<link rel="stylesheet" type="text/css" href="css/ux-test1.css">
|
|
2
|
-
<link href="js/lib/rzslider/rzslider.min.css?v=3.1.0
|
|
2
|
+
<link href="js/lib/rzslider/rzslider.min.css?v=3.1.0" rel="stylesheet"/>
|
|
3
3
|
|
|
4
4
|
<div class="content-wrapper">
|
|
5
5
|
<div core-errors></div>
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
{{'sample.query.used' | translate}}</p>
|
|
443
443
|
</div>
|
|
444
444
|
<div>
|
|
445
|
-
<img src="css/images/expand.png?v=3.1.0
|
|
445
|
+
<img src="css/images/expand.png?v=3.1.0" class="info-box-img" height="220"
|
|
446
446
|
alt="expand image">
|
|
447
447
|
</div>
|
|
448
448
|
</div>
|
package/dist/pages/webapi.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
<link href='css/lib/swagger-ui.min.css?v=3.1.0
|
|
3
|
-
<link href='css/swagger.custom.css?v=3.1.0
|
|
2
|
+
<link href='css/lib/swagger-ui.min.css?v=3.1.0' rel='stylesheet' type='text/css'/>
|
|
3
|
+
<link href='css/swagger.custom.css?v=3.1.0' rel='stylesheet' type='text/css'/>
|
|
4
4
|
|
|
5
5
|
<h1>
|
|
6
6
|
{{title}}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<title>Swagger UI</title>
|
|
7
|
-
<link rel="stylesheet" type="text/css" href="./swagger-ui.css?v=3.1.0
|
|
8
|
-
<link rel="stylesheet" type="text/css" href="./index.css?v=3.1.0
|
|
9
|
-
<link rel="icon" type="image/png" href="./favicon-32x32.png?v=3.1.0
|
|
10
|
-
<link rel="icon" type="image/png" href="./favicon-16x16.png?v=3.1.0
|
|
11
|
-
<link href='css/reset.css?v=3.1.0
|
|
12
|
-
<link href='css/screen.css?v=3.1.0
|
|
13
|
-
<link href='css/onto-theme.css?v=3.1.0
|
|
14
|
-
<link href='css/print.css?v=3.1.0
|
|
7
|
+
<link rel="stylesheet" type="text/css" href="./swagger-ui.css?v=3.1.0" />
|
|
8
|
+
<link rel="stylesheet" type="text/css" href="./index.css?v=3.1.0" />
|
|
9
|
+
<link rel="icon" type="image/png" href="./favicon-32x32.png?v=3.1.0" sizes="32x32" />
|
|
10
|
+
<link rel="icon" type="image/png" href="./favicon-16x16.png?v=3.1.0" sizes="16x16" />
|
|
11
|
+
<link href='css/reset.css?v=3.1.0' media='screen' rel='stylesheet' type='text/css'/>
|
|
12
|
+
<link href='css/screen.css?v=3.1.0' media='screen' rel='stylesheet' type='text/css'/>
|
|
13
|
+
<link href='css/onto-theme.css?v=3.1.0' media='screen' rel='stylesheet' type='text/css'/>
|
|
14
|
+
<link href='css/print.css?v=3.1.0' media='print' rel='stylesheet' type='text/css'/>
|
|
15
15
|
</head>
|
|
16
16
|
|
|
17
17
|
<body class="swagger-section">
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
<br>
|
|
21
21
|
<br>
|
|
22
22
|
<div id="swagger-ui-container-rdf4j" class="swagger-ui-wrap"></div>
|
|
23
|
-
<script src="./swagger-ui-bundle.js?v=3.1.0
|
|
24
|
-
<script src="./swagger-ui-standalone-preset.js?v=3.1.0
|
|
25
|
-
<script src="./swagger-initializer.js?v=3.1.0
|
|
23
|
+
<script src="./swagger-ui-bundle.js?v=3.1.0" charset="UTF-8"> </script>
|
|
24
|
+
<script src="./swagger-ui-standalone-preset.js?v=3.1.0" charset="UTF-8"> </script>
|
|
25
|
+
<script src="./swagger-initializer.js?v=3.1.0" charset="UTF-8"> </script>
|
|
26
26
|
</body>
|
|
27
27
|
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var index=require("./index-jdsA9lN2.js"),workbenchApi=require("@ontotext/workbench-api");function debounce(e,i=300){let t;return(...s)=>{clearTimeout(t),t=setTimeout(()=>e.apply(this,s),i)}}const RESPONSIVE_BREAKPOINTS={MD:768},WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR=RESPONSIVE_BREAKPOINTS.MD,ontoLayoutCss=':host{display:block;height:100%}.wb-layout{display:grid;grid-template-columns:15rem minmax(200px, 1fr);grid-template-rows:auto 1fr auto;grid-template-areas:"nav header" "nav main" "nav footer";min-height:100vh;margin:0}.wb-layout.expanded{grid-template-columns:4.375rem 1fr}.wb-layout nav{grid-area:nav}.wb-layout header{grid-area:header}.wb-layout main{grid-area:main}.wb-layout main .main-container{margin-left:0}.wb-layout .default-slot-wrapper{display:none}.wb-layout footer{grid-area:footer}.wb-header{position:sticky;top:0;z-index:999}',OntoLayout=class{constructor(e){index.registerInstance(this,e),this.securityContextService=workbenchApi.ServiceProvider.get(workbenchApi.SecurityContextService),this.authenticationService=workbenchApi.ServiceProvider.get(workbenchApi.AuthenticationService),this.navigationContextService=workbenchApi.ServiceProvider.get(workbenchApi.NavigationContextService),this.isLowResolution=!1,this.hasPermission=!0,this.showFooter=this.isAuthenticatedFully(),this.subscriptions=new workbenchApi.SubscriptionList,this.isNavbarCollapsed=!1,this.windowResizeObserver=debounce(()=>this.windowResizeHandler(),50),workbenchApi.WindowService.getWindow().addEventListener("storage",this.handleStorageChange)}componentDidLoad(){this.windowResizeHandler()}connectedCallback(){this.subscribeToSecurityChanges(),this.updateVisibility(),this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged(e=>this.setPermission(e))),this.subscriptions.add(workbenchApi.ServiceProvider.get(workbenchApi.EventService).subscribe(workbenchApi.EventName.NAVIGATION_END,e=>{this.navigationContextService.updatePreviousRoute(e.oldUrl),this.setPermission(this.securityContextService.getRestrictedPages())})),this.setPermission(this.securityContextService.getRestrictedPages())}disconnectedCallback(){this.subscriptions.unsubscribeAll()}render(){return index.h(index.Host,{key:"
|
|
1
|
+
"use strict";var index=require("./index-jdsA9lN2.js"),workbenchApi=require("@ontotext/workbench-api");function debounce(e,i=300){let t;return(...s)=>{clearTimeout(t),t=setTimeout(()=>e.apply(this,s),i)}}const RESPONSIVE_BREAKPOINTS={MD:768},WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR=RESPONSIVE_BREAKPOINTS.MD,ontoLayoutCss=':host{display:block;height:100%}.wb-layout{display:grid;grid-template-columns:15rem minmax(200px, 1fr);grid-template-rows:auto 1fr auto;grid-template-areas:"nav header" "nav main" "nav footer";min-height:100vh;margin:0}.wb-layout.expanded{grid-template-columns:4.375rem 1fr}.wb-layout nav{grid-area:nav}.wb-layout header{grid-area:header}.wb-layout main{grid-area:main}.wb-layout main .main-container{margin-left:0}.wb-layout .default-slot-wrapper{display:none}.wb-layout footer{grid-area:footer}.wb-header{position:sticky;top:0;z-index:999}',OntoLayout=class{constructor(e){index.registerInstance(this,e),this.securityContextService=workbenchApi.ServiceProvider.get(workbenchApi.SecurityContextService),this.authenticationService=workbenchApi.ServiceProvider.get(workbenchApi.AuthenticationService),this.navigationContextService=workbenchApi.ServiceProvider.get(workbenchApi.NavigationContextService),this.isLowResolution=!1,this.hasPermission=!0,this.showFooter=this.isAuthenticatedFully(),this.subscriptions=new workbenchApi.SubscriptionList,this.isNavbarCollapsed=!1,this.windowResizeObserver=debounce(()=>this.windowResizeHandler(),50),workbenchApi.WindowService.getWindow().addEventListener("storage",this.handleStorageChange)}componentDidLoad(){this.windowResizeHandler()}connectedCallback(){this.subscribeToSecurityChanges(),this.updateVisibility(),this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged(e=>this.setPermission(e))),this.subscriptions.add(workbenchApi.ServiceProvider.get(workbenchApi.EventService).subscribe(workbenchApi.EventName.NAVIGATION_END,e=>{this.navigationContextService.updatePreviousRoute(e.oldUrl),this.setPermission(this.securityContextService.getRestrictedPages())})),this.setPermission(this.securityContextService.getRestrictedPages())}disconnectedCallback(){this.subscriptions.unsubscribeAll()}render(){return index.h(index.Host,{key:"5d814f892fde4148f87848dbfb6a1297479b110d",class:"wb-layout"},index.h("div",{key:"3189f4fd2434630807d924b656e70e0f91aac9ec",class:"default-slot-wrapper"},index.h("slot",{key:"58aafe83a0ca87647bf9de541228b07f2acebdc8",name:"default"})),index.h("header",{key:"ee1a6fc5254f30e198b190725bdbfebf76c3932d",class:"wb-header"},this.isVisible&&index.h("onto-header",{key:"6eed310ab3e1707d24c4331fe70962b41e628bb9"})),index.h("nav",{key:"7759747f8d91d95e569e9a603b9d11c20d46a75c",class:"wb-navbar"},index.h("onto-navbar",{key:"08946fa871e0cb2bd84831b4ab57592ade2813b1",ref:this.assignNavbarRef(),"navbar-collapsed":this.isLowResolution})),this.hasPermission?index.h("div",{class:"main-slot-wrapper"},index.h("slot",{name:"main"})):index.h("onto-permission-banner",null),index.h("footer",{key:"4094b415a835ca67ef922404c4a105e7052fcdb9",class:"wb-footer"},this.isVisible&&index.h("onto-footer",{key:"d425c29158a1b26792e71b4e60193c57ee860e09"})),index.h("onto-tooltip",{key:"2cb4c8b15a44683773ef6796b070d9a4936bbff3"}),index.h("onto-toastr",{key:"f24a99bf4a4c01ff4ea0db6a23c5d0caf0c60ed4"}))}onNavbarToggled(e){this.isNavbarCollapsed=e.detail.payload,this.isNavbarCollapsed?this.hostElement.classList.add("expanded"):this.hostElement.classList.remove("expanded")}onResize(){this.windowResizeObserver()}windowResizeHandler(){this.isLowResolution=workbenchApi.WindowService.getWindow().innerWidth<=WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR,this.isLowResolution||this.isNavbarCollapsed?this.hostElement.classList.add("expanded"):this.hostElement.classList.remove("expanded")}handleStorageChange(e){workbenchApi.ServiceProvider.get(workbenchApi.LocalStorageSubscriptionHandlerService).handleStorageChange(e)}subscribeToSecurityChanges(){const e=workbenchApi.ServiceProvider.get(workbenchApi.SecurityContextService);this.subscriptions.add(e.onAuthenticatedUserChanged(e=>{this.authenticatedUser=e,this.updateVisibility()})),this.subscriptions.add(e.onSecurityConfigChanged(e=>{this.securityConfig=e,this.updateVisibility()})),this.subscriptions.add(workbenchApi.ServiceProvider.get(workbenchApi.EventService).subscribe(workbenchApi.EventName.LOGOUT,()=>{this.setNavbarItemVisibility(),this.updateVisibility()})),this.subscriptions.add(e.onAuthTokenChanged(()=>{this.setNavbarItemVisibility(),this.updateVisibility()}))}setPermission(e){if(e){const i=workbenchApi.getPathName();this.hasPermission=!e.isRestricted(i)}else this.hasPermission=!0;const i=document.querySelector(".wb-layout main");i&&(i.style.display=this.hasPermission?"block":"none")}updateVisibility(){if(this.authenticationService.isSecurityEnabled()){const e=!!this.authenticatedUser&&!!this.securityConfig,i=this.authenticationService.isAuthenticated()||this.authenticationService.hasFreeAccess();this.isVisible=e&&i,this.showFooter=i}else this.isVisible=!0,this.showFooter=!0}isAuthenticatedFully(){const e=workbenchApi.ServiceProvider.get(workbenchApi.AuthenticationService);return!e.isSecurityEnabled()||e.isAuthenticated()||e.hasFreeAccess()}shouldShowMenu(e){return this.isAuthenticatedFully()&&workbenchApi.ServiceProvider.get(workbenchApi.AuthenticationService).hasRole(e)}assignNavbarRef(){return e=>{this.navbarRef=e,this.navbarRef.menuItems=workbenchApi.WindowService.getWindow().PluginRegistry.get("main.menu"),this.setNavbarItemVisibility()}}setNavbarItemVisibility(){var e,i,t;if(!(null===(e=this.navbarRef)||void 0===e?void 0:e.menuItems))return;const s=e=>{var i;e.shouldShow=this.shouldShowMenu(e.role),(null===(i=e.children)||void 0===i?void 0:i.length)&&e.children.forEach(s)};null===(t=null===(i=this.navbarRef)||void 0===i?void 0:i.menuItems)||void 0===t||t.forEach(e=>{e.items.forEach(s)}),this.navbarRef.menuItems=[...this.navbarRef.menuItems]}get hostElement(){return index.getElement(this)}};OntoLayout.style=ontoLayoutCss,exports.onto_layout=OntoLayout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"onto-layout.entry.cjs.js","mappings":"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","names":["ServiceProvider","SecurityContextService","AuthenticationService","NavigationContextService","SubscriptionList","WindowService","EventService","EventName","h","Host","LocalStorageSubscriptionHandlerService","getPathName"],"sources":["src/utils/function-utils.ts","src/models/constants.ts","src/components/onto-layout/onto-layout.scss?tag=onto-layout","src/components/onto-layout/onto-layout.tsx"],"sourcesContent":["export function debounce(func, wait = 300) {\n let timer: string | number | NodeJS.Timeout;\n return (...args: any) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n","export const RESPONSIVE_BREAKPOINTS = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1400,\n};\n\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nexport const WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n",":host {\n display: block;\n height: 100%;\n}\n.wb-layout {\n display: grid;\n grid-template-columns: 15rem minmax(200px, 1fr);\n grid-template-rows: auto 1fr auto;\n grid-template-areas:\n \"nav header\"\n \"nav main\"\n \"nav footer\";\n min-height: 100vh;\n margin: 0;\n\n &.expanded {\n grid-template-columns: 4.375rem 1fr;\n }\n\n nav {\n grid-area: nav;\n }\n\n header {\n grid-area: header;\n }\n\n main {\n grid-area: main;\n }\n\n main .main-container {\n /* This is a temporary solution to properly align the main container next to the sidebar until a proper layout is in place. */\n margin-left: 0;\n }\n\n .default-slot-wrapper {\n display: none;\n }\n\n footer {\n grid-area: footer;\n }\n}\n\n.wb-header {\n position: sticky;\n top: 0;\n z-index: 999;\n}\n","import {Component, Host, h, Listen, Element, State} from '@stencil/core';\nimport {NavbarToggledEvent} from \"../onto-navbar/navbar-toggled-event\";\nimport {debounce} from \"../../utils/function-utils\";\nimport {WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR} from \"../../models/constants\";\nimport {\n ServiceProvider,\n LocalStorageSubscriptionHandlerService,\n SecurityContextService,\n RestrictedPages,\n EventService,\n EventName,\n SubscriptionList,\n AuthenticatedUser,\n SecurityConfig,\n Authority,\n AuthenticationService, NavigationEndPayload, NavigationContextService, getPathName, WindowService,\n} from '@ontotext/workbench-api';\nimport {ExternalMenuItemModel} from '../onto-navbar/external-menu-model';\n\n@Component({\n tag: 'onto-layout',\n styleUrl: 'onto-layout.scss',\n shadow: false,\n})\nexport class OntoLayout {\n // ========================\n // Services\n // ========================\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly authenticationService = ServiceProvider.get(AuthenticationService);\n private readonly navigationContextService = ServiceProvider.get(NavigationContextService);\n\n // ========================\n // DOM Refs\n // ========================\n @Element() hostElement: HTMLOntoLayoutElement;\n private navbarRef: HTMLOntoNavbarElement;\n\n // ========================\n // State\n // ========================\n @State() authenticatedUser: AuthenticatedUser;\n @State() authToken: string | null;\n @State() securityConfig: SecurityConfig;\n @State() isLowResolution = false;\n @State() hasPermission: boolean = true;\n @State() showFooter = this.isAuthenticatedFully();\n @State() isVisible: boolean;\n\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private readonly windowResizeObserver: (...args: any) => void;\n private isNavbarCollapsed = false;\n\n // ========================\n // Lifecycle methods\n // ========================\n constructor() {\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener(\"storage\", this.handleStorageChange);\n }\n\n componentDidLoad() {\n this.windowResizeHandler();\n }\n\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n // Subscribing here, because after a disconnectedCallback the connectedCallback is called, instead of componentDidLoad or constructor\n this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged((restrictedPages) => this.setPermission(restrictedPages)));\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_END, (navigationEndPayload: NavigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n this.setPermission(this.securityContextService.getRestrictedPages());\n }));\n this.setPermission(this.securityContextService.getRestrictedPages());\n }\n\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n render() {\n return (\n <Host class=\"wb-layout\">\n {/* Default slot is explicitly defined to be able to hide the main content in the user permission check */}\n <div class=\"default-slot-wrapper\">\n <slot name=\"default\"></slot>\n </div>\n <header class=\"wb-header\">\n {this.isVisible && <onto-header></onto-header>}\n </header>\n\n <nav class=\"wb-navbar\">\n <onto-navbar ref={this.assignNavbarRef()}\n navbar-collapsed={this.isLowResolution}></onto-navbar>\n </nav>\n\n {this.hasPermission ? (\n <div class='main-slot-wrapper'>\n <slot name=\"main\"></slot>\n </div>\n ) : (\n <onto-permission-banner></onto-permission-banner>\n )}\n <footer class=\"wb-footer\">\n {this.isVisible && <onto-footer></onto-footer>}\n </footer>\n <onto-tooltip></onto-tooltip>\n <onto-toastr></onto-toastr>\n </Host>\n );\n }\n\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n @Listen('navbarToggled')\n onNavbarToggled(event: CustomEvent<NavbarToggledEvent>) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n } else {\n this.hostElement.classList.remove('expanded');\n }\n }\n\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n @Listen('resize', {target: 'window'})\n onResize() {\n this.windowResizeObserver();\n }\n\n // ========================\n // Handlers\n // ========================\n private windowResizeHandler(): void {\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n } else {\n this.hostElement.classList.add('expanded');\n }\n }\n\n private handleStorageChange(event: StorageEvent) {\n const service = ServiceProvider.get(LocalStorageSubscriptionHandlerService);\n service.handleStorageChange(event);\n }\n\n // ========================\n // Security & Permissions\n // ========================\n private subscribeToSecurityChanges() {\n const securityContextService = ServiceProvider.get(SecurityContextService);\n this.subscriptions.add(\n securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n this.subscriptions.add(\n securityContextService.onAuthTokenChanged(()=>{\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n }\n\n private setPermission(permissions: RestrictedPages) {\n if (permissions) {\n const path = getPathName();\n this.hasPermission = !permissions.isRestricted(path);\n } else {\n // If the permissions are undefined, the user can access the url\n this.hasPermission = true;\n }\n\n const mainContent = document.querySelector('.wb-layout main') as HTMLElement;\n if (mainContent) {\n mainContent.style.display = this.hasPermission ? 'block' : 'none';\n }\n }\n\n private updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.isVisible = true;\n this.showFooter = true;\n } else {\n const hasAuth = !!this.authenticatedUser && !!this.securityConfig;\n const isAuthenticated = this.authenticationService.isAuthenticated() || this.authenticationService.hasFreeAccess();\n\n this.isVisible = hasAuth && isAuthenticated;\n this.showFooter = isAuthenticated;\n }\n }\n\n private isAuthenticatedFully() {\n const authService = ServiceProvider.get(AuthenticationService);\n return !authService.isSecurityEnabled() || authService.isAuthenticated() || authService.hasFreeAccess();\n }\n\n private shouldShowMenu(role: Authority): boolean {\n return this.isAuthenticatedFully()\n && ServiceProvider.get(AuthenticationService).hasRole(role);\n }\n\n // ========================\n // Navbar logic\n // ========================\n private assignNavbarRef() {\n return (navbar: HTMLOntoNavbarElement) => {\n this.navbarRef = navbar;\n this.navbarRef.menuItems = WindowService.getWindow().PluginRegistry.get('main.menu');\n this.setNavbarItemVisibility();\n }\n }\n\n private setNavbarItemVisibility() {\n if (!this.navbarRef?.menuItems) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item: ExternalMenuItemModel) => {\n item.shouldShow = this.shouldShowMenu(item.role as Authority);\n if (item.children?.length) {\n item.children.forEach(processItem);\n }\n };\n\n this.navbarRef?.menuItems?.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"onto-layout.entry.cjs.js","mappings":"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","names":["ServiceProvider","SecurityContextService","AuthenticationService","NavigationContextService","SubscriptionList","WindowService","EventService","EventName","h","Host","LocalStorageSubscriptionHandlerService","getPathName"],"sources":["src/utils/function-utils.ts","src/models/constants.ts","src/components/onto-layout/onto-layout.scss?tag=onto-layout","src/components/onto-layout/onto-layout.tsx"],"sourcesContent":["export function debounce(func, wait = 300) {\n let timer: string | number | NodeJS.Timeout;\n return (...args: any) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n","export const RESPONSIVE_BREAKPOINTS = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1400,\n};\n\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nexport const WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n",":host {\n display: block;\n height: 100%;\n}\n.wb-layout {\n display: grid;\n grid-template-columns: 15rem minmax(200px, 1fr);\n grid-template-rows: auto 1fr auto;\n grid-template-areas:\n \"nav header\"\n \"nav main\"\n \"nav footer\";\n min-height: 100vh;\n margin: 0;\n\n &.expanded {\n grid-template-columns: 4.375rem 1fr;\n }\n\n nav {\n grid-area: nav;\n }\n\n header {\n grid-area: header;\n }\n\n main {\n grid-area: main;\n }\n\n main .main-container {\n /* This is a temporary solution to properly align the main container next to the sidebar until a proper layout is in place. */\n margin-left: 0;\n }\n\n .default-slot-wrapper {\n display: none;\n }\n\n footer {\n grid-area: footer;\n }\n}\n\n.wb-header {\n position: sticky;\n top: 0;\n z-index: 999;\n}\n","import {Component, Host, h, Listen, Element, State} from '@stencil/core';\nimport {NavbarToggledEvent} from \"../onto-navbar/navbar-toggled-event\";\nimport {debounce} from \"../../utils/function-utils\";\nimport {WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR} from \"../../models/constants\";\nimport {\n ServiceProvider,\n LocalStorageSubscriptionHandlerService,\n SecurityContextService,\n RestrictedPages,\n EventService,\n EventName,\n SubscriptionList,\n AuthenticatedUser,\n SecurityConfig,\n Authority,\n AuthenticationService, NavigationEndPayload, NavigationContextService, getPathName, WindowService\n} from '@ontotext/workbench-api';\nimport {ExternalMenuItemModel} from '../onto-navbar/external-menu-model';\n\n@Component({\n tag: 'onto-layout',\n styleUrl: 'onto-layout.scss',\n shadow: false,\n})\nexport class OntoLayout {\n // ========================\n // Services\n // ========================\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly authenticationService = ServiceProvider.get(AuthenticationService);\n private readonly navigationContextService = ServiceProvider.get(NavigationContextService);\n\n // ========================\n // DOM Refs\n // ========================\n @Element() hostElement: HTMLOntoLayoutElement;\n private navbarRef: HTMLOntoNavbarElement;\n\n // ========================\n // State\n // ========================\n @State() authenticatedUser: AuthenticatedUser;\n @State() authToken: string | null;\n @State() securityConfig: SecurityConfig;\n @State() isLowResolution = false;\n @State() hasPermission: boolean = true;\n @State() showFooter = this.isAuthenticatedFully();\n @State() isVisible: boolean;\n\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private readonly windowResizeObserver: (...args: any) => void;\n private isNavbarCollapsed = false;\n\n // ========================\n // Lifecycle methods\n // ========================\n constructor() {\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener(\"storage\", this.handleStorageChange);\n }\n\n componentDidLoad() {\n this.windowResizeHandler();\n }\n\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n // Subscribing here, because after a disconnectedCallback the connectedCallback is called, instead of componentDidLoad or constructor\n this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged((restrictedPages) => this.setPermission(restrictedPages)));\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_END, (navigationEndPayload: NavigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n this.setPermission(this.securityContextService.getRestrictedPages());\n }));\n this.setPermission(this.securityContextService.getRestrictedPages());\n }\n\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n render() {\n return (\n <Host class=\"wb-layout\">\n {/* Default slot is explicitly defined to be able to hide the main content in the user permission check */}\n <div class=\"default-slot-wrapper\">\n <slot name=\"default\"></slot>\n </div>\n <header class=\"wb-header\">\n {this.isVisible && <onto-header></onto-header>}\n </header>\n\n <nav class=\"wb-navbar\">\n <onto-navbar ref={this.assignNavbarRef()}\n navbar-collapsed={this.isLowResolution}></onto-navbar>\n </nav>\n\n {this.hasPermission ? (\n <div class='main-slot-wrapper'>\n <slot name=\"main\"></slot>\n </div>\n ) : (\n <onto-permission-banner></onto-permission-banner>\n )}\n <footer class=\"wb-footer\">\n {this.isVisible && <onto-footer></onto-footer>}\n </footer>\n <onto-tooltip></onto-tooltip>\n <onto-toastr></onto-toastr>\n </Host>\n );\n }\n\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n @Listen('navbarToggled')\n onNavbarToggled(event: CustomEvent<NavbarToggledEvent>) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n } else {\n this.hostElement.classList.remove('expanded');\n }\n }\n\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n @Listen('resize', {target: 'window'})\n onResize() {\n this.windowResizeObserver();\n }\n\n // ========================\n // Handlers\n // ========================\n private windowResizeHandler(): void {\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n } else {\n this.hostElement.classList.add('expanded');\n }\n }\n\n private handleStorageChange(event: StorageEvent) {\n const service = ServiceProvider.get(LocalStorageSubscriptionHandlerService);\n service.handleStorageChange(event);\n }\n\n // ========================\n // Security & Permissions\n // ========================\n private subscribeToSecurityChanges() {\n const securityContextService = ServiceProvider.get(SecurityContextService);\n this.subscriptions.add(\n securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n this.subscriptions.add(\n securityContextService.onAuthTokenChanged(()=>{\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n }\n\n private setPermission(permissions: RestrictedPages) {\n if (permissions) {\n const path = getPathName();\n this.hasPermission = !permissions.isRestricted(path);\n } else {\n // If the permissions are undefined, the user can access the url\n this.hasPermission = true;\n }\n\n const mainContent = document.querySelector('.wb-layout main') as HTMLElement;\n if (mainContent) {\n mainContent.style.display = this.hasPermission ? 'block' : 'none';\n }\n }\n\n private updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.isVisible = true;\n this.showFooter = true;\n } else {\n const hasAuth = !!this.authenticatedUser && !!this.securityConfig;\n const isAuthenticated = this.authenticationService.isAuthenticated() || this.authenticationService.hasFreeAccess();\n\n this.isVisible = hasAuth && isAuthenticated;\n this.showFooter = isAuthenticated;\n }\n }\n\n private isAuthenticatedFully() {\n const authService = ServiceProvider.get(AuthenticationService);\n return !authService.isSecurityEnabled() || authService.isAuthenticated() || authService.hasFreeAccess();\n }\n\n private shouldShowMenu(role: Authority): boolean {\n return this.isAuthenticatedFully()\n && ServiceProvider.get(AuthenticationService).hasRole(role);\n }\n\n // ========================\n // Navbar logic\n // ========================\n private assignNavbarRef() {\n return (navbar: HTMLOntoNavbarElement) => {\n this.navbarRef = navbar;\n this.navbarRef.menuItems = WindowService.getWindow().PluginRegistry.get('main.menu');\n this.setNavbarItemVisibility();\n }\n }\n\n private setNavbarItemVisibility() {\n if (!this.navbarRef?.menuItems) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item: ExternalMenuItemModel) => {\n item.shouldShow = this.shouldShowMenu(item.role as Authority);\n if (item.children?.length) {\n item.children.forEach(processItem);\n }\n };\n\n this.navbarRef?.menuItems?.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onto-layout.entry.cjs.js","sources":["src/utils/function-utils.ts","src/models/constants.ts","src/components/onto-layout/onto-layout.scss?tag=onto-layout","src/components/onto-layout/onto-layout.tsx"],"sourcesContent":["export function debounce(func, wait = 300) {\n let timer: string | number | NodeJS.Timeout;\n return (...args: any) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n","export const RESPONSIVE_BREAKPOINTS = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1400,\n};\n\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nexport const WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n",":host {\n display: block;\n height: 100%;\n}\n.wb-layout {\n display: grid;\n grid-template-columns: 15rem minmax(200px, 1fr);\n grid-template-rows: auto 1fr auto;\n grid-template-areas:\n \"nav header\"\n \"nav main\"\n \"nav footer\";\n min-height: 100vh;\n margin: 0;\n\n &.expanded {\n grid-template-columns: 4.375rem 1fr;\n }\n\n nav {\n grid-area: nav;\n }\n\n header {\n grid-area: header;\n }\n\n main {\n grid-area: main;\n }\n\n main .main-container {\n /* This is a temporary solution to properly align the main container next to the sidebar until a proper layout is in place. */\n margin-left: 0;\n }\n\n .default-slot-wrapper {\n display: none;\n }\n\n footer {\n grid-area: footer;\n }\n}\n\n.wb-header {\n position: sticky;\n top: 0;\n z-index: 999;\n}\n","import {Component, Host, h, Listen, Element, State} from '@stencil/core';\nimport {NavbarToggledEvent} from \"../onto-navbar/navbar-toggled-event\";\nimport {debounce} from \"../../utils/function-utils\";\nimport {WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR} from \"../../models/constants\";\nimport {\n ServiceProvider,\n LocalStorageSubscriptionHandlerService,\n SecurityContextService,\n RestrictedPages,\n EventService,\n EventName,\n SubscriptionList,\n AuthenticatedUser,\n SecurityConfig,\n Authority,\n AuthenticationService, NavigationEndPayload, NavigationContextService, getPathName, WindowService,\n} from '@ontotext/workbench-api';\nimport {ExternalMenuItemModel} from '../onto-navbar/external-menu-model';\n\n@Component({\n tag: 'onto-layout',\n styleUrl: 'onto-layout.scss',\n shadow: false,\n})\nexport class OntoLayout {\n // ========================\n // Services\n // ========================\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly authenticationService = ServiceProvider.get(AuthenticationService);\n private readonly navigationContextService = ServiceProvider.get(NavigationContextService);\n\n // ========================\n // DOM Refs\n // ========================\n @Element() hostElement: HTMLOntoLayoutElement;\n private navbarRef: HTMLOntoNavbarElement;\n\n // ========================\n // State\n // ========================\n @State() authenticatedUser: AuthenticatedUser;\n @State() authToken: string | null;\n @State() securityConfig: SecurityConfig;\n @State() isLowResolution = false;\n @State() hasPermission: boolean = true;\n @State() showFooter = this.isAuthenticatedFully();\n @State() isVisible: boolean;\n\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private readonly windowResizeObserver: (...args: any) => void;\n private isNavbarCollapsed = false;\n\n // ========================\n // Lifecycle methods\n // ========================\n constructor() {\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener(\"storage\", this.handleStorageChange);\n }\n\n componentDidLoad() {\n this.windowResizeHandler();\n }\n\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n // Subscribing here, because after a disconnectedCallback the connectedCallback is called, instead of componentDidLoad or constructor\n this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged((restrictedPages) => this.setPermission(restrictedPages)));\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_END, (navigationEndPayload: NavigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n this.setPermission(this.securityContextService.getRestrictedPages());\n }));\n this.setPermission(this.securityContextService.getRestrictedPages());\n }\n\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n render() {\n return (\n <Host class=\"wb-layout\">\n {/* Default slot is explicitly defined to be able to hide the main content in the user permission check */}\n <div class=\"default-slot-wrapper\">\n <slot name=\"default\"></slot>\n </div>\n <header class=\"wb-header\">\n {this.isVisible && <onto-header></onto-header>}\n </header>\n\n <nav class=\"wb-navbar\">\n <onto-navbar ref={this.assignNavbarRef()}\n navbar-collapsed={this.isLowResolution}></onto-navbar>\n </nav>\n\n {this.hasPermission ? (\n <div class='main-slot-wrapper'>\n <slot name=\"main\"></slot>\n </div>\n ) : (\n <onto-permission-banner></onto-permission-banner>\n )}\n <footer class=\"wb-footer\">\n {this.isVisible && <onto-footer></onto-footer>}\n </footer>\n <onto-tooltip></onto-tooltip>\n <onto-toastr></onto-toastr>\n </Host>\n );\n }\n\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n @Listen('navbarToggled')\n onNavbarToggled(event: CustomEvent<NavbarToggledEvent>) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n } else {\n this.hostElement.classList.remove('expanded');\n }\n }\n\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n @Listen('resize', {target: 'window'})\n onResize() {\n this.windowResizeObserver();\n }\n\n // ========================\n // Handlers\n // ========================\n private windowResizeHandler(): void {\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n } else {\n this.hostElement.classList.add('expanded');\n }\n }\n\n private handleStorageChange(event: StorageEvent) {\n const service = ServiceProvider.get(LocalStorageSubscriptionHandlerService);\n service.handleStorageChange(event);\n }\n\n // ========================\n // Security & Permissions\n // ========================\n private subscribeToSecurityChanges() {\n const securityContextService = ServiceProvider.get(SecurityContextService);\n this.subscriptions.add(\n securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n this.subscriptions.add(\n securityContextService.onAuthTokenChanged(()=>{\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n }\n\n private setPermission(permissions: RestrictedPages) {\n if (permissions) {\n const path = getPathName();\n this.hasPermission = !permissions.isRestricted(path);\n } else {\n // If the permissions are undefined, the user can access the url\n this.hasPermission = true;\n }\n\n const mainContent = document.querySelector('.wb-layout main') as HTMLElement;\n if (mainContent) {\n mainContent.style.display = this.hasPermission ? 'block' : 'none';\n }\n }\n\n private updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.isVisible = true;\n this.showFooter = true;\n } else {\n const hasAuth = !!this.authenticatedUser && !!this.securityConfig;\n const isAuthenticated = this.authenticationService.isAuthenticated() || this.authenticationService.hasFreeAccess();\n\n this.isVisible = hasAuth && isAuthenticated;\n this.showFooter = isAuthenticated;\n }\n }\n\n private isAuthenticatedFully() {\n const authService = ServiceProvider.get(AuthenticationService);\n return !authService.isSecurityEnabled() || authService.isAuthenticated() || authService.hasFreeAccess();\n }\n\n private shouldShowMenu(role: Authority): boolean {\n return this.isAuthenticatedFully()\n && ServiceProvider.get(AuthenticationService).hasRole(role);\n }\n\n // ========================\n // Navbar logic\n // ========================\n private assignNavbarRef() {\n return (navbar: HTMLOntoNavbarElement) => {\n this.navbarRef = navbar;\n this.navbarRef.menuItems = WindowService.getWindow().PluginRegistry.get('main.menu');\n this.setNavbarItemVisibility();\n }\n }\n\n private setNavbarItemVisibility() {\n if (!this.navbarRef?.menuItems) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item: ExternalMenuItemModel) => {\n item.shouldShow = this.shouldShowMenu(item.role as Authority);\n if (item.children?.length) {\n item.children.forEach(processItem);\n }\n };\n\n this.navbarRef?.menuItems?.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n}\n"],"names":["ServiceProvider","SecurityContextService","AuthenticationService","NavigationContextService","SubscriptionList","WindowService","EventService","EventName","h","Host","LocalStorageSubscriptionHandlerService","getPathName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onto-layout.entry.cjs.js","sources":["src/utils/function-utils.ts","src/models/constants.ts","src/components/onto-layout/onto-layout.scss?tag=onto-layout","src/components/onto-layout/onto-layout.tsx"],"sourcesContent":["export function debounce(func, wait = 300) {\n let timer: string | number | NodeJS.Timeout;\n return (...args: any) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n","export const RESPONSIVE_BREAKPOINTS = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1400,\n};\n\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nexport const WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n",":host {\n display: block;\n height: 100%;\n}\n.wb-layout {\n display: grid;\n grid-template-columns: 15rem minmax(200px, 1fr);\n grid-template-rows: auto 1fr auto;\n grid-template-areas:\n \"nav header\"\n \"nav main\"\n \"nav footer\";\n min-height: 100vh;\n margin: 0;\n\n &.expanded {\n grid-template-columns: 4.375rem 1fr;\n }\n\n nav {\n grid-area: nav;\n }\n\n header {\n grid-area: header;\n }\n\n main {\n grid-area: main;\n }\n\n main .main-container {\n /* This is a temporary solution to properly align the main container next to the sidebar until a proper layout is in place. */\n margin-left: 0;\n }\n\n .default-slot-wrapper {\n display: none;\n }\n\n footer {\n grid-area: footer;\n }\n}\n\n.wb-header {\n position: sticky;\n top: 0;\n z-index: 999;\n}\n","import {Component, Host, h, Listen, Element, State} from '@stencil/core';\nimport {NavbarToggledEvent} from \"../onto-navbar/navbar-toggled-event\";\nimport {debounce} from \"../../utils/function-utils\";\nimport {WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR} from \"../../models/constants\";\nimport {\n ServiceProvider,\n LocalStorageSubscriptionHandlerService,\n SecurityContextService,\n RestrictedPages,\n EventService,\n EventName,\n SubscriptionList,\n AuthenticatedUser,\n SecurityConfig,\n Authority,\n AuthenticationService, NavigationEndPayload, NavigationContextService, getPathName, WindowService\n} from '@ontotext/workbench-api';\nimport {ExternalMenuItemModel} from '../onto-navbar/external-menu-model';\n\n@Component({\n tag: 'onto-layout',\n styleUrl: 'onto-layout.scss',\n shadow: false,\n})\nexport class OntoLayout {\n // ========================\n // Services\n // ========================\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly authenticationService = ServiceProvider.get(AuthenticationService);\n private readonly navigationContextService = ServiceProvider.get(NavigationContextService);\n\n // ========================\n // DOM Refs\n // ========================\n @Element() hostElement: HTMLOntoLayoutElement;\n private navbarRef: HTMLOntoNavbarElement;\n\n // ========================\n // State\n // ========================\n @State() authenticatedUser: AuthenticatedUser;\n @State() authToken: string | null;\n @State() securityConfig: SecurityConfig;\n @State() isLowResolution = false;\n @State() hasPermission: boolean = true;\n @State() showFooter = this.isAuthenticatedFully();\n @State() isVisible: boolean;\n\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private readonly windowResizeObserver: (...args: any) => void;\n private isNavbarCollapsed = false;\n\n // ========================\n // Lifecycle methods\n // ========================\n constructor() {\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener(\"storage\", this.handleStorageChange);\n }\n\n componentDidLoad() {\n this.windowResizeHandler();\n }\n\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n // Subscribing here, because after a disconnectedCallback the connectedCallback is called, instead of componentDidLoad or constructor\n this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged((restrictedPages) => this.setPermission(restrictedPages)));\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_END, (navigationEndPayload: NavigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n this.setPermission(this.securityContextService.getRestrictedPages());\n }));\n this.setPermission(this.securityContextService.getRestrictedPages());\n }\n\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n render() {\n return (\n <Host class=\"wb-layout\">\n {/* Default slot is explicitly defined to be able to hide the main content in the user permission check */}\n <div class=\"default-slot-wrapper\">\n <slot name=\"default\"></slot>\n </div>\n <header class=\"wb-header\">\n {this.isVisible && <onto-header></onto-header>}\n </header>\n\n <nav class=\"wb-navbar\">\n <onto-navbar ref={this.assignNavbarRef()}\n navbar-collapsed={this.isLowResolution}></onto-navbar>\n </nav>\n\n {this.hasPermission ? (\n <div class='main-slot-wrapper'>\n <slot name=\"main\"></slot>\n </div>\n ) : (\n <onto-permission-banner></onto-permission-banner>\n )}\n <footer class=\"wb-footer\">\n {this.isVisible && <onto-footer></onto-footer>}\n </footer>\n <onto-tooltip></onto-tooltip>\n <onto-toastr></onto-toastr>\n </Host>\n );\n }\n\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n @Listen('navbarToggled')\n onNavbarToggled(event: CustomEvent<NavbarToggledEvent>) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n } else {\n this.hostElement.classList.remove('expanded');\n }\n }\n\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n @Listen('resize', {target: 'window'})\n onResize() {\n this.windowResizeObserver();\n }\n\n // ========================\n // Handlers\n // ========================\n private windowResizeHandler(): void {\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n } else {\n this.hostElement.classList.add('expanded');\n }\n }\n\n private handleStorageChange(event: StorageEvent) {\n const service = ServiceProvider.get(LocalStorageSubscriptionHandlerService);\n service.handleStorageChange(event);\n }\n\n // ========================\n // Security & Permissions\n // ========================\n private subscribeToSecurityChanges() {\n const securityContextService = ServiceProvider.get(SecurityContextService);\n this.subscriptions.add(\n securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n this.subscriptions.add(\n securityContextService.onAuthTokenChanged(()=>{\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n }\n\n private setPermission(permissions: RestrictedPages) {\n if (permissions) {\n const path = getPathName();\n this.hasPermission = !permissions.isRestricted(path);\n } else {\n // If the permissions are undefined, the user can access the url\n this.hasPermission = true;\n }\n\n const mainContent = document.querySelector('.wb-layout main') as HTMLElement;\n if (mainContent) {\n mainContent.style.display = this.hasPermission ? 'block' : 'none';\n }\n }\n\n private updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.isVisible = true;\n this.showFooter = true;\n } else {\n const hasAuth = !!this.authenticatedUser && !!this.securityConfig;\n const isAuthenticated = this.authenticationService.isAuthenticated() || this.authenticationService.hasFreeAccess();\n\n this.isVisible = hasAuth && isAuthenticated;\n this.showFooter = isAuthenticated;\n }\n }\n\n private isAuthenticatedFully() {\n const authService = ServiceProvider.get(AuthenticationService);\n return !authService.isSecurityEnabled() || authService.isAuthenticated() || authService.hasFreeAccess();\n }\n\n private shouldShowMenu(role: Authority): boolean {\n return this.isAuthenticatedFully()\n && ServiceProvider.get(AuthenticationService).hasRole(role);\n }\n\n // ========================\n // Navbar logic\n // ========================\n private assignNavbarRef() {\n return (navbar: HTMLOntoNavbarElement) => {\n this.navbarRef = navbar;\n this.navbarRef.menuItems = WindowService.getWindow().PluginRegistry.get('main.menu');\n this.setNavbarItemVisibility();\n }\n }\n\n private setNavbarItemVisibility() {\n if (!this.navbarRef?.menuItems) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item: ExternalMenuItemModel) => {\n item.shouldShow = this.shouldShowMenu(item.role as Authority);\n if (item.children?.length) {\n item.children.forEach(processItem);\n }\n };\n\n this.navbarRef?.menuItems?.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n}\n"],"names":["ServiceProvider","SecurityContextService","AuthenticationService","NavigationContextService","SubscriptionList","WindowService","EventService","EventName","h","Host","LocalStorageSubscriptionHandlerService","getPathName"],"mappings":";;;;;SAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,EAAA;AACvC,IAAA,IAAI,KAAuC;AAC3C,IAAA,OAAO,CAAC,GAAG,IAAS,KAAI;QACtB,YAAY,CAAC,KAAK,CAAC;AACnB,QAAA,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AACxD,KAAC;AACH;;ACNO,MAAM,sBAAsB,GAAG;AACpC,IACA,EAAE,EAAE,IAIL;AAED;;AAEG;AACI,MAAM,iCAAiC,GAAG,sBAAsB,CAAC,EAAE;;ACX1E,MAAM,aAAa,GAAG,qiBAAqiB;;MCwB9iB,UAAU,GAAA,MAAA;;;;AAsCrB,IAAA,WAAA,CAAA,OAAA,EAAA;;;;;QAlCiB,IAAA,CAAA,sBAAsB,GAAGA,4BAAe,CAAC,GAAG,CAACC,mCAAsB,CAAC;QACpE,IAAA,CAAA,qBAAqB,GAAGD,4BAAe,CAAC,GAAG,CAACE,kCAAqB,CAAC;QAClE,IAAA,CAAA,wBAAwB,GAAGF,4BAAe,CAAC,GAAG,CAACG,qCAAwB,CAAC;AAchF,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK;AACvB,QAAA,IAAa,CAAA,aAAA,GAAY,IAAI;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE;;;;AAMjD;;AAEK;AACY,QAAA,IAAA,CAAA,aAAa,GAAqB,IAAIC,6BAAgB,EAAE;AAEjE,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAM/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC;AAC1E,QAAAC,0BAAa,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAChF;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,iBAAiB,GAAA;QACf,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,gBAAgB,EAAE;;QAEvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;QACtI,IAAI,CAAC,aAAa,CAAC,GAAG,CACpBL,4BAAe,CAAC,GAAG,CAACM,yBAAY,CAAC,CAAC,SAAS,CAACC,sBAAS,CAAC,cAAc,EAAE,CAAC,oBAA0C,KAAI;YACnH,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC9E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;SACrE,CAAC,CAAC;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;;AAGtE;;;AAGG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;;IAGrC,MAAM,GAAA;QACJ,QACEC,OAAC,CAAAC,UAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EAErBD,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EAC/BA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,EACNA,OAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACtB,IAAI,CAAC,SAAS,IAAIA,OAAA,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAA2B,CACvC,EAETA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACpBA,OAAa,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,EAAA,kBAAA,EACT,IAAI,CAAC,eAAe,EAAA,CAAgB,CAC/D,EAEL,IAAI,CAAC,aAAa,IACjBA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,mBAAmB,EAAA,EAC5BA,OAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,MAAM,EAAQ,CAAA,CACrB,KAENA,OAAA,CAAA,wBAAA,EAAA,IAAA,CAAiD,CAClD,EACDA,OAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACtB,IAAI,CAAC,SAAS,IAAIA,OAAA,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAA2B,CACvC,EACTA,OAA6B,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EAC7BA,OAA2B,CAAA,aAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACtB;;;;;AAOX;;;;AAIG;AAEH,IAAA,eAAe,CAAC,KAAsC,EAAA;QACpD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AAC7C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;aACrC;YACL,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;;AAIjD;;;AAGG;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;;;;;IAMrB,mBAAmB,GAAA;QACzB,IAAI,CAAC,eAAe,GAAGH,0BAAa,CAAC,SAAS,EAAE,CAAC,UAAU,IAAI,iCAAiC;QAChG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;aACxC;YACL,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;;AAItC,IAAA,mBAAmB,CAAC,KAAmB,EAAA;QAC7C,MAAM,OAAO,GAAGL,4BAAe,CAAC,GAAG,CAACU,mDAAsC,CAAC;AAC3E,QAAA,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC;;;;;IAM5B,0BAA0B,GAAA;QAChC,MAAM,sBAAsB,GAAGV,4BAAe,CAAC,GAAG,CAACC,mCAAsB,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,sBAAsB,CAAC,0BAA0B,CAAC,CAAC,iBAAiB,KAAI;AACtE,YAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;YAC1C,IAAI,CAAC,gBAAgB,EAAE;SACxB,CAAC,CACH;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,sBAAsB,CAAC,uBAAuB,CAAC,CAAC,cAAc,KAAI;AAChE,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc;YACpC,IAAI,CAAC,gBAAgB,EAAE;SACxB,CAAC,CACH;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpBD,4BAAe,CAAC,GAAG,CAACM,yBAAY,CAAC,CAAC,SAAS,CAACC,sBAAS,CAAC,MAAM,EAAE,MAAK;YACjE,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,gBAAgB,EAAE;SACxB,CAAC,CACH;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,sBAAsB,CAAC,kBAAkB,CAAC,MAAI;YAC5C,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,gBAAgB,EAAE;SACxB,CAAC,CACH;;AAGK,IAAA,aAAa,CAAC,WAA4B,EAAA;QAChD,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,IAAI,GAAGI,wBAAW,EAAE;YAC1B,IAAI,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC;;aAC/C;;AAEL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;QAG3B,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB;QAC5E,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,MAAM;;;IAI7D,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;aACjB;AACL,YAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc;AACjE,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAElH,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,IAAI,eAAe;AAC3C,YAAA,IAAI,CAAC,UAAU,GAAG,eAAe;;;IAI7B,oBAAoB,GAAA;QAC1B,MAAM,WAAW,GAAGX,4BAAe,CAAC,GAAG,CAACE,kCAAqB,CAAC;AAC9D,QAAA,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC,eAAe,EAAE,IAAI,WAAW,CAAC,aAAa,EAAE;;AAGjG,IAAA,cAAc,CAAC,IAAe,EAAA;QACpC,OAAO,IAAI,CAAC,oBAAoB;eAC3BF,4BAAe,CAAC,GAAG,CAACE,kCAAqB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;;;;;IAMvD,eAAe,GAAA;QACrB,OAAO,CAAC,MAA6B,KAAI;AACvC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAGG,0BAAa,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;YACpF,IAAI,CAAC,uBAAuB,EAAE;AAChC,SAAC;;IAGK,uBAAuB,GAAA;;AAC7B,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,SAAS,CAAA,EAAE;YAC9B;;;AAGF,QAAA,MAAM,WAAW,GAAG,CAAC,IAA2B,KAAI;;YAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAiB,CAAC;YAC7D,IAAI,MAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;;AAEtC,SAAC;QAED,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,CAAC,MAAM,IAAG;AAC1C,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;AACnC,SAAC,CAAC;;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;;"}
|