From f66d0bc0102c3b88c6382194e9e6e1af55d595c8 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Tue, 26 Jan 2021 13:24:30 +0100
Subject: [PATCH] Migrate build info, integrate provider, remove
 commonUtils.getAPiUrl() calls and remove consts

---
 .../check-in-place-select.metadata.json       |  3 ++-
 toolkit-showcase/assets/common.metadata.json  |  3 ++-
 .../assets/data-table-view.metadata.json      |  3 ++-
 .../assets/dbp-toolkit-showcase.html.ejs      | 25 +++++++++++++------
 .../assets/file-handling.metadata.json        |  3 ++-
 ...e-base-web-page-element-view.metadata.json |  3 ++-
 .../assets/language-select.metadata.json      |  3 ++-
 toolkit-showcase/assets/matomo.metadata.json  |  3 ++-
 .../assets/notification.metadata.json         |  3 ++-
 .../assets/person-profile.metadata.json       |  3 ++-
 .../assets/person-select.metadata.json        |  3 ++-
 .../assets/qr-code-scanner.metadata.json      |  3 ++-
 toolkit-showcase/rollup.config.js             | 12 ++++-----
 ...dbp-check-in-place-select-demo-activity.js |  7 +++---
 .../src/dbp-common-demo-activity.js           |  7 +++---
 .../src/dbp-data-table-view-demo-activity.js  |  7 +++---
 toolkit-showcase/src/dbp-demo-template.js     |  7 +++---
 .../src/dbp-file-handling-demo-activity.js    |  7 +++---
 ...ase-web-page-element-view-demo-activity.js |  7 +++---
 .../src/dbp-language-select-demo-activity.js  |  7 +++---
 .../src/dbp-matomo-demo-activity.js           |  7 +++---
 .../src/dbp-notification-demo-activity.js     |  7 +++---
 .../src/dbp-person-profile-demo-activity.js   |  7 +++---
 .../src/dbp-person-select-demo-activity.js    |  7 +++---
 .../src/dbp-qr-code-scanner-demo-activity.js  |  7 +++---
 toolkit-showcase/src/dbp-toolkit-showcase.js  |  3 +++
 26 files changed, 96 insertions(+), 61 deletions(-)

diff --git a/toolkit-showcase/assets/check-in-place-select.metadata.json b/toolkit-showcase/assets/check-in-place-select.metadata.json
index 9edd3ffb..cc76f853 100644
--- a/toolkit-showcase/assets/check-in-place-select.metadata.json
+++ b/toolkit-showcase/assets/check-in-place-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Ort Web Component",
     "en": "Check-in place select web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/common.metadata.json b/toolkit-showcase/assets/common.metadata.json
index 92ca074f..6316c87a 100644
--- a/toolkit-showcase/assets/common.metadata.json
+++ b/toolkit-showcase/assets/common.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Gemeinsame Web Components",
     "en": "Common web components"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/data-table-view.metadata.json b/toolkit-showcase/assets/data-table-view.metadata.json
index df4855a9..ad646391 100644
--- a/toolkit-showcase/assets/data-table-view.metadata.json
+++ b/toolkit-showcase/assets/data-table-view.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "DataTable: mit Daten, Paginierung, Such- und Exportfunktion",
     "en": "DataTable: with data, paging and searching AND exportable"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
index e61f1237..3ec8d00f 100644
--- a/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
+++ b/toolkit-showcase/assets/dbp-toolkit-showcase.html.ejs
@@ -53,14 +53,23 @@
 </head>
 
 <body>
-<<%= name %>
-    lang="de"
-    src="<%= getUrl(name + '.topic.metadata.json') %>"
-    entry-point-url="<%= entryPointURL %>"
-    base-path="<%= getUrl('') %>"
-    keycloak-config='{"url": "<%= keyCloakBaseURL %>", "realm": "tugraz", "clientId": "<%= keyCloakClientId %>", "silentCheckSsoRedirectUri": "<%= getUrl('silent-check-sso.html') %>"}'
-    matomo-url="<%= matomoUrl %>" matomo-site-id="<%= matomoSiteId %>"
-><dbp-loading-spinner></dbp-loading-spinner></<%= name %>>
+<dbp-provider id="root"
+              lang="de" entry-point-url="<%= entryPointURL %>"
+              nextcloud-web-app-password-url="<%= nextcloudWebAppPasswordURL %>"
+              nextcloud-webdav-url="<%= nextcloudWebDavURL %>"
+              nextcloud-name="<%= nextcloudName %>"
+              nextcloud-file-url="<%= nextcloudFileURL %>">
+    <<%= name %>
+        src="<%= getUrl(name + '.topic.metadata.json') %>"
+        base-path="<%= getUrl('') %>"
+        keycloak-config='{"url": "<%= keyCloakBaseURL %>", "realm": "tugraz", "clientId": "<%= keyCloakClientId %>", "silentCheckSsoRedirectUri": "<%= getUrl('silent-check-sso.html') %>"}'
+        matomo-url="<%= matomoUrl %>" matomo-site-id="<%= matomoSiteId %>"
+        git-info='<%= buildInfo.info %>'
+        build-url='<%= buildInfo.url %>'
+        build-time='<%= buildInfo.time %>'
+        env='<%= buildInfo.env %>'
+    ><dbp-loading-spinner></dbp-loading-spinner></<%= name %>>
+</dbp-provider>
 
 <!-- Error handling for too old browsers -->
 <script src="<%= getPrivateUrl('browser-check.js') %>" defer></script>
diff --git a/toolkit-showcase/assets/file-handling.metadata.json b/toolkit-showcase/assets/file-handling.metadata.json
index 4047b9db..7dbd87f8 100644
--- a/toolkit-showcase/assets/file-handling.metadata.json
+++ b/toolkit-showcase/assets/file-handling.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Web Componente für file sink und file source. Für mehrere verschiedenen Quellen.",
     "en": "Web components for file sink and file source. For several different sources."
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url,nextcloud-web-app-password-url:nextcloud-web-app-password-url,nextcloud-webdav-url:nextcloud-webdav-url,nextcloud-name:nextcloud-name,nextcloud-file-url:nextcloud-file-url,show-nextcloud-file-picker:show-nextcloud-file-picker"
 }
diff --git a/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json b/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
index a43a6b04..46a1d011 100644
--- a/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
+++ b/toolkit-showcase/assets/knowledge-base-web-page-element-view.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Erlaubt das Einfügen von Webinhalten",
     "en": "Allows the inserting of web content"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/language-select.metadata.json b/toolkit-showcase/assets/language-select.metadata.json
index aae8a6b3..21a66e2d 100644
--- a/toolkit-showcase/assets/language-select.metadata.json
+++ b/toolkit-showcase/assets/language-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Sprachauswahl Web Component",
     "en": "Language select web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/matomo.metadata.json b/toolkit-showcase/assets/matomo.metadata.json
index 9c0dc18a..6e472d64 100644
--- a/toolkit-showcase/assets/matomo.metadata.json
+++ b/toolkit-showcase/assets/matomo.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Matomo Web Component",
     "en": "Matomo web component"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/notification.metadata.json b/toolkit-showcase/assets/notification.metadata.json
index 4798122c..06d42c71 100644
--- a/toolkit-showcase/assets/notification.metadata.json
+++ b/toolkit-showcase/assets/notification.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Zeigt eine Benachrichtigung an",
     "en": "Shows a message"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/person-profile.metadata.json b/toolkit-showcase/assets/person-profile.metadata.json
index 04700740..93e53416 100644
--- a/toolkit-showcase/assets/person-profile.metadata.json
+++ b/toolkit-showcase/assets/person-profile.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Gemeinsame Web Components",
     "en": "Person profile web components"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/person-select.metadata.json b/toolkit-showcase/assets/person-select.metadata.json
index 4321c5bb..3c67077d 100644
--- a/toolkit-showcase/assets/person-select.metadata.json
+++ b/toolkit-showcase/assets/person-select.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Erlaubt das Suchen von Personen",
     "en": "Allows searching for persons"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/assets/qr-code-scanner.metadata.json b/toolkit-showcase/assets/qr-code-scanner.metadata.json
index 18a0fa4e..c58d7eda 100644
--- a/toolkit-showcase/assets/qr-code-scanner.metadata.json
+++ b/toolkit-showcase/assets/qr-code-scanner.metadata.json
@@ -13,5 +13,6 @@
   "description": {
     "de": "Scannt Qr Codes",
     "en": "Scans Qr Codes"
-  }
+  },
+  "subscribe": "lang:lang,entry-point-url:entry-point-url"
 }
diff --git a/toolkit-showcase/rollup.config.js b/toolkit-showcase/rollup.config.js
index f0ea097f..73f47a9d 100644
--- a/toolkit-showcase/rollup.config.js
+++ b/toolkit-showcase/rollup.config.js
@@ -9,6 +9,7 @@ import json from '@rollup/plugin-json';
 import replace from "@rollup/plugin-replace";
 import serve from 'rollup-plugin-serve';
 import urlPlugin from "@rollup/plugin-url";
+// TODO: remove consts if "environment" isn't needed because "getAPiUrl" is removed
 import consts from 'rollup-plugin-consts';
 import license from 'rollup-plugin-license';
 import del from 'rollup-plugin-delete';
@@ -164,14 +165,9 @@ export default (async () => {return {
         del({
           targets: 'dist/*'
         }),
+        // TODO: remove consts if "environment" isn't needed because "getAPiUrl" is removed
         consts({
           environment: build,
-          buildinfo: getBuildInfo(),
-          nextcloudWebAppPasswordURL: nextcloudWebAppPasswordURL,
-          nextcloudWebDavURL: nextcloudWebDavURL,
-          nextcloudBaseURL: nextcloudBaseURL,
-          nextcloudFileURL: nextcloudFileURL,
-          nextcloudName: nextcloudName,
         }),
         emitEJS({
           src: 'assets',
@@ -186,6 +182,10 @@ export default (async () => {return {
             name: pkg.name,
             entryPointURL: entryPointURL,
             nextcloudBaseURL: nextcloudBaseURL,
+            nextcloudWebAppPasswordURL: nextcloudWebAppPasswordURL,
+            nextcloudWebDavURL: nextcloudWebDavURL,
+            nextcloudFileURL: nextcloudFileURL,
+            nextcloudName: nextcloudName,
             keyCloakServer: keyCloakServer,
             keyCloakBaseURL: keyCloakBaseURL,
             keyCloakClientId: keyCloakClientId,
diff --git a/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js b/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
index 00d009a1..764d89be 100644
--- a/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-check-in-place-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/check-in-place-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-check-in-place-select-demo': CheckInPlaceSelectDemo,
@@ -16,8 +17,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-common-demo-activity.js b/toolkit-showcase/src/dbp-common-demo-activity.js
index ecb7d724..7214dab3 100644
--- a/toolkit-showcase/src/dbp-common-demo-activity.js
+++ b/toolkit-showcase/src/dbp-common-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/common/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpCommonDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpCommonDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-common-demo': DbpCommonDemo,
@@ -16,8 +17,8 @@ class DbpCommonDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-data-table-view-demo-activity.js b/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
index 8d723ef2..5bff3ed1 100644
--- a/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
+++ b/toolkit-showcase/src/dbp-data-table-view-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/data-table-view/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TODO
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) { //TODO
     static get scopedElements() {
         return {
             'dbp-data-table-view-demo': DataTableViewDemo,
@@ -16,8 +17,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TO
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-demo-template.js b/toolkit-showcase/src/dbp-demo-template.js
index 0d298945..fc80b919 100644
--- a/toolkit-showcase/src/dbp-demo-template.js
+++ b/toolkit-showcase/src/dbp-demo-template.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 // import readme from '@dbp-toolkit/class-name/README.md'; TODO
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TODO
+class DbpActivityNameDemoActivity extends ScopedElementsMixin(AdapterLitElement) { //TODO
     static get scopedElements() {
         return {
             // TODO
@@ -17,8 +18,8 @@ class DbpActivityNameDemoActivity extends ScopedElementsMixin(LitElement) { //TO
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-file-handling-demo-activity.js b/toolkit-showcase/src/dbp-file-handling-demo-activity.js
index f748a7f5..ab4657e6 100644
--- a/toolkit-showcase/src/dbp-file-handling-demo-activity.js
+++ b/toolkit-showcase/src/dbp-file-handling-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/file-handling/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpFileHandlingDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpFileHandlingDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-file-handling-demo': FileSourceDemo,
@@ -16,8 +17,8 @@ class DbpFileHandlingDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js b/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
index f7549313..419766d0 100644
--- a/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
+++ b/toolkit-showcase/src/dbp-knowledge-base-web-page-element-view-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/knowledge-base-web-page-element-view/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(LitElement) {
+class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-knowledge-base-web-page-element-view-demo': KnowledgeBaseWebPageElementViewDemo,
@@ -16,8 +17,8 @@ class KnowledgeBaseWebPageElementViewDemoActivity extends ScopedElementsMixin(Li
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-language-select-demo-activity.js b/toolkit-showcase/src/dbp-language-select-demo-activity.js
index fec16375..f9fb39ec 100644
--- a/toolkit-showcase/src/dbp-language-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-language-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/language-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-language-select-demo': LanguageSelectDemo,
@@ -16,8 +17,8 @@ class DbpLanguageSelectDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-matomo-demo-activity.js b/toolkit-showcase/src/dbp-matomo-demo-activity.js
index 07a3b648..72a3b9ff 100644
--- a/toolkit-showcase/src/dbp-matomo-demo-activity.js
+++ b/toolkit-showcase/src/dbp-matomo-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/matomo/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpMatomoDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpMatomoDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-matomo-demo': MatomoDemo,
@@ -16,8 +17,8 @@ class DbpMatomoDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-notification-demo-activity.js b/toolkit-showcase/src/dbp-notification-demo-activity.js
index 77523c03..a07261bc 100644
--- a/toolkit-showcase/src/dbp-notification-demo-activity.js
+++ b/toolkit-showcase/src/dbp-notification-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/notification/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpNotificationDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpNotificationDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-notification-demo': NotificationDemo,
@@ -16,8 +17,8 @@ class DbpNotificationDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-person-profile-demo-activity.js b/toolkit-showcase/src/dbp-person-profile-demo-activity.js
index 715a1ac5..97214831 100644
--- a/toolkit-showcase/src/dbp-person-profile-demo-activity.js
+++ b/toolkit-showcase/src/dbp-person-profile-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/person-profile/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpPersonProfileDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpPersonProfileDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-person-profile-demo': PersonProfileDemo,
@@ -16,8 +17,8 @@ class DbpPersonProfileDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-person-select-demo-activity.js b/toolkit-showcase/src/dbp-person-select-demo-activity.js
index 41ffb9bb..57d147f6 100644
--- a/toolkit-showcase/src/dbp-person-select-demo-activity.js
+++ b/toolkit-showcase/src/dbp-person-select-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/person-select/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from "./styles";
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpPersonSelectDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpPersonSelectDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
           'dbp-person-select-demo': PersonSelectDemo,
@@ -16,8 +17,8 @@ class DbpPersonSelectDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js b/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
index 15a02fee..45f46849 100644
--- a/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
+++ b/toolkit-showcase/src/dbp-qr-code-scanner-demo-activity.js
@@ -7,8 +7,9 @@ import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
 import readme from '@dbp-toolkit/qr-code-scanner/README.md';
 import highlightCSSPath from 'highlight.js/styles/default.css';
 import * as demoStyles from './styles';
+import {AdapterLitElement} from "@dbp-toolkit/provider/src/adapter-lit-element";
 
-class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(LitElement) {
+class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(AdapterLitElement) {
     static get scopedElements() {
         return {
             'dbp-qr-code-scanner-demo': QrCodeScannerDemo,
@@ -16,8 +17,8 @@ class DbpQrCodeScannerDemoActivity extends ScopedElementsMixin(LitElement) {
     }
 
     static get properties() {
-        return {
-        };
+        return this.getProperties({
+        });
     }
 
     connectedCallback() {
diff --git a/toolkit-showcase/src/dbp-toolkit-showcase.js b/toolkit-showcase/src/dbp-toolkit-showcase.js
index 89c224bb..3d2bde72 100644
--- a/toolkit-showcase/src/dbp-toolkit-showcase.js
+++ b/toolkit-showcase/src/dbp-toolkit-showcase.js
@@ -1,4 +1,7 @@
 import {AppShell} from '@dbp-toolkit/app-shell';
 import * as commonUtils from '@dbp-toolkit/common/utils';
+import {Provider} from '@dbp-toolkit/provider';
 
+// It's important that the Provider is created before the AppShell, so the AppShell can subscribe to the Provider
+commonUtils.defineCustomElement('dbp-provider', Provider);
 commonUtils.defineCustomElement('dbp-toolkit-showcase', AppShell);
-- 
GitLab