diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6e5cca27..0335947e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -10,6 +10,7 @@ on: default: 'development' options: - "development" + - "vaadin-23" version: description: "Version to release (e.g. 1.1.0 or 1.2.0-alpha1)" required: true @@ -65,11 +66,11 @@ jobs: | tee -a $GITHUB_STEP_SUMMARY exit 1 fi - #if [[ "${{ inputs.target-branch }}" != "development" && ! "${{ inputs.version }}" = "${{ inputs.target-branch }}."* ]]; then - # echo "🚫 Invalid version specified: '${{ inputs.version }}' does not match the release branch '${{ inputs.target-branch }}'." \ - # | tee -a $GITHUB_STEP_SUMMARY - # exit 1 - #fi + if [[ "${{ inputs.target-branch }}" != "development" && ! "vaadin-${{ inputs.version }}" = "${{ inputs.target-branch }}."* ]]; then + echo "🚫 Invalid version specified: '${{ inputs.version }}' does not match the release branch '${{ inputs.target-branch }}'." \ + | tee -a $GITHUB_STEP_SUMMARY + exit 1 + fi if git rev-parse -q --verify "refs/tags/flow-${{ inputs.version }}" > /dev/null; then echo "🚫 Version '${{ inputs.version }}' already exists. Please choose a different version." \ | tee -a $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/validation-nightly.yml b/.github/workflows/validation-nightly.yml index e7ed7a24..9f65aa49 100644 --- a/.github/workflows/validation-nightly.yml +++ b/.github/workflows/validation-nightly.yml @@ -4,7 +4,7 @@ on: schedule: - cron: '0 4 * * *' env: - JAVA_VERSION: 11 + JAVA_VERSION: 17 jobs: build: name: Build and test @@ -12,9 +12,9 @@ jobs: fail-fast: false matrix: java: [21, 17] - branch: [ development ] + branch: [ development, 23 ] include: - - branch: development + - branch: 23 java: 11 timeout-minutes: 30 runs-on: ubuntu-latest diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index 6fdfea6e..ce2809d8 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -11,7 +11,7 @@ concurrency: group: ${{ github.head_ref || github.ref_name }} cancel-in-progress: true env: - JAVA_VERSION: 11 + JAVA_VERSION: 17 jobs: check-permissions: name: Check User Permissions @@ -81,6 +81,8 @@ jobs: with: chrome-version: stable - name: Build + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} run: | set -x -e -o pipefail VERTX_VAADIN_VERSION=$(mvn -N -ntp -q help:evaluate -Dexpression=project.version -DforceStdout) @@ -128,6 +130,8 @@ jobs: tar cf - .m2 | (cd ~ && tar xf -) - name: Build if: ${{ github.run_attempt > 1 }} + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} run: | set -x -e -o pipefail mvn -V -e -B -ntp -DskipTests -DskipVertxRun=true -Dmaven.javadoc.skip=false install -Pflow-ui-tests @@ -183,6 +187,8 @@ jobs: tar cf - .m2 | (cd ~ && tar xf -) - name: Build if: ${{ github.run_attempt > 1 }} + env: + VAADIN_OFFLINE_KEY: ${{ secrets.VAADIN_OFFLINE_KEY }} run: | set -x -e -o pipefail mvn -V -e -B -ntp -DskipTests -DskipVertxRun=true -Dmaven.javadoc.skip=false install -Pflow-ui-tests @@ -198,7 +204,7 @@ jobs: -Duitest.chrome-version=$CHROME_VERSION - name: Package test output files if: ${{ failure() || success() }} - run: find . -name surefire-reports -o -name failsafe-reports -o -name verticle.log | tar -czf tests-report-it-1.tgz -T - + run: find . -name surefire-reports -o -name failsafe-reports -o -name error-screenshots -o -name verticle.log | tar -czf tests-report-it-1.tgz -T - - uses: actions/upload-artifact@v3 if: ${{ failure() || success() }} with: @@ -250,7 +256,7 @@ jobs: mvn -V -e -B -ntp verify -DtrimStackTrace=false -pl=-:vertx-vaadin-test-root-context -Dwebdriver.chrome.driver=$(which chromedriver) - name: Package test output files if: ${{ failure() || success() }} - run: find . -name surefire-reports -o -name failsafe-reports -o -name verticle.log | tar -czf tests-report-it-2.tgz -T - + run: find . -name surefire-reports -o -name failsafe-reports -o -name error-screenshots -o -name verticle.log | tar -czf tests-report-it-2.tgz -T - - uses: actions/upload-artifact@v3 if: ${{ failure() || success() }} with: diff --git a/.gitignore b/.gitignore index e4267182..2f994670 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,9 @@ pnpm-lock.yaml tsconfig.json types.d.ts **/error-screenshots/ +**/frontend/generated/ +.flow-node-tasks.lock +**/src/main/bundles/ vertx-vaadin-flow-parent/vertx-vaadin-flow/frontend/ vertx-vaadin-flow-parent/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/ diff --git a/pom.xml b/pom.xml index 6847c793..2cf6e31a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT pom Vertx Vaadin root Pom @@ -79,8 +79,8 @@ UTF-8 - 11 - 11 + 17 + 17 ${maven.multiModuleProjectDirectory}/license ${maven.multiModuleProjectDirectory}/checkstyle @@ -109,11 +109,11 @@ 2.41.1 4.3.8 - 23.3.30 - 23.3.24 - 1.3.30 + 24.3.2 + 24.3.2 + 2.5.5 - 3.1.0 + 6.0.0 1.14.11 1.0 1.18.30 @@ -166,9 +166,9 @@ ${slf4j.version} - javax.servlet - javax.servlet-api - ${javax.servlet.version} + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet.version} net.bytebuddy diff --git a/vaadin-flow-sockjs/pom.xml b/vaadin-flow-sockjs/pom.xml index 89f4ef2f..69435e18 100644 --- a/vaadin-flow-sockjs/pom.xml +++ b/vaadin-flow-sockjs/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml @@ -25,7 +25,7 @@ 1.5.0 false - 2.8.2 + 2.9.0 com.github.mcollovati.vertx.vaadin.sockjs.SockjsClientEngine ${project.build.outputDirectory}/META-INF/resources/VAADIN/static/ OBF @@ -39,12 +39,49 @@ 1.7.6 + + + + + com.google.gwt + gwt + ${gwt.version} + pom + import + + + com.vaadin flow-server ${vaadin.flow.version} + sources + provided + + + com.vaadin.servletdetector + throw-if-servlet3 + + + + + com.vaadin + flow-server + ${vaadin.flow.version} + provided + + + com.vaadin.servletdetector + throw-if-servlet3 + + + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet.version} provided @@ -60,19 +97,16 @@ com.google.gwt gwt-user - ${gwt.version} provided com.google.gwt gwt-dev - ${gwt.version} provided com.google.gwt gwt-elemental - ${gwt.version} provided @@ -167,6 +201,7 @@ FF38 300 + -Xmx512m -Dvaadin.frontend.hotdeploy=false diff --git a/vertx-vaadin-flow-jandex/pom.xml b/vertx-vaadin-flow-jandex/pom.xml index d979ac1f..e46536a6 100644 --- a/vertx-vaadin-flow-jandex/pom.xml +++ b/vertx-vaadin-flow-jandex/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml diff --git a/vertx-vaadin-flow/frontend/generated/index.ts b/vertx-vaadin-flow/frontend/generated/index.ts index c20aa03f..1b1823bb 100644 --- a/vertx-vaadin-flow/frontend/generated/index.ts +++ b/vertx-vaadin-flow/frontend/generated/index.ts @@ -17,11 +17,11 @@ import { Router } from '@vaadin/router'; import { Flow } from 'Frontend/generated/jar-resources/Flow.js'; const { serverSideRoutes } = new Flow({ - imports: () => import('../../target/frontend/generated-flow-imports.js') + imports: () => import('Frontend/generated/flow/generated-flow-imports.js') }); const routes = [ - // for client-side, place routes below (more info https://vaadin.com/docs/v15/flow/typescript/creating-routes.html) + // for client-side, place routes below (more info https://hilla.dev/docs/lit/guides/routing#initializing-the-router) // for server-side, the next magic line sends all unmatched routes: ...serverSideRoutes // IMPORTANT: this must be the last entry in the array diff --git a/vertx-vaadin-flow/frontend/generated/vaadin.ts b/vertx-vaadin-flow/frontend/generated/vaadin.ts index 3c8cdfca..59fcb1c2 100644 --- a/vertx-vaadin-flow/frontend/generated/vaadin.ts +++ b/vertx-vaadin-flow/frontend/generated/vaadin.ts @@ -1,5 +1,22 @@ -import './vaadin-featureflags.ts'; +import 'Frontend/generated/jar-resources/copilot/copilot.js'; +// @ts-ignore +if (import.meta.hot) { + // @ts-ignore + import.meta.hot.on('vite:afterUpdate', () => { + (window as any).Vaadin.copilotPlugins._internals.copilotEventBus.emit('vite-after-update',{}); + }); +} + +import '@vaadin/vertical-layout/src/vaadin-vertical-layout.js'; +import '@vaadin/context-menu/src/vaadin-context-menu.js'; +import '@vaadin/icons/vaadin-iconset.js'; +import '@vaadin/menu-bar/src/vaadin-menu-bar.js'; +import '@vaadin/icon/vaadin-icon.js'; +import '@vaadin/text-field/src/vaadin-text-field.js'; +import '@vaadin/grid/src/vaadin-grid.js'; +import '@vaadin/grid/src/vaadin-grid-tree-column.js'; +import './vaadin-featureflags.js'; import './index'; -import 'Frontend/generated/jar-resources/vaadin-dev-tools.js'; +import 'Frontend/generated/jar-resources/vaadin-dev-tools/vaadin-dev-tools.js'; diff --git a/vertx-vaadin-flow/pom.xml b/vertx-vaadin-flow/pom.xml index ac87f2fd..842558ff 100644 --- a/vertx-vaadin-flow/pom.xml +++ b/vertx-vaadin-flow/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml @@ -21,7 +21,8 @@ ${project.version} 2.14.2 1.3.2 - 2.0.1.Final + 2.1.1 + 3.0.2 @@ -116,8 +117,18 @@ slf4j-api - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api + + + jakarta.websocket + jakarta.websocket-api + ${jakarta.websocket.version} + + + jakarta.websocket + jakarta.websocket-client-api + ${jakarta.websocket.version} net.bytebuddy @@ -138,8 +149,8 @@ ${vertx.version} - javax.validation - validation-api + jakarta.validation + jakarta.validation-api ${validation.api.version} @@ -211,13 +222,13 @@ org.hibernate.validator hibernate-validator - 6.1.6.Final + 8.0.1.Final test org.glassfish jakarta.el - 3.0.3 + 5.0.0-M1 test diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/http/HttpReverseProxy.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/http/HttpReverseProxy.java index c76b253e..8ef790fa 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/http/HttpReverseProxy.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/http/HttpReverseProxy.java @@ -33,6 +33,7 @@ import io.netty.handler.codec.http.HttpResponseStatus; import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; +import io.vertx.core.http.HttpClient; import io.vertx.core.http.HttpServerRequest; import io.vertx.core.http.HttpServerResponse; import io.vertx.ext.web.RoutingContext; @@ -85,7 +86,7 @@ private static UnaryOperator createUriCustomizer(DevModeHandler devModeH } public static HttpReverseProxy create(Vertx vertx, DevModeHandler devModeHandler) { - CompletableFuture webClientFuture = VertxDevModeHandlerManager.getDevModeHandlerFuture( + CompletableFuture webClientFuture = VertxDevModeHandlerManager.getDevModeHandlerPort( devModeHandler) .thenApply(port -> { logger.debug("Starting DevMode proxy on port {}", port); @@ -112,7 +113,7 @@ public void forward(RoutingContext routingContext) { routingContext.next(); } else { - if (StaticFileServer.APP_THEME_PATTERN.matcher(requestURI).find()) { + if (StaticFileServer.APP_THEME_ASSETS_PATTERN.matcher(requestURI).find()) { requestURI = "/VAADIN/static" + requestURI; } requestURI = uriCustomizer.apply(requestURI); diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/support/StartupContext.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/support/StartupContext.java index 3fdad588..b429c526 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/support/StartupContext.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/support/StartupContext.java @@ -22,6 +22,16 @@ */ package com.github.mcollovati.vertx.support; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; @@ -39,16 +49,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; -import javax.servlet.SessionCookieConfig; -import javax.servlet.SessionTrackingMode; -import javax.servlet.descriptor.JspConfigDescriptor; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.server.DeploymentConfigurationFactory; @@ -209,6 +209,35 @@ public int getEffectiveMinorVersion() { return 0; } + @Override + public void setResponseCharacterEncoding(String encoding) {} + + @Override + public String getResponseCharacterEncoding() { + return null; + } + + @Override + public void setRequestCharacterEncoding(String encoding) {} + + @Override + public String getRequestCharacterEncoding() { + return null; + } + + @Override + public void setSessionTimeout(int sessionTimeout) {} + + @Override + public int getSessionTimeout() { + return 0; + } + + @Override + public ServletRegistration.Dynamic addJspFile(String servletName, String jspFile) { + return null; + } + @Override public String getMimeType(String file) { return MimeMapping.getMimeTypeForFilename(file); @@ -279,31 +308,11 @@ public RequestDispatcher getNamedDispatcher(String name) { return null; } - @Override - public Servlet getServlet(String name) throws ServletException { - return null; - } - - @Override - public Enumeration getServlets() { - return null; - } - - @Override - public Enumeration getServletNames() { - return null; - } - @Override public void log(String msg) { logger.trace(msg); } - @Override - public void log(Exception exception, String msg) { - logger.trace(msg, exception); - } - @Override public void log(String message, Throwable throwable) { logger.trace(message, throwable); diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/CookieUtils.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/CookieUtils.java index 67145870..872cd96b 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/CookieUtils.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/CookieUtils.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.vaadin; import java.util.Optional; -import javax.servlet.http.Cookie; +import jakarta.servlet.http.Cookie; import io.netty.handler.codec.http.cookie.ClientCookieDecoder; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VaadinVerticle.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VaadinVerticle.java index 20a79bca..75da9657 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VaadinVerticle.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VaadinVerticle.java @@ -22,6 +22,9 @@ */ package com.github.mcollovati.vertx.vaadin; +import jakarta.servlet.ServletContainerInitializer; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.HandlesTypes; import java.net.ServerSocket; import java.util.ArrayList; import java.util.HashMap; @@ -33,9 +36,6 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.servlet.ServletContainerInitializer; -import javax.servlet.ServletException; -import javax.servlet.annotation.HandlesTypes; import com.vaadin.base.devserver.startup.DevModeStartupListener; import com.vaadin.flow.function.DeploymentConfiguration; @@ -126,9 +126,13 @@ private Future startupHttpServer(VertxVaadin vertxVaadin) { log.debug("Mounted Vaadin router on {}", mountPoint); HttpServerOptions serverOptions = - new HttpServerOptions(config().getJsonObject("server", new JsonObject())).setCompressionSupported(true); + new HttpServerOptions(config().getJsonObject("server", new JsonObject())) + .setCompressionSupported(true) + .addWebSocketSubProtocol("vite-hmr"); httpServer = vertx.createHttpServer(serverOptions).requestHandler(router); + vertxVaadin.initDevServerWebSocketProxy(httpServer); + Promise promise = Promise.promise(); httpPort() diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxLookupInitializer.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxLookupInitializer.java index 6833bae8..218beb59 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxLookupInitializer.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxLookupInitializer.java @@ -24,7 +24,7 @@ import java.util.Collection; import java.util.Map; -import javax.servlet.ServletException; +import jakarta.servlet.ServletException; import com.vaadin.flow.di.LookupInitializer; import com.vaadin.flow.function.VaadinApplicationInitializationBootstrap; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServer.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServer.java index 0078c4b4..89c619d0 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServer.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServer.java @@ -46,8 +46,8 @@ import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.internal.DevModeHandler; @@ -56,8 +56,12 @@ import com.vaadin.flow.server.Constants; import com.vaadin.flow.server.HandlerHelper; import com.vaadin.flow.server.HttpStatusCode; +import com.vaadin.flow.server.Mode; import com.vaadin.flow.server.StaticFileServer; import com.vaadin.flow.server.VaadinService; +import com.vaadin.flow.server.frontend.DevBundleUtils; +import com.vaadin.flow.server.frontend.FrontendUtils; +import com.vaadin.flow.server.frontend.ThemeUtils; import io.vertx.core.Handler; import io.vertx.core.buffer.Buffer; import io.vertx.core.file.impl.FileResolverImpl; @@ -70,8 +74,8 @@ import org.slf4j.LoggerFactory; import static com.vaadin.flow.server.Constants.VAADIN_BUILD_FILES_PATH; +import static com.vaadin.flow.server.Constants.VAADIN_MAPPING; import static com.vaadin.flow.server.Constants.VAADIN_WEBAPP_RESOURCES; -import static com.vaadin.flow.shared.ApplicationConstants.VAADIN_STATIC_FILES_PATH; /** * Adapted from Vaadin StaticFileServer @@ -80,7 +84,10 @@ class VertxStaticFileServer implements Handler { static final String PROPERTY_FIX_INCORRECT_WEBJAR_PATHS = Constants.VAADIN_PREFIX + "fixIncorrectWebjarPaths"; private static final Pattern INCORRECT_WEBJAR_PATH_REGEX = Pattern.compile("^/frontend[-\\w/]*/webjars/"); - protected static final Pattern APP_THEME_PATTERN = Pattern.compile("^\\/themes\\/[\\s\\S]+?\\/"); + // Matches paths to theme files referenced from link tags (e.g. styles + // .css or document.css) + protected static final Pattern APP_THEME_PATTERN = Pattern + .compile("^\\/VAADIN\\/themes\\/([\\s\\S]+?)\\/"); private final VertxVaadinService vaadinService; private final DeploymentConfiguration deploymentConfiguration; @@ -123,16 +130,39 @@ public boolean serveStaticResource(RoutingContext routingContext) throws IOExcep } URL resourceUrl = null; - if (APP_THEME_PATTERN.matcher(filenameWithPath).find()) { - resourceUrl = vaadinService - .getClassLoader() - .getResource(VAADIN_WEBAPP_RESOURCES + "VAADIN/static/" + filenameWithPath.replaceFirst("^/", "")); + if (deploymentConfiguration.getMode() == Mode.DEVELOPMENT_BUNDLE) { + if (!"/index.html".equals(filenameWithPath)) { + resourceUrl = DevBundleUtils.findBundleFile( + deploymentConfiguration.getProjectFolder(), + deploymentConfiguration.getBuildFolder(), + "webapp" + filenameWithPath); + } + if (resourceUrl == null + && (APP_THEME_PATTERN.matcher(filenameWithPath).find() + || StaticFileServer.APP_THEME_ASSETS_PATTERN + .matcher(filenameWithPath).find())) { + // Express mode theme file request + resourceUrl = findAssetInFrontendThemesOrDevBundle( + vaadinService, + filenameWithPath.replace(VAADIN_MAPPING, "")); + } + } else if (deploymentConfiguration + .getMode() == Mode.PRODUCTION_PRECOMPILED_BUNDLE + && APP_THEME_PATTERN.matcher(filenameWithPath).find()) { + resourceUrl = ThemeUtils + .getThemeResourceFromPrecompiledProductionBundle( + filenameWithPath.replace(VAADIN_MAPPING, "") + .replaceFirst("^/", "")); + } else if (StaticFileServer.APP_THEME_ASSETS_PATTERN.matcher(filenameWithPath).find()) { + resourceUrl = vaadinService.getClassLoader() + .getResource(VAADIN_WEBAPP_RESOURCES + "VAADIN/static/" + + filenameWithPath.replaceFirst("^/", "")); } else if (!"/index.html".equals(filenameWithPath)) { // index.html needs to be handled by IndexHtmlRequestHandler - resourceUrl = vaadinService - .getClassLoader() - .getResource(VAADIN_WEBAPP_RESOURCES + filenameWithPath.replaceFirst("^/", "")); + resourceUrl = vaadinService.getClassLoader() + .getResource(VAADIN_WEBAPP_RESOURCES + + filenameWithPath.replaceFirst("^/", "")); } if (resourceUrl == null) { @@ -367,22 +397,6 @@ protected URL getStaticResource(String path) { return vaadinService.getStaticResource(path); } - /** - * Check if it is ok to serve the requested file from the classpath. - *

- * ClassLoader is applicable for use when we are in NPM mode and are serving - * from the VAADIN/build folder with no folder changes in path. - * - * @param filenameWithPath requested filename containing path - * @return true if we are ok to try serving the file - */ - private boolean isAllowedVAADINBuildOrStaticUrl(String filenameWithPath) { - // Check that we target VAADIN/build | VAADIN/static | themes/theme-name - return filenameWithPath.startsWith("/" + VAADIN_BUILD_FILES_PATH) - || filenameWithPath.startsWith("/" + VAADIN_STATIC_FILES_PATH) - || APP_THEME_PATTERN.matcher(filenameWithPath).find(); - } - private boolean resourceIsDirectory(URL resource) { if (resource.getPath().endsWith("/")) { return true; @@ -418,6 +432,68 @@ private boolean resourceIsDirectory(URL resource) { return "file".equals(resource.getProtocol()) && Files.isDirectory(Paths.get(resourceURI)); } + + private static URL findAssetInFrontendThemesOrDevBundle( + VaadinService vaadinService, String assetPath) throws IOException { + DeploymentConfiguration deploymentConfiguration = vaadinService + .getDeploymentConfiguration(); + // First, look for the theme assets in the {project.root}/frontend/ + // themes/my-theme folder + File frontendFolder = new File( + deploymentConfiguration.getProjectFolder(), + FrontendUtils.FRONTEND); + File assetInFrontendThemes = new File(frontendFolder, assetPath); + if (assetInFrontendThemes.exists()) { + return assetInFrontendThemes.toURI().toURL(); + } + + // Also look into jar-resources for a packaged theme + File jarResourcesFolder = FrontendUtils + .getJarResourcesFolder(frontendFolder); + assetInFrontendThemes = new File(jarResourcesFolder, assetPath); + + if (assetInFrontendThemes.exists()) { + return assetInFrontendThemes.toURI().toURL(); + } + + // Second, look into default dev bundle + Matcher matcher = StaticFileServer.APP_THEME_ASSETS_PATTERN.matcher(assetPath); + if (!matcher.find()) { + throw new IllegalStateException( + "Asset path should match the theme pattern"); + } + + final String themeName = matcher.group(1); + String defaultBundleAssetPath = assetPath.replaceFirst(themeName, + Constants.DEV_BUNDLE_NAME); + URL assetInDevBundleUrl = vaadinService.getClassLoader() + .getResource(Constants.DEV_BUNDLE_JAR_PATH + Constants.ASSETS + + defaultBundleAssetPath); + + // Or search in the application dev-bundle (if the assets come from + // node_modules) + if (assetInDevBundleUrl == null) { + String assetInDevBundle = "/" + Constants.ASSETS + "/" + assetPath; + assetInDevBundleUrl = DevBundleUtils.findBundleFile( + deploymentConfiguration.getProjectFolder(), + deploymentConfiguration.getBuildFolder(), assetInDevBundle); + } + + if (assetInDevBundleUrl == null) { + String assetName = assetPath.substring( + assetPath.indexOf(themeName) + themeName.length()); + throw new IllegalStateException(String.format( + "Asset '%1$s' is not found in project frontend directory" + + ", default development bundle or in the application " + + "bundle '{build}/%2$s/assets/'. \n" + + "Verify that the asset is available in " + + "'frontend/themes/%3$s/' directory and is added into the " + + "'assets' block of the 'theme.json' file.", + assetName, Constants.DEV_BUNDLE_LOCATION, themeName)); + } + return assetInDevBundleUrl; + } + /** * Get the file URI for the resource jar file. Returns give URI if * URI.scheme is not of type jar. @@ -556,9 +632,12 @@ class ResponseWriter implements Serializable { */ private static final int MAX_OVERLAPPING_RANGE_COUNT = 2; + private static final FileResolver FILE_RESOLVER = new FileResolverImpl(); + private final int bufferSize; private final boolean brotliEnabled; + /** * Create a response writer with the given deployment configuration. * @@ -837,10 +916,9 @@ private boolean verifyRangeLimits(List> ranges) { } private URL getResource(String resource) throws MalformedURLException { - FileResolver fileResolver = new FileResolverImpl(); - File file = fileResolver.resolveFile(resource); + File file = FILE_RESOLVER.resolveFile(resource); if (!file.exists() && resource.startsWith("/" + VAADIN_BUILD_FILES_PATH) && isAllowedVAADINBuildUrl(resource)) { - file = fileResolver.resolveFile(VAADIN_WEBAPP_RESOURCES + resource.replaceFirst("^/", "")); + file = FILE_RESOLVER.resolveFile(VAADIN_WEBAPP_RESOURCES + resource.replaceFirst("^/", "")); } return file.exists() ? file.toURI().toURL() : null; } @@ -964,6 +1042,7 @@ private static boolean isQualityValueZero(String acceptEncoding, String encoding return Double.valueOf(0.000).equals(Double.valueOf(qValue)); } + private Logger getLogger() { return LoggerFactory.getLogger(getClass().getName()); } diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadin.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadin.java index f58434e7..a88f5d0d 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadin.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadin.java @@ -22,6 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin; +import jakarta.servlet.ServletContext; import java.lang.invoke.MethodHandles; import java.util.Objects; import java.util.Optional; @@ -29,8 +30,8 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.regex.Pattern; -import javax.servlet.ServletContext; +import com.vaadin.base.devserver.ViteHandler; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.internal.ApplicationClassLoaderAccess; import com.vaadin.flow.internal.CurrentInstance; @@ -50,6 +51,7 @@ import io.vertx.core.eventbus.MessageConsumer; import io.vertx.core.eventbus.MessageProducer; import io.vertx.core.http.HttpHeaders; +import io.vertx.core.http.HttpServer; import io.vertx.core.json.JsonObject; import io.vertx.ext.web.Router; import io.vertx.ext.web.RoutingContext; @@ -65,6 +67,7 @@ import com.github.mcollovati.vertx.support.StartupContext; import com.github.mcollovati.vertx.vaadin.communication.VertxDebugWindowConnection; import com.github.mcollovati.vertx.vaadin.connect.VaadinConnectHandler; +import com.github.mcollovati.vertx.vaadin.devserver.DevServerWebSocketProxy; import com.github.mcollovati.vertx.vaadin.sockjs.communication.SockJSPushConnection; import com.github.mcollovati.vertx.vaadin.sockjs.communication.SockJSPushHandler; import com.github.mcollovati.vertx.web.sstore.ExtendedLocalSessionStore; @@ -83,6 +86,9 @@ public class VertxVaadin { private final Vertx vertx; private final Router vaadinRouter; private final Router connectRouter; + + private DevServerWebSocketProxy devServerWebSocketProxy; + private final ExtendedSessionStore sessionStore; static { @@ -284,7 +290,7 @@ private void initRouters() { DevModeHandler devModeHandler = DevModeHandlerManager.getDevModeHandler(service).orElse(null); - if (devModeHandler != null) { + if (devModeHandler != null && devModeHandler.getPort() >= 0) { logger.info("Starting DevModeHandler proxy"); HttpReverseProxy proxy = HttpReverseProxy.create(vertx, devModeHandler); vaadinRouter.routeWithRegex("^/themes\\/[\\s\\S]+?\\/").handler(proxy::forward); @@ -323,6 +329,18 @@ private void handleVaadinRequest(RoutingContext routingContext) { } } + void initDevServerWebSocketProxy(HttpServer httpServer) { + DevModeHandler devModeHandler = + DevModeHandlerManager.getDevModeHandler(service).orElse(null); + if (devModeHandler instanceof ViteHandler viteHandler) { + logger.info("Starting DevModeHandler websocket proxy"); + + DevServerWebSocketProxy proxy = DevServerWebSocketProxy.createWebsocketProxy( + vertx, viteHandler.getPort(), viteHandler.getPathToVaadin()); + httpServer.webSocketHandler(proxy); + } + } + private void initSockJS(Router vaadinRouter, SessionHandler sessionHandler) { if (config.supportsSockJS()) { diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinBrowserLiveReload.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinBrowserLiveReload.java index 2288a5fe..56a104c1 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinBrowserLiveReload.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinBrowserLiveReload.java @@ -26,6 +26,7 @@ import com.vaadin.flow.internal.BrowserLiveReload; import com.vaadin.flow.server.VaadinContext; import com.vaadin.flow.server.VaadinService; +import com.vaadin.flow.server.communication.AtmospherePushConnection; import org.atmosphere.cpr.AtmosphereResource; import com.github.mcollovati.vertx.vaadin.communication.VertxDebugWindowConnection; @@ -71,11 +72,26 @@ public void onMessage(AtmosphereResource resource, String msg) { throw new UnsupportedOperationException("Not supported on vertx-vaadin"); } + @Override + public void update(String path, String content) { + reloader.update(path, content); + } + @Override public void reload() { reloader.reload(); } + @Override + public AtmospherePushConnection.FragmentedMessage getOrCreateFragmentedMessage(AtmosphereResource resource) { + return null; + } + + @Override + public void clearFragmentedMessage(AtmosphereResource resource) { + + } + public static class Accessor extends BrowserLiveReloadAccessorImpl { @Override diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinInstantiator.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinInstantiator.java deleted file mode 100644 index 18f10a6a..00000000 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinInstantiator.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * The MIT License - * Copyright © 2016-2020 Marco Collovati (mcollovati@gmail.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -package com.github.mcollovati.vertx.vaadin; - -import java.util.stream.Stream; - -import com.vaadin.flow.component.Component; -import com.vaadin.flow.component.HasElement; -import com.vaadin.flow.component.UI; -import com.vaadin.flow.di.Instantiator; -import com.vaadin.flow.i18n.I18NProvider; -import com.vaadin.flow.router.NavigationEvent; -import com.vaadin.flow.server.BootstrapListener; -import com.vaadin.flow.server.DependencyFilter; -import com.vaadin.flow.server.VaadinService; -import com.vaadin.flow.server.VaadinServiceInitListener; -import com.vaadin.flow.server.communication.IndexHtmlRequestListener; - -/** - * A {@link Instantiator} wrapper that overwrites some Vaadin implementations. - */ -@Deprecated -class VertxVaadinInstantiator implements Instantiator { - - private final Instantiator delegate; - - VertxVaadinInstantiator(Instantiator delegate) { - this.delegate = delegate; - } - - @Override - public boolean init(VaadinService service) { - return delegate.init(service); - } - - @SuppressWarnings("unchecked") - @Override - public T getOrCreate(Class type) { - /* - if (BrowserLiveReloadAccess.class.equals(type)) { - return (T) new VertxVaadinBrowserLiveReload.Access(); - } - */ - return delegate.getOrCreate(type); - } - - @Override - public Stream getServiceInitListeners() { - return delegate.getServiceInitListeners(); - } - - @Override - public T createComponent(Class componentClass) { - return delegate.createComponent(componentClass); - } - - @Override - @Deprecated - public Stream getBootstrapListeners(Stream serviceInitListeners) { - return delegate.getBootstrapListeners(serviceInitListeners); - } - - @Override - public Stream getIndexHtmlRequestListeners( - Stream indexHtmlRequestListeners) { - return delegate.getIndexHtmlRequestListeners(indexHtmlRequestListeners); - } - - @Override - public Stream getDependencyFilters(Stream serviceInitFilters) { - return delegate.getDependencyFilters(serviceInitFilters); - } - - @Override - public T createRouteTarget(Class routeTargetType, NavigationEvent event) { - return delegate.createRouteTarget(routeTargetType, event); - } - - public static Instantiator get(UI ui) { - return Instantiator.get(ui); - } - - @Override - public I18NProvider getI18NProvider() { - return delegate.getI18NProvider(); - } -} diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequest.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequest.java index c1b7df79..118ebdff 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequest.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequest.java @@ -38,7 +38,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; -import javax.servlet.http.Cookie; +import jakarta.servlet.http.Cookie; import com.vaadin.flow.server.VaadinRequest; import com.vaadin.flow.server.WrappedSession; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponse.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponse.java index 8ee369d2..130bf185 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponse.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponse.java @@ -163,7 +163,7 @@ public VertxVaadinService getService() { } @Override - public void addCookie(javax.servlet.http.Cookie cookie) { + public void addCookie(jakarta.servlet.http.Cookie cookie) { routingContext.addCookie(CookieUtils.toVertxCookie(cookie)); } diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinService.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinService.java index 2c52a65f..9e7f1165 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinService.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxVaadinService.java @@ -22,36 +22,30 @@ */ package com.github.mcollovati.vertx.vaadin; +import jakarta.servlet.ServletContext; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.Properties; -import javax.servlet.ServletContext; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.internal.DevModeHandler; import com.vaadin.flow.internal.DevModeHandlerManager; -import com.vaadin.flow.internal.UsageStatistics; -import com.vaadin.flow.server.BootstrapHandler; -import com.vaadin.flow.server.Constants; -import com.vaadin.flow.server.DeploymentConfigurationFactory; import com.vaadin.flow.server.HandlerHelper; +import com.vaadin.flow.server.Mode; import com.vaadin.flow.server.PwaRegistry; import com.vaadin.flow.server.RequestHandler; import com.vaadin.flow.server.RouteRegistry; import com.vaadin.flow.server.ServiceContextUriResolver; import com.vaadin.flow.server.ServiceException; -import com.vaadin.flow.server.VaadinContext; import com.vaadin.flow.server.VaadinRequest; import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.VaadinSession; -import com.vaadin.flow.server.Version; import com.vaadin.flow.server.communication.FaviconHandler; import com.vaadin.flow.server.communication.IndexHtmlRequestHandler; -import com.vaadin.flow.server.frontend.FallbackChunk; +import com.vaadin.flow.server.communication.WebComponentProvider; import com.vaadin.flow.server.startup.ApplicationRouteRegistry; import com.vaadin.flow.shared.ApplicationConstants; import io.vertx.core.Context; @@ -91,18 +85,6 @@ public Vertx getVertx() { return vertxVaadin.vertx(); } - @Override - public void init() throws ServiceException { - DeploymentConfiguration deploymentConfiguration = getDeploymentConfiguration(); - Properties initParameters = deploymentConfiguration.getInitParameters(); - Object object = initParameters.get(DeploymentConfigurationFactory.FALLBACK_CHUNK); - if (object instanceof FallbackChunk) { - VaadinContext context = getContext(); - context.setAttribute(object); - } - super.init(); - } - public VaadinOptions getVaadinOptions() { return vertxVaadin.config(); } @@ -141,11 +123,25 @@ protected List createRequestHandlers() throws ServiceException { // TODO: removed because of explicit cast to servlet; should be handled at router level? handlers.removeIf(FaviconHandler.class::isInstance); handlers.replaceAll(RequestHandlerReplacements::replace); - if (getDeploymentConfiguration().enableDevServer()) { + + Mode mode = getDeploymentConfiguration().getMode(); + if (mode == Mode.DEVELOPMENT_FRONTEND_LIVERELOAD || mode == Mode.DEVELOPMENT_BUNDLE) { Optional handlerManager = DevModeHandlerManager.getDevModeHandler(this); if (handlerManager.isPresent()) { - handlers.add(handlerManager.get()); - } else { + DevModeHandler devModeHandler = handlerManager.get(); + // WebComponentProvider handler should run before DevModeHandler + // to avoid responding with html contents when dev bundle is + // not ready (e.g. dev-mode-not-ready.html) + handlers.stream() + .filter(WebComponentProvider.class::isInstance) + .findFirst() + .map(handlers::indexOf) + .ifPresentOrElse( + idx -> { + handlers.add(idx, devModeHandler); + }, + () -> handlers.add(devModeHandler)); + } else if (mode == Mode.DEVELOPMENT_FRONTEND_LIVERELOAD) { logger.warn("no DevModeHandlerManager implementation found " + "but dev server enabled. Include the " + "com.vaadin.vaadin-dev-server dependency."); @@ -156,14 +152,8 @@ protected List createRequestHandlers() throws ServiceException { } private void addBootstrapHandler(List handlers) { - if (getDeploymentConfiguration().useV14Bootstrap()) { - handlers.add(0, new VertxBootstrapHandler()); - logger.debug("Using '{}' in deprecated V14 bootstrapping", BootstrapHandler.class.getName()); - UsageStatistics.markAsUsed(Constants.STATISTIC_FLOW_BOOTSTRAPHANDLER, Version.getFullVersion()); - } else { - handlers.add(0, new VertxIndexHtmlRequestHandler()); - logger.debug("Using '{}' in client mode bootstrapping", IndexHtmlRequestHandler.class.getName()); - } + handlers.add(0, new VertxIndexHtmlRequestHandler()); + logger.debug("Using '{}' in client mode bootstrapping", VertxIndexHtmlRequestHandler.class.getName()); } @Override diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSession.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSession.java index ce1e03d9..1e29ab6e 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSession.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSession.java @@ -22,17 +22,16 @@ */ package com.github.mcollovati.vertx.vaadin; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionBindingListener; import java.util.Collections; import java.util.Enumeration; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionBindingListener; -import javax.servlet.http.HttpSessionContext; import com.vaadin.flow.server.WrappedSession; import lombok.AccessLevel; @@ -168,36 +167,11 @@ public ServletContext getServletContext() { return null; } - @Override - public HttpSessionContext getSessionContext() { - throw new UnsupportedOperationException("Deprecated"); - } - - @Override - public Object getValue(String name) { - return delegate.getAttribute(name); - } - @Override public Enumeration getAttributeNames() { return Collections.enumeration(delegate.getAttributeNames()); } - @Override - public String[] getValueNames() { - return delegate.getAttributeNames().toArray(new String[0]); - } - - @Override - public void putValue(String name, Object value) { - delegate.setAttribute(name, value); - } - - @Override - public void removeValue(String name) { - delegate.removeAttribute(name); - } - private interface Exclusions { Set getAttributeNames(); } diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/StreamResourceHandler.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/StreamResourceHandler.java index d62cbb8b..b47cf7ed 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/StreamResourceHandler.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/StreamResourceHandler.java @@ -25,8 +25,8 @@ import java.io.IOException; import java.io.OutputStream; import java.io.Serializable; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.server.StreamResource; import com.vaadin.flow.server.StreamResourceWriter; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxDebugWindowConnection.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxDebugWindowConnection.java index 82ba2b25..d4fb5908 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxDebugWindowConnection.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxDebugWindowConnection.java @@ -23,22 +23,35 @@ package com.github.mcollovati.vertx.vaadin.communication; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.ServiceLoader; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; import java.util.stream.Collectors; import com.vaadin.base.devserver.DebugWindowMessage; +import com.vaadin.base.devserver.DevToolsInterface; +import com.vaadin.base.devserver.DevToolsMessageHandler; import com.vaadin.base.devserver.FeatureFlagMessage; +import com.vaadin.base.devserver.IdeIntegration; import com.vaadin.base.devserver.ServerInfo; import com.vaadin.base.devserver.stats.DevModeUsageStatistics; +import com.vaadin.base.devserver.themeeditor.ThemeEditorCommand; +import com.vaadin.base.devserver.themeeditor.ThemeEditorMessageHandler; +import com.vaadin.base.devserver.themeeditor.messages.BaseResponse; import com.vaadin.experimental.FeatureFlags; +import com.vaadin.flow.component.Component; +import com.vaadin.flow.dom.Element; +import com.vaadin.flow.server.VaadinContext; +import com.vaadin.flow.server.VaadinSession; +import com.vaadin.flow.server.startup.ApplicationConfiguration; import com.vaadin.pro.licensechecker.LicenseChecker; import com.vaadin.pro.licensechecker.Product; import elemental.json.JsonObject; -import io.vertx.core.http.ServerWebSocket; import io.vertx.core.json.Json; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,19 +66,40 @@ public class VertxDebugWindowConnection implements VertxVaadinLiveReload { private VertxVaadinService service; private final Map> liveReload = new ConcurrentHashMap<>(); + private IdeIntegration ideIntegration; + + private ThemeEditorMessageHandler themeEditorMessageHandler; + + private List plugins; + public VertxDebugWindowConnection() {} public VertxDebugWindowConnection(VertxVaadinService service) { - this.service = service; + attachService(service); } public void attachService(VertxVaadinService service) { this.service = service; + VaadinContext context = service.getContext(); + this.themeEditorMessageHandler = new ThemeEditorMessageHandler(context); + this.ideIntegration = new IdeIntegration(ApplicationConfiguration.get(context)); + findPlugins(); + } + + private void findPlugins() { + ServiceLoader loader = ServiceLoader.load(DevToolsMessageHandler.class); + this.plugins = new ArrayList<>(); + for (DevToolsMessageHandler s : loader) { + this.plugins.add(s); + } } public void onConnect(String websocketId, Consumer producer) { this.liveReload.put(websocketId, producer); producer.accept("{\"command\": \"hello\"}"); + for (DevToolsMessageHandler plugin : plugins) { + plugin.handleConnect(getDevToolsInterface(websocketId)); + } send(websocketId, "serverInfo", new ServerInfo()); send( websocketId, @@ -73,6 +107,13 @@ public void onConnect(String websocketId, Consumer producer) { new FeatureFlagMessage(FeatureFlags.get(service.getContext()).getFeatures().stream() .filter(feature -> !feature.equals(FeatureFlags.EXAMPLE)) .collect(Collectors.toList()))); + if (themeEditorMessageHandler.isEnabled()) { + send(websocketId, ThemeEditorCommand.STATE, themeEditorMessageHandler.getState()); + } + } + + private DevToolsInterface getDevToolsInterface(String websocketId) { + return new DevToolsInterfaceImpl(this, websocketId); } public void onMessage(String websocketId, String message) { @@ -82,14 +123,12 @@ public void onMessage(String websocketId, String message) { } elemental.json.JsonObject json = elemental.json.Json.parse(message); String command = json.getString("command"); + JsonObject data = json.getObject("data"); if ("setFeature".equals(command)) { - elemental.json.JsonObject data = json.getObject("data"); FeatureFlags.get(service.getContext()).setEnabled(data.getString("featureId"), data.getBoolean("enabled")); } else if ("reportTelemetry".equals(command)) { - elemental.json.JsonObject data = json.getObject("data"); DevModeUsageStatistics.handleBrowserData(data); } else if ("checkLicense".equals(command)) { - JsonObject data = json.getObject("data"); String name = data.getString("name"); String version = data.getString("version"); Product product = new Product(name, version); @@ -111,8 +150,39 @@ public void onMessage(String websocketId, String message) { ProductAndMessage pm = new ProductAndMessage(product, errorMessage); send(websocketId, "license-check-failed", pm); } + } else if ("showComponentCreateLocation".equals(command) || "showComponentAttachLocation".equals(command)) { + int nodeId = (int) data.getNumber("nodeId"); + int uiId = (int) data.getNumber("uiId"); + VaadinSession session = VaadinSession.getCurrent(); + session.access(() -> { + Element element = session.findElement(uiId, nodeId); + Optional c = element.getComponent(); + if (c.isPresent()) { + if ("showComponentCreateLocation".equals(command)) { + ideIntegration.showComponentCreateInIde(c.get()); + } else { + ideIntegration.showComponentAttachInIde(c.get()); + } + } else { + getLogger() + .error( + "Only component locations are tracked. The given node id refers to an element and not a component"); + } + }); + } else if (themeEditorMessageHandler.canHandle(command, data)) { + BaseResponse resultData = themeEditorMessageHandler.handleDebugMessageData(command, data); + send(websocketId, ThemeEditorCommand.RESPONSE, resultData); } else { - getLogger().info("Unknown command from the browser: " + command); + boolean handled = false; + for (DevToolsMessageHandler plugin : plugins) { + handled = plugin.handleMessage(command, data, getDevToolsInterface(websocketId)); + if (handled) { + break; + } + } + if (!handled) { + getLogger().info("Unknown command from the browser: {}", command); + } } } @@ -128,21 +198,29 @@ private void send(String websocketId, String command, Object data) { public void onClose(String websocketId) { logger.debug("Live reload connection disconnected for {}", websocketId); // Optional.ofNullable(liveReload.get(websocketId)).ifPresent(MessageProducer::close); + for (DevToolsMessageHandler plugin : plugins) { + plugin.handleDisconnect(getDevToolsInterface(websocketId)); + } liveReload.remove(websocketId); } + public void update(String path, String content) { + JsonObject msg = elemental.json.Json.createObject(); + msg.put("command", "update"); + msg.put("path", path); + msg.put("content", content); + sendToAll(msg); + } + public void reload() { - liveReload.values().stream() - .filter(Objects::nonNull) - .forEach(socket -> socket.accept("{\"command\": \"reload\"}")); + JsonObject msg = elemental.json.Json.createObject(); + msg.put("command", "reload"); + sendToAll(msg); } - private void sendDebugWindowCommand(ServerWebSocket webSocket, String command, Object data) { - try { - webSocket.writeTextMessage(Json.encode(new DebugWindowMessage(command, data))); - } catch (Exception e) { - logger.error("Error sending message", e); - } + private void sendToAll(JsonObject message) { + String json = message.toJson(); + liveReload.values().stream().filter(Objects::nonNull).forEach(socket -> socket.accept(json)); } private static Logger getLogger() { @@ -166,4 +244,38 @@ public Product getProduct() { return product; } } + + private static class DevToolsInterfaceImpl implements DevToolsInterface { + + private final VertxDebugWindowConnection connection; + private final String websocketId; + + public DevToolsInterfaceImpl(VertxDebugWindowConnection connection, String websocketId) { + this.connection = connection; + this.websocketId = websocketId; + } + + @Override + public void send(String command, JsonObject data) { + connection.send(websocketId, command, data); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + DevToolsInterfaceImpl that = (DevToolsInterfaceImpl) o; + + if (!Objects.equals(connection, that.connection)) return false; + return Objects.equals(websocketId, that.websocketId); + } + + @Override + public int hashCode() { + int result = connection != null ? connection.hashCode() : 0; + result = 31 * result + (websocketId != null ? websocketId.hashCode() : 0); + return result; + } + } } diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxIndexHtmlRequestHandler.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxIndexHtmlRequestHandler.java index 18cac94f..54fbda97 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxIndexHtmlRequestHandler.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxIndexHtmlRequestHandler.java @@ -26,7 +26,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; -import javax.servlet.http.Cookie; +import jakarta.servlet.http.Cookie; import com.vaadin.flow.internal.BootstrapHandlerHelper; import com.vaadin.flow.server.VaadinRequest; @@ -83,7 +83,7 @@ public VaadinResponseWrapper(VaadinResponse delegate) { String replaceGizmoUrl(String url) { String html = outputStream.toString(UTF_8); return html.replaceFirst( - "()", "$1" + url + "$3"); + "(window.Vaadin.devToolsConf = \\{.*\"url\":\")([^\"]+)(\",.*};)", "$1" + url + "$3"); } @Override diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxStreamRequestHandler.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxStreamRequestHandler.java index b773c37c..95abcbc5 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxStreamRequestHandler.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/communication/VertxStreamRequestHandler.java @@ -29,7 +29,7 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Optional; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.component.UI; import com.vaadin.flow.server.AbstractStreamResource; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/BaseVaadinConnectEndpointService.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/BaseVaadinConnectEndpointService.java index cc863aa9..30678f0f 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/BaseVaadinConnectEndpointService.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/BaseVaadinConnectEndpointService.java @@ -37,9 +37,9 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/VertxEndpointRegistryInitializer.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/VertxEndpointRegistryInitializer.java index d2d92f14..0064b1e1 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/VertxEndpointRegistryInitializer.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/VertxEndpointRegistryInitializer.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.vaadin.connect; import java.util.Set; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.annotation.HandlesTypes; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.HandlesTypes; import com.vaadin.flow.server.VaadinServletContext; import com.vaadin.flow.server.frontend.scanner.ClassFinder; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/AccessAnnotationChecker.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/AccessAnnotationChecker.java index c23c88fc..d72ca560 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/AccessAnnotationChecker.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/AccessAnnotationChecker.java @@ -28,10 +28,10 @@ import java.lang.reflect.Modifier; import java.security.Principal; import java.util.function.Function; -import javax.annotation.security.DenyAll; -import javax.annotation.security.PermitAll; -import javax.annotation.security.RolesAllowed; -import javax.servlet.http.HttpServletRequest; +import jakarta.annotation.security.DenyAll; +import jakarta.annotation.security.PermitAll; +import jakarta.annotation.security.RolesAllowed; +import jakarta.servlet.http.HttpServletRequest; import com.vaadin.flow.server.VaadinRequest; import com.vaadin.flow.server.auth.AnonymousAllowed; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/VaadinConnectAccessChecker.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/VaadinConnectAccessChecker.java index 927cf311..c498d8c5 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/VaadinConnectAccessChecker.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/connect/auth/VaadinConnectAccessChecker.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.vaadin.connect.auth; import java.lang.reflect.Method; -import javax.annotation.security.DenyAll; -import javax.annotation.security.PermitAll; -import javax.annotation.security.RolesAllowed; +import jakarta.annotation.security.DenyAll; +import jakarta.annotation.security.PermitAll; +import jakarta.annotation.security.RolesAllowed; import com.vaadin.flow.server.auth.AnonymousAllowed; diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/DevServerWebSocketProxy.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/DevServerWebSocketProxy.java new file mode 100644 index 00000000..950c2e62 --- /dev/null +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/DevServerWebSocketProxy.java @@ -0,0 +1,113 @@ +package com.github.mcollovati.vertx.vaadin.devserver; + +import java.util.function.Supplier; + +import io.vertx.core.Future; +import io.vertx.core.Handler; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.http.HttpClientOptions; +import io.vertx.core.http.ServerWebSocket; +import io.vertx.core.http.WebSocket; +import io.vertx.core.http.WebSocketConnectOptions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class DevServerWebSocketProxy implements Handler { + + private static final Logger logger = LoggerFactory.getLogger(DevServerWebSocketProxy.class); + + private static final int DEFAULT_TIMEOUT = 120 * 1000; + + private Supplier> wsClientFactory; + + private DevServerWebSocketProxy(Supplier> wsClientFactory) { + this.wsClientFactory = wsClientFactory; + } + + @Override + public void handle(ServerWebSocket browserSocket) { + new Proxy(browserSocket, wsClientFactory.get()); + } + + private static class Proxy { + private final ServerWebSocket browserSocket; + private WebSocket devServerSocket; + + Proxy(ServerWebSocket browserSocket, Future devServerSocket) { + Promise handshakePromise = Promise.promise(); + this.browserSocket = browserSocket; + this.browserSocket.setHandshake(handshakePromise.future()); + this.browserSocket.textMessageHandler(this::sendToDevServer); + this.browserSocket.closeHandler(closeEvent -> this.closeDevServerSession()); + + devServerSocket.andThen(ev -> { + if (ev.succeeded()) { + handshakePromise.complete(101); + this.devServerSocket = ev.result(); + this.devServerSocket.textMessageHandler(this::sendToBrowser); + this.devServerSocket.closeHandler(unused -> this.closeBrowserSession()); + } else { + handshakePromise.fail(ev.cause()); + logger.error("Cannot connect to Dev Server WebSocket", ev.cause()); + } + }); + } + + private void sendToBrowser(String message) { + if (browserSocket != null) { + browserSocket.writeTextMessage(message, res -> { + if (res.succeeded()) { + logger.debug("Message sent to browser: {}", message); + } else { + logger.debug("Error sending message to browser: {}", message, res.cause()); + } + }); + } else { + logger.debug("Cannot forward message to Browser because websocket is not ready: {}", message); + } + } + + private void closeBrowserSession() { + if (browserSocket != null) { + browserSocket.close(devServerSocket.closeStatusCode(), devServerSocket.closeReason()); + } else { + logger.debug("Cannot close Browser websocket because it is not ready"); + } + } + + private void sendToDevServer(String message) { + if (devServerSocket != null) { + devServerSocket.writeTextMessage(message, res -> { + if (res.succeeded()) { + logger.debug("Got message from browser: {}", message); + } else { + logger.debug("Error sending message to Dev Server: {}", message, res.cause()); + } + }); + } else { + logger.debug("Cannot forward message to Dev Server because websocket is not ready: {}", message); + } + } + + private void closeDevServerSession() { + if (devServerSocket != null) { + devServerSocket.close(); + } else { + logger.debug("Cannot close Dev Server websocket because it is not ready"); + } + } + } + + public static DevServerWebSocketProxy createWebsocketProxy(Vertx vertx, int port, String path) { + HttpClientOptions options = new HttpClientOptions() + .setLogActivity(true) + .setConnectTimeout(DEFAULT_TIMEOUT) + .setIdleTimeout(DEFAULT_TIMEOUT) + .setDefaultHost("localhost") + .setDefaultPort(port); + WebSocketConnectOptions wsOptions = + new WebSocketConnectOptions().addSubProtocol("vite-hmr").setURI(path); + return new DevServerWebSocketProxy(() -> vertx.createHttpClient(options).webSocket(wsOptions)); + } +} diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/VertxDevModeHandlerManager.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/VertxDevModeHandlerManager.java index 9bc3310f..9392a143 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/VertxDevModeHandlerManager.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/devserver/VertxDevModeHandlerManager.java @@ -78,7 +78,7 @@ private static AbstractDevServerRunner unwrapHandler(DevModeHandler devModeHandl + devModeHandler.getClass().getName()); } - public static CompletableFuture getDevModeHandlerFuture(DevModeHandler devModeHandler) { + public static CompletableFuture getDevModeHandlerPort(DevModeHandler devModeHandler) { try { Field devServerStartFuture = AbstractDevServerRunner.class.getDeclaredField("devServerStartFuture"); devServerStartFuture.setAccessible(true); diff --git a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/sockjs/communication/VertxVaadinLiveReload.java b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/sockjs/communication/VertxVaadinLiveReload.java index 8680f616..e72ccfee 100644 --- a/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/sockjs/communication/VertxVaadinLiveReload.java +++ b/vertx-vaadin-flow/src/main/java/com/github/mcollovati/vertx/vaadin/sockjs/communication/VertxVaadinLiveReload.java @@ -31,4 +31,15 @@ public interface VertxVaadinLiveReload { * Requests reload */ void reload(); + + /** + * Request an update of the resource with the given path. + * + * @param path + * the path of the file to update, relative to the servlet path + * @param content + * the new content of the file + */ + void update(String path, String content); + } diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockDeploymentConfiguration.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockDeploymentConfiguration.java index 6fffd377..f3463e44 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockDeploymentConfiguration.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockDeploymentConfiguration.java @@ -71,15 +71,6 @@ public void setProductionMode(boolean productionMode) { this.productionMode = productionMode; } - public void setEnableDevServer(boolean enableDevServer) { - this.enableDevServer = enableDevServer; - } - - @Override - public boolean enableDevServer() { - return enableDevServer; - } - public void setReuseDevServer(boolean reuseDevServer) { this.reuseDevServer = reuseDevServer; } @@ -184,15 +175,6 @@ public void setBrotli(boolean brotli) { this.brotli = brotli; } - @Override - public boolean useV14Bootstrap() { - return useDeprecatedV14Bootstrapping; - } - - public void useDeprecatedV14Bootstrapping(boolean useDeprecatedV14Bootstrapping) { - this.useDeprecatedV14Bootstrapping = useDeprecatedV14Bootstrapping; - } - @Override public boolean isEagerServerLoad() { return this.eagerServerLoad; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockServiceSessionSetup.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockServiceSessionSetup.java index a3e1b7c0..f7f411d1 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockServiceSessionSetup.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/utils/MockServiceSessionSetup.java @@ -24,7 +24,6 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.concurrent.LinkedBlockingDeque; @@ -37,8 +36,6 @@ import com.vaadin.flow.router.DefaultRoutePathProvider; import com.vaadin.flow.router.RoutePathProvider; import com.vaadin.flow.router.Router; -import com.vaadin.flow.server.BootstrapListener; -import com.vaadin.flow.server.BootstrapPageResponse; import com.vaadin.flow.server.DependencyFilter; import com.vaadin.flow.server.RouteRegistry; import com.vaadin.flow.server.ServiceException; @@ -222,8 +219,6 @@ public class TestVertxVaadinService extends VertxVaadinService { private TestRouteRegistry routeRegistry = new TestRouteRegistry(); private Router router; private Instantiator instantiator; - private List bootstrapListeners = new ArrayList<>(); - public TestVertxVaadinService(VertxVaadin vertxVaadin, DeploymentConfiguration deploymentConfiguration) { super(vertxVaadin, deploymentConfiguration); } @@ -264,16 +259,6 @@ public void setRouter(Router router) { this.router = router; } - public void addBootstrapListener(BootstrapListener listener) { - bootstrapListeners.add(listener); - } - - @Override - public void modifyBootstrapPage(BootstrapPageResponse response) { - bootstrapListeners.forEach(listener -> listener.modifyBootstrapPage(response)); - - super.modifyBootstrapPage(response); - } public void init(Instantiator instantiator) { this.instantiator = instantiator; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/StartupContextTest.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/StartupContextTest.java index 372a600a..b2ad9217 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/StartupContextTest.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/StartupContextTest.java @@ -56,9 +56,10 @@ public void testGetResourcePaths() { assertThat(resourcePaths).isNotEmpty().allMatch(isChildOf("")); System.out.println(resourcePaths); - resourcePaths = startupContext.servletContext().getResourcePaths("webjars"); - assertThat(resourcePaths).isNotEmpty().allMatch(isChildOf("webjars/")); - System.out.println(resourcePaths); + // TODO: remove, webjars are not used anymore + //resourcePaths = startupContext.servletContext().getResourcePaths("webjars"); + //assertThat(resourcePaths).isNotEmpty().allMatch(isChildOf("webjars/")); + //System.out.println(resourcePaths); } @Test diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/TestUtil.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/TestUtil.java new file mode 100644 index 00000000..f3b83d56 --- /dev/null +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/TestUtil.java @@ -0,0 +1,131 @@ +package com.github.mcollovati.vertx.vaadin; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.lang.ref.WeakReference; +import java.util.Iterator; +import java.util.Objects; + +import com.vaadin.flow.server.Constants; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Assert; + +import static java.nio.charset.StandardCharsets.UTF_8; + +import static com.vaadin.flow.server.frontend.FrontendUtils.INDEX_HTML; +import static com.vaadin.flow.server.frontend.FrontendUtils.THEME_IMPORTS_NAME; +import static com.vaadin.flow.server.frontend.FrontendUtils.WEB_COMPONENT_HTML; + +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ +public class TestUtil { + public static void assertArrays(Object[] actualObjects, Object[] expectedObjects) { + Assert.assertEquals( + "Actual contains a different number of values than was expected", + expectedObjects.length, + actualObjects.length); + + for (int i = 0; i < actualObjects.length; i++) { + Object actual = actualObjects[i]; + Object expected = expectedObjects[i]; + + Assert.assertEquals("Item[" + i + "] does not match", expected, actual); + } + } + + public static void assertIterableEquals(Iterable iterable1, Iterable iterable2) { + Iterator i1 = iterable1.iterator(); + Iterator i2 = iterable2.iterator(); + + while (i1.hasNext()) { + Object o1 = i1.next(); + if (!i2.hasNext()) { + Assert.fail("The second iterable contains fewer items than the first. The object " + o1 + + " has no match in the second iterable."); + } + Object o2 = i2.next(); + Assert.assertEquals(o1, o2); + } + if (i2.hasNext()) { + Assert.fail("The second iterable contains more items than the first. The object " + + i2.next() + + " has no match in the first iterable."); + } + } + + /** + * Checks whether a weak reference is garbage collected. This methods also + * tries to force collection of the reference by doing a few iterations of + * {@link System#gc()}. + * + * @param ref + * the weak reference to check + * @return true if the reference has been collected, + * false if the reference is still reachable + * @throws InterruptedException + * if interrupted while waiting for garbage collection to finish + */ + public static boolean isGarbageCollected(WeakReference ref) throws InterruptedException { + for (int i = 0; i < 5; i++) { + System.gc(); + if (ref.get() == null) { + return true; + } + } + return false; + } + + public static void createIndexHtmlStub(File projectRootFolder) throws IOException { + createStubFileInFrontend(projectRootFolder, INDEX_HTML); + } + + public static void createWebComponentHtmlStub(File projectRootFolder) throws IOException { + createStubFileInFrontend(projectRootFolder, WEB_COMPONENT_HTML); + } + + public static void createStubFileInFrontend(File projectRootFolder, String stubFileName) throws IOException { + try (InputStream indexStream = + TestUtil.class.getClassLoader().getResourceAsStream("frontend/" + stubFileName)) { + String indexHtmlContent = IOUtils.toString(Objects.requireNonNull(indexStream), UTF_8); + File indexHtml = new File(new File(projectRootFolder, "frontend"), stubFileName); + FileUtils.forceMkdirParent(indexHtml); + FileUtils.writeStringToFile(indexHtml, indexHtmlContent, UTF_8); + } + } + + public static void createStatsJsonStub(File projectRootFolder) throws IOException { + String content = "{\"npmModules\": {}, " + + "\"entryScripts\": [\"foo.js\"], " + + "\"packageJsonHash\": \"42\"," + + "\"indexHtmlGenerated\": []}"; + createStubFile(projectRootFolder, "target/" + Constants.DEV_BUNDLE_LOCATION + "/config/stats.json", content); + } + + public static void createStylesCssStubInBundle(File projectRootFolder, String themeName, String content) + throws IOException { + createStubFile( + projectRootFolder, + "target/" + Constants.DEV_BUNDLE_LOCATION + "/assets/themes/" + themeName + "/styles.css", + content); + } + + public static void createThemeJs(File projectRootFolder) throws IOException { + String content = "import {applyTheme as _applyTheme} from './theme-my-theme.generated.js';" + + "export const applyTheme = _applyTheme;"; + createStubFile(projectRootFolder, "frontend/generated/" + THEME_IMPORTS_NAME, content); + } + + public static void createStyleCssStubInFrontend(File projectRootFolder, String themeName, String content) + throws IOException { + createStubFile(projectRootFolder, "frontend/themes/" + themeName + "/styles.css", content); + } + + public static void createStubFile(File projectRootFolder, String relativePath, String content) throws IOException { + File stub = new File(projectRootFolder, relativePath); + FileUtils.forceMkdirParent(stub); + FileUtils.writeStringToFile(stub, content, UTF_8); + } +} diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VaadinVerticleUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VaadinVerticleUT.java index a0fc1a3e..1993376f 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VaadinVerticleUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VaadinVerticleUT.java @@ -26,7 +26,7 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; -import javax.servlet.ServletException; +import jakarta.servlet.ServletException; import com.vaadin.flow.i18n.I18NProvider; import com.vaadin.flow.server.InitParameters; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServerTest.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServerTest.java index 89e7cf68..728b9d2b 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServerTest.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxStaticFileServerTest.java @@ -22,6 +22,9 @@ */ package com.github.mcollovati.vertx.vaadin; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.HttpServletResponse; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -47,13 +50,11 @@ import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletResponse; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.internal.CurrentInstance; import com.vaadin.flow.server.HttpStatusCode; +import com.vaadin.flow.server.Mode; import com.vaadin.flow.server.VaadinService; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpHeaders; @@ -66,6 +67,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.mockito.Mockito; @@ -80,8 +82,14 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.matches; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ public class VertxStaticFileServerTest implements Serializable { + @Rule + public TemporaryFolder temporaryFolder = new TemporaryFolder(); + private OverrideableStaticFileServer fileServer; private RoutingContext routingContext; private HttpServerRequest request; @@ -204,6 +212,15 @@ public boolean matches(Object item) { configuration = Mockito.mock(DeploymentConfiguration.class); Mockito.when(configuration.isProductionMode()).thenReturn(true); + Mockito.when(configuration.getMode()).thenAnswer(q -> { + if (configuration.isProductionMode()) { + return Mode.PRODUCTION_CUSTOM; + } else if (configuration.frontendHotdeploy()) { + return Mode.DEVELOPMENT_FRONTEND_LIVERELOAD; + } else { + return Mode.DEVELOPMENT_BUNDLE; + } + }); Mockito.when(vaadinService.getDeploymentConfiguration()).thenReturn(configuration); @@ -1104,6 +1121,54 @@ public void getStaticResource_delegateToVaadinService() throws MalformedURLExcep Assert.assertSame(url, result); } + @Test + public void serveStaticResource_projectThemeResourceRequest_serveFromFrontend() throws IOException { + File projectRootFolder = temporaryFolder.newFolder(); + final String styles = "body { background: black; }"; + TestUtil.createStyleCssStubInFrontend(projectRootFolder, "my-theme", styles); + + Mockito.when(configuration.frontendHotdeploy()).thenReturn(false); + Mockito.when(configuration.isProductionMode()).thenReturn(false); + Mockito.when(configuration.getProjectFolder()).thenReturn(projectRootFolder); + Mockito.when(configuration.getBuildFolder()).thenReturn("target"); + + setupRequestURI("", "/VAADIN/themes/my-theme/styles.css"); + Assert.assertTrue(fileServer.serveStaticResource(routingContext)); + Assert.assertArrayEquals(styles.getBytes(StandardCharsets.UTF_8), responseOutput.getBytes()); + } + + @Test + public void serveStaticResource_externalThemeResourceRequest_serveFromBundle() throws IOException { + File projectRootFolder = temporaryFolder.newFolder(); + final String styles = "body { background: black; }"; + TestUtil.createStylesCssStubInBundle(projectRootFolder, "my-theme", styles); + + Mockito.when(configuration.frontendHotdeploy()).thenReturn(false); + Mockito.when(configuration.isProductionMode()).thenReturn(false); + Mockito.when(configuration.getProjectFolder()).thenReturn(projectRootFolder); + Mockito.when(configuration.getBuildFolder()).thenReturn("target"); + + setupRequestURI("", "/VAADIN/themes/my-theme/styles.css"); + Assert.assertTrue(fileServer.serveStaticResource(routingContext)); + Assert.assertArrayEquals(styles.getBytes(StandardCharsets.UTF_8), responseOutput.getBytes()); + } + + @Test + public void serveStaticResource_themeResourceRequest_productionMode_notServeFromBundleNorFromFrontend() + throws IOException { + File projectRootFolder = temporaryFolder.newFolder(); + final String styles = "body { background: black; }"; + TestUtil.createStylesCssStubInBundle(projectRootFolder, "my-theme", styles); + + Mockito.when(configuration.frontendHotdeploy()).thenReturn(false); + Mockito.when(configuration.isProductionMode()).thenReturn(true); + Mockito.when(configuration.getProjectFolder()).thenReturn(projectRootFolder); + Mockito.when(configuration.getBuildFolder()).thenReturn("target"); + + setupRequestURI("", "/themes/my-theme/styles.css"); + Assert.assertFalse(fileServer.serveStaticResource(routingContext)); + } + private static class CapturingServletOutputStream extends ServletOutputStream { ByteArrayOutputStream baos = new ByteArrayOutputStream(); diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequestUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequestUT.java index dd6e2f98..60663682 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequestUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinRequestUT.java @@ -331,7 +331,7 @@ public void shouldDelegateGetCookies() { when(routingContext.cookieMap()) .thenReturn(Stream.of(cookie1, cookie2).collect(Collectors.toMap(Cookie::getName, identity()))); assertThat(vaadinRequest.getCookies()).isNull(); - javax.servlet.http.Cookie[] cookies = vaadinRequest.getCookies(); + jakarta.servlet.http.Cookie[] cookies = vaadinRequest.getCookies(); assertThat(cookies).hasSize(2); assertThat(cookies[0]) .extracting("name", "value", "domain", "httpOnly", "maxAge", "path", "secure") diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponseUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponseUT.java index 007ad5ca..ef8e7e56 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponseUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinResponseUT.java @@ -28,7 +28,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import javax.servlet.http.Cookie; +import jakarta.servlet.http.Cookie; import com.pholser.junit.quickcheck.From; import com.pholser.junit.quickcheck.Property; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinServiceUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinServiceUT.java index 79d3bfd3..791b0cdf 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinServiceUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxVaadinServiceUT.java @@ -25,8 +25,6 @@ import java.net.MalformedURLException; import java.net.URL; -import com.vaadin.flow.internal.UsageStatistics; -import com.vaadin.flow.server.Constants; import io.vertx.core.http.HttpServerRequest; import io.vertx.core.net.SocketAddress; import io.vertx.core.net.impl.SocketAddressImpl; @@ -80,14 +78,6 @@ public void resolveResourceNPM_production() { Assert.assertEquals("/foo", service.resolveResource("context://foo")); } - @Test - public void should_report_flow_bootstrapHandler() { - mocks.getDeploymentConfiguration().useDeprecatedV14Bootstrapping(true); - - Assert.assertTrue(UsageStatistics.getEntries() - .anyMatch(e -> Constants.STATISTIC_FLOW_BOOTSTRAPHANDLER.equals(e.getName()))); - } - private String testLocation(String base, String contextPath, String pathInfo) throws Exception { RoutingContext routingContext = createRequest(base, contextPath, pathInfo); diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionUT.java index ee1f8a12..27b3d047 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionUT.java @@ -25,8 +25,8 @@ import java.time.Instant; import java.util.HashMap; import java.util.Map; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionBindingListener; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionBindingListener; import org.assertj.core.api.ThrowableAssert; import org.junit.Before; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithClusteredSessionStoreUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithClusteredSessionStoreUT.java index 6a699682..73507683 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithClusteredSessionStoreUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithClusteredSessionStoreUT.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionBindingListener; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionBindingListener; import io.vertx.core.Vertx; import io.vertx.ext.unit.Async; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithLocalSessionStoreUT.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithLocalSessionStoreUT.java index cc2dc94d..6b817e79 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithLocalSessionStoreUT.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/VertxWrappedSessionWithLocalSessionStoreUT.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionBindingListener; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionBindingListener; import io.vertx.core.Vertx; import io.vertx.ext.unit.Async; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/VertxVaadinConnectEndpointServiceTest.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/VertxVaadinConnectEndpointServiceTest.java index 353c94d1..45a0326e 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/VertxVaadinConnectEndpointServiceTest.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/VertxVaadinConnectEndpointServiceTest.java @@ -31,11 +31,11 @@ import java.util.List; import java.util.Map; import java.util.stream.Stream; -import javax.annotation.security.DenyAll; -import javax.annotation.security.PermitAll; -import javax.annotation.security.RolesAllowed; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; +import jakarta.annotation.security.DenyAll; +import jakarta.annotation.security.PermitAll; +import jakarta.annotation.security.RolesAllowed; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.JsonMappingException; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/auth/VertxConnectAccessCheckerTest.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/auth/VertxConnectAccessCheckerTest.java index 1c48702c..798851bb 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/auth/VertxConnectAccessCheckerTest.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/connect/auth/VertxConnectAccessCheckerTest.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.vaadin.connect.auth; import java.lang.reflect.Method; -import javax.annotation.security.DenyAll; -import javax.annotation.security.PermitAll; -import javax.annotation.security.RolesAllowed; +import jakarta.annotation.security.DenyAll; +import jakarta.annotation.security.PermitAll; +import jakarta.annotation.security.RolesAllowed; import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.auth.AnonymousAllowed; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/AnotherTestInstantiatorFactory.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/AnotherTestInstantiatorFactory.java index f0d78faf..c82ef24f 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/AnotherTestInstantiatorFactory.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/AnotherTestInstantiatorFactory.java @@ -34,11 +34,6 @@ public class AnotherTestInstantiatorFactory implements InstantiatorFactory { public static class TestInstantiator implements Instantiator { - @Override - public boolean init(VaadinService service) { - return false; - } - @Override public Stream getServiceInitListeners() { return null; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/OneMoreTestInstantiatorFactory.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/OneMoreTestInstantiatorFactory.java index 06e59a69..d32707f0 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/OneMoreTestInstantiatorFactory.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/OneMoreTestInstantiatorFactory.java @@ -34,11 +34,6 @@ public class OneMoreTestInstantiatorFactory implements InstantiatorFactory { public static class TestInstantiator implements Instantiator { - @Override - public boolean init(VaadinService service) { - return false; - } - @Override public Stream getServiceInitListeners() { return null; diff --git a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/TestInstantiatorFactory.java b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/TestInstantiatorFactory.java index bca711f7..7f0d0e7c 100644 --- a/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/TestInstantiatorFactory.java +++ b/vertx-vaadin-flow/src/test/java/com/github/mcollovati/vertx/vaadin/startup/testdata/TestInstantiatorFactory.java @@ -34,11 +34,6 @@ public class TestInstantiatorFactory implements InstantiatorFactory { public static class TestInstantiator implements Instantiator { - @Override - public boolean init(VaadinService service) { - return false; - } - @Override public Stream getServiceInitListeners() { return null; diff --git a/vertx-vaadin-flow/src/test/resources/frontend/index.html b/vertx-vaadin-flow/src/test/resources/frontend/index.html new file mode 100644 index 00000000..8cde5d67 --- /dev/null +++ b/vertx-vaadin-flow/src/test/resources/frontend/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + + +

+ + diff --git a/vertx-vaadin-flow/src/test/resources/frontend/my-lit-element-view.js b/vertx-vaadin-flow/src/test/resources/frontend/my-lit-element-view.js new file mode 100644 index 00000000..42bf9fdc --- /dev/null +++ b/vertx-vaadin-flow/src/test/resources/frontend/my-lit-element-view.js @@ -0,0 +1,19 @@ + +import { LitElement, html } from "lit"; + +export class SimpleLitTemplateShadowRoot extends LitElement { + static get properties() { + return { + text: String + }; + } + render() { + return html` + + + +
+ `; + } +} +customElements.define("my-lit-element-view", SimpleLitTemplateShadowRoot); diff --git a/vertx-vaadin-flow/src/test/resources/frontend/web-component.html b/vertx-vaadin-flow/src/test/resources/frontend/web-component.html new file mode 100644 index 00000000..646e713e --- /dev/null +++ b/vertx-vaadin-flow/src/test/resources/frontend/web-component.html @@ -0,0 +1,13 @@ + + + + + + + +
+ +
+ + + diff --git a/vertx-vaadin-quarkus-extension/deployment/pom.xml b/vertx-vaadin-quarkus-extension/deployment/pom.xml index 1d576aaf..b8ea2ed1 100644 --- a/vertx-vaadin-quarkus-extension/deployment/pom.xml +++ b/vertx-vaadin-quarkus-extension/deployment/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-extension-parent - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-extension-deployment Vertx Vaadin Extension - Deployment diff --git a/vertx-vaadin-quarkus-extension/deployment/src/main/java/com/github/mcollovati/vertx/vaadin/extension/deployment/VertxVaadinExtensionProcessor.java b/vertx-vaadin-quarkus-extension/deployment/src/main/java/com/github/mcollovati/vertx/vaadin/extension/deployment/VertxVaadinExtensionProcessor.java index c4183e68..84654875 100644 --- a/vertx-vaadin-quarkus-extension/deployment/src/main/java/com/github/mcollovati/vertx/vaadin/extension/deployment/VertxVaadinExtensionProcessor.java +++ b/vertx-vaadin-quarkus-extension/deployment/src/main/java/com/github/mcollovati/vertx/vaadin/extension/deployment/VertxVaadinExtensionProcessor.java @@ -37,7 +37,7 @@ import org.jboss.jandex.ClassInfo; import org.jboss.jandex.DotName; -import com.github.mcollovati.vertx.quarkus.QuarkusInstantiator; +import com.github.mcollovati.vertx.quarkus.QuarkusInstantiatorFactory; import com.github.mcollovati.vertx.quarkus.annotation.NormalRouteScoped; import com.github.mcollovati.vertx.quarkus.annotation.NormalUIScoped; import com.github.mcollovati.vertx.quarkus.annotation.RouteScoped; @@ -66,7 +66,7 @@ FeatureBuildItem feature() { public void build( final BuildProducer additionalBeanProducer, final BuildProducer additionalBeanDefiningAnnotationRegistry) { - additionalBeanProducer.produce(AdditionalBeanBuildItem.unremovableOf(QuarkusInstantiator.class.getName())); + additionalBeanProducer.produce(AdditionalBeanBuildItem.unremovableOf(QuarkusInstantiatorFactory.class.getName())); // Make and Route annotated Component a bean for injection additionalBeanDefiningAnnotationRegistry.produce(new BeanDefiningAnnotationBuildItem(ROUTE_ANNOTATION)); } diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/pom.xml index c4f547fb..f4f28d87 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-extension-common-test-code Vertx Vaadin Extension - Common code for dev and prod diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/Counter.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/Counter.java index 0775024a..b6db3220 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/Counter.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/Counter.java @@ -24,7 +24,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class Counter { diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/SmokeTestView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/SmokeTestView.java index 30c02a2e..14944908 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/SmokeTestView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/SmokeTestView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticle.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticle.java index 343ea0c2..99f64a7f 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticle.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticle.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import io.vertx.core.http.HttpServerRequest; import io.vertx.ext.web.Router; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticleDeployer.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticleDeployer.java index f85e59b4..d9845a56 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticleDeployer.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/TestVerticleDeployer.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.event.Observes; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; import io.quarkus.runtime.StartupEvent; import io.vertx.core.Vertx; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/addons/AddonsView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/addons/AddonsView.java index 11dc141b..5b3bc1fc 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/addons/AddonsView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/addons/AddonsView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.addons; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.router.Route; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedBean.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedBean.java index 47bc23b7..45aeaf78 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedBean.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedBean.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; public class AbstractCountedBean implements CountedPerUI { diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedView.java index 64b0525e..6ce407c4 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/AbstractCountedView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ChildNoOwnerView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ChildNoOwnerView.java index 3da04ff2..c30f4ad8 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ChildNoOwnerView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ChildNoOwnerView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; +import jakarta.enterprise.inject.Instance; +import jakarta.inject.Inject; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailApartView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailApartView.java index 1d7bc46e..8cab0ddc 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailApartView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailApartView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailAssignedView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailAssignedView.java index 1043a354..a18a61fa 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailAssignedView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/DetailAssignedView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorHandlerView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorHandlerView.java index 457a13f8..1505c109 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorHandlerView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorHandlerView.java @@ -23,10 +23,10 @@ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; import java.util.UUID; -import javax.annotation.PostConstruct; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; -import javax.servlet.http.HttpServletResponse; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.inject.Instance; +import jakarta.inject.Inject; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.NativeButton; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorParentView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorParentView.java index 4a4b1b38..7d4c75d4 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorParentView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ErrorParentView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.vaadin.flow.router.Route; import com.vaadin.flow.router.RouterLayout; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/EventView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/EventView.java index 35c77ed5..c1df7fdb 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/EventView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/EventView.java @@ -22,10 +22,10 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.enterprise.event.Event; -import javax.enterprise.event.Observes; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.event.Event; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/InvalidView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/InvalidView.java index acc9ec8f..246564da 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/InvalidView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/InvalidView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.inject.Inject; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.router.Route; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/MasterView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/MasterView.java index 7f24df02..bc173901 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/MasterView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/MasterView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ParentNoOwnerView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ParentNoOwnerView.java index 531fd1d1..5f5d79e3 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ParentNoOwnerView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/ParentNoOwnerView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.inject.Inject; +import jakarta.inject.Inject; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PostponeView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PostponeView.java index e570dea3..19aecfc3 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PostponeView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PostponeView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.NativeButton; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshBean.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshBean.java index e5424349..6fd8c768 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshBean.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshBean.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; import java.util.UUID; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.github.mcollovati.vertx.quarkus.annotation.NormalRouteScoped; import com.github.mcollovati.vertx.quarkus.annotation.RouteScopeOwner; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshView.java index 96d03df5..04526367 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/PreserveOnRefreshView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.enterprise.inject.Instance; -import javax.inject.Inject; +import jakarta.enterprise.inject.Instance; +import jakarta.inject.Inject; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/RootView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/RootView.java index ef8e28d3..ea826c86 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/RootView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/routecontext/RootView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.routecontext; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/BootstrapCustomizer.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/BootstrapCustomizer.java index 5c01c34c..59033129 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/BootstrapCustomizer.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/BootstrapCustomizer.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.service; -import javax.enterprise.event.Observes; +import jakarta.enterprise.event.Observes; import com.vaadin.flow.server.ServiceInitEvent; import com.vaadin.flow.server.communication.IndexHtmlResponse; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/EventObserver.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/EventObserver.java index b340c6a3..71927acb 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/EventObserver.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/EventObserver.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.service; -import javax.enterprise.event.Observes; -import javax.inject.Inject; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; import com.vaadin.flow.server.SessionDestroyEvent; import com.vaadin.flow.server.SessionInitEvent; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceBean.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceBean.java index a7b85de5..52151d16 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceBean.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceBean.java @@ -24,7 +24,7 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceScoped; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceView.java index 7e46341b..a35cb543 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/ServiceView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.service; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/TestErrorHandler.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/TestErrorHandler.java index 7edb24ae..933adf0a 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/TestErrorHandler.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/service/TestErrorHandler.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.service; -import javax.inject.Inject; +import jakarta.inject.Inject; import com.vaadin.flow.server.ErrorEvent; import com.vaadin.flow.server.ErrorHandler; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/sessioncontext/SessionContextView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/sessioncontext/SessionContextView.java index 69a29781..3f516793 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/sessioncontext/SessionContextView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/sessioncontext/SessionContextView.java @@ -22,9 +22,9 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.sessioncontext; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIContextRootView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIContextRootView.java index d632b7b6..3583e75b 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIContextRootView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIContextRootView.java @@ -22,9 +22,9 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; -import javax.annotation.PostConstruct; -import javax.enterprise.event.Event; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.event.Event; +import jakarta.inject.Inject; import com.vaadin.flow.component.UI; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UINormalScopedBeanView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UINormalScopedBeanView.java index 5af273c3..29ce652e 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UINormalScopedBeanView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UINormalScopedBeanView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.UI; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopeInjecterView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopeInjecterView.java index 54aab368..cae05a26 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopeInjecterView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopeInjecterView.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; -import javax.annotation.PostConstruct; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.router.Route; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedBean.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedBean.java index 87932371..cdae70cd 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedBean.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedBean.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; import java.util.UUID; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import jakarta.inject.Inject; import com.vaadin.flow.component.UI; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedLabel.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedLabel.java index 8b78cf55..0812b04a 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedLabel.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedLabel.java @@ -22,9 +22,9 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; -import javax.annotation.PreDestroy; -import javax.enterprise.event.Observes; -import javax.inject.Inject; +import jakarta.annotation.PreDestroy; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; import com.vaadin.flow.component.UI; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedView.java index d2ab697b..cf27009a 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uicontext/UIScopedView.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.vaadin.quarkus.it.uicontext; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.component.html.Label; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/NavigationObserver.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/NavigationObserver.java index 72624e0d..504dbb19 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/NavigationObserver.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/NavigationObserver.java @@ -26,7 +26,7 @@ import java.util.ArrayList; import java.util.EventObject; import java.util.List; -import javax.enterprise.event.Observes; +import jakarta.enterprise.event.Observes; import com.vaadin.flow.router.AfterNavigationEvent; import com.vaadin.flow.router.BeforeEnterEvent; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/UIEventsView.java b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/UIEventsView.java index 2ee3e658..93c6fbf8 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/UIEventsView.java +++ b/vertx-vaadin-quarkus-extension/integration-tests/common-test-code/src/main/java/com/github/mcollovati/vertx/vaadin/quarkus/it/uievents/UIEventsView.java @@ -24,9 +24,9 @@ import java.util.EventObject; import java.util.List; -import javax.annotation.PostConstruct; -import javax.enterprise.event.Observes; -import javax.inject.Inject; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.event.Observes; +import jakarta.inject.Inject; import com.vaadin.flow.component.HasElement; import com.vaadin.flow.component.PollEvent; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/index.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/index.ts deleted file mode 100644 index c20aa03f..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -/****************************************************************************** - * This file is auto-generated by Vaadin. - * If you want to customize the entry point, you can copy this file or create - * your own `index.ts` in your frontend directory. - * By default, the `index.ts` file should be in `./frontend/` folder. - * - * NOTE: - * - You need to restart the dev-server after adding the new `index.ts` file. - * After that, all modifications to `index.ts` are recompiled automatically. - * - `index.js` is also supported if you don't want to use TypeScript. - ******************************************************************************/ - -// import Vaadin client-router to handle client-side and server-side navigation -import { Router } from '@vaadin/router'; - -// import Flow module to enable navigation to Vaadin server-side views -import { Flow } from 'Frontend/generated/jar-resources/Flow.js'; - -const { serverSideRoutes } = new Flow({ - imports: () => import('../../target/frontend/generated-flow-imports.js') -}); - -const routes = [ - // for client-side, place routes below (more info https://vaadin.com/docs/v15/flow/typescript/creating-routes.html) - - // for server-side, the next magic line sends all unmatched routes: - ...serverSideRoutes // IMPORTANT: this must be the last entry in the array -]; - -// Vaadin router needs an outlet in the index.html page to display views -const router = new Router(document.querySelector('#outlet')); -router.setRoutes(routes); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.d.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.d.ts index efbbbe84..a6b01dff 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.d.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.d.ts @@ -5,7 +5,6 @@ interface AppConfig { productionMode: boolean; appId: string; uidl: any; - clientRouting: boolean; } interface AppInitResponse { appConfig: AppConfig; @@ -18,6 +17,7 @@ interface HTMLRouterContainer extends HTMLElement { onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise; onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise; serverConnected?: (cancel: boolean, url?: NavigationParameters) => void; + serverPaused?: () => void; } interface FlowRoute { action: (params: NavigationParameters) => Promise; @@ -44,6 +44,7 @@ export declare class Flow { private isActive; private baseRegex; private appShellTitle; + private navigation; constructor(config?: FlowConfig); /** * Return a `route` object for vaadin-router in an one-element array. diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js index 66ab4ae1..999afb2f 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js @@ -14,6 +14,7 @@ export class Flow { // flag used to inform Testbench whether a server route is in progress this.isActive = false; this.baseRegex = /^\//; + this.navigation = ''; flowRoot.$ = flowRoot.$ || []; this.config = config || {}; // TB checks for the existence of window.Vaadin.Flow in order @@ -60,6 +61,30 @@ export class Flow { // Make Testbench know that server request has finished this.isActive = false; $wnd.Vaadin.connectionState.loadingFinished(); + if ($wnd.Vaadin.listener) { + // Listeners registered, do not register again. + return; + } + $wnd.Vaadin.listener = {}; + // Listen for click on router-links -> 'link' navigation trigger + // and on nodes -> 'client' navigation trigger. + // Use capture phase to detect prevented / stopped events. + document.addEventListener('click', (_e) => { + if (_e.target) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (_e.target.hasAttribute('router-link')) { + this.navigation = 'link'; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + } + else if (_e.composedPath().some((node) => node.nodeName === 'A')) { + this.navigation = 'client'; + } + } + }, { + capture: true + }); } get action() { // Return a function which is bound to the flow instance, thus we can use @@ -133,8 +158,14 @@ export class Flow { } this.loadingFinished(); }; + this.container.serverPaused = () => { + this.loadingFinished(); + }; // Call server side to navigate to the given route - flowRoot.$server.connectClient(this.container.localName, this.container.id, this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx), this.appShellTitle, history.state); + flowRoot.$server.connectClient(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx), this.appShellTitle, history.state, this.navigation); + // Default to history navigation trigger. + // Link and client cases are handled by click listener in loadingFinished(). + this.navigation = 'history'; }); } else { @@ -149,15 +180,13 @@ export class Flow { return (context.search && context.search.substring(1)) || ''; } // import flow client modules and initialize UI in server side. - async flowInit(serverSideRouting = false) { + async flowInit() { // Do not start flow twice if (!this.isFlowClientLoaded()) { // show flow progress indicator this.loadingStarted(); // Initialize server side UI - this.response = await this.flowInitUi(serverSideRouting); - // Enable or disable server side routing - this.response.appConfig.clientRouting = !serverSideRouting; + this.response = await this.flowInitUi(); const { pushScript, appConfig } = this.response; if (typeof pushScript === 'string') { await this.loadScript(pushScript); @@ -171,16 +200,20 @@ export class Flow { this.injectAppIdScript(appId); await this.config.imports(); } - // Load flow-client module - const clientMod = await import('./FlowClient'); - await this.flowInitClient(clientMod); - if (!serverSideRouting) { - // we use a custom tag for the flow app container - const tag = `flow-container-${appId.toLowerCase()}`; + // we use a custom tag for the flow app container + const tag = `flow-container-${appId.toLowerCase()}`; + const serverCreatedContainer = document.querySelector(tag); + if (serverCreatedContainer) { + this.container = serverCreatedContainer; + } + else { this.container = document.createElement(tag); - flowRoot.$[appId] = this.container; this.container.id = appId; } + flowRoot.$[appId] = this.container; + // Load flow-client module + const clientMod = await import('./FlowClient'); + await this.flowInitClient(clientMod); // hide flow progress indicator this.loadingFinished(); } @@ -228,7 +261,7 @@ export class Flow { }); } // Returns the `appConfig` object - async flowInitUi(serverSideRouting) { + async flowInitUi() { // appConfig was sent in the index.html request const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial; if (initial) { @@ -239,8 +272,7 @@ export class Flow { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); const httpRequest = xhr; - const serverRoutingParam = serverSideRouting ? '&serverSideRouting' : ''; - const requestPath = `?v-r=init&location=${encodeURIComponent(this.getFlowRoutePath(location))}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}${serverRoutingParam}`; + const requestPath = `?v-r=init&location=${encodeURIComponent(this.getFlowRoutePath(location))}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}`; httpRequest.open('GET', requestPath); httpRequest.onerror = () => reject(new FlowUiInitializationError(`Invalid server response when initializing Flow UI. ${httpRequest.status} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js.map b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js.map index bbd8ef2a..beea9485 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js.map +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/Flow.js.map @@ -1 +1 @@ -{"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../../src/main/frontend/Flow.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ConnectionIndicator,\n ConnectionState,\n ConnectionStateChangeListener,\n ConnectionStateStore\n} from '@vaadin/common-frontend';\n\nexport interface FlowConfig {\n imports?: () => void;\n}\n\nclass FlowUiInitializationError extends Error {}\n\ninterface AppConfig {\n productionMode: boolean;\n appId: string;\n uidl: any;\n clientRouting: boolean;\n}\n\ninterface AppInitResponse {\n appConfig: AppConfig;\n pushScript?: string;\n}\n\ninterface Router {\n render: (ctx: NavigationParameters, shouldUpdateHistory: boolean) => Promise;\n}\n\ninterface HTMLRouterContainer extends HTMLElement {\n onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise;\n onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise;\n serverConnected?: (cancel: boolean, url?: NavigationParameters) => void;\n}\n\ninterface FlowRoute {\n action: (params: NavigationParameters) => Promise;\n path: string;\n}\n\ninterface FlowRoot {\n $: any;\n $server: any;\n}\n\nexport interface NavigationParameters {\n pathname: string;\n search: string;\n}\n\nexport interface PreventCommands {\n prevent: () => any;\n}\n\nexport interface PreventAndRedirectCommands extends PreventCommands {\n redirect: (route: string) => any;\n}\n\n// flow uses body for keeping references\nconst flowRoot: FlowRoot = window.document.body as any;\nconst $wnd = window as any as {\n Vaadin: {\n Flow: any;\n TypeScript: any;\n connectionState: ConnectionStateStore;\n };\n} & EventTarget;\n\n/**\n * Client API for flow UI operations.\n */\nexport class Flow {\n config: FlowConfig;\n response?: AppInitResponse = undefined;\n pathname = '';\n\n container!: HTMLRouterContainer;\n\n // flag used to inform Testbench whether a server route is in progress\n private isActive = false;\n\n private baseRegex = /^\\//;\n private appShellTitle: string;\n\n constructor(config?: FlowConfig) {\n flowRoot.$ = flowRoot.$ || [];\n this.config = config || {};\n\n // TB checks for the existence of window.Vaadin.Flow in order\n // to consider that TB needs to wait for `initFlow()`.\n $wnd.Vaadin = $wnd.Vaadin || {};\n $wnd.Vaadin.Flow = $wnd.Vaadin.Flow || {};\n $wnd.Vaadin.Flow.clients = {\n TypeScript: {\n isActive: () => this.isActive\n }\n };\n\n // Regular expression used to remove the app-context\n const elm = document.head.querySelector('base');\n this.baseRegex = new RegExp(\n `^${\n // IE11 does not support document.baseURI\n (document.baseURI || (elm && elm.href) || '/').replace(/^https?:\\/\\/[^/]+/i, '')\n }`\n );\n this.appShellTitle = document.title;\n // Put a vaadin-connection-indicator in the dom\n this.addConnectionIndicator();\n }\n\n /**\n * Return a `route` object for vaadin-router in an one-element array.\n *\n * The `FlowRoute` object `path` property handles any route,\n * and the `action` returns the flow container without updating the content,\n * delaying the actual Flow server call to the `onBeforeEnter` phase.\n *\n * This is a specific API for its use with `vaadin-router`.\n */\n get serverSideRoutes(): [FlowRoute] {\n return [\n {\n path: '(.*)',\n action: this.action\n }\n ];\n }\n\n loadingStarted() {\n // Make Testbench know that server request is in progress\n this.isActive = true;\n $wnd.Vaadin.connectionState.loadingStarted();\n }\n\n loadingFinished() {\n // Make Testbench know that server request has finished\n this.isActive = false;\n $wnd.Vaadin.connectionState.loadingFinished();\n }\n\n private get action(): (params: NavigationParameters) => Promise {\n // Return a function which is bound to the flow instance, thus we can use\n // the syntax `...serverSideRoutes` in vaadin-router.\n return async (params: NavigationParameters) => {\n // Store last action pathname so as we can check it in events\n this.pathname = params.pathname;\n\n if ($wnd.Vaadin.connectionState.online) {\n try {\n await this.flowInit();\n } catch (error) {\n if (error instanceof FlowUiInitializationError) {\n // error initializing Flow: assume connection lost\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n return this.offlineStubAction();\n } else {\n throw error;\n }\n }\n } else {\n // insert an offline stub\n return this.offlineStubAction();\n }\n\n // When an action happens, navigation will be resolved `onBeforeEnter`\n this.container.onBeforeEnter = (ctx, cmd) => this.flowNavigate(ctx, cmd);\n // For covering the 'server -> client' use case\n this.container.onBeforeLeave = (ctx, cmd) => this.flowLeave(ctx, cmd);\n return this.container;\n };\n }\n\n // Send a remote call to `JavaScriptBootstrapUI` to check\n // whether navigation has to be cancelled.\n private async flowLeave(ctx: NavigationParameters, cmd?: PreventCommands): Promise {\n // server -> server, viewing offline stub, or browser is offline\n const { connectionState } = $wnd.Vaadin;\n if (this.pathname === ctx.pathname || !this.isFlowClientLoaded() || connectionState.offline) {\n return Promise.resolve({});\n }\n // 'server -> client'\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side to cancel navigation\n this.container.serverConnected = (cancel) => {\n resolve(cmd && cancel ? cmd.prevent() : {});\n this.loadingFinished();\n };\n\n // Call server side to check whether we can leave the view\n flowRoot.$server.leaveNavigation(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx));\n });\n }\n\n // Send the remote call to `JavaScriptBootstrapUI` to render the flow\n // route specified by the context\n private async flowNavigate(ctx: NavigationParameters, cmd?: PreventAndRedirectCommands): Promise {\n if (this.response) {\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side once the view is ready\n this.container.serverConnected = (cancel, redirectContext?: NavigationParameters) => {\n if (cmd && cancel) {\n resolve(cmd.prevent());\n } else if (cmd && cmd.redirect && redirectContext) {\n resolve(cmd.redirect(redirectContext.pathname));\n } else {\n this.container.style.display = '';\n resolve(this.container);\n }\n this.loadingFinished();\n };\n\n // Call server side to navigate to the given route\n flowRoot.$server.connectClient(\n this.container.localName,\n this.container.id,\n this.getFlowRoutePath(ctx),\n this.getFlowRouteQuery(ctx),\n this.appShellTitle,\n history.state\n );\n });\n } else {\n // No server response => offline or erroneous connection\n return Promise.resolve(this.container);\n }\n }\n\n private getFlowRoutePath(context: NavigationParameters | Location): string {\n return decodeURIComponent(context.pathname).replace(this.baseRegex, '');\n }\n private getFlowRouteQuery(context: NavigationParameters | Location): string {\n return (context.search && context.search.substring(1)) || '';\n }\n\n // import flow client modules and initialize UI in server side.\n private async flowInit(serverSideRouting = false): Promise {\n // Do not start flow twice\n if (!this.isFlowClientLoaded()) {\n // show flow progress indicator\n this.loadingStarted();\n\n // Initialize server side UI\n this.response = await this.flowInitUi(serverSideRouting);\n\n // Enable or disable server side routing\n this.response.appConfig.clientRouting = !serverSideRouting;\n\n const { pushScript, appConfig } = this.response;\n\n if (typeof pushScript === 'string') {\n await this.loadScript(pushScript);\n }\n const { appId } = appConfig;\n\n // Load bootstrap script with server side parameters\n const bootstrapMod = await import('./FlowBootstrap');\n await bootstrapMod.init(this.response);\n\n // Load custom modules defined by user\n if (typeof this.config.imports === 'function') {\n this.injectAppIdScript(appId);\n await this.config.imports();\n }\n\n // Load flow-client module\n const clientMod = await import('./FlowClient');\n await this.flowInitClient(clientMod);\n\n if (!serverSideRouting) {\n // we use a custom tag for the flow app container\n const tag = `flow-container-${appId.toLowerCase()}`;\n this.container = document.createElement(tag);\n flowRoot.$[appId] = this.container;\n this.container.id = appId;\n }\n\n // hide flow progress indicator\n this.loadingFinished();\n }\n\n // It might be that components created from server expect that their content has been rendered.\n // Appending eagerly the container we avoid these kind of errors.\n // Note that the client router will move this container to the outlet if the navigation succeed\n if (this.container && !this.container.isConnected) {\n this.container.style.display = 'none';\n document.body.appendChild(this.container);\n }\n return this.response!;\n }\n\n private async loadScript(url: string): Promise {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.onload = () => resolve();\n script.onerror = reject;\n script.src = url;\n document.body.appendChild(script);\n });\n }\n\n private injectAppIdScript(appId: string) {\n const appIdWithoutHashCode = appId.substring(0, appId.lastIndexOf('-'));\n const scriptAppId = document.createElement('script');\n scriptAppId.type = 'module';\n scriptAppId.setAttribute('data-app-id', appIdWithoutHashCode);\n document.body.append(scriptAppId);\n }\n\n // After the flow-client javascript module has been loaded, this initializes flow UI\n // in the browser.\n private async flowInitClient(clientMod: any): Promise {\n clientMod.init();\n // client init is async, we need to loop until initialized\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n // client `isActive() == true` while initializing or processing\n const initializing = Object.keys($wnd.Vaadin.Flow.clients)\n .filter((key) => key !== 'TypeScript')\n .reduce((prev, id) => prev || $wnd.Vaadin.Flow.clients[id].isActive(), false);\n if (!initializing) {\n clearInterval(intervalId);\n resolve();\n }\n }, 5);\n });\n }\n\n // Returns the `appConfig` object\n private async flowInitUi(serverSideRouting: boolean): Promise {\n // appConfig was sent in the index.html request\n const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial;\n if (initial) {\n $wnd.Vaadin.TypeScript.initial = undefined;\n return Promise.resolve(initial);\n }\n\n // send a request to the `JavaScriptBootstrapHandler`\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const httpRequest = xhr as any;\n const serverRoutingParam = serverSideRouting ? '&serverSideRouting' : '';\n const requestPath = `?v-r=init&location=${encodeURIComponent(\n this.getFlowRoutePath(location)\n )}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}${serverRoutingParam}`;\n\n httpRequest.open('GET', requestPath);\n\n httpRequest.onerror = () =>\n reject(\n new FlowUiInitializationError(\n `Invalid server response when initializing Flow UI.\n ${httpRequest.status}\n ${httpRequest.responseText}`\n )\n );\n\n httpRequest.onload = () => {\n const contentType = httpRequest.getResponseHeader('content-type');\n if (contentType && contentType.indexOf('application/json') !== -1) {\n resolve(JSON.parse(httpRequest.responseText));\n } else {\n httpRequest.onerror();\n }\n };\n httpRequest.send();\n });\n }\n\n // Create shared connection state store and connection indicator\n private addConnectionIndicator() {\n // add connection indicator to DOM\n ConnectionIndicator.create();\n\n // Listen to browser online/offline events and update the loading indicator accordingly.\n // Note: if flow-client is loaded, it instead handles the state transitions.\n $wnd.addEventListener('online', () => {\n if (!this.isFlowClientLoaded()) {\n // Send an HTTP HEAD request for sw.js to verify server reachability.\n // We do not expect sw.js to be cached, so the request goes to the\n // server rather than being served from local cache.\n // Require network-level failure to revert the state to CONNECTION_LOST\n // (HTTP error code is ok since it still verifies server's presence).\n $wnd.Vaadin.connectionState.state = ConnectionState.RECONNECTING;\n const http = new XMLHttpRequest();\n http.open('HEAD', 'sw.js');\n http.onload = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTED;\n };\n http.onerror = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n };\n // Postpone request to reduce potential net::ERR_INTERNET_DISCONNECTED\n // errors that sometimes occurs even if browser says it is online\n setTimeout(() => http.send(), 50);\n }\n });\n $wnd.addEventListener('offline', () => {\n if (!this.isFlowClientLoaded()) {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n }\n });\n }\n\n private async offlineStubAction() {\n const offlineStub = document.createElement('iframe') as HTMLRouterContainer;\n const offlineStubPath = './offline-stub.html';\n offlineStub.setAttribute('src', offlineStubPath);\n offlineStub.setAttribute('style', 'width: 100%; height: 100%; border: 0');\n this.response = undefined;\n\n let onlineListener: ConnectionStateChangeListener | undefined;\n const removeOfflineStubAndOnlineListener = () => {\n if (onlineListener !== undefined) {\n $wnd.Vaadin.connectionState.removeStateChangeListener(onlineListener);\n onlineListener = undefined;\n }\n };\n\n offlineStub.onBeforeEnter = (ctx, _cmds, router) => {\n onlineListener = () => {\n if ($wnd.Vaadin.connectionState.online) {\n removeOfflineStubAndOnlineListener();\n router.render(ctx, false);\n }\n };\n $wnd.Vaadin.connectionState.addStateChangeListener(onlineListener);\n };\n offlineStub.onBeforeLeave = (_ctx, _cmds, _router) => {\n removeOfflineStubAndOnlineListener();\n };\n return offlineStub;\n }\n\n private isFlowClientLoaded(): boolean {\n return this.response !== undefined;\n }\n}\n"]} \ No newline at end of file +{"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../../src/main/frontend/Flow.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ConnectionIndicator,\n ConnectionState,\n ConnectionStateChangeListener,\n ConnectionStateStore\n} from '@vaadin/common-frontend';\n\nexport interface FlowConfig {\n imports?: () => void;\n}\n\nclass FlowUiInitializationError extends Error {}\n\ninterface AppConfig {\n productionMode: boolean;\n appId: string;\n uidl: any;\n}\n\ninterface AppInitResponse {\n appConfig: AppConfig;\n pushScript?: string;\n}\n\ninterface Router {\n render: (ctx: NavigationParameters, shouldUpdateHistory: boolean) => Promise;\n}\n\ninterface HTMLRouterContainer extends HTMLElement {\n onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise;\n onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise;\n serverConnected?: (cancel: boolean, url?: NavigationParameters) => void;\n serverPaused?: () => void;\n}\n\ninterface FlowRoute {\n action: (params: NavigationParameters) => Promise;\n path: string;\n}\n\ninterface FlowRoot {\n $: any;\n $server: any;\n}\n\nexport interface NavigationParameters {\n pathname: string;\n search: string;\n}\n\nexport interface PreventCommands {\n prevent: () => any;\n}\n\nexport interface PreventAndRedirectCommands extends PreventCommands {\n redirect: (route: string) => any;\n}\n\n// flow uses body for keeping references\nconst flowRoot: FlowRoot = window.document.body as any;\nconst $wnd = window as any as {\n Vaadin: {\n Flow: any;\n TypeScript: any;\n connectionState: ConnectionStateStore;\n listener: any;\n };\n} & EventTarget;\n\n/**\n * Client API for flow UI operations.\n */\nexport class Flow {\n config: FlowConfig;\n response?: AppInitResponse = undefined;\n pathname = '';\n\n container!: HTMLRouterContainer;\n\n // flag used to inform Testbench whether a server route is in progress\n private isActive = false;\n\n private baseRegex = /^\\//;\n private appShellTitle: string;\n\n private navigation: string = '';\n\n constructor(config?: FlowConfig) {\n flowRoot.$ = flowRoot.$ || [];\n this.config = config || {};\n\n // TB checks for the existence of window.Vaadin.Flow in order\n // to consider that TB needs to wait for `initFlow()`.\n $wnd.Vaadin = $wnd.Vaadin || {};\n $wnd.Vaadin.Flow = $wnd.Vaadin.Flow || {};\n $wnd.Vaadin.Flow.clients = {\n TypeScript: {\n isActive: () => this.isActive\n }\n };\n\n // Regular expression used to remove the app-context\n const elm = document.head.querySelector('base');\n this.baseRegex = new RegExp(\n `^${\n // IE11 does not support document.baseURI\n (document.baseURI || (elm && elm.href) || '/').replace(/^https?:\\/\\/[^/]+/i, '')\n }`\n );\n this.appShellTitle = document.title;\n // Put a vaadin-connection-indicator in the dom\n this.addConnectionIndicator();\n }\n\n /**\n * Return a `route` object for vaadin-router in an one-element array.\n *\n * The `FlowRoute` object `path` property handles any route,\n * and the `action` returns the flow container without updating the content,\n * delaying the actual Flow server call to the `onBeforeEnter` phase.\n *\n * This is a specific API for its use with `vaadin-router`.\n */\n get serverSideRoutes(): [FlowRoute] {\n return [\n {\n path: '(.*)',\n action: this.action\n }\n ];\n }\n\n loadingStarted() {\n // Make Testbench know that server request is in progress\n this.isActive = true;\n $wnd.Vaadin.connectionState.loadingStarted();\n }\n\n loadingFinished() {\n // Make Testbench know that server request has finished\n this.isActive = false;\n $wnd.Vaadin.connectionState.loadingFinished();\n\n if ($wnd.Vaadin.listener) {\n // Listeners registered, do not register again.\n return;\n }\n $wnd.Vaadin.listener = {};\n // Listen for click on router-links -> 'link' navigation trigger\n // and on nodes -> 'client' navigation trigger.\n // Use capture phase to detect prevented / stopped events.\n document.addEventListener(\n 'click',\n (_e) => {\n if (_e.target) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (_e.target.hasAttribute('router-link')) {\n this.navigation = 'link';\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n } else if (_e.composedPath().some((node) => node.nodeName === 'A')) {\n this.navigation = 'client';\n }\n }\n },\n {\n capture: true\n }\n );\n }\n\n private get action(): (params: NavigationParameters) => Promise {\n // Return a function which is bound to the flow instance, thus we can use\n // the syntax `...serverSideRoutes` in vaadin-router.\n return async (params: NavigationParameters) => {\n // Store last action pathname so as we can check it in events\n this.pathname = params.pathname;\n\n if ($wnd.Vaadin.connectionState.online) {\n try {\n await this.flowInit();\n } catch (error) {\n if (error instanceof FlowUiInitializationError) {\n // error initializing Flow: assume connection lost\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n return this.offlineStubAction();\n } else {\n throw error;\n }\n }\n } else {\n // insert an offline stub\n return this.offlineStubAction();\n }\n\n // When an action happens, navigation will be resolved `onBeforeEnter`\n this.container.onBeforeEnter = (ctx, cmd) => this.flowNavigate(ctx, cmd);\n // For covering the 'server -> client' use case\n this.container.onBeforeLeave = (ctx, cmd) => this.flowLeave(ctx, cmd);\n return this.container;\n };\n }\n\n // Send a remote call to `JavaScriptBootstrapUI` to check\n // whether navigation has to be cancelled.\n private async flowLeave(ctx: NavigationParameters, cmd?: PreventCommands): Promise {\n // server -> server, viewing offline stub, or browser is offline\n const { connectionState } = $wnd.Vaadin;\n if (this.pathname === ctx.pathname || !this.isFlowClientLoaded() || connectionState.offline) {\n return Promise.resolve({});\n }\n // 'server -> client'\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side to cancel navigation\n this.container.serverConnected = (cancel) => {\n resolve(cmd && cancel ? cmd.prevent() : {});\n this.loadingFinished();\n };\n\n // Call server side to check whether we can leave the view\n flowRoot.$server.leaveNavigation(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx));\n });\n }\n\n // Send the remote call to `JavaScriptBootstrapUI` to render the flow\n // route specified by the context\n private async flowNavigate(ctx: NavigationParameters, cmd?: PreventAndRedirectCommands): Promise {\n if (this.response) {\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side once the view is ready\n this.container.serverConnected = (cancel, redirectContext?: NavigationParameters) => {\n if (cmd && cancel) {\n resolve(cmd.prevent());\n } else if (cmd && cmd.redirect && redirectContext) {\n resolve(cmd.redirect(redirectContext.pathname));\n } else {\n this.container.style.display = '';\n resolve(this.container);\n }\n this.loadingFinished();\n };\n\n this.container.serverPaused = () => {\n this.loadingFinished();\n };\n\n // Call server side to navigate to the given route\n flowRoot.$server.connectClient(\n this.getFlowRoutePath(ctx),\n this.getFlowRouteQuery(ctx),\n this.appShellTitle,\n history.state,\n this.navigation\n );\n // Default to history navigation trigger.\n // Link and client cases are handled by click listener in loadingFinished().\n this.navigation = 'history';\n });\n } else {\n // No server response => offline or erroneous connection\n return Promise.resolve(this.container);\n }\n }\n\n private getFlowRoutePath(context: NavigationParameters | Location): string {\n return decodeURIComponent(context.pathname).replace(this.baseRegex, '');\n }\n private getFlowRouteQuery(context: NavigationParameters | Location): string {\n return (context.search && context.search.substring(1)) || '';\n }\n\n // import flow client modules and initialize UI in server side.\n private async flowInit(): Promise {\n // Do not start flow twice\n if (!this.isFlowClientLoaded()) {\n // show flow progress indicator\n this.loadingStarted();\n\n // Initialize server side UI\n this.response = await this.flowInitUi();\n\n const { pushScript, appConfig } = this.response;\n\n if (typeof pushScript === 'string') {\n await this.loadScript(pushScript);\n }\n const { appId } = appConfig;\n\n // Load bootstrap script with server side parameters\n const bootstrapMod = await import('./FlowBootstrap');\n await bootstrapMod.init(this.response);\n\n // Load custom modules defined by user\n if (typeof this.config.imports === 'function') {\n this.injectAppIdScript(appId);\n await this.config.imports();\n }\n\n // we use a custom tag for the flow app container\n const tag = `flow-container-${appId.toLowerCase()}`;\n const serverCreatedContainer = document.querySelector(tag);\n if (serverCreatedContainer) {\n this.container = serverCreatedContainer as HTMLElement;\n } else {\n this.container = document.createElement(tag);\n this.container.id = appId;\n }\n flowRoot.$[appId] = this.container;\n\n // Load flow-client module\n const clientMod = await import('./FlowClient');\n await this.flowInitClient(clientMod);\n\n // hide flow progress indicator\n this.loadingFinished();\n }\n\n // It might be that components created from server expect that their content has been rendered.\n // Appending eagerly the container we avoid these kind of errors.\n // Note that the client router will move this container to the outlet if the navigation succeed\n if (this.container && !this.container.isConnected) {\n this.container.style.display = 'none';\n document.body.appendChild(this.container);\n }\n return this.response!;\n }\n\n private async loadScript(url: string): Promise {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.onload = () => resolve();\n script.onerror = reject;\n script.src = url;\n document.body.appendChild(script);\n });\n }\n\n private injectAppIdScript(appId: string) {\n const appIdWithoutHashCode = appId.substring(0, appId.lastIndexOf('-'));\n const scriptAppId = document.createElement('script');\n scriptAppId.type = 'module';\n scriptAppId.setAttribute('data-app-id', appIdWithoutHashCode);\n document.body.append(scriptAppId);\n }\n\n // After the flow-client javascript module has been loaded, this initializes flow UI\n // in the browser.\n private async flowInitClient(clientMod: any): Promise {\n clientMod.init();\n // client init is async, we need to loop until initialized\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n // client `isActive() == true` while initializing or processing\n const initializing = Object.keys($wnd.Vaadin.Flow.clients)\n .filter((key) => key !== 'TypeScript')\n .reduce((prev, id) => prev || $wnd.Vaadin.Flow.clients[id].isActive(), false);\n if (!initializing) {\n clearInterval(intervalId);\n resolve();\n }\n }, 5);\n });\n }\n\n // Returns the `appConfig` object\n private async flowInitUi(): Promise {\n // appConfig was sent in the index.html request\n const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial;\n if (initial) {\n $wnd.Vaadin.TypeScript.initial = undefined;\n return Promise.resolve(initial);\n }\n\n // send a request to the `JavaScriptBootstrapHandler`\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const httpRequest = xhr as any;\n const requestPath = `?v-r=init&location=${encodeURIComponent(\n this.getFlowRoutePath(location)\n )}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}`;\n\n httpRequest.open('GET', requestPath);\n\n httpRequest.onerror = () =>\n reject(\n new FlowUiInitializationError(\n `Invalid server response when initializing Flow UI.\n ${httpRequest.status}\n ${httpRequest.responseText}`\n )\n );\n\n httpRequest.onload = () => {\n const contentType = httpRequest.getResponseHeader('content-type');\n if (contentType && contentType.indexOf('application/json') !== -1) {\n resolve(JSON.parse(httpRequest.responseText));\n } else {\n httpRequest.onerror();\n }\n };\n httpRequest.send();\n });\n }\n\n // Create shared connection state store and connection indicator\n private addConnectionIndicator() {\n // add connection indicator to DOM\n ConnectionIndicator.create();\n\n // Listen to browser online/offline events and update the loading indicator accordingly.\n // Note: if flow-client is loaded, it instead handles the state transitions.\n $wnd.addEventListener('online', () => {\n if (!this.isFlowClientLoaded()) {\n // Send an HTTP HEAD request for sw.js to verify server reachability.\n // We do not expect sw.js to be cached, so the request goes to the\n // server rather than being served from local cache.\n // Require network-level failure to revert the state to CONNECTION_LOST\n // (HTTP error code is ok since it still verifies server's presence).\n $wnd.Vaadin.connectionState.state = ConnectionState.RECONNECTING;\n const http = new XMLHttpRequest();\n http.open('HEAD', 'sw.js');\n http.onload = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTED;\n };\n http.onerror = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n };\n // Postpone request to reduce potential net::ERR_INTERNET_DISCONNECTED\n // errors that sometimes occurs even if browser says it is online\n setTimeout(() => http.send(), 50);\n }\n });\n $wnd.addEventListener('offline', () => {\n if (!this.isFlowClientLoaded()) {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n }\n });\n }\n\n private async offlineStubAction() {\n const offlineStub = document.createElement('iframe') as HTMLRouterContainer;\n const offlineStubPath = './offline-stub.html';\n offlineStub.setAttribute('src', offlineStubPath);\n offlineStub.setAttribute('style', 'width: 100%; height: 100%; border: 0');\n this.response = undefined;\n\n let onlineListener: ConnectionStateChangeListener | undefined;\n const removeOfflineStubAndOnlineListener = () => {\n if (onlineListener !== undefined) {\n $wnd.Vaadin.connectionState.removeStateChangeListener(onlineListener);\n onlineListener = undefined;\n }\n };\n\n offlineStub.onBeforeEnter = (ctx, _cmds, router) => {\n onlineListener = () => {\n if ($wnd.Vaadin.connectionState.online) {\n removeOfflineStubAndOnlineListener();\n router.render(ctx, false);\n }\n };\n $wnd.Vaadin.connectionState.addStateChangeListener(onlineListener);\n };\n offlineStub.onBeforeLeave = (_ctx, _cmds, _router) => {\n removeOfflineStubAndOnlineListener();\n };\n return offlineStub;\n }\n\n private isFlowClientLoaded(): boolean {\n return this.response !== undefined;\n }\n}\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/FlowClient.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/FlowClient.js index cc3ead94..2fb9e139 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/FlowClient.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/FlowClient.js @@ -1,6 +1,6 @@ // Vertx-Vaadin FLowClient const init = function(){ -function client(){var Jb='',Kb=0,Lb='gwt.codesvr=',Mb='gwt.hosted=',Nb='gwt.hybrid',Ob='client',Pb='#',Qb='?',Rb='/',Sb=1,Tb='img',Ub='clear.cache.gif',Vb='baseUrl',Wb='script',Xb='client.nocache.js',Yb='base',Zb='//',$b='meta',_b='name',ac='gwt:property',bc='content',cc='=',dc='gwt:onPropertyErrorFn',ec='Bad handler "',fc='" for "gwt:onPropertyErrorFn"',gc='gwt:onLoadErrorFn',hc='" for "gwt:onLoadErrorFn"',ic='user.agent',jc='webkit',kc='safari',lc='msie',mc=10,nc=11,oc='ie10',pc=9,qc='ie9',rc=8,sc='ie8',tc='gecko',uc='gecko1_8',vc=2,wc=3,xc=4,yc='Single-script hosted mode not yet implemented. See issue ',zc='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Ac='9AD1E3DE66C168E6E989BC7BD2DA078C',Bc=':1',Cc=':',Dc='DOMContentLoaded',Ec=50;var l=Jb,m=Kb,n=Lb,o=Mb,p=Nb,q=Ob,r=Pb,s=Qb,t=Rb,u=Sb,v=Tb,w=Ub,A=Vb,B=Wb,C=Xb,D=Yb,F=Zb,G=$b,H=_b,I=ac,J=bc,K=cc,L=dc,M=ec,N=fc,O=gc,P=hc,Q=ic,R=jc,S=kc,T=lc,U=mc,V=nc,W=oc,X=pc,Y=qc,Z=rc,$=sc,_=tc,ab=uc,bb=vc,cb=wc,db=xc,eb=yc,fb=zc,gb=Ac,hb=Bc,ib=Cc,jb=Dc,kb=Ec;var lb=window,mb=document,nb,ob,pb=l,qb={},rb=[],sb=[],tb=[],ub=m,vb,wb;if(!lb.__gwt_stylesLoaded){lb.__gwt_stylesLoaded={}}if(!lb.__gwt_scriptsLoaded){lb.__gwt_scriptsLoaded={}}function xb(){var b=false;try{var c=lb.location.search;return (c.indexOf(n)!=-1||(c.indexOf(o)!=-1||lb.external&&lb.external.gwtOnLoad))&&c.indexOf(p)==-1}catch(a){}xb=function(){return b};return b} +function client(){var Jb='',Kb=0,Lb='gwt.codesvr=',Mb='gwt.hosted=',Nb='gwt.hybrid',Ob='client',Pb='#',Qb='?',Rb='/',Sb=1,Tb='img',Ub='clear.cache.gif',Vb='baseUrl',Wb='script',Xb='client.nocache.js',Yb='base',Zb='//',$b='meta',_b='name',ac='gwt:property',bc='content',cc='=',dc='gwt:onPropertyErrorFn',ec='Bad handler "',fc='" for "gwt:onPropertyErrorFn"',gc='gwt:onLoadErrorFn',hc='" for "gwt:onLoadErrorFn"',ic='user.agent',jc='webkit',kc='safari',lc='msie',mc=10,nc=11,oc='ie10',pc=9,qc='ie9',rc=8,sc='ie8',tc='gecko',uc='gecko1_8',vc=2,wc=3,xc=4,yc='Single-script hosted mode not yet implemented. See issue ',zc='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Ac='54E807181CC95598D9E4541FB4E73A76',Bc=':1',Cc=':',Dc='DOMContentLoaded',Ec=50;var l=Jb,m=Kb,n=Lb,o=Mb,p=Nb,q=Ob,r=Pb,s=Qb,t=Rb,u=Sb,v=Tb,w=Ub,A=Vb,B=Wb,C=Xb,D=Yb,F=Zb,G=$b,H=_b,I=ac,J=bc,K=cc,L=dc,M=ec,N=fc,O=gc,P=hc,Q=ic,R=jc,S=kc,T=lc,U=mc,V=nc,W=oc,X=pc,Y=qc,Z=rc,$=sc,_=tc,ab=uc,bb=vc,cb=wc,db=xc,eb=yc,fb=zc,gb=Ac,hb=Bc,ib=Cc,jb=Dc,kb=Ec;var lb=window,mb=document,nb,ob,pb=l,qb={},rb=[],sb=[],tb=[],ub=m,vb,wb;if(!lb.__gwt_stylesLoaded){lb.__gwt_stylesLoaded={}}if(!lb.__gwt_scriptsLoaded){lb.__gwt_scriptsLoaded={}}function xb(){var b=false;try{var c=lb.location.search;return (c.indexOf(n)!=-1||(c.indexOf(o)!=-1||lb.external&&lb.external.gwtOnLoad))&&c.indexOf(p)==-1}catch(a){}xb=function(){return b};return b} function yb(){if(nb&&ob){nb(vb,q,pb,ub)}} function zb(){function e(a){var b=a.lastIndexOf(r);if(b==-1){b=a.length}var c=a.indexOf(s);if(c==-1){c=a.length}var d=a.lastIndexOf(t,Math.min(c,b));return d>=m?a.substring(m,d+u):l} function f(a){if(a.match(/^\w+:\/\//)){}else{var b=mb.createElement(v);b.src=a+w;a=e(b.src)}return a} @@ -14,1119 +14,1105 @@ var Bb=function(a,b){return b in rb[a]};var Cb=function(a){var b=qb[a];return b= function Eb(a){var b=sb[a](),c=rb[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(wb){wb(a,d,b)}throw null} sb[Q]=function(){var a=navigator.userAgent.toLowerCase();var b=mb.documentMode;if(function(){return a.indexOf(R)!=-1}())return S;if(function(){return a.indexOf(T)!=-1&&(b>=U&&b=X&&b=Z&&b=V}())return ab;return S};rb[Q]={'gecko1_8':m,'ie10':u,'ie8':bb,'ie9':cb,'safari':db};client.onScriptLoad=function(a){client=null;nb=a;yb()};if(xb()){alert(eb+fb);return}zb();Ab();try{var Fb;Db([ab],gb);Db([S],gb+hb);Fb=tb[Eb(Q)];var Gb=Fb.indexOf(ib);if(Gb!=-1){ub=Number(Fb.substring(Gb+u))}}catch(a){return}var Hb;function Ib(){if(!ob){ob=true;yb();if(mb.removeEventListener){mb.removeEventListener(jb,Ib,false)}if(Hb){clearInterval(Hb)}}} if(mb.addEventListener){mb.addEventListener(jb,function(){Ib()},false)}var Hb=setInterval(function(){if(/loaded|complete/.test(mb.readyState)){Ib()}},kb)} -client();(function () {var $gwt_version = "2.8.2";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '9AD1E3DE66C168E6E989BC7BD2DA078C';function G(){} -function kk(){} -function gk(){} -function qk(){} -function Uk(){} -function Kb(){} -function cd(){} +client();(function () {var $gwt_version = "2.9.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '54E807181CC95598D9E4541FB4E73A76';function I(){} +function Ib(){} +function sk(){} +function ok(){} +function yk(){} +function Xk(){} +function Xl(){} +function gl(){} +function kl(){} function kd(){} -function bl(){} -function Jl(){} -function Ll(){} -function Nl(){} -function zm(){} -function Em(){} -function Jm(){} -function Lm(){} -function Zm(){} -function Zr(){} -function Vr(){} -function Xr(){} +function rd(){} +function Tl(){} +function Vl(){} +function Vn(){} +function Xn(){} +function Zn(){} +function qm(){} +function vm(){} +function Am(){} +function Cm(){} +function Mm(){} +function wo(){} +function yo(){} +function yp(){} +function Hp(){} +function wr(){} +function yr(){} +function Ar(){} +function Cr(){} function _r(){} -function eo(){} -function go(){} -function io(){} -function Ro(){} -function To(){} -function Tt(){} -function Mt(){} +function ds(){} +function ot(){} +function st(){} +function vt(){} function Qt(){} -function Wp(){} -function dq(){} -function zs(){} -function Ds(){} -function nu(){} -function nz(){} -function rz(){} -function cv(){} -function hw(){} -function lw(){} -function Aw(){} -function AE(){} -function jy(){} -function Jy(){} -function Ly(){} -function IA(){} -function qB(){} -function wC(){} -function cI(){} +function zu(){} +function sv(){} +function wv(){} +function Lv(){} +function Uv(){} +function Bx(){} +function $x(){} +function ay(){} +function Oy(){} +function Sy(){} +function Xz(){} +function XH(){} +function sH(){} +function yH(){} +function FA(){} +function LB(){} +function lC(){} +function CD(){} +function gF(){} +function gI(){} +function iI(){} +function kI(){} function BI(){} -function HI(){} -function nA(){kA()} -function Ek(a,b){a.b=b} -function Gk(a,b){a.d=b} -function Hk(a,b){a.e=b} -function Ik(a,b){a.f=b} -function Jk(a,b){a.g=b} -function Kk(a,b){a.i=b} -function Lk(a,b){a.j=b} -function Nk(a,b){a.n=b} -function Ok(a,b){a.o=b} -function Pk(a,b){a.p=b} -function Qk(a,b){a.q=b} -function Rk(a,b){a.r=b} -function Sk(a,b){a.s=b} -function Tk(a,b){a.t=b} -function ts(a,b){a.g=b} -function wu(a,b){a.b=b} -function wl(a){this.a=a} -function ul(a){this.a=a} -function hb(a){this.a=a} -function Eb(a){this.a=a} +function KI(){} +function Dz(){Az()} +function Nk(a,b){a.c=b} +function Ok(a,b){a.d=b} +function Pk(a,b){a.e=b} +function Rk(a,b){a.g=b} +function Sk(a,b){a.i=b} +function Tk(a,b){a.j=b} +function Uk(a,b){a.k=b} +function Vk(a,b){a.n=b} +function Wk(a,b){a.o=b} +function $t(a,b){a.b=b} +function AI(a,b){a.a=b} +function jb(a){this.a=a} function Gb(a){this.a=a} -function Ib(a){this.a=a} -function Tc(a){this.a=a} -function Vc(a){this.a=a} -function Vm(a){this.a=a} -function xm(a){this.a=a} -function Cm(a){this.a=a} -function Hm(a){this.a=a} -function Pm(a){this.a=a} -function Rm(a){this.a=a} -function Tm(a){this.a=a} -function Xm(a){this.a=a} -function Dn(a){this.a=a} -function ko(a){this.a=a} -function mo(a){this.a=a} -function uo(a){this.a=a} -function Ho(a){this.a=a} -function Jo(a){this.a=a} -function Lo(a){this.a=a} -function Vo(a){this.a=a} -function Go(a){this.c=a} -function Gp(a){this.a=a} -function qp(a){this.a=a} +function Kb(a){this.a=a} +function Mb(a){this.a=a} +function Zc(a){this.a=a} +function _c(a){this.a=a} +function il(a){this.a=a} +function Dl(a){this.a=a} +function Fl(a){this.a=a} +function om(a){this.a=a} +function tm(a){this.a=a} +function ym(a){this.a=a} +function Gm(a){this.a=a} +function Im(a){this.a=a} +function Km(a){this.a=a} +function Om(a){this.a=a} +function Qm(a){this.a=a} +function tn(a){this.a=a} +function _n(a){this.a=a} +function eo(a){this.a=a} +function qo(a){this.a=a} +function Ao(a){this.a=a} +function Zo(a){this.a=a} +function ap(a){this.a=a} +function bp(a){this.a=a} +function hp(a){this.a=a} function tp(a){this.a=a} -function up(a){this.a=a} +function vp(a){this.a=a} function Ap(a){this.a=a} -function Qp(a){this.a=a} -function Sp(a){this.a=a} -function Yp(a){this.a=a} -function $p(a){this.a=a} -function aq(a){this.a=a} -function eq(a){this.a=a} -function kq(a){this.a=a} -function xq(a){this.a=a} -function Pq(a){this.a=a} -function Ar(a){this.a=a} -function Cr(a){this.a=a} -function Er(a){this.a=a} -function Nr(a){this.a=a} -function Qr(a){this.a=a} -function Fs(a){this.a=a} -function Ks(a){this.a=a} -function Os(a){this.a=a} -function $s(a){this.a=a} -function Zs(a){this.c=a} -function ct(a){this.a=a} -function lt(a){this.a=a} -function tt(a){this.a=a} -function vt(a){this.a=a} -function xt(a){this.a=a} -function zt(a){this.a=a} -function Bt(a){this.a=a} -function Ct(a){this.a=a} -function Kt(a){this.a=a} +function Cp(a){this.a=a} +function Ep(a){this.a=a} +function Ip(a){this.a=a} +function Op(a){this.a=a} +function _p(a){this.a=a} +function qq(a){this.a=a} +function br(a){this.a=a} +function dr(a){this.a=a} +function fr(a){this.a=a} +function or(a){this.a=a} +function rr(a){this.a=a} +function fs(a){this.a=a} +function ms(a){this.a=a} +function os(a){this.a=a} +function Cs(a){this.a=a} +function Gs(a){this.a=a} +function Ps(a){this.a=a} +function Xs(a){this.a=a} +function Zs(a){this.a=a} +function _s(a){this.a=a} +function As(a){this.c=a} +function _t(a){this.c=a} +function bt(a){this.a=a} +function dt(a){this.a=a} +function et(a){this.a=a} +function mt(a){this.a=a} +function Ft(a){this.a=a} +function Ot(a){this.a=a} +function St(a){this.a=a} +function Su(a){this.a=a} function cu(a){this.a=a} -function lu(a){this.a=a} -function pu(a){this.a=a} -function Au(a){this.a=a} -function Cu(a){this.a=a} -function Qu(a){this.a=a} -function Uu(a){this.a=a} -function xu(a){this.c=a} -function av(a){this.a=a} -function lv(a){this.a=a} -function nv(a){this.a=a} -function Hv(a){this.a=a} -function Lv(a){this.a=a} -function Lw(a){this.a=a} -function jw(a){this.a=a} -function Mw(a){this.a=a} -function Ow(a){this.a=a} -function Sw(a){this.a=a} -function Uw(a){this.a=a} -function Zw(a){this.a=a} -function Zy(a){this.a=a} -function Py(a){this.a=a} -function Ry(a){this.a=a} -function _y(a){this.a=a} -function Oy(a){this.b=a} -function lz(a){this.a=a} -function pz(a){this.a=a} -function tz(a){this.a=a} +function eu(a){this.a=a} +function ru(a){this.a=a} +function xu(a){this.a=a} +function Wu(a){this.a=a} +function uv(a){this.a=a} +function $v(a){this.a=a} +function cw(a){this.a=a} +function gw(a){this.a=a} +function iw(a){this.a=a} +function kw(a){this.a=a} +function pw(a){this.a=a} +function ey(a){this.a=a} +function gy(a){this.a=a} +function uy(a){this.a=a} +function yy(a){this.a=a} +function Cy(a){this.a=a} +function Qy(a){this.a=a} +function Wy(a){this.a=a} +function Yy(a){this.a=a} +function dy(a){this.b=a} +function az(a){this.a=a} +function gz(a){this.a=a} +function iz(a){this.a=a} +function kz(a){this.a=a} +function mz(a){this.a=a} +function oz(a){this.a=a} function vz(a){this.a=a} -function zz(a){this.a=a} -function Iz(a){this.a=a} -function Kz(a){this.a=a} -function Mz(a){this.a=a} +function xz(a){this.a=a} function Oz(a){this.a=a} -function Sz(a){this.a=a} -function Yz(a){this.a=a} -function bA(a){this.a=a} -function zA(a){this.a=a} -function CA(a){this.a=a} -function KA(a){this.a=a} -function MA(a){this.e=a} -function oB(a){this.a=a} +function Rz(a){this.a=a} +function Zz(a){this.a=a} +function _z(a){this.e=a} +function DA(a){this.a=a} +function HA(a){this.a=a} +function JA(a){this.a=a} +function JB(a){this.a=a} +function dB(a){this.a=a} function sB(a){this.a=a} function uB(a){this.a=a} -function QB(a){this.a=a} -function dC(a){this.a=a} -function fC(a){this.a=a} -function hC(a){this.a=a} -function sC(a){this.a=a} -function uC(a){this.a=a} -function KC(a){this.a=a} -function jD(a){this.a=a} -function wE(a){this.a=a} -function yE(a){this.a=a} -function BE(a){this.a=a} -function rF(a){this.a=a} -function tG(a){this.a=a} -function EG(a){this.b=a} -function ZG(a){this.c=a} -function NH(a){this.a=a} -function pl(a){throw a} -function Vp(a){Pp(Md(a))} -function lk(){Gq();Kq()} -function Pb(a){Ob=a;zc()} -function Nb(){this.a=nc()} -function Bk(){this.a=++Ak} -function bm(){this.d=null} -function Gq(){Gq=gk;Fq=[]} -function Xj(a){return a.e} -function HC(a){hB(a.a,a.b)} -function Gt(a,b){TC(a.a,b)} -function Ox(a,b){fy(b,a)} -function Tx(a,b){ey(b,a)} -function Xx(a,b){Kx(b,a)} -function $A(a,b){aw(b,a)} -function Ev(a,b){b.rb(a)} -function bE(b,a){b.log(a)} -function cE(b,a){b.warn(a)} -function XD(b,a){b.data=a} -function _D(b,a){b.debug(a)} -function aE(b,a){b.error(a)} -function R(a,b){a.send(b)} -function ds(a){a.j||es(a.a)} -function Ts(a){Ss(a)&&Ws(a)} -function Zc(a){Yc();Xc.T(a)} -function Oc(a){return a.S()} -function co(a){return Jn(a)} -function bc(){Wb.call(this)} -function HE(){Wb.call(this)} -function FE(){bc.call(this)} -function yF(){bc.call(this)} -function hH(){bc.call(this)} -function HH(){bc.call(this)} -function qH(){qH=gk;pH=sH()} -function kA(){kA=gk;jA=xA()} -function gc(){gc=gk;fc=new G} -function Gc(){Gc=gk;Fc=new dq} -function gu(){gu=gk;fu=new nu} -function hI(){this.a=new iH} -function RA(){RA=gk;QA=new qB} -function rl(a){Ob=a;!!a&&zc()} -function tm(a){km();this.a=a} -function SD(b,a){b.display=a} -function fE(b,a){b.replace(a)} -function xy(a,b){b.forEach(a)} -function vn(a,b){a.a.add(b.d)} -function ao(a,b,c){a.set(b,c)} -function iB(a,b,c){a.Rb(c,b)} -function un(a,b,c){pn(a,c,b)} -function UH(a,b,c){Vp(a.a[c])} -function Mk(a,b){a.k=b;ll=!b} -function tE(b,a){return a in b} -function ME(a){return MI(a),a} -function mF(a){return MI(a),a} -function Mb(a){return nc()-a.a} -function $z(a){$x(a.b,a.a,a.c)} -function lB(a){kB.call(this,a)} -function NB(a){kB.call(this,a)} -function aC(a){kB.call(this,a)} -function vE(a){cc.call(this,a)} -function DE(a){cc.call(this,a)} -function pF(a){cc.call(this,a)} -function qF(a){cc.call(this,a)} -function AF(a){cc.call(this,a)} -function zF(a){ec.call(this,a)} -function CF(a){pF.call(this,a)} -function EE(a){DE.call(this,a)} -function bG(a){DE.call(this,a)} -function $F(){BE.call(this,'')} -function _F(){BE.call(this,'')} -function EI(a){new VG;this.a=a} -function RE(a){QE(a);return a.j} -function xr(a,b){return a.a>b.a} -function Td(a,b){return Xd(a,b)} -function nd(a,b){return $E(a,b)} -function sE(a){return Object(a)} -function dp(a,b){a.d?fp(b):um()} -function rv(a,b){a.c.forEach(b)} -function oC(a,b){a.e||a.c.add(b)} -function rm(a,b){++jm;b.M(a,gm)} -function Xn(a,b){CC(new so(b,a))} -function Rx(a,b){CC(new Uz(b,a))} -function Sx(a,b){CC(new Wz(b,a))} -function Cy(a,b,c){qC(ly(a,c,b))} -function tc(){tc=gk;!!(Yc(),Xc)} -function _H(){_H=gk;ZH=new cI} -function dG(){dG=gk;cG=new AE} -function uH(){qH();return new pH} -function VA(a){jB(a.a);return a.g} -function ZA(a){jB(a.a);return a.c} -function SA(a,b){return eB(a.a,b)} -function SB(a,b){return eB(a.a,b)} -function EB(a,b){return eB(a.a,b)} -function wy(a,b){return _m(a.b,b)} -function Vx(a,b){return wx(b.a,a)} -function mk(b,a){return b.exec(a)} -function pG(a){return a.a.c+a.b.c} -function Kc(a){return !!a.b||!!a.g} -function dl(a,b){this.b=a;this.a=b} -function rb(a,b){this.b=a;this.c=b} -function Nm(a,b){this.a=a;this.b=b} -function hn(a,b){this.a=a;this.b=b} -function kn(a,b){this.a=a;this.b=b} -function zn(a,b){this.a=a;this.b=b} -function Bn(a,b){this.a=a;this.b=b} +function wB(a){this.a=a} +function HB(a){this.a=a} +function ZB(a){this.a=a} +function rC(a){this.a=a} +function yD(a){this.a=a} +function AD(a){this.a=a} +function DD(a){this.a=a} +function sE(a){this.a=a} +function zF(a){this.a=a} +function MF(a){this.b=a} +function hG(a){this.c=a} +function XG(a){this.a=a} +function EI(a){this.a=a} +function yl(a){throw a} +function dk(a){return a.e} +function tk(){hq();lq()} +function Rb(a){Qb=a;Fc()} +function Pb(){this.a=tc()} +function Jk(){this.a=++Ik} +function hq(){hq=ok;gq=[]} +function kD(b,a){b.log(a)} +function lD(b,a){b.warn(a)} +function eD(b,a){b.data=a} +function Pu(a,b){b.pb(a)} +function ex(a,b){xx(b,a)} +function kx(a,b){wx(b,a)} +function ox(a,b){ax(b,a)} +function nA(a,b){lv(b,a)} +function it(a,b){gC(a.a,b)} +function WB(a){wA(a.a,a.b)} +function Uc(a){return a.Q()} +function Un(a){return zn(a)} +function dd(a){cd();bd.R(a)} +function us(a){ts(a)&&ws(a)} +function Gr(a){a.j||Hr(a.a)} +function jD(b,a){b.error(a)} +function iD(b,a){b.debug(a)} +function T(a,b){a.send(b)} +function hc(){Zb.call(this)} +function JD(){Zb.call(this)} +function HD(){hc.call(this)} +function zE(){hc.call(this)} +function rG(){hc.call(this)} +function RG(){hc.call(this)} +function AG(){AG=ok;zG=CG()} +function Az(){Az=ok;zz=Mz()} +function mc(){mc=ok;lc=new I} +function Mc(){Mc=ok;Lc=new Hp} +function Jt(){Jt=ok;It=new Qt} +function DH(){this.a=new sG} +function eA(){eA=ok;dA=new FA} +function Al(a){Qb=a;!!a&&Fc()} +function km(a){bm();this.a=a} +function $C(b,a){b.display=a} +function Rx(a,b){b.forEach(a)} +function Qk(a,b){a.f=b;ul=!b} +function Xb(a,b){a.e=b;Ub(a,b)} +function xA(a,b,c){a.Nb(c,b)} +function kn(a,b,c){en(a,c,b)} +function Sn(a,b,c){a.set(b,c)} +function ln(a,b){a.a.add(b.d)} +function qz(a){qx(a.b,a.a,a.c)} +function AA(a){zA.call(this,a)} +function aB(a){zA.call(this,a)} +function pB(a){zA.call(this,a)} +function FD(a){ic.call(this,a)} +function qE(a){ic.call(this,a)} +function rE(a){ic.call(this,a)} +function BE(a){ic.call(this,a)} +function AE(a){kc.call(this,a)} +function DE(a){qE.call(this,a)} +function GD(a){FD.call(this,a)} +function cF(a){FD.call(this,a)} +function iF(a){ic.call(this,a)} +function aF(){DD.call(this,'')} +function _E(){DD.call(this,'')} +function ik(){gk==null&&(gk=[])} +function zc(){zc=ok;!!(cd(),bd)} +function eF(){eF=ok;dF=new CD} +function vH(){vH=ok;uH=new yH} +function TD(a){SD(a);return a.j} +function OD(a){return QI(a),a} +function nE(a){return QI(a),a} +function Ob(a){return tc()-a.a} +function fF(a){return Md(a,5).e} +function $d(a,b){return ce(a,b)} +function ud(a,b){return _D(a,b)} +function $q(a,b){return a.a>b.a} +function wD(b,a){return a in b} +function vD(a){return Object(a)} +function vI(a,b,c){b.nb(fF(c))} +function lH(a,b,c){b.nb(a.a[c])} +function Nx(a,b,c){FB(Dx(a,c,b))} +function Nn(a,b){RB(new oo(b,a))} +function hx(a,b){RB(new wy(b,a))} +function ix(a,b){RB(new Ay(b,a))} +function im(a,b){++am;b.H(a,Zl)} +function pI(a,b){lI(a);a.a.hc(b)} +function fI(a,b){Md(a,87).Yb(b)} +function Mo(a,b){a.d?Oo(b):lm()} +function Cu(a,b){a.c.forEach(b)} +function DB(a,b){a.e||a.c.add(b)} +function aH(a,b){while(a.ic(b));} +function Qx(a,b){return Sm(a.b,b)} +function fA(a,b){return tA(a.a,b)} +function TA(a,b){return tA(a.a,b)} +function fB(a,b){return tA(a.a,b)} +function mx(a,b){return Ow(b.a,a)} +function uk(b,a){return b.exec(a)} +function vF(a){return a.a.c+a.b.c} +function mA(a){yA(a.a);return a.c} +function iA(a){yA(a.a);return a.g} +function EG(){AG();return new zG} +function Bw(b,a){uw();delete b[a]} +function Eb(a,b){tb.call(this,a,b)} +function jE(){ic.call(this,null)} +function ju(){this.a=new $wnd.Map} +function kC(){this.c=new $wnd.Map} +function tb(a,b){this.b=a;this.c=b} +function ml(a,b){this.b=a;this.a=b} +function bo(a,b){this.b=a;this.a=b} +function go(a,b){this.a=a;this.b=b} +function io(a,b){this.a=a;this.b=b} +function ko(a,b){this.a=a;this.b=b} +function mo(a,b){this.a=a;this.b=b} function oo(a,b){this.a=a;this.b=b} -function qo(a,b){this.a=a;this.b=b} -function so(a,b){this.a=a;this.b=b} -function wo(a,b){this.b=a;this.a=b} -function yo(a,b){this.a=a;this.b=b} -function Ao(a,b){this.a=a;this.b=b} -function xp(a,b){this.a=a;this.b=b} -function Cp(a,b){this.b=a;this.a=b} -function Ep(a,b){this.b=a;this.a=b} -function Cb(a,b){rb.call(this,a,b)} -function rq(a,b){rb.call(this,a,b)} -function iF(){cc.call(this,null)} -function ak(){$j==null&&($j=[])} -function Ec(){oc!=0&&(oc=0);sc=-1} -function Iu(){this.a=new $wnd.Map} -function $C(){this.c=new $wnd.Map} -function bs(a,b){this.b=a;this.a=b} -function Eu(a,b){this.b=a;this.a=b} -function Su(a,b){this.a=a;this.b=b} -function Wu(a,b){this.a=a;this.b=b} -function Is(a,b){this.a=a;this.b=b} -function Ms(a,b){this.a=a;this.b=b} -function Fv(a,b){this.a=a;this.b=b} -function Jv(a,b){this.a=a;this.b=b} -function Nv(a,b){this.a=a;this.b=b} -function hz(a,b){this.a=a;this.b=b} -function jz(a,b){this.a=a;this.b=b} -function Bz(a,b){this.a=a;this.b=b} -function Qz(a,b){this.a=a;this.b=b} -function Uz(a,b){this.b=a;this.a=b} -function Wz(a,b){this.b=a;this.a=b} -function Vy(a,b){this.b=a;this.a=b} -function dA(a,b){this.b=a;this.a=b} -function fA(a,b){this.b=a;this.a=b} -function tA(a,b){this.b=a;this.a=b} -function rA(a,b){this.a=a;this.b=b} -function wB(a,b){this.a=a;this.b=b} -function jC(a,b){this.a=a;this.b=b} -function IC(a,b){this.a=a;this.b=b} -function LC(a,b){this.a=a;this.b=b} -function DB(a,b){this.d=a;this.e=b} -function BD(a,b){rb.call(this,a,b)} -function JD(a,b){rb.call(this,a,b)} -function hE(c,a,b){c.setItem(a,b)} -function mn(a,b){return Kd(a.b[b])} -function wH(a,b){return a.a.get(b)} -function fr(a,b){Zq(a,(wr(),ur),b)} -function Xt(a,b,c,d){Wt(a,b.d,c,d)} -function Qx(a,b,c){cy(a,b);Fx(c.e)} -function jx(b,a){cx();delete b[a]} -function jE(b,a){b.clearTimeout(a)} -function Dc(a){$wnd.clearTimeout(a)} -function sk(a){$wnd.clearTimeout(a)} -function iE(b,a){b.clearInterval(a)} -function mA(a,b){rC(b);jA.delete(a)} -function wq(a,b){return uq(b,vq(a))} -function RF(a,b){return a.substr(b)} -function IF(a,b){return MI(a),a===b} -function NE(a,b){return MI(a),a===b} -function nF(a){return Zd((MI(a),a))} -function Vd(a){return typeof a===cJ} -function vA(a){a.length=0;return a} -function XF(a,b){a.a+=''+b;return a} -function YF(a,b){a.a+=''+b;return a} -function ZF(a,b){a.a+=''+b;return a} -function $d(a){OI(a==null);return a} -function NG(a){this.a=null;this.b=a} -function lH(a){this.a=uH();this.b=a} -function yH(a){this.a=uH();this.b=a} -function _C(a){UC(a.a,a.d,a.c,a.b)} -function mr(a,b){Zq(a,(wr(),vr),b.a)} -function tn(a,b){return a.a.has(b.d)} -function KF(a,b){return a.indexOf(b)} -function gE(b,a){return b.getItem(a)} -function pE(a){return a&&a.valueOf()} -function rE(a){return a&&a.valueOf()} -function kG(a){return !a?null:a.fc()} -function Yd(a){return a==null?null:a} -function JH(a){return a!=null?M(a):0} -function rk(a){$wnd.clearInterval(a)} -function W(a){cq((Gc(),Fc),new hb(a))} -function LH(){LH=gk;KH=new NH(null)} -function Cw(){Cw=gk;Bw=new $wnd.Map} -function cx(){cx=gk;bx=new $wnd.Map} -function LE(){LE=gk;JE=false;KE=true} -function br(a){!!a.b&&kr(a,(wr(),tr))} -function gr(a){!!a.b&&kr(a,(wr(),ur))} -function pr(a){!!a.b&&kr(a,(wr(),vr))} -function Qb(a){a.i=pd(hj,sJ,30,0,0,1)} -function ml(a){ll&&_D($wnd.console,a)} -function ol(a){ll&&aE($wnd.console,a)} -function sl(a){ll&&bE($wnd.console,a)} -function tl(a){ll&&cE($wnd.console,a)} -function Kp(a){ll&&aE($wnd.console,a)} -function Lr(a){this.a=a;qk.call(this)} -function Bs(a){this.a=a;qk.call(this)} -function jt(a){this.a=a;qk.call(this)} -function Jt(a){this.a=new $C;this.c=a} -function xA(){return new $wnd.WeakMap} -function wv(a,b){return a.i.delete(b)} -function yv(a,b){return a.b.delete(b)} -function hB(a,b){return a.a.delete(b)} -function fB(a,b){return eB(a,a.Sb(b))} -function Dy(a,b,c){return ly(a,c.a,b)} -function vy(a,b){return Pn(a.b.root,b)} -function gs(a){return sK in a?a[sK]:-1} -function ns(a){cq((Gc(),Fc),new Os(a))} -function By(a){cq((Gc(),Fc),new Oz(a))} -function om(a){cq((Gc(),Fc),new Xm(a))} -function Do(a){cq((Gc(),Fc),new Lo(a))} -function Oq(a){cq((Gc(),Fc),new Pq(a))} -function gn(a,b){Fd(yl(a,Df),27).kb(b)} -function Dz(a,b){yy(a.a,a.c,a.d,a.b,b)} -function GB(a,b){jB(a.a);a.c.forEach(b)} -function TB(a,b){jB(a.a);a.b.forEach(b)} -function wI(a,b){if(mI){return}a.b=b} -function UD(a,b,c,d){return MD(a,b,c,d)} -function vd(a,b,c){return {l:a,m:b,h:c}} -function MH(a,b){return a.a!=null?a.a:b} -function WF(a){return a==null?yJ:jk(a)} -function Pd(a,b){return a!=null&&Ed(a,b)} -function TI(a){return a.$H||(a.$H=++SI)} -function Po(a){return ''+Qo(No.wb()-a,3)} -function aG(a){BE.call(this,(MI(a),a))} -function VG(){this.a=pd(ej,sJ,1,0,5,1)} -function Wb(){Qb(this);Rb(this);this.Q()} -function gt(a){if(a.a){nk(a.a);a.a=null}} -function JI(a){if(!a){throw Xj(new FE)}} -function KI(a){if(!a){throw Xj(new HH)}} -function OI(a){if(!a){throw Xj(new iF)}} -function XI(){XI=gk;UI=new G;WI=new G} -function Ux(a,b){var c;c=wx(b,a);qC(c)} -function et(a,b){b.a.b==(qq(),pq)&>(a)} -function VD(a,b){return a.appendChild(b)} -function WD(b,a){return b.appendChild(a)} -function MF(a,b){return a.lastIndexOf(b)} -function LF(a,b,c){return a.indexOf(b,c)} -function vm(a,b,c){km();return a.set(c,b)} -function rI(a,b){if(mI){return}RG(a.a,b)} -function pC(a){if(a.d||a.e){return}nC(a)} -function QE(a){if(a.j!=null){return}cF(a)} -function kc(a){return a==null?null:a.name} -function Rd(a){return typeof a==='number'} -function Ud(a){return typeof a==='string'} -function SF(a,b,c){return a.substr(b,c-b)} -function dE(d,a,b,c){d.pushState(a,b,c)} -function TD(d,a,b,c){d.setProperty(a,b,c)} -function DI(a,b){CI(a);a.b=true;TH(a.a,b)} -function yB(a,b){MA.call(this,a);this.a=b} -function dv(a,b){MD(b,lK,new lv(a),false)} -function Ub(a,b){a.e=b;b!=null&&RI(b,wJ,a)} -function jB(a){var b;b=yC;!!b&&lC(b,a.b)} -function qb(a){return a.b!=null?a.b:''+a.c} -function Qd(a){return typeof a==='boolean'} -function YD(b,a){return b.createElement(a)} -function ad(a){Yc();return parseInt(a)||-1} -function wm(a){km();jm==0?a.I():im.push(a)} -function Gd(a){OI(a==null||Qd(a));return a} -function Hd(a){OI(a==null||Rd(a));return a} -function Id(a){OI(a==null||Vd(a));return a} -function Md(a){OI(a==null||Ud(a));return a} -function CC(a){zC==null&&(zC=[]);zC.push(a)} -function DC(a){BC==null&&(BC=[]);BC.push(a)} -function Ul(a){a.f=[];a.g=[];a.a=0;a.b=nc()} -function jI(a){this.a=a;dG();Zj(Date.now())} -function kB(a){this.a=new $wnd.Set;this.b=a} -function on(){this.a=new $wnd.Map;this.b=[]} -function VH(a,b){this.b=0;this.c=b;this.a=a} -function xI(a,b){if(mI){return}!!b&&(a.d=b)} -function Gr(a,b){b.a.b==(qq(),pq)&&Jr(a,-1)} -function Nc(a,b){a.b=Pc(a.b,[b,false]);Lc(a)} -function Mp(a,b){Np(a,b,Fd(yl(a.a,xe),9).q)} -function wk(a,b){return $wnd.setTimeout(a,b)} -function NF(a,b,c){return a.lastIndexOf(b,c)} -function uc(a,b,c){return a.apply(b,c);var d} -function Xd(a,b){return a&&b&&a instanceof b} -function vk(a,b){return $wnd.setInterval(a,b)} -function cH(a){return new EI(bH(a,a.length))} -function jc(a){return a==null?null:a.message} -function Hw(a){a.b?iE($wnd,a.c):jE($wnd,a.c)} -function eE(d,a,b,c){d.replaceState(a,b,c)} -function st(a,b,c){a.set(c,(jB(b.a),Md(b.g)))} -function Tr(a,b,c){a.pb(vF(WA(Fd(c.e,28),b)))} -function yr(a,b,c){rb.call(this,a,b);this.a=c} -function jb(a,b,c){this.a=a;this.c=b;this.b=c} -function Fw(a,b,c){this.a=a;this.c=b;this.g=c} -function Ip(a,b,c){this.a=a;this.b=b;this.c=c} -function Xy(a,b,c){this.a=a;this.b=b;this.c=c} -function bz(a,b,c){this.a=a;this.b=b;this.c=c} -function dz(a,b,c){this.a=a;this.b=b;this.c=c} -function fz(a,b,c){this.a=a;this.b=b;this.c=c} -function xz(a,b,c){this.b=a;this.a=b;this.c=c} -function _z(a,b,c){this.b=a;this.a=b;this.c=c} -function _w(a,b,c){this.b=a;this.a=b;this.c=c} -function Ty(a,b,c){this.b=a;this.c=b;this.a=c} -function Gz(a,b,c){this.c=a;this.b=b;this.a=c} -function hA(a,b,c){this.c=a;this.b=b;this.a=c} -function DH(a,b,c){this.a=a;this.b=b;this.c=c} -function iq(){this.b=(qq(),nq);this.a=new $C} -function km(){km=gk;im=[];gm=new zm;hm=new Em} -function xF(){xF=gk;wF=pd(_i,sJ,33,256,0,1)} -function pv(a,b){a.b.add(b);return new Nv(a,b)} -function qv(a,b){a.i.add(b);return new Jv(a,b)} -function uI(a,b){if(!lI){return}vI(a,(_H(),b))} -function mE(a){if(a==null){return 0}return +a} -function Fd(a,b){OI(a==null||Ed(a,b));return a} -function Ld(a,b){OI(a==null||Xd(a,b));return a} -function XE(a,b){var c;c=UE(a,b);c.e=2;return c} -function RG(a,b){a.a[a.a.length]=b;return true} -function SG(a,b){LI(b,a.a.length);return a.a[b]} -function Cl(a,b,c){Bl(a,b,c.jb());a.b.set(b,c)} -function yn(a,b,c){return a.set(c,(jB(b.a),b.g))} -function RD(b,a){return b.getPropertyValue(a)} -function tk(a,b){return _I(function(){a.W(b)})} -function Ww(a,b){return Xw(new Zw(a),b,19,true)} -function Jq(a){return $wnd.Vaadin.Flow.getApp(a)} -function rC(a){a.e=true;nC(a);a.c.clear();mC(a)} -function aB(a,b){a.d=true;TA(a,b);DC(new sB(a))} -function QC(a,b){a.a==null&&(a.a=[]);a.a.push(b)} -function SC(a,b,c,d){var e;e=WC(a,b,c);e.push(d)} -function at(a,b){var c;c=Zd(mF(Hd(b.a)));ft(a,c)} -function rr(a,b){this.a=a;this.b=b;qk.call(this)} -function uu(a,b){this.a=a;this.b=b;qk.call(this)} -function ku(a){gu();this.c=[];this.a=fu;this.d=a} -function xk(a){a.onreadystatechange=function(){}} -function RI(b,c,d){try{b[c]=d}catch(a){}} -function PD(a,b,c,d){a.removeEventListener(b,c,d)} -function QH(a){LH();return !a?KH:new NH(MI(a))} -function QD(b,a){return b.getPropertyPriority(a)} -function vH(a,b){return !(a.a.get(b)===undefined)} -function Sd(a){return a!=null&&Wd(a)&&!(a.jc===kk)} -function rd(a){return Array.isArray(a)&&a.jc===kk} -function Od(a){return !Array.isArray(a)&&a.jc===kk} -function Wd(a){return typeof a===aJ||typeof a===cJ} -function bH(a,b){return SH(b,a.length),new VH(a,b)} -function Yu(a){a.a=Et(Fd(yl(a.d,Bg),13),new av(a))} -function sm(a){++jm;dp(Fd(yl(a.a,Af),57),new Lm)} -function os(a,b){Ju(Fd(yl(a.k,Ug),87),b['execute'])} -function Pc(a,b){!a&&(a=[]);a[a.length]=b;return a} -function UE(a,b){var c;c=new SE;c.f=a;c.d=b;return c} -function VE(a,b,c){var d;d=UE(a,b);gF(c,d);return d} -function Rv(a,b){var c;c=b;return Fd(a.a.get(c),6)} -function sG(a,b){if(b){return gG(a.a,b)}return false} -function zc(){tc();if(pc){return}pc=true;Ac(false)} -function cc(a){Qb(this);this.g=a;Rb(this);this.Q()} -function AB(a,b,c){MA.call(this,a);this.b=b;this.a=c} -function zl(a,b,c){a.a.delete(c);a.a.set(c,b.jb())} -function Zn(a,b,c){return a.push(SA(c,new Ao(c,b)))} -function sd(a,b,c){JI(c==null||md(a,c));return a[b]=c} -function Jd(a){OI(a==null||Array.isArray(a));return a} -function MI(a){if(a==null){throw Xj(new yF)}return a} -function $I(){if(VI==256){UI=WI;WI=new G;VI=0}++VI} -function TH(a,b){MI(b);while(a.b=0){a.a=new jt(a);pk(a.a,b)}} -function Rl(a,b,c){am(td(nd(_d,1),sJ,95,15,[b,c]));_C(a.e)} -function KD(){ID();return td(nd(Di,1),sJ,51,0,[GD,FD,HD])} -function sq(){qq();return td(nd(Nf,1),sJ,60,0,[nq,oq,pq])} -function zr(){wr();return td(nd(Tf,1),sJ,63,0,[tr,ur,vr])} -function HA(a){if(!FA){return a}return $wnd.Polymer.dom(a)} -function lE(c,a,b){return c.setTimeout(_I(a.Vb).bind(a),b)} -function Nd(a){return a.hc||Array.isArray(a)&&nd(je,1)||je} -function Np(a,b,c){Op(a,c.caption,c.message,b,c.url,null)} -function Zv(a,b,c,d){Uv(a,b)&&Xt(Fd(yl(a.c,Fg),26),b,c,d)} -function bo(a,b,c,d,e){a.splice.apply(a,[b,c,d].concat(e))} -function mp(a,b,c){this.a=a;this.c=b;this.b=c;qk.call(this)} -function op(a,b,c){this.a=a;this.c=b;this.b=c;qk.call(this)} -function kp(a,b,c){this.b=a;this.d=b;this.c=c;this.a=new Nb} -function xv(a,b){Yd(b.db(a))===Yd((LE(),KE))&&a.b.delete(b)} -function OD(a,b){Od(a)?a.ub(b):(a.handleEvent(b),undefined)} -function Qw(a,b){BA(b).forEach(hk(Uw.prototype.pb,Uw,[a]))} -function iG(a,b){return b===a?'(this Map)':b==null?yJ:jk(b)} -function Vb(a,b){var c;c=RE(a.hc);return b==null?c:c+': '+b} -function gH(a){var b,c;c=a;b=c.$modCount|0;c.$modCount=b+1} -function Qn(a){var b;b=a.f;while(!!b&&!b.a){b=b.f}return b} -function aF(a){if(a._b()){return null}var b=a.i;return dk[b]} -function iu(a){a.a=fu;if(!a.b){return}Ws(Fd(yl(a.d,pg),17))} -function Ur(a){jl('applyDefaultTheme',(LE(),a?true:false))} -function es(a){a&&a.afterServerUpdate&&a.afterServerUpdate()} -function kE(c,a,b){return c.setInterval(_I(a.Vb).bind(a),b)} -function EA(a,b,c,d){return a.splice.apply(a,[b,c].concat(d))} -function Yx(a,b,c){return a.push(UA(UB(uv(b.e,1),c),b.b[c]))} -function Db(){Bb();return td(nd(ce,1),sJ,50,0,[zb,Ab,yb,xb])} -function CD(){AD();return td(nd(Ci,1),sJ,41,0,[zD,xD,yD,wD])} -function ab(){return $wnd.vaadinPush&&$wnd.vaadinPush.SockJS} -function Bq(a){a?($wnd.location=a):$wnd.location.reload(false)} -function GC(a){this.a=a;this.b=[];this.c=new $wnd.Set;nC(this)} -function GE(a,b){Qb(this);this.f=b;this.g=a;Rb(this);this.Q()} -function iH(){this.a=new lH(this);this.b=new yH(this);gH(this)} -function Yc(){Yc=gk;var a,b;b=!bd();a=new kd;Xc=b?new cd:a} -function WE(a,b,c,d){var e;e=UE(a,b);gF(c,e);e.e=d?8:0;return e} -function Ql(a){var b;b={};b[LJ]=sE(a.a);b[MJ]=sE(a.b);return b} -function ik(a){function b(){} +function Em(a,b){this.a=a;this.b=b} +function Zm(a,b){this.a=a;this.b=b} +function _m(a,b){this.a=a;this.b=b} +function pn(a,b){this.a=a;this.b=b} +function rn(a,b){this.a=a;this.b=b} +function ep(a,b){this.a=a;this.b=b} +function is(a,b){this.a=a;this.b=b} +function ks(a,b){this.a=a;this.b=b} +function jp(a,b){this.b=a;this.a=b} +function lp(a,b){this.b=a;this.a=b} +function Er(a,b){this.b=a;this.a=b} +function fu(a,b){this.b=a;this.a=b} +function tu(a,b){this.a=a;this.b=b} +function vu(a,b){this.a=a;this.b=b} +function Qu(a,b){this.a=a;this.b=b} +function Uu(a,b){this.a=a;this.b=b} +function Yu(a,b){this.a=a;this.b=b} +function aw(a,b){this.a=a;this.b=b} +function iy(a,b){this.b=a;this.a=b} +function ky(a,b){this.b=a;this.a=b} +function qy(a,b){this.b=a;this.a=b} +function wy(a,b){this.b=a;this.a=b} +function Ay(a,b){this.b=a;this.a=b} +function Ky(a,b){this.a=a;this.b=b} +function My(a,b){this.a=a;this.b=b} +function cz(a,b){this.a=a;this.b=b} +function tz(a,b){this.a=a;this.b=b} +function Hz(a,b){this.a=a;this.b=b} +function LA(a,b){this.a=a;this.b=b} +function SA(a,b){this.d=a;this.e=b} +function Jz(a,b){this.b=a;this.a=b} +function yB(a,b){this.a=a;this.b=b} +function XB(a,b){this.a=a;this.b=b} +function $B(a,b){this.a=a;this.b=b} +function Vp(a,b){tb.call(this,a,b)} +function JC(a,b){tb.call(this,a,b)} +function RC(a,b){tb.call(this,a,b)} +function cI(a,b){tb.call(this,a,b)} +function eI(a,b){this.a=a;this.b=b} +function yI(a,b){this.a=a;this.b=b} +function FI(a,b){this.b=a;this.a=b} +function gx(a,b,c){ux(a,b);Xw(c.e)} +function zt(a,b,c,d){yt(a,b.d,c,d)} +function HI(a,b,c){a.splice(b,0,c)} +function Iq(a,b){Aq(a,(Zq(),Xq),b)} +function GG(a,b){return a.a.get(b)} +function bn(a,b){return Rd(a.b[b])} +function $p(a,b){return Yp(b,Zp(a))} +function Qc(a){return !!a.b||!!a.g} +function ae(a){return typeof a===fJ} +function Lz(a){a.length=0;return a} +function fe(a){TI(a==null);return a} +function Jc(a){$wnd.clearTimeout(a)} +function Ak(a){$wnd.clearTimeout(a)} +function nD(b,a){b.clearTimeout(a)} +function mD(b,a){b.clearInterval(a)} +function Cz(a,b){GB(b);zz.delete(a)} +function SE(a,b){return a.substr(b)} +function oE(a){return ee((QI(a),a))} +function vG(a){this.a=EG();this.b=a} +function IG(a){this.a=EG();this.b=a} +function VF(a){this.a=null;this.b=a} +function de(a){return a==null?null:a} +function H(a,b){return de(a)===de(b)} +function jn(a,b){return a.a.has(b.d)} +function Pq(a,b){Aq(a,(Zq(),Yq),b.a)} +function YE(a,b){a.a+=''+b;return a} +function ZE(a,b){a.a+=''+b;return a} +function $E(a,b){a.a+=''+b;return a} +function tI(a,b,c){fI(b,c);return b} +function LE(a,b){return a.indexOf(b)} +function tD(a){return a&&a.valueOf()} +function uD(a){return a&&a.valueOf()} +function qF(a){return !a?null:a.dc()} +function TG(a){return a!=null?O(a):0} +function zk(a){$wnd.clearInterval(a)} +function Y(a){Gp((Mc(),Lc),new jb(a))} +function VG(){VG=ok;UG=new XG(null)} +function Nv(){Nv=ok;Mv=new $wnd.Map} +function uw(){uw=ok;tw=new $wnd.Map} +function ND(){ND=ok;LD=false;MD=true} +function Kc(){uc!=0&&(uc=0);yc=-1} +function Eq(a){!!a.b&&Nq(a,(Zq(),Wq))} +function Jq(a){!!a.b&&Nq(a,(Zq(),Xq))} +function Sq(a){!!a.b&&Nq(a,(Zq(),Yq))} +function Sb(a){a.i=wd(aj,vJ,28,0,0,1)} +function uI(a,b,c){AI(a,DI(b,a.a,c))} +function SH(a,b){if(IH){return}a.b=b} +function Hu(a,b){return a.i.delete(b)} +function Ju(a,b){return a.b.delete(b)} +function Ox(a,b,c){return Dx(a,c.a,b)} +function Mz(){return new $wnd.WeakMap} +function wA(a,b){return a.a.delete(b)} +function DI(a,b,c){return tI(a.a,b,c)} +function vl(a){ul&&iD($wnd.console,a)} +function xl(a){ul&&jD($wnd.console,a)} +function Bl(a){ul&&kD($wnd.console,a)} +function Cl(a){ul&&lD($wnd.console,a)} +function np(a){ul&&jD($wnd.console,a)} +function mr(a){this.a=a;yk.call(this)} +function bs(a){this.a=a;yk.call(this)} +function Ns(a){this.a=a;yk.call(this)} +function lt(a){this.a=new kC;this.c=a} +function $I(){$I=ok;XI=new I;ZI=new I} +function Jr(a){return jK in a?a[jK]:-1} +function XE(a){return a==null?AJ:rk(a)} +function Px(a,b){return Fn(a.b.root,b)} +function Cd(a,b,c){return {l:a,m:b,h:c}} +function aD(a,b,c,d){return UC(a,b,c,d)} +function WG(a,b){return a.a!=null?a.a:b} +function VA(a,b){yA(a.a);a.c.forEach(b)} +function gB(a,b){yA(a.a);a.b.forEach(b)} +function lx(a,b){var c;c=Ow(b,a);FB(c)} +function Tx(a){Gp((Mc(),Lc),new oz(a))} +function Rr(a){Gp((Mc(),Lc),new os(a))} +function fm(a){Gp((Mc(),Lc),new Km(a))} +function pq(a){Gp((Mc(),Lc),new qq(a))} +function bF(a){DD.call(this,(QI(a),a))} +function bG(){this.a=wd($i,vJ,1,0,5,1)} +function Zb(){Sb(this);Tb(this);this.O()} +function Ks(a){if(a.a){vk(a.a);a.a=null}} +function MI(a){if(!a){throw dk(new HD)}} +function NI(a){if(!a){throw dk(new RG)}} +function TI(a){if(!a){throw dk(new jE)}} +function EB(a){if(a.d||a.e){return}CB(a)} +function NH(a,b){if(IH){return}ZF(a.a,b)} +function Wd(a,b){return a!=null&&Ld(a,b)} +function bD(a,b){return a.appendChild(b)} +function cD(b,a){return b.appendChild(a)} +function NE(a,b){return a.lastIndexOf(b)} +function ME(a,b,c){return a.indexOf(b,c)} +function mm(a,b,c){bm();return a.set(c,b)} +function _C(d,a,b,c){d.setProperty(a,b,c)} +function TE(a,b,c){return a.substr(b,c-b)} +function WI(a){return a.$H||(a.$H=++VI)} +function uo(a){return ''+vo(so.sb()-a,3)} +function Yd(a){return typeof a==='number'} +function _d(a){return typeof a==='string'} +function qc(a){return a==null?null:a.name} +function Xd(a){return typeof a==='boolean'} +function sb(a){return a.b!=null?a.b:''+a.c} +function SD(a){if(a.j!=null){return}dE(a)} +function Nd(a){TI(a==null||Xd(a));return a} +function Od(a){TI(a==null||Yd(a));return a} +function Td(a){TI(a==null||_d(a));return a} +function Pd(a){TI(a==null||ae(a));return a} +function nm(a){bm();am==0?a.C():_l.push(a)} +function Is(a,b){b.a.b==(Up(),Tp)&&Ks(a)} +function hr(a,b){b.a.b==(Up(),Tp)&&kr(a,-1)} +function yA(a){var b;b=NB;!!b&&AB(b,a.b)} +function NA(a,b){_z.call(this,a);this.a=b} +function sI(a,b){nI.call(this,a);this.a=b} +function zA(a){this.a=new $wnd.Set;this.b=a} +function dn(){this.a=new $wnd.Map;this.b=[]} +function FH(a){this.a=a;eF();fk(Date.now())} +function RB(a){OB==null&&(OB=[]);OB.push(a)} +function SB(a){QB==null&&(QB=[]);QB.push(a)} +function fD(b,a){return b.createElement(a)} +function PD(a,b){return QI(a),de(a)===de(b)} +function JE(a,b){return QI(a),de(a)===de(b)} +function Ek(a,b){return $wnd.setTimeout(a,b)} +function ce(a,b){return a&&b&&a instanceof b} +function OE(a,b,c){return a.lastIndexOf(b,c)} +function Ac(a,b,c){return a.apply(b,c);var d} +function Dk(a,b){return $wnd.setInterval(a,b)} +function gd(a){cd();return parseInt(a)||-1} +function TH(a,b){if(IH){return}!!b&&(a.d=b)} +function pp(a,b){qp(a,b,Md(Hl(a.a,De),9).k)} +function ur(a,b,c){a.nb(wE(jA(Md(c.e,13),b)))} +function Ws(a,b,c){a.set(c,(yA(b.a),Td(b.g)))} +function Tc(a,b){a.b=Vc(a.b,[b,false]);Rc(a)} +function Wv(a){a.c?mD($wnd,a.d):nD($wnd,a.d)} +function yE(){yE=ok;xE=wd(Vi,vJ,23,256,0,1)} +function bm(){bm=ok;_l=[];Zl=new qm;$l=new vm} +function Mp(){this.b=(Up(),Rp);this.a=new kC} +function oy(a,b,c){this.b=a;this.c=b;this.a=c} +function my(a,b,c){this.c=a;this.b=b;this.a=c} +function Uy(a,b,c){this.c=a;this.b=b;this.a=c} +function sy(a,b,c){this.a=a;this.b=b;this.c=c} +function Ey(a,b,c){this.a=a;this.b=b;this.c=c} +function Gy(a,b,c){this.a=a;this.b=b;this.c=c} +function Iy(a,b,c){this.a=a;this.b=b;this.c=c} +function $y(a,b,c){this.b=a;this.a=b;this.c=c} +function rw(a,b,c){this.b=a;this.a=b;this.c=c} +function rz(a,b,c){this.b=a;this.a=b;this.c=c} +function ez(a,b,c){this.b=a;this.c=b;this.a=c} +function lb(a,b,c){this.a=a;this.c=b;this.b=c} +function NG(a,b,c){this.a=a;this.b=b;this.c=c} +function Qv(a,b,c){this.c=a;this.d=b;this.k=c} +function _q(a,b,c){tb.call(this,a,b);this.a=c} +function Ll(a,b,c){Kl(a,b,c.lb());a.b.set(b,c)} +function dD(c,a,b){return c.insertBefore(a,b)} +function ZC(b,a){return b.getPropertyValue(a)} +function pc(a){return a==null?null:a.message} +function Bk(a,b){return cJ(function(){a.U(b)})} +function Bu(a,b){a.i.add(b);return new Uu(a,b)} +function Au(a,b){a.b.add(b);return new Yu(a,b)} +function QH(a,b){if(!HH){return}RH(a,(vH(),b))} +function qD(a){if(a==null){return 0}return +a} +function Sd(a,b){TI(a==null||ce(a,b));return a} +function Md(a,b){TI(a==null||Ld(a,b));return a} +function ZD(a,b){var c;c=WD(a,b);c.e=2;return c} +function ZF(a,b){a.a[a.a.length]=b;return true} +function $F(a,b){OI(b,a.a.length);return a.a[b]} +function Bs(a,b){$wnd.navigator.sendBeacon(a,b)} +function pA(a,b){a.d=true;gA(a,b);SB(new HA(a))} +function GB(a){a.e=true;CB(a);a.c.clear();BB(a)} +function $G(a){VG();return !a?UG:new XG(QI(a))} +function on(a,b,c){return a.set(c,(yA(b.a),b.g))} +function mw(a,b){return nw(new pw(a),b,19,true)} +function YC(b,a){return b.getPropertyPriority(a)} +function kq(a){return $wnd.Vaadin.Flow.getApp(a)} +function yd(a){return Array.isArray(a)&&a.lc===sk} +function mG(a){return new sI(null,lG(a,a.length))} +function FG(a,b){return !(a.a.get(b)===undefined)} +function Vd(a){return !Array.isArray(a)&&a.lc===sk} +function Zd(a){return a!=null&&be(a)&&!(a.lc===sk)} +function dC(a,b){a.a==null&&(a.a=[]);a.a.push(b)} +function fC(a,b,c,d){var e;e=hC(a,b,c);e.push(d)} +function XC(a,b,c,d){a.removeEventListener(b,c,d)} +function Es(a,b){var c;c=ee(nE(Od(b.a)));Js(a,c)} +function Uq(a,b){this.a=a;this.b=b;yk.call(this)} +function Yt(a,b){this.a=a;this.b=b;yk.call(this)} +function Nt(a){Jt();this.c=[];this.a=It;this.d=a} +function ic(a){Sb(this);this.g=a;Tb(this);this.O()} +function Vc(a,b){!a&&(a=[]);a[a.length]=b;return a} +function XD(a,b,c){var d;d=WD(a,b);hE(c,d);return d} +function av(a,b){var c;c=b;return Md(a.a.get(c),6)} +function Il(a,b,c){a.a.delete(c);a.a.set(c,b.lb())} +function Pn(a,b,c){return a.push(fA(c,new mo(c,b)))} +function lG(a,b){return bH(b,a.length),new mH(a,b)} +function be(a){return typeof a===dJ||typeof a===fJ} +function Fk(a){a.onreadystatechange=function(){}} +function wl(a){$wnd.setTimeout(function(){a.V()},0)} +function Xw(a){var b;b=a.a;Ku(a,null);Ku(a,b);Kv(a)} +function jm(a){++am;Mo(Md(Hl(a.a,Df),58),new Cm)} +function Qr(a,b){ku(Md(Hl(a.j,Ug),92),b['execute'])} +function gH(a,b){QI(b);while(a.c=0){a.a=new Ns(a);xk(a.a,b)}} +function nI(a){if(!a){this.b=null;new bG}else{this.b=a}} +function gs(a,b,c,d){this.a=a;this.d=b;this.b=c;this.c=d} +function Ls(a){this.b=a;Kp(Md(Hl(a,Of),12),new Ps(this))} +function Ct(a,b){var c;c=Md(Hl(a.a,Jg),36);Kt(c,b);Mt(c)} +function zq(a,b){rp(Md(Hl(a.c,Jf),25),'',b,'',null,null)} +function qp(a,b,c){rp(a,c.caption,c.message,b,c.url,null)} +function IE(a,b){SI(b,a.length);return a.charCodeAt(b)} +function Hc(a){$wnd.setTimeout(function(){throw a},0)} +function Jl(a){a.b.forEach(pk(Ao.prototype.H,Ao,[a]))} +function Vx(a){return PD((ND(),LD),iA(hB(Fu(a,0),wK)))} +function Wp(){Up();return Ad(ud(Nf,1),vJ,61,0,[Rp,Sp,Tp])} +function ar(){Zq();return Ad(ud(Tf,1),vJ,64,0,[Wq,Xq,Yq])} +function SC(){QC();return Ad(ud(yi,1),vJ,42,0,[OC,NC,PC])} +function dI(){bI();return Ad(ud(Qj,1),vJ,48,0,[ZH,_H,aI])} +function iv(a,b,c,d){dv(a,b)&&zt(Md(Hl(a.c,Fg),32),b,c,d)} +function gD(a,b,c,d){this.b=a;this.c=b;this.a=c;this.d=d} +function mC(a,b,c){this.a=a;this.d=b;this.c=null;this.b=c} +function mH(a,b){this.c=0;this.d=b;this.b=17488;this.a=a} +function UB(a,b){var c;c=NB;NB=a;try{b.C()}finally{NB=c}} +function Gn(a){var b;b=a.f;while(!!b&&!b.a){b=b.f}return b} +function Rd(a){TI(a==null||be(a)&&!(a.lc===sk));return a} +function Tb(a){if(a.k){a.e!==yJ&&a.O();a.i=null}return a} +function Wz(a){if(!Uz){return a}return $wnd.Polymer.dom(a)} +function pD(c,a,b){return c.setTimeout(cJ(a.Rb).bind(a),b)} +function Ud(a){return a.jc||Array.isArray(a)&&ud(pe,1)||pe} +function vr(a){sl('applyDefaultTheme',(ND(),a?true:false))} +function Tn(a,b,c,d,e){a.splice.apply(a,[b,c,d].concat(e))} +function Vo(a,b,c){this.a=a;this.c=b;this.b=c;yk.call(this)} +function Xo(a,b,c){this.a=a;this.c=b;this.b=c;yk.call(this)} +function To(a,b,c){this.b=a;this.d=b;this.c=c;this.a=new Pb} +function Iu(a,b){de(b.eb(a))===de((ND(),MD))&&a.b.delete(b)} +function oF(a,b){return b===a?'(this Map)':b==null?AJ:rk(b)} +function Yb(a,b){var c;c=TD(a.jc);return b==null?c:c+': '+b} +function oI(a,b){var c;return rI(a,new bG,(c=new EI(b),c))} +function RI(a,b){if(a<0||a>b){throw dk(new FD(jL+a+kL+b))}} +function OI(a,b){if(a<0||a>=b){throw dk(new FD(jL+a+kL+b))}} +function SI(a,b){if(a<0||a>=b){throw dk(new cF(jL+a+kL+b))}} +function WC(a,b){Vd(a)?a.db(b):(a.handleEvent(b),undefined)} +function ew(a,b){Qz(b).forEach(pk(iw.prototype.nb,iw,[a]))} +function bw(a,b){Qz(b).forEach(pk(gw.prototype.nb,gw,[a.a]))} +function qk(a){function b(){} ;b.prototype=a||{};return new b} -function Nw(a,b){BA(b).forEach(hk(Sw.prototype.pb,Sw,[a.a]))} -function TA(a,b){if(!a.b&&a.c&&IH(b,a.g)){return}bB(a,b,true)} -function Vs(a,b){!!a.b&&T(a.b)?Y(a.b,b):ru(Fd(yl(a.c,Pg),73),b)} -function UC(a,b,c,d){a.b>0?QC(a,new dD(a,b,c,d)):VC(a,b,c,d)} -function gD(a,b,c,d){return iD(new $wnd.XMLHttpRequest,a,b,c,d)} -function Gn(a,b){a.updateComplete.then(_I(function(){b.X()}))} -function fp(a){$wnd.HTMLImports.whenReady(_I(function(){a.X()}))} -function _A(a){if(a.c){a.d=true;bB(a,null,false);DC(new uB(a))}} -function nD(a){if(a.length>2){rD(a[0],'OS major');rD(a[1],cL)}} -function fH(a,b){if(b.$modCount!=a.$modCount){throw Xj(new hH)}} -function fn(a,b){var c;if(b.length!=0){c=new JA(b);a.e.set(Vh,c)}} -function Ju(a,b){var c,d;for(c=0;c-1} -function Zd(a){return Math.max(Math.min(a,2147483647),-2147483648)|0} -function ED(){ED=gk;DD=sb((AD(),td(nd(Ci,1),sJ,41,0,[zD,xD,yD,wD])))} -function Px(a,b){var c;c=b.f;Iy(Fd(yl(b.e.e.g.c,xe),9),a,c,(jB(b.a),b.g))} -function bt(a,b){var c,d;c=uv(a,8);d=UB(c,'pollInterval');SA(d,new ct(b))} -function XB(a,b){DB.call(this,a,b);this.b=new $wnd.Map;this.a=new aC(this)} -function XH(a,b){this.b=', ';this.d=a;this.e=b;this.c=this.d+(''+this.e)} -function us(a){this.n=new $wnd.Set;this.i=[];this.c=new Bs(this);this.k=a} -function Kw(a){!!a.a.e&&Hw(a.a.e);a.a.b&&Dz(a.a.f,'trailing');Ew(a.a)} -function Rw(a,b){Dz(b.f,null);RG(a,b.f);if(b.d){Hw(b.d);Iw(b.d,Zd(b.g))}} -function IB(a,b,c,d){var e;e=EA(a.c,b,c,d);gB(a.a,new OA(a,b,e,d,false))} -function _q(a,b){ol('Heartbeat exception: '+b.P());Zq(a,(wr(),tr),null)} -function VB(a,b){if(!a.b.has(b)){return false}return ZA(Fd(a.b.get(b),28))} -function LI(a,b){if(a<0||a>=b){throw Xj(new DE('Index: '+a+', Size: '+b))}} -function NI(a,b){if(a<0||a>=b){throw Xj(new bG('Index: '+a+', Size: '+b))}} -function Pu(a){Fd(yl(a.a,Of),10).b==(qq(),pq)||hq(Fd(yl(a.a,Of),10),pq)} -function dr(a){Jr(Fd(yl(a.c,_f),56),Fd(yl(a.c,xe),9).f);Zq(a,(wr(),tr),null)} -function xG(a){var b;fH(a.d,a);KI(a.b);b=Fd(a.a.dc(),43);a.b=wG(a);return b} -function pd(a,b,c,d,e,f){var g;g=qd(e,d);e!=10&&td(nd(a,f),b,c,e,g);return g} -function VC(a,b,c,d){var e,f;e=XC(a,b,c);f=wA(e,d);f&&e.length==0&&ZC(a,b,c)} -function Dq(a,b,c){c==null?HA(a).removeAttribute(b):HA(a).setAttribute(b,c)} -function Un(a,b){$wnd.customElements.whenDefined(a).then(function(){b.X()})} -function Lq(a){Gq();!$wnd.WebComponents||$wnd.WebComponents.ready?Iq(a):Hq(a)} -function FI(a,b){return od(b)!=10&&td(K(b),b.ic,b.__elementTypeId$,od(b),a),a} -function K(a){return Ud(a)?kj:Rd(a)?Ui:Qd(a)?Ri:Od(a)?a.hc:rd(a)?a.hc:Nd(a)} -function Ys(a,b){b&&!a.b?(a.b=new $(a.c)):!b&&!!a.b&&S(a.b)&&P(a.b,new $s(a))} -function JA(a){this.a=new $wnd.Set;a.forEach(hk(KA.prototype.pb,KA,[this.a]))} -function ay(a){var b;b=HA(a);while(b.firstChild){b.removeChild(b.firstChild)}} -function rt(a){var b;if(a==null){return false}b=Md(a);return !IF('DISABLED',b)} -function ud(a){var b,c,d;b=a&EJ;c=a>>22&EJ;d=a<0?1048575:0;return vd(b,c,d)} -function nw(a,b){var c,d,e;e=Zd(rE(a[NK]));d=uv(b,e);c=a['key'];return UB(d,c)} -function wb(a,b){var c;MI(b);c=a[':'+b];II(!!c,td(nd(ej,1),sJ,1,5,[b]));return c} -function yq(a,b){if(IF(b.substr(0,a.length),a)){return RF(b,a.length)}return b} -function TG(a,b,c){for(;ca||a>b){throw Xj(new EE('fromIndex: 0, toIndex: '+a+', length: '+b))}} -function DF(a,b,c){if(a==null){debugger;throw Xj(new HE)}this.a=DJ;this.d=a;this.b=b;this.c=c} -function _v(a,b,c,d,e){if(!Pv(a,b)){debugger;throw Xj(new HE)}Zt(Fd(yl(a.c,Fg),26),b,c,d,e)} -function $v(a,b,c,d,e,f){if(!Pv(a,b)){debugger;throw Xj(new HE)}Yt(Fd(yl(a.c,Fg),26),b,c,d,e,f)} -function Nx(a,b,c,d){var e,f,g;g=c[GK];e="path='"+mb(g)+"'";f=new hz(a,g);Ex(a,b,d,f,null,e)} -function xx(a,b,c,d){var e;e=uv(d,a);TB(e,hk(dA.prototype.M,dA,[b,c]));return SB(e,new fA(b,c))} -function Uq(c,a){var b=c.getConfig(a);if(b===null||b===undefined){return null}else{return b+''}} -function Tq(c,a){var b=c.getConfig(a);if(b===null||b===undefined){return null}else{return vF(b)}} -function tu(b){if(b.readyState!=1){return false}try{b.send();return true}catch(a){return false}} -function ju(a){if(fu!=a.a||a.c.length==0){return}a.b=true;a.a=new lu(a);cq((Gc(),Fc),new pu(a))} -function Xk(a,b){if(!b){Ts(Fd(yl(a.a,pg),17))}else{It(Fd(yl(a.a,Bg),13));js(Fd(yl(a.a,ng),19),b)}} -function er(a,b,c){T(b)&&Ft(Fd(yl(a.c,Bg),13));jr(c)||$q(a,'Invalid JSON from server: '+c,null)} -function Jr(a,b){ll&&bE($wnd.console,'Setting heartbeat interval to '+b+'sec.');a.a=b;Hr(a)} -function NC(b,c,d){return _I(function(){var a=Array.prototype.slice.call(arguments);d.Cb(b,c,a)})} -function Rc(b,c){Gc();function d(){var a=_I(Oc)(b);a&&$wnd.setTimeout(d,c)} +function bE(a){if(a.Xb()){return null}var b=a.i;return lk[b]} +function Lt(a){a.a=It;if(!a.b){return}ws(Md(Hl(a.d,pg),18))} +function px(a,b,c){return a.set(c,hA(hB(Fu(b.e,1),c),b.b[c]))} +function Tz(a,b,c,d){return a.splice.apply(a,[b,c].concat(d))} +function oD(c,a,b){return c.setInterval(cJ(a.Rb).bind(a),b)} +function Fb(){Db();return Ad(ud(ie,1),vJ,52,0,[Bb,Cb,Ab,zb])} +function KC(){IC();return Ad(ud(xi,1),vJ,43,0,[HC,FC,GC,EC])} +function cb(){return $wnd.vaadinPush&&$wnd.vaadinPush.SockJS} +function cq(a){a?($wnd.location=a):$wnd.location.reload(false)} +function VB(a){this.a=a;this.b=[];this.c=new $wnd.Set;CB(this)} +function sG(){this.a=new vG(this);this.b=new IG(this);qG(this)} +function ID(a,b){Sb(this);this.f=b;this.g=a;Tb(this);this.O()} +function wn(a,b){a.updateComplete.then(cJ(function(){b.V()}))} +function _D(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.Sb(b))} +function qG(a){var b,c;c=a;b=c.$modCount|0;c.$modCount=b+1} +function pG(a,b){if(b.$modCount!=a.$modCount){throw dk(new rG)}} +function oA(a){if(a.c){a.d=true;qA(a,null,false);SB(new JA(a))}} +function vC(a){if(a.length>2){zC(a[0],'OS major');zC(a[1],WK)}} +function gA(a,b){if(!a.b&&a.c&&SG(b,a.g)){return}qA(a,b,true)} +function vs(a,b){!!a.b&&V(a.b)?$(a.b,b):Vt(Md(Hl(a.c,Pg),76),b)} +function qA(a,b,c){var d;d=a.g;a.c=c;a.g=b;vA(a.a,new PA(a,d,b))} +function ku(a,b){var c,d;for(c=0;c-1} +function ee(a){return Math.max(Math.min(a,2147483647),-2147483648)|0} +function Cc(b){zc();return function(){return Dc(b,this,arguments);var a}} +function tc(){if(Date.now){return Date.now()}return (new Date).getTime()} +function gu(a,b){if(b==null){debugger;throw dk(new JD)}return a.a.get(b)} +function hu(a,b){if(b==null){debugger;throw dk(new JD)}return a.a.has(b)} +function iB(a,b){if(!a.b.has(b)){return false}return mA(Md(a.b.get(b),13))} +function hH(a,b){QI(b);if(a.c>22&GJ;d=a<0?1048575:0;return Cd(b,c,d)} +function DF(a){var b;pG(a.d,a);NI(a.b);b=Md(a.a.ac(),45);a.b=CF(a);return b} +function rI(a,b,c){var d;lI(a);d=new BI;d.a=b;a.a.hc(new FI(d,c));return d.a} +function wd(a,b,c,d,e,f){var g;g=xd(e,d);e!=10&&Ad(ud(a,f),b,c,e,g);return g} +function qu(a){Md(Hl(a.a,Of),12).b==(Up(),Tp)||Lp(Md(Hl(a.a,Of),12),Tp)} +function Gq(a){kr(Md(Hl(a.c,_f),57),Md(Hl(a.c,De),9).d);Aq(a,(Zq(),Wq),null)} +function MC(){MC=ok;LC=ub((IC(),Ad(ud(xi,1),vJ,43,0,[HC,FC,GC,EC])))} +function Hv(){var a;Hv=ok;Gv=(a=[],a.push(new Bx),a.push(new Dz),a);Fv=new Lv} +function sx(a){var b;b=Wz(a);while(b.firstChild){b.removeChild(b.firstChild)}} +function Yz(a){this.a=new $wnd.Set;a.forEach(pk(Zz.prototype.nb,Zz,[this.a]))} +function jc(a){Sb(this);this.g=!a?null:Yb(a,a.N());this.f=a;Tb(this);this.O()} +function kc(a){Sb(this);Tb(this);this.e=a;Ub(this,a);this.g=a==null?AJ:rk(a)} +function mq(a){hq();!$wnd.WebComponents||$wnd.WebComponents.ready?jq(a):iq(a)} +function Kn(a,b){$wnd.customElements.whenDefined(a).then(function(){b.V()})} +function eq(a,b,c){c==null?Wz(a).removeAttribute(b):Wz(a).setAttribute(b,c)} +function _F(a,b,c){for(;ca||a>b){throw dk(new GD('fromIndex: 0, toIndex: '+a+', length: '+b))}} +function EE(a,b,c){if(a==null){debugger;throw dk(new JD)}this.a=FJ;this.d=a;this.b=b;this.c=c} +function kv(a,b,c,d,e){if(!$u(a,b)){debugger;throw dk(new JD)}Bt(Md(Hl(a.c,Fg),32),b,c,d,e)} +function jv(a,b,c,d,e,f){if(!$u(a,b)){debugger;throw dk(new JD)}At(Md(Hl(a.c,Fg),32),b,c,d,e,f)} +function dx(a,b,c,d){var e,f,g;g=c[xK];e="path='"+ob(g)+"'";f=new Ky(a,g);Ww(a,b,d,f,null,e)} +function fv(a,b){var c;if(b!=a.e){c=b.a;!!c&&(uw(),!!c[DK])&&Aw((uw(),c[DK]));nv(a,b);b.f=null}} +function tx(a,b){var c;c=Md(b.d.get(a),44);b.d.delete(a);if(!c){debugger;throw dk(new JD)}c.Cb()} +function Pw(a,b,c,d){var e;e=Fu(d,a);gB(e,pk(iy.prototype.H,iy,[b,c]));return fB(e,new ky(b,c))} +function aC(b,c,d){return cJ(function(){var a=Array.prototype.slice.call(arguments);d.yb(b,c,a)})} +function Xc(b,c){Mc();function d(){var a=cJ(Uc)(b);a&&$wnd.setTimeout(d,c)} $wnd.setTimeout(d,c)} -function CI(a){if(a.b){throw Xj(new qF("Stream already terminated, can't be modified or used"))}} -function Lc(a){if(!a.j){a.j=true;!a.f&&(a.f=new Tc(a));Rc(a.f,1);!a.i&&(a.i=new Vc(a));Rc(a.i,50)}} -function wr(){wr=gk;tr=new yr('HEARTBEAT',0,0);ur=new yr('PUSH',1,1);vr=new yr('XHR',2,2)} -function qq(){qq=gk;nq=new rq('INITIALIZING',0);oq=new rq('RUNNING',1);pq=new rq('TERMINATED',2)} -function ap(a,b){var c,d;c=new tp(a);d=new $wnd.Function(a);jp(a,new Ap(d),new Cp(b,c),new Ep(b,c))} -function by(a,b){var c;c=Fd(b.d.get(a),42);b.d.delete(a);if(!c){debugger;throw Xj(new HE)}c.Gb()} -function AI(a){var b,c;b=IF(typeof(b),pJ)?null:new HI;if(!b){return}_H();c=(null,'info');GI(c,a.a)} -function _b(a){var b;if(a!=null){b=a[wJ];if(b){return b}}return Td(a,TypeError)?new zF(a):new ec(a)} -function uq(a,b){var c;if(a==null){return null}c=tq('context://',b,a);c=tq('base://','',c);return c} -function Yj(a){var b;b=a.h;if(b==0){return a.l+a.m*GJ}if(b==1048575){return a.l+a.m*GJ-FJ}return a} -function ls(a,b){if(b==-1){return true}if(b==a.f+1){return true}if(a.f==-1){return true}return false} -function wG(a){if(a.a.cc()){return true}if(a.a!=a.c){return false}a.a=new mH(a.d.a);return a.a.cc()} -function tI(a){if(mI){return pd(Lj,pL,80,0,0,1)}return Fd(UG(a.a,pd(Lj,pL,80,a.a.a.length,0,1)),323)} -function fw(a,b){var c;if(Pd(a,29)){c=Fd(a,29);Zd((MI(b),b))==2?HB(c,(jB(c.a),c.c.length)):FB(c)}} -function Wv(a,b){var c;if(b!=a.e){c=b.a;!!c&&(cx(),!!c[MK])&&ix((cx(),c[MK]));cw(a,b);b.f=null}} -function jH(a){var b,c,d;for(c=0,d=a.length;ca.length?(d=a.length):(d=c);return a.substr(e,d-e)} -function Wt(a,b,c,d){var e;e={};e[VJ]=AK;e[BK]=Object(b);e[AK]=c;!!d&&(e['data']=d,undefined);$t(a,e)} -function td(a,b,c,d,e){e.hc=a;e.ic=b;e.jc=kk;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e} -function ND(b){var c=b.handler;if(!c){c=_I(function(a){OD(b,a)});c.listener=b;b.handler=c}return c} -function oE(c){return $wnd.JSON.stringify(c,function(a,b){if(a=='$H'){return undefined}return b},0)} -function Sc(b,c){Gc();var d=$wnd.setInterval(function(){var a=_I(Oc)(b);!a&&$wnd.clearInterval(d)},c)} -function qm(a,b){var c;c=new $wnd.Map;b.forEach(hk(Nm.prototype.M,Nm,[a,c]));c.size==0||wm(new Pm(c))} -function Fk(a,b){var c;c='/'.length;if(!IF(b.substr(b.length-c,c),'/')){debugger;throw Xj(new HE)}a.c=b} -function Nu(a,b){var c;c=!!b.a&&!NE((LE(),JE),VA(UB(uv(b,0),FK)));if(!c||!b.f){return c}return Nu(a,b.f)} -function px(a,b){var c;if(b.d.has(a)){debugger;throw Xj(new HE)}c=UD(b.b,a,new zz(b),false);b.d.set(a,c)} -function aH(a){var b,c,d,e;e=1;for(c=0,d=a.length;c-129&&a<128){b=a+128;c=(xF(),wF)[b];!c&&(c=wF[b]=new rF(a));return c}return new rF(a)} -function zw(a){var b,c;c=yw(a);b=a.a;if(!a.a){b=c.Kb(a);if(!b){debugger;throw Xj(new HE)}zv(a,b)}xw(a,b);return b} -function gB(a,b){var c;if(b.Pb()!=a.b){debugger;throw Xj(new HE)}c=yA(a.a);c.forEach(hk(LC.prototype.pb,LC,[a,b]))} -function vI(a,b){var c;(kI?(sI(a),true):lI?(_H(),true):oI?(_H(),false):nI&&(_H(),false))&&(c=new jI(b),qI(a,c))} -function In(a,b){var c;Hn==null&&(Hn=xA());c=Ld(Hn.get(a),$wnd.Set);if(c==null){c=new $wnd.Set;Hn.set(a,c)}c.add(b)} -function Bv(a,b){this.c=new $wnd.Map;this.i=new $wnd.Set;this.b=new $wnd.Set;this.e=new $wnd.Map;this.d=a;this.g=b} -function am(a){$wnd.Vaadin.Flow.setScrollPosition?$wnd.Vaadin.Flow.setScrollPosition(a):$wnd.scrollTo(a[0],a[1])} -function Xq(a){a.b=null;Fd(yl(a.c,Bg),13).b&&Ft(Fd(yl(a.c,Bg),13));kl('connection-lost');Jr(Fd(yl(a.c,_f),56),0)} -function ot(a){if(VB(uv(Fd(yl(a.a,bh),11).e,5),zK)){return Md(VA(UB(uv(Fd(yl(a.a,bh),11).e,5),zK)))}return null} -function XA(a){var b;jB(a.a);if(a.c){b=(jB(a.a),a.g);if(b==null){return null}return jB(a.a),Md(a.g)}else{return null}} -function lx(a){var b;b=Id(bx.get(a));if(b==null){b=Id(new $wnd.Function(AK,SK,'return ('+a+')'));bx.set(a,b)}return b} -function gp(a,b,c){var d;d=Jd(c.get(a));if(d==null){d=[];d.push(b);c.set(a,d);return true}else{d.push(b);return false}} -function uE(c){var a=[];for(var b in c){Object.prototype.hasOwnProperty.call(c,b)&&b!='$H'&&a.push(b)}return a} -function wx(a,b){var c,d;d=a.f;if(b.c.has(d)){debugger;throw Xj(new HE)}c=new GC(new xz(a,b,d));b.c.set(d,c);return c} -function Sv(a,b){var c,d,e;e=BA(a.a);for(c=0;c0){c=Fd(a.b.splice(0,1)[0],28);wn(c,b)||aw(Fd(yl(a.c,bh),11),c);EC()}} -function Cc(a,b){tc();var c;c=Ob;if(c){if(c==qc){return}c.N(a);return}if(b){Bc(Pd(a,23)?Fd(a,23).R():a)}else{dG();Sb(a,cG,'')}} -function jk(a){var b;if(Array.isArray(a)&&a.jc===kk){return RE(K(a))+'@'+(b=M(a)>>>0,b.toString(16))}return a.toString()} -function vq(a){var b,c;b=Fd(yl(a.a,xe),9).c;c='/'.length;if(!IF(b.substr(b.length-c,c),'/')){debugger;throw Xj(new HE)}return b} -function um(){km();var a,b;--jm;if(jm==0&&im.length!=0){try{for(b=0;b1} -function hl(){this.a=new tD($wnd.navigator.userAgent);this.a.b?'ontouchstart' in window:this.a.f?!!navigator.msMaxTouchPoints:gl()} -function ep(a){this.b=new $wnd.Set;this.a=new $wnd.Map;this.d=!!($wnd.HTMLImports&&$wnd.HTMLImports.whenReady);this.c=a;Zo(this)} -function qr(a){this.c=a;gq(Fd(yl(a,Of),10),new Ar(this));MD($wnd,'offline',new Cr(this),false);MD($wnd,'online',new Er(this),false)} -function AD(){AD=gk;zD=new BD('STYLESHEET',0);xD=new BD('JAVASCRIPT',1);yD=new BD('JS_MODULE',2);wD=new BD('DYNAMIC_IMPORT',3)} -function Nn(a){var b;if(Hn==null){return}b=Ld(Hn.get(a),$wnd.Set);if(b!=null){Hn.delete(a);b.forEach(hk(io.prototype.pb,io,[]))}} -function nC(a){var b;a.d=true;mC(a);a.e||CC(new sC(a));if(a.c.size!=0){b=a.c;a.c=new $wnd.Set;b.forEach(hk(wC.prototype.pb,wC,[]))}} -function zx(a){var b;if(!a.b){debugger;throw Xj(new IE('Cannot bind shadow root to a Node'))}b=uv(a.e,20);rx(a);return SB(b,new bA(a))} -function Cx(a){var b;b=Md(VA(UB(uv(a,0),'tag')));if(b==null){debugger;throw Xj(new IE('New child must have a tag'))}return YD($doc,b)} -function au(a,b,c,d,e){var f;f={};f[VJ]='mSync';f[BK]=sE(b.d);f['feature']=Object(c);f['property']=d;f[$J]=e==null?null:e;$t(a,f)} -function al(a,b,c){var d;if(a==c.d){d=new $wnd.Function('callback','callback();');d.call(null,b);return LE(),true}return LE(),false} -function bd(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} -function Fn(a){return typeof a.update==cJ&&a.updateComplete instanceof Promise&&typeof a.shouldUpdate==cJ&&typeof a.firstUpdated==cJ} -function oF(a){var b;b=kF(a);if(b>3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} -function OE(a){if(a>=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} -function fF(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;cd&&sd(b,d,null);return b} -function tv(a,b){var c,d;d=b;c=Fd(a.c.get(d),39);if(!c){c=new JB(b,a);a.c.set(d,c)}if(!Pd(c,29)){debugger;throw Xj(new HE)}return Fd(c,29)} -function uv(a,b){var c,d;d=b;c=Fd(a.c.get(d),39);if(!c){c=new XB(b,a);a.c.set(d,c)}if(!Pd(c,40)){debugger;throw Xj(new HE)}return Fd(c,40)} -function JF(a,b){MI(a);if(b==null){return false}if(IF(a,b)){return true}return a.length==b.length&&IF(a.toLowerCase(),b.toLowerCase())} -function Xv(a){GB(tv(a.e,24),hk(hw.prototype.pb,hw,[]));rv(a.e,hk(lw.prototype.M,lw,[]));a.a.forEach(hk(jw.prototype.M,jw,[a]));a.d=true} -function pm(a){ll&&($wnd.console.log('Finished loading eager dependencies, loading lazy.'),undefined);a.forEach(hk(Zm.prototype.M,Zm,[]))} -function Ir(a){nk(a.c);ll&&($wnd.console.debug('Sending heartbeat request...'),undefined);gD(a.d,null,'text/plain; charset=utf-8',new Nr(a))} -function qE(b){var c;try{return c=$wnd.JSON.parse(b),c}catch(a){a=Wj(a);if(Pd(a,7)){throw Xj(new vE("Can't parse "+b))}else throw Xj(a)}} -function Wl(a){this.d=a;'scrollRestoration' in history&&(history.scrollRestoration='manual');MD($wnd,SJ,new Gp(this),false);Tl(this,true)} -function kr(a,b){if(a.b!=b){return}a.b=null;a.a=0;kl('connected');ll&&($wnd.console.log('Re-established connection to server'),undefined)} -function Zt(a,b,c,d,e){var f;f={};f[VJ]='attachExistingElementById';f[BK]=sE(b.d);f[CK]=Object(c);f[DK]=Object(d);f['attachId']=e;$t(a,f)} -function ZI(a){XI();var b,c,d;c=':'+a;d=WI[c];if(d!=null){return Zd((MI(d),d))}d=UI[c];b=d==null?YI(a):Zd((MI(d),d));$I();WI[c]=b;return b} -function M(a){return Ud(a)?ZI(a):Rd(a)?Zd((MI(a),a)):Qd(a)?(MI(a),a)?1231:1237:Od(a)?a.w():rd(a)?TI(a):!!a&&!!a.hashCode?a.hashCode():TI(a)} -function I(a,b){return Ud(a)?IF(a,b):Rd(a)?(MI(a),a===b):Qd(a)?(MI(a),a===b):Od(a)?a.u(b):rd(a)?a===b:!!a&&!!a.equals?a.equals(b):Yd(a)===Yd(b)} -function Bl(a,b,c){if(a.a.has(b)){debugger;throw Xj(new IE((QE(b),'Registry already has a class of type '+b.j+' registered')))}a.a.set(b,c)} -function xw(a,b){ww();var c;if(a.g.f){debugger;throw Xj(new IE('Binding state node while processing state tree changes'))}c=yw(a);c.Jb(a,b,uw)} -function OA(a,b,c,d,e){this.e=a;if(c==null){debugger;throw Xj(new HE)}if(d==null){debugger;throw Xj(new HE)}this.c=b;this.d=c;this.a=d;this.b=e} -function dy(a,b){var c,d;d=UB(b,WK);jB(d.a);d.c||aB(d,a.getAttribute(WK));c=UB(b,XK);Vn(a)&&(jB(c.a),!c.c)&&!!a.style&&aB(c,a.style.display)} -function bn(a,b,c,d){var e,f;if(!d){f=Fd(yl(a.g.c,Ye),59);e=Fd(f.a.get(c),33);if(!e){f.b[b]=c;f.a.set(c,vF(b));return vF(b)}return e}return d} -function qy(a,b){var c,d;while(b!=null){for(c=a.length-1;c>-1;c--){d=Fd(a[c],6);if(b.isSameNode(d.a)){return d.d}}b=HA(b.parentNode)}return -1} -function en(a,b,c){var d;if(cn(a.a,c)){d=Fd(a.e.get(Vh),77);if(!d||!d.a.has(c)){return}UA(UB(b,c),a.a[c]).X()}else{VB(b,c)||aB(UB(b,c),null)}} -function pn(a,b,c){var d,e;e=Rv(Fd(yl(a.c,bh),11),Zd((MI(b),b)));if(e.c.has(1)){d=new $wnd.Map;TB(uv(e,1),hk(Dn.prototype.M,Dn,[d]));c.set(b,d)}} -function WC(a,b,c){var d,e;e=Ld(a.c.get(b),$wnd.Map);if(e==null){e=new $wnd.Map;a.c.set(b,e)}d=Jd(e.get(c));if(d==null){d=[];e.set(c,d)}return d} -function py(a){var b;nx==null&&(nx=new $wnd.Map);b=Id(nx.get(a));if(b==null){b=Id(new $wnd.Function(AK,SK,'return ('+a+')'));nx.set(a,b)}return b} -function vs(){if($wnd.performance&&$wnd.performance.timing){return (new Date).getTime()-$wnd.performance.timing.responseStart}else{return -1}} -function Yw(a,b,c,d){var e,f,g,h,i;i=Kd(a.jb());h=d.d;for(g=0;g=1&&rD(a[0],'OS major');if(a.length>=2){b=KF(a[1],UF(45));if(b>-1){c=a[1].substr(0,b-0);rD(c,cL)}else{rD(a[1],cL)}}} -function rD(b,c){var d;try{return lF(b)}catch(a){a=Wj(a);if(Pd(a,7)){d=a;dG();c+' version parsing failed for: '+b+' '+d.P()}else throw Xj(a)}return -1} -function Sb(a,b,c){var d,e,f,g,h;Tb(a);for(e=(a.j==null&&(a.j=pd(lj,sJ,5,0,0,1)),a.j),f=0,g=e.length;f0){ml('Scheduling heartbeat in '+a.a+' seconds');ok(a.c,a.a*1000)}else{ll&&($wnd.console.debug('Disabling heartbeat'),undefined);nk(a.c)}} -function nt(a){var b,c,d,e;b=UB(uv(Fd(yl(a.a,bh),11).e,5),'parameters');e=(jB(b.a),Fd(b.g,6));d=uv(e,6);c=new $wnd.Map;TB(d,hk(zt.prototype.M,zt,[c]));return c} -function Ex(a,b,c,d,e,f){var g,h;if(!hy(a.e,b,e,f)){return}g=Kd(d.jb());if(iy(g,b,e,f,a)){if(!c){h=Fd(yl(b.g.c,$e),48);h.a.add(b.d);rn(h)}zv(b,g);zw(b)}c||EC()} -function aw(a,b){var c,d;if(!b){debugger;throw Xj(new HE)}d=b.e;c=d.e;if(sn(Fd(yl(a.c,$e),48),b)||!Uv(a,c)){return}au(Fd(yl(a.c,Fg),26),c,d.d,b.f,(jB(b.a),b.g))} -function jv(a,b){var c;c=$wnd.location.pathname;if(c==null){debugger;throw Xj(new IE('window.location.path should never be null'))}if(c!=a){return false}return b} -function RC(a,b,c){var d;if(!b){throw Xj(new AF('Cannot add a handler with a null type'))}a.b>0?QC(a,new bD(a,b,c)):(d=WC(a,b,null),d.push(c));return new aD(a,b,c)} -function cy(a,b){var c,d,e;dy(a,b);e=UB(b,WK);jB(e.a);e.c&&Iy(Fd(yl(b.e.g.c,xe),9),a,WK,(jB(e.a),e.g));c=UB(b,XK);jB(c.a);if(c.c){d=(jB(c.a),jk(c.g));SD(a.style,d)}} -function hq(a,b){if(b.c!=a.b.c+1){throw Xj(new pF('Tried to move from state '+qb(a.b)+' to '+(b.b!=null?b.b:''+b.c)+' which is not allowed'))}a.b=b;TC(a.a,new kq(a))} -function ys(a){var b;if(a==null){return null}if(!IF(a.substr(0,9),'for(;;);[')||(b=']'.length,!IF(a.substr(a.length-b,b),']'))){return null}return SF(a,9,a.length-1)} -function bk(b,c,d,e){ak();var f=$j;$moduleName=c;$moduleBase=d;Vj=e;function g(){for(var a=0;a=0;d--){if(IF(a[d].d,b)||IF(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a} -function Yt(a,b,c,d,e,f){var g;g={};g[VJ]='attachExistingElement';g[BK]=sE(b.d);g[CK]=Object(c);g[DK]=Object(d);g['attachTagName']=e;g['attachIndex']=Object(f);$t(a,g)} -function Wn(a){var b=typeof $wnd.Polymer===cJ&&$wnd.Polymer.Element&&a instanceof $wnd.Polymer.Element;var c=a.constructor.polymerElementVersion!==undefined;return b||c} -function Xw(a,b,c,d){var e,f,g,h;h=tv(b,c);jB(h.a);if(h.c.length>0){f=Kd(a.jb());for(e=0;e<(jB(h.a),h.c.length);e++){g=Md(h.c[e]);dx(f,g,b,d)}}return EB(h,new _w(a,b,d))} -function oy(a,b){var c,d,e,f,g;c=HA(b).childNodes;for(e=0;ea.length?(d=a.length):(d=c);return a.substr(e,d-e)} +function yt(a,b,c,d){var e;e={};e[OJ]=rK;e[sK]=Object(b);e[rK]=c;!!d&&(e['data']=d,undefined);Ct(a,e)} +function Ad(a,b,c,d,e){e.jc=a;e.kc=b;e.lc=sk;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e} +function X(a,b,c){KE(b,'true')||KE(b,'false')?(a.a[c]=KE(b,'true'),undefined):(a.a[c]=b,undefined)} +function Wb(a){var b,c,d,e;for(b=(a.i==null&&(a.i=(cd(),e=bd.S(a),ed(e))),a.i),c=0,d=b.length;c-129&&a<128){b=a+128;c=(yE(),xE)[b];!c&&(c=xE[b]=new sE(a));return c}return new sE(a)} +function Kv(a){var b,c;c=Jv(a);b=a.a;if(!a.a){b=c.Gb(a);if(!b){debugger;throw dk(new JD)}Ku(a,b)}Iv(a,b);return b} +function oG(a){var b,c,d;d=1;for(c=new hG(a);c.a0){c=Md(a.b.splice(0,1)[0],13);mn(c,b)||lv(Md(Hl(a.c,Zg),10),c);TB()}} +function Fq(a,b){var c;if(b.a.b==(Up(),Tp)){if(a.b){yq(a);c=Md(Hl(a.c,Of),12);c.b!=Tp&&Lp(c,Tp)}!!a.d&&!!a.d.f&&vk(a.d)}} +function Bq(a,b,c){var d,e;c&&(e=c.b);rp(Md(Hl(a.c,Jf),25),'',b,'',null,null);d=Md(Hl(a.c,Of),12);d.b!=(Up(),Tp)&&Lp(d,Tp)} +function jq(a){var b,c,d,e;b=(e=new Xk,e.a=a,nq(e,kq(a)),e);c=new al(b);gq.push(c);d=kq(a).getConfig('uidl');_k(c,d)} +function mn(a,b){var c,d;c=Sd(b.get(a.e.e.d),$wnd.Map);if(c!=null&&c.has(a.f)){d=c.get(a.f);pA(a,d);return true}return false} +function HG(a,b,c){var d;d=a.a.get(b);a.a.set(b,c===undefined?null:c);if(d===undefined){++a.c;qG(a.b)}else{++a.d}return d} +function OH(a){var b,c;if(a.b){return a.b}c=IH?null:a.d;while(c){b=IH?null:c.b;if(b){return b}c=IH?null:c.d}return vH(),uH} +function rk(a){var b;if(Array.isArray(a)&&a.lc===sk){return TD(M(a))+'@'+(b=O(a)>>>0,b.toString(16))}return a.toString()} +function Mw(a,b){var c,d;c=Eu(b,11);for(d=0;d<(yA(c.a),c.c.length);d++){Wz(a).classList.add(Td(c.c[d]))}return TA(c,new gz(a))} +function Zp(a){var b,c;b=Md(Hl(a.a,De),9).b;c='/'.length;if(!JE(b.substr(b.length-c,c),'/')){debugger;throw dk(new JD)}return b} +function yw(a,b){if(typeof a.get===fJ){var c=a.get(b);if(typeof c===dJ&&typeof c[WJ]!==sJ){return {nodeId:c[WJ]}}}return null} +function Aw(c){uw();var b=c['}p'].promises;b!==undefined&&b.forEach(function(a){a[1](Error('Client is resynchronizing'))})} +function Ic(a,b){zc();var c;c=Qb;if(c){if(c==wc){return}c.I(a);return}if(b){Hc(Wd(a,31)?Md(a,31).P():a)}else{eF();Vb(a,dF,'')}} +function Dn(a){var b;if(xn==null){return}b=Sd(xn.get(a),$wnd.Set);if(b!=null){xn.delete(a);b.forEach(pk(Zn.prototype.nb,Zn,[]))}} +function Tv(a,b,c,d){Nv();JE(HK,a)?c.forEach(pk(kw.prototype.H,kw,[d])):Qz(c).forEach(pk(Uv.prototype.nb,Uv,[]));Yx(b.b,b.c,b.a,a)} +function rb(a){qb();a[nJ]=Td(nF(pb,a[nJ],a[nJ]));a[uJ]=Td(nF(pb,a[uJ],a[uJ]));a.transports=[a.transport,a.fallbackTransport]} +function _v(a){if(a.a.b){Tv(IK,a.a.b,a.a.a,null);if(a.b.has(HK)){a.a.g=a.a.b;a.a.i=a.a.a}a.a.b=null;a.a.a=null}else{Pv(a.a)}} +function Zv(a){if(a.a.b){Tv(HK,a.a.b,a.a.a,a.a.j);a.a.b=null;a.a.a=null;a.a.j=null}else !!a.a.g&&Tv(HK,a.a.g,a.a.i,null);Pv(a.a)} +function rl(){return /iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==='MacIntel'&&navigator.maxTouchPoints>1} +function ql(){this.a=new BC($wnd.navigator.userAgent);this.a.b?'ontouchstart' in window:this.a.f?!!navigator.msMaxTouchPoints:pl()} +function No(a){this.b=new $wnd.Set;this.a=new $wnd.Map;this.d=!!($wnd.HTMLImports&&$wnd.HTMLImports.whenReady);this.c=a;Go(this)} +function Tq(a){this.c=a;Kp(Md(Hl(a,Of),12),new br(this));UC($wnd,'offline',new dr(this),false);UC($wnd,'online',new fr(this),false)} +function IC(){IC=ok;HC=new JC('STYLESHEET',0);FC=new JC('JAVASCRIPT',1);GC=new JC('JS_MODULE',2);EC=new JC('DYNAMIC_IMPORT',3)} +function Dt(a,b,c,d,e){var f;f={};f[OJ]='mSync';f[sK]=vD(b.d);f['feature']=Object(c);f['property']=d;f[TJ]=e==null?null:e;Ct(a,f)} +function fl(a,b,c){var d;if(a==c.d){d=new $wnd.Function('callback','callback();');d.call(null,b);return ND(),true}return ND(),false} +function hB(a,b){var c;c=Md(a.b.get(b),13);if(!c){c=new rA(b,a,JE('innerHTML',b)&&a.d==1);a.b.set(b,c);vA(a.a,new NA(a,c))}return c} +function gE(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;c3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} +function QD(a){if(a>=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} +function jd(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} +function Uw(a){var b;b=Td(iA(hB(Fu(a,0),'tag')));if(b==null){debugger;throw dk(new KD('New child must have a tag'))}return fD($doc,b)} +function Rw(a){var b;if(!a.b){debugger;throw dk(new KD('Cannot bind shadow root to a Node'))}b=Fu(a.e,20);Jw(a);return fB(b,new vz(a))} +function Wm(a,b){var c,d;d=Fu(a,1);if(!a.a){Kn(Td(iA(hB(Fu(a,0),'tag'))),new Zm(a,b));return}for(c=0;cd&&zd(b,d,null);return b} +function vx(a,b){var c,d;d=hB(b,OK);yA(d.a);d.c||pA(d,a.getAttribute(OK));c=hB(b,PK);Ln(a)&&(yA(c.a),!c.c)&&!!a.style&&pA(c,a.style.display)} +function KE(a,b){QI(a);if(b==null){return false}if(JE(a,b)){return true}return a.length==b.length&&JE(a.toLowerCase(),b.toLowerCase())} +function Nq(a,b){if(a.b!=b){return}a.b=null;a.a=0;tl('connected');ul&&($wnd.console.log('Re-established connection to server'),undefined)} +function Bt(a,b,c,d,e){var f;f={};f[OJ]='attachExistingElementById';f[sK]=vD(b.d);f[tK]=Object(c);f[uK]=Object(d);f['attachId']=e;Ct(a,f)} +function fw(a,b){if(b.e){!!b.b&&Tv(HK,b.b,b.a,null)}else{Tv(IK,b.b,b.a,null);Yv(b.f,ee(b.k))}if(b.b){ZF(a,b.b);b.b=null;b.a=null;b.j=null}} +function aJ(a){$I();var b,c,d;c=':'+a;d=ZI[c];if(d!=null){return ee((QI(d),d))}d=XI[c];b=d==null?_I(a):ee((QI(d),d));bJ();ZI[c]=b;return b} +function O(a){return _d(a)?aJ(a):Yd(a)?ee((QI(a),a)):Xd(a)?(QI(a),a)?1231:1237:Vd(a)?a.r():yd(a)?WI(a):!!a&&!!a.hashCode?a.hashCode():WI(a)} +function Kl(a,b,c){if(a.a.has(b)){debugger;throw dk(new KD((SD(b),'Registry already has a class of type '+b.j+' registered')))}a.a.set(b,c)} +function Iv(a,b){Hv();var c;if(a.g.f){debugger;throw dk(new KD('Binding state node while processing state tree changes'))}c=Jv(a);c.Fb(a,b,Fv)} +function bA(a,b,c,d,e){this.e=a;if(c==null){debugger;throw dk(new JD)}if(d==null){debugger;throw dk(new JD)}this.c=b;this.d=c;this.a=d;this.b=e} +function jr(a){vk(a.c);ul&&($wnd.console.debug('Sending heartbeat request...'),undefined);oC(a.d,null,'text/plain; charset=utf-8',new or(a))} +function Um(a,b,c,d){var e,f;if(!d){f=Md(Hl(a.g.c,df),60);e=Md(f.a.get(c),23);if(!e){f.b[b]=c;f.a.set(c,wE(b));return wE(b)}return e}return d} +function Ix(a,b){var c,d;while(b!=null){for(c=a.length-1;c>-1;c--){d=Md(a[c],6);if(b.isSameNode(d.a)){return d.d}}b=Wz(b.parentNode)}return -1} +function Xm(a,b,c){var d;if(Vm(a.a,c)){d=Md(a.e.get(Rh),82);if(!d||!d.a.has(c)){return}hA(hB(b,c),a.a[c]).V()}else{iB(b,c)||pA(hB(b,c),null)}} +function en(a,b,c){var d,e;e=av(Md(Hl(a.c,Zg),10),ee((QI(b),b)));if(e.c.has(1)){d=new $wnd.Map;gB(Fu(e,1),pk(tn.prototype.H,tn,[d]));c.set(b,d)}} +function hC(a,b,c){var d,e;e=Sd(a.c.get(b),$wnd.Map);if(e==null){e=new $wnd.Map;a.c.set(b,e)}d=Qd(e.get(c));if(d==null){d=[];e.set(c,d)}return d} +function Hx(a){var b;Fw==null&&(Fw=new $wnd.Map);b=Pd(Fw.get(a));if(b==null){b=Pd(new $wnd.Function(rK,KK,'return ('+a+')'));Fw.set(a,b)}return b} +function Xr(){if($wnd.performance&&$wnd.performance.timing){return (new Date).getTime()-$wnd.performance.timing.responseStart}else{return -1}} +function ow(a,b,c,d){var e,f,g,h,i;i=Rd(a.lb());h=d.d;for(g=0;g=1000?'error':d>=900?'warn':d>=800?'info':'log');JI(c,a.a)} +function Ld(a,b){if(_d(a)){return !!Kd[b]}else if(a.kc){return !!a.kc[b]}else if(Yd(a)){return !!Jd[b]}else if(Xd(a)){return !!Id[b]}return false} +function K(a,b){return _d(a)?JE(a,b):Yd(a)?(QI(a),de(a)===de(b)):Xd(a)?PD(a,b):Vd(a)?a.p(b):yd(a)?H(a,b):!!a&&!!a.equals?a.equals(b):de(a)===de(b)} +function yC(a){var b,c;a.length>=1&&zC(a[0],'OS major');if(a.length>=2){b=LE(a[1],VE(45));if(b>-1){c=a[1].substr(0,b-0);zC(c,WK)}else{zC(a[1],WK)}}} +function nv(a,b){if(!$u(a,b)){debugger;throw dk(new JD)}if(b==a.e){debugger;throw dk(new KD("Root node can't be unregistered"))}a.a.delete(b.d);Lu(b)} +function $u(a,b){if(!b){debugger;throw dk(new KD(AK))}if(b.g!=a){debugger;throw dk(new KD(BK))}if(b!=av(a,b.d)){debugger;throw dk(new KD(CK))}return true} +function Dx(a,b,c){var d,e;e=b.f;if(c.has(e)){debugger;throw dk(new KD("There's already a binding for "+e))}d=new VB(new qy(a,b));c.set(e,d);return d} +function Ku(a,b){var c;if(!(!a.a||!b)){debugger;throw dk(new KD('StateNode already has a DOM node'))}a.a=b;c=Nz(a.b);c.forEach(pk(Wu.prototype.nb,Wu,[a]))} +function Hl(a,b){if(!a.a.has(b)){debugger;throw dk(new KD((SD(b),'Tried to lookup type '+b.j+' but no instance has been registered')))}return a.a.get(b)} +function zC(b,c){var d;try{return mE(b)}catch(a){a=ck(a);if(Wd(a,7)){d=a;eF();c+' version parsing failed for: '+b+' '+d.N()}else throw dk(a)}return -1} +function Vb(a,b,c){var d,e,f,g,h;Wb(a);for(e=(a.j==null&&(a.j=wd(fj,vJ,5,0,0,1)),a.j),f=0,g=e.length;f0?dC(a,new mC(a,b,c)):(d=hC(a,b,null),d.push(c));return new lC} +function Cn(a,b){var c,d,e,f,g;f=a.f;d=a.e.e;g=Gn(d);if(!g){Cl(XJ+d.d+YJ);return}c=zn((yA(a.a),a.g));if(Mn(g.a)){e=In(g,d,f);e!=null&&Sn(g.a,e,c);return}b[f]=c} +function ir(a){if(a.a>0){vl('Scheduling heartbeat in '+a.a+' seconds');wk(a.c,a.a*1000)}else{ul&&($wnd.console.debug('Disabling heartbeat'),undefined);vk(a.c)}} +function Rs(a){var b,c,d,e;b=hB(Fu(Md(Hl(a.a,Zg),10).e,5),'parameters');e=(yA(b.a),Md(b.g,6));d=Fu(e,6);c=new $wnd.Map;gB(d,pk(bt.prototype.H,bt,[c]));return c} +function Ww(a,b,c,d,e,f){var g,h;if(!zx(a.e,b,e,f)){return}g=Rd(d.lb());if(Ax(g,b,e,f,a)){if(!c){h=Md(Hl(b.g.c,ff),51);h.a.add(b.d);gn(h)}Ku(b,g);Kv(b)}c||TB()} +function lv(a,b){var c,d;if(!b){debugger;throw dk(new JD)}d=b.e;c=d.e;if(hn(Md(Hl(a.c,ff),51),b)||!dv(a,c)){return}Dt(Md(Hl(a.c,Fg),32),c,d.d,b.f,(yA(b.a),b.g))} +function Do(){var a,b,c,d;b=$doc.head.childNodes;c=b.length;for(d=0;d=0;d--){if(JE(a[d].d,b)||JE(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a} +function At(a,b,c,d,e,f){var g;g={};g[OJ]='attachExistingElement';g[sK]=vD(b.d);g[tK]=Object(c);g[uK]=Object(d);g['attachTagName']=e;g['attachIndex']=Object(f);Ct(a,g)} +function Mn(a){var b=typeof $wnd.Polymer===fJ&&$wnd.Polymer.Element&&a instanceof $wnd.Polymer.Element;var c=a.constructor.polymerElementVersion!==undefined;return b||c} +function nw(a,b,c,d){var e,f,g,h;h=Eu(b,c);yA(h.a);if(h.c.length>0){f=Rd(a.lb());for(e=0;e<(yA(h.a),h.c.length);e++){g=Td(h.c[e]);vw(f,g,b,d)}}return TA(h,new rw(a,b,d))} +function Gx(a,b){var c,d,e,f,g;c=Wz(b).childNodes;for(e=0;ed&&(NI(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b=65536){b=55296+(a-65536>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&65535)}} -function yc(a){a&&Ic((Gc(),Fc));--oc;if(oc<0){debugger;throw Xj(new IE('Negative entryDepth value at exit '+oc))}if(a){if(oc!=0){debugger;throw Xj(new IE('Depth not 0'+oc))}if(sc!=-1){Dc(sc);sc=-1}}} -function Fy(a,b,c,d){var e,f,g,h,i,j,k;e=false;for(h=0;h2000){rc=a;sc=$wnd.setTimeout(Ec,10)}}if(oc++==0){Hc((Gc(),Fc));return true}return false} -function Vk(f,b,c){var d=f;var e=$wnd.Vaadin.Flow.clients[b];e.isActive=_I(function(){return d.cb()});e.getVersionInfo=_I(function(a){return {'flow':c}});e.debug=_I(function(){var a=d.a;return a.hb().Hb().Eb()})} -function ks(a){var b,c,d,e;if(a.i.length==0){return false}e=-1;for(b=0;b=f&&(NI(b,a.length),a.charCodeAt(b)!=32)){--b}if(b==f){return}d=a.substr(b+1,c-(b+1));e=QF(d,'\\.',0);nD(e)} -function Hu(a,b){var c,d,e,f,g,h;if(!b){debugger;throw Xj(new HE)}for(d=(g=uE(b),g),e=0,f=d.length;e but none was found. Appending instead."),undefined);dD($doc.head,a,b)} +function MH(a,b){var c,d,e,f,g,h,i;for(d=PH(a),f=0,h=d.length;fd&&(SI(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b=65536){b=55296+(a-65536>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&65535)}} +function Ec(a){a&&Oc((Mc(),Lc));--uc;if(uc<0){debugger;throw dk(new KD('Negative entryDepth value at exit '+uc))}if(a){if(uc!=0){debugger;throw dk(new KD('Depth not 0'+uc))}if(yc!=-1){Jc(yc);yc=-1}}} +function bC(a,b){var c,d,e,f;if(rD(b)==1){c=b;f=ee(uD(c[0]));switch(f){case 0:{e=ee(uD(c[1]));return d=e,Md(a.a.get(d),6)}case 1:case 2:return null;default:throw dk(new qE(UK+sD(c)));}}else{return null}} +function Ko(a,b,c,d,e){var f,g,h;h=bq(b);f=new ap(h);if(a.b.has(h)){!!c&&c.F(f);return}if(Po(h,c,a.a)){g=$doc.createElement(bK);g.src=h;g.type=e;g.async=false;g.defer=d;Qo(g,new bp(a),f);cD($doc.head,g)}} +function lr(a){this.c=new mr(this);this.b=a;kr(this,Md(Hl(a,De),9).d);this.d=Md(Hl(a,De),9).i;this.d=TC(this.d,'v-r=heartbeat');this.d=TC(this.d,hJ+(''+Md(Hl(a,De),9).n));Kp(Md(Hl(a,Of),12),new rr(this))} +function Wx(a,b,c,d,e){var f,g,h,i,j,k,l;f=false;for(i=0;i2000){xc=a;yc=$wnd.setTimeout(Kc,10)}}if(uc++==0){Nc((Mc(),Lc));return true}return false} +function Zk(f,b,c){var d=f;var e=$wnd.Vaadin.Flow.clients[b];e.isActive=cJ(function(){return d.cb()});e.getVersionInfo=cJ(function(a){return {'flow':c}});e.debug=cJ(function(){var a=d.a;return a.jb().Db().Ab()})} +function Nr(a){var b,c,d,e;if(a.g.length==0){return false}e=-1;for(b=0;b=f&&(SI(b,a.length),a.charCodeAt(b)!=32)){--b}if(b==f){return}d=a.substr(b+1,c-(b+1));e=RE(d,'\\.');vC(e)} +function iu(a,b){var c,d,e,f,g,h;if(!b){debugger;throw dk(new JD)}for(d=(g=xD(b),g),e=0,f=d.length;e=0;d--){ZF((g.a+=i,g),Md(c[d]));i='.'}return g.a} -function Z(a,b){var c,d,e,f,g;if(ab()){W(b.a)}else{f=(Fd(yl(a.c,xe),9).k?(e='vaadinPushSockJS-min.js'):(e='vaadinPushSockJS.js'),'VAADIN/static/push/'+e);ll&&bE($wnd.console,'Loading sockJS '+f);d=Fd(yl(a.c,Af),57);g=Fd(yl(a.c,xe),9).c+f;c=new jb(a,f,b);bp(d,g,c,false,gJ)}} -function sw(a,b){var c,d,e,f;f=nw(a,b);if($J in a){e=a[$J];aB(f,e)}else if('nodeValue' in a){d=Zd(rE(a['nodeValue']));c=Rv(b.g,d);if(!c){debugger;throw Xj(new HE)}c.f=b;aB(f,c)}else{debugger;throw Xj(new IE('Change should have either value or nodeValue property: '+Cq(a)))}} -function PC(a,b){var c,d,e,f,g,h;if(nE(b)==1){c=b;h=Zd(rE(c[0]));switch(h){case 0:{g=Zd(rE(c[1]));d=(f=g,Fd(a.a.get(f),6)).a;return d}case 1:return e=Jd(c[1]),e;case 2:return NC(Zd(rE(c[1])),Zd(rE(c[2])),Fd(yl(a.c,Fg),26));default:throw Xj(new pF(aL+oE(c)));}}else{return b}} -function hs(a,b){var c,d,e,f,g;ll&&($wnd.console.log('Handling dependencies'),undefined);c=new $wnd.Map;for(e=(ID(),td(nd(Di,1),sJ,51,0,[GD,FD,HD])),f=0,g=e.length;fa.a){a.a==0?ll&&bE($wnd.console,'Updating client-to-server id to '+b+' based on server'):tl('Server expects next client-to-server id to be '+b+' but we were going to use '+a.a+'. Will use '+b+'.');a.a=b}} -function P(a,b){if(!b){debugger;throw Xj(new HE)}switch(a.e.c){case 0:a.e=(Bb(),yb);a.b=b;break;case 1:ll&&($wnd.console.log('Closing push connection'),undefined);a.d.close();a.e=(Bb(),xb);b.I();break;case 2:case 3:throw Xj(new qF('Can not disconnect more than once'));default:throw Xj(new qF('Invalid state'));}} -function fy(a,b){var c,d,e,f,g,h;c=a.f;d=b.style;jB(a.a);if(a.c){h=(jB(a.a),Md(a.g));e=false;if(h.indexOf('!important')!=-1){f=YD($doc,b.tagName);g=f.style;g.cssText=c+': '+h+';';if(IF('important',QD(f.style,c))){TD(d,c,RD(f.style,c),'important');e=true}}e||(d.setProperty(c,h),undefined)}else{d.removeProperty(c)}} -function Vq(a){var b,c,d,e;XA((c=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(c,qK)))!=null&&jl('reconnectingText',XA((d=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(d,qK))));XA((e=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(e,rK)))!=null&&jl('offlineText',XA((b=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(b,rK))))} -function cp(a,b,c){var d,e,f;f=Aq(b);d=new tp(f);if(a.b.has(f)){!!c&&c.K(d);return}if(gp(f,c,a.a)){e=$doc.createElement('link');e.rel=kK;e.type='text/css';e.href=f;if((!fl&&(fl=new hl),fl).a.k||il()){Sc((Gc(),new kp(a,f,d)),10)}else{hp(e,new xp(a,f),d);(!fl&&(fl=new hl),fl).a.j&&ok(new mp(a,f,d),5000)}WD($doc.head,e)}} -function Op(a,b,c,d,e,f){var g,h,i;if(b==null&&c==null&&d==null){Fd(yl(a.a,xe),9).t?(h=Fd(yl(a.a,xe),9).o+'web-component/web-component-bootstrap.js',i=LD(h,'v-r=webcomponent-resync'),fD(i,new Sp(a)),undefined):Bq(e);return}g=Lp(b,c,d,f);if(!Fd(yl(a.a,xe),9).t){MD(g,lK,new $p(e),false);MD($doc,'keydown',new aq(e),false)}} -function rH(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} -function On(a,b){var c,d,e,f,g;c=HA(a).children;e=-1;for(f=0;f0){k=Ix(a,b);d=!k?null:HA(k.a).nextSibling}else{d=null}for(g=0;g=a.f.length||a.a>=a.g.length){tl('No matching scroll position found (entries X:'+a.f.length+', Y:'+a.g.length+') for opened history index ('+a.a+'). '+RJ);Ul(a);return}c=nF(Hd(a.f[a.a]));d=nF(Hd(a.g[a.a]));b?(a.e=Et(Fd(yl(a.d,Bg),13),new Ip(a,c,d))):am(td(nd(_d,1),sJ,95,15,[c,d]))} -function Hx(b,c){var d,e,f,g,h;if(!c){return -1}try{h=HA(Kd(c));f=[];f.push(b);for(e=0;e=9223372036854775807){return Ad(),xd}e=false;if(a<0){e=true;a=-a}d=0;if(a>=FJ){d=Zd(a/FJ);a-=d*FJ}c=0;if(a>=GJ){c=Zd(a/GJ);a-=c*GJ}b=Zd(a);f=vd(b,c,d);e&&(g=~f.l+1&EJ,h=~f.m+(g==0?1:0)&EJ,i=~f.h+(g==0&&h==0?1:0)&1048575,f.l=g,f.m=h,f.h=i,undefined);return f} -function gv(a,b){var c,d,e,f;if(iv(b)||Fd(yl(a,Of),10).b!=(qq(),oq)){return}c=ev(b);if(!c){return}f=c.href;d=b.currentTarget.ownerDocument.baseURI;if(!IF(f.substr(0,d.length),d)){return}if(jv(c.pathname,c.href.indexOf('#')!=-1)){e=$doc.location.hash;IF(e,c.hash)||Fd(yl(a,Df),27).lb(f);Fd(yl(a,Df),27).nb(true);return}if(!c.hasAttribute('router-link')){return}hv(b,d,f,a)} -function Wq(a,b){if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){ll&&($wnd.console.warn('Trying to reconnect after application has been stopped. Giving up'),undefined);return}if(b){ll&&($wnd.console.log('Re-sending last message to the server...'),undefined);Vs(Fd(yl(a.c,pg),17),b)}else{ll&&($wnd.console.log('Trying to re-establish server connection...'),undefined);Ir(Fd(yl(a.c,_f),56))}} -function lF(a){var b,c,d,e,f;if(a==null){throw Xj(new CF(yJ))}d=a.length;e=d>0&&(NI(0,a.length),a.charCodeAt(0)==45||(NI(0,a.length),a.charCodeAt(0)==43))?1:0;for(b=e;b2147483647){throw Xj(new CF(lL+a+'"'))}return f} -function QF(a,b,c){var d,e,f,g,h,i,j,k;d=new RegExp(b,'g');j=pd(kj,sJ,2,0,6,1);e=0;k=a;g=null;while(true){i=d.exec(k);if(i==null||k==''||e==c-1&&c>0){j[e]=k;break}else{h=i.index;j[e]=k.substr(0,h);k=SF(k,h+i[0].length,k.length);d.lastIndex=0;if(g==k){j[e]=k.substr(0,1);k=k.substr(1)}g=k;++e}}if(c==0&&a.length>0){f=j.length;while(f>0&&j[f-1]==''){--f}f=14&&c<=16));case 11:return b!=null&&Vd(b);case 12:return b!=null&&(typeof b===aJ||typeof b==cJ);case 0:return Ed(b,a.__elementTypeId$);case 2:return Wd(b)&&!(b.jc===kk);case 1:return Wd(b)&&!(b.jc===kk)||Ed(b,a.__elementTypeId$);default:return true;}} -function _m(b,c){if(document.body.$&&document.body.$.hasOwnProperty&&document.body.$.hasOwnProperty(c)){return document.body.$[c]}else if(b.shadowRoot){return b.shadowRoot.getElementById(c)}else if(b.getElementById){return b.getElementById(c)}else if(c&&c.match('^[a-zA-Z0-9-_]*$')){return b.querySelector('#'+c)}else{return Array.from(b.querySelectorAll('[id]')).find(function(a){return a.id==c})}} -function Fo(a,b){var c,d,e,f,g,h,i,j;if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){Bq(null);return}d=$wnd.location.pathname;e=$wnd.location.search;if(a.a==null){debugger;throw Xj(new IE('Initial response has not ended before pop state event was triggered'))}f=!(d==a.a&&e==a.b);Fd(yl(a.c,Df),27).mb(b,f);if(!f){return}c=yq($doc.baseURI,$doc.location.href);c.indexOf('#')!=-1&&(c=QF(c,'#',2)[0]);g=b['state'];kv(a.c,c,g,false)} -function Zq(a,b,c){var d;if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){return}kl('reconnecting');if(a.b){if(xr(b,a.b)){ll&&cE($wnd.console,'Now reconnecting because of '+b+' failure');a.b=b}}else{a.b=b;ll&&cE($wnd.console,'Reconnecting because of '+b+' failure')}if(a.b!=b){return}++a.a;sl('Reconnect attempt '+a.a+' for '+b);a.a>=WA((d=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(d,'reconnectAttempts')),10000)?Xq(a):lr(a,c)} -function an(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;j=null;g=HA(a.a).childNodes;o=new $wnd.Map;e=!b;i=-1;for(m=0;m. User has navigated out of site in an unrecognized way.');Ul(b)}}else{Ul(b)}} -function Iy(a,b,c,d){var e,f,g,h,i;if(d==null||Ud(d)){Dq(b,c,Md(d))}else{f=d;if(0==nE(f)){g=f;if(!('uri' in g)){debugger;throw Xj(new IE("Implementation error: JsonObject is recieved as an attribute value for '"+c+"' but it has no "+'uri'+' key'))}i=g['uri'];if(a.t&&!i.match(/^(?:[a-zA-Z]+:)?\/\//)){e=a.o;e=(h='/'.length,IF(e.substr(e.length-h,h),'/')?e:e+'/');HA(b).setAttribute(c,e+(''+i))}else{i==null?HA(b).removeAttribute(c):HA(b).setAttribute(c,i)}}else{Dq(b,c,jk(d))}}} -function Mx(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;o=Fd(c.e.get(Vh),77);if(!o||!o.a.has(a)){return}k=QF(a,'\\.',0);g=c;f=null;e=0;j=k.length;for(m=0,n=k.length;m=f){debugger;throw Xj(new HE)}return g.length==0?null:g}else{return a}} -function ry(a,b,c,d,e){var f,g,h;h=Rv(e,Zd(a));if(!h.c.has(1)){return}if(!my(h,b)){debugger;throw Xj(new IE('Host element is not a parent of the node whose property has changed. This is an implementation error. Most likely it means that there are several StateTrees on the same page (might be possible with portlets) and the target StateTree should not be passed into the method as an argument but somehow detected from the host element. Another option is that host element is calculated incorrectly.'))}f=uv(h,1);g=UB(f,c);UA(g,d).X()} -function Lp(a,b,c,d){var e,f,g,h,i,j;h=$doc;j=h.createElement('div');j.className='v-system-error';if(a!=null){f=h.createElement('div');f.className='caption';f.textContent=a;j.appendChild(f);ll&&aE($wnd.console,a)}if(b!=null){i=h.createElement('div');i.className='message';i.textContent=b;j.appendChild(i);ll&&aE($wnd.console,b)}if(c!=null){g=h.createElement('div');g.className='details';g.textContent=c;j.appendChild(g);ll&&aE($wnd.console,c)}if(d!=null){e=h.querySelector(d);!!e&&VD(Kd(MH(QH(e.shadowRoot),e)),j)}else{WD(h.body,j)}return j} -function Ku(h,e,f){var g={};g.getNode=_I(function(a){var b=e.get(a);if(b==null){throw new ReferenceError('There is no a StateNode for the given argument.')}return b});g.$appId=h.Db().replace(/-\d+$/,'');g.registry=h.a;g.attachExistingElement=_I(function(a,b,c,d){an(g.getNode(a),b,c,d)});g.populateModelProperties=_I(function(a,b){dn(g.getNode(a),b)});g.registerUpdatableModelProperties=_I(function(a,b){fn(g.getNode(a),b)});g.stopApplication=_I(function(){f.X()});g.scrollPositionHandlerAfterServerNavigation=_I(function(a){gn(g.registry,a)});return g} -function fd(a,b){var c,d,e,f,g,h,i,j,k;if(b.length==0){return a.V(DJ,BJ,-1,-1)}k=TF(b);IF(k.substr(0,3),'at ')&&(k=k.substr(3));k=k.replace(/\[.*?\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=TF(k.substr(g+1));k=TF(k.substr(0,g))}}else{c=k.indexOf(')',g);j=k.substr(g+1,c-(g+1));k=TF(k.substr(0,g))}g=KF(k,UF(46));g!=-1&&(k=k.substr(g+1));(k.length==0||IF(k,'Anonymous function'))&&(k=BJ);h=MF(j,UF(58));e=NF(j,UF(58),h-1);i=-1;d=-1;f=DJ;if(h!=-1&&e!=-1){f=j.substr(0,e);i=ad(j.substr(e+1,h-(e+1)));d=ad(j.substr(h+1))}return a.V(f,k,i,d)} -function Mq(a,b){var c,d,e;c=Uq(b,'serviceUrl');Tk(a,Sq(b,'webComponentMode'));Ek(a,Sq(b,'clientRouting'));if(c==null){Ok(a,Aq('.'));Fk(a,Aq(Uq(b,nK)))}else{a.o=c;Fk(a,Aq(c+(''+Uq(b,nK))))}Sk(a,Tq(b,'v-uiId').a);Ik(a,Tq(b,'heartbeatInterval').a);Lk(a,Tq(b,'maxMessageSuspendTimeout').a);Pk(a,(d=b.getConfig(oK),d?d.vaadinVersion:null));e=b.getConfig(oK);Rq();Qk(a,b.getConfig('sessExpMsg'));Mk(a,!Sq(b,'debug'));Nk(a,Sq(b,'requestTiming'));Hk(a,b.getConfig('webcomponents'));Gk(a,Sq(b,'devToolsEnabled'));Kk(a,Uq(b,'liveReloadUrl'));Jk(a,Uq(b,'liveReloadBackend'));Rk(a,Uq(b,'springBootLiveReloadPort'))} -function mb(b){var c=function(a){return typeof a!=pJ};var d=function(a){return a.replace(/\r\n/g,'')};if(c(b.outerHTML))return d(b.outerHTML);c(b.innerHTML)&&b.cloneNode&&$doc.createElement('div').appendChild(b.cloneNode(true)).innerHTML;if(c(b.nodeType)&&b.nodeType==3){return "'"+b.data.replace(/ /g,'\u25AB').replace(/\u00A0/,'\u25AA')+"'"}if(typeof c(b.htmlText)&&b.collapse){var e=b.htmlText;if(e){return 'IETextRange ['+d(e)+']'}else{var f=b.duplicate();f.pasteHTML('|');var g='IETextRange '+d(b.parentElement().outerHTML);f.moveStart('character',-1);f.pasteHTML('');return g}}return b.toString?b.toString():'[JavaScriptObject]'} -function $(a){var b,c,d,e;this.e=(Bb(),zb);this.c=a;gq(Fd(yl(a,Of),10),new Eb(this));this.a={transport:fJ,fallbackTransport:hJ,transports:[fJ,hJ,iJ],reconnectInterval:5000,maxReconnectAttempts:10,timeout:5000};this.a['logLevel']='debug';nt(Fd(yl(this.c,xg),46)).forEach(hk(Gb.prototype.M,Gb,[this]));pb(this.a);c=ot(Fd(yl(this.c,xg),46));if(c==null||TF(c).length==0||IF('/',c)){this.g=jJ;d=Fd(yl(a,xe),9).o;IF('.',d)||(e='/'.length,IF(d.substr(d.length-e,e),'/')||(d+='/'));this.g=d+(''+this.g)}else{b=Fd(yl(a,xe),9).c;e='/'.length;IF(b.substr(b.length-e,e),'/')&&IF(c.substr(0,1),'/')&&(c=c.substr(1));this.g=b+(''+c)+jJ}Z(this,new Ib(this))} -function _n(a,b,c){var d,e,f;f=[];if(a.c.has(1)){if(!Pd(b,40)){debugger;throw Xj(new IE('Received an inconsistent NodeFeature for a node that has a ELEMENT_PROPERTIES feature. It should be NodeMap, but it is: '+b))}e=Fd(b,40);TB(e,hk(qo.prototype.M,qo,[f,c]));f.push(SB(e,new oo(f,c)))}else if(a.c.has(16)){if(!Pd(b,29)){debugger;throw Xj(new IE('Received an inconsistent NodeFeature for a node that has a TEMPLATE_MODELLIST feature. It should be NodeList, but it is: '+b))}d=Fd(b,29);f.push(EB(d,new ko(c)))}if(f.length==0){debugger;throw Xj(new IE('Node should have ELEMENT_PROPERTIES or TEMPLATE_MODELLIST feature'))}f.push(qv(a,new mo(f)))} -function Il(a,b){this.a=new $wnd.Map;this.b=new $wnd.Map;Bl(this,Ae,a);Bl(this,xe,b);Bl(this,Af,new ep(this));Bl(this,Pf,new xq(this));Bl(this,Ve,new tm(this));Bl(this,Jf,new Qp(this));Cl(this,Of,new Jl);Bl(this,bh,new dw(this));Bl(this,Bg,new Jt(this));Bl(this,ng,new us(this));Bl(this,pg,new Zs(this));Bl(this,Jg,new ku(this));Bl(this,Fg,new cu(this));Bl(this,Ug,new Qu(this));Cl(this,Qg,new Ll);Cl(this,Ye,new Nl);Bl(this,$e,new xn(this));Bl(this,_f,new Kr(this));Bl(this,Rf,new qr(this));Bl(this,Pg,new su(this));Bl(this,xg,new qt(this));Bl(this,zg,new Bt(this));b.b||(b.t?Bl(this,Df,new bm):Bl(this,Df,new Wl(this)));Bl(this,tg,new ht(this))} -function iy(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;l=e.e;o=Md(VA(UB(uv(b,0),'tag')));h=false;if(!a){h=true;ll&&cE($wnd.console,YK+d+" is not found. The requested tag name is '"+o+"'")}else if(!(!!a&&JF(o,a.tagName))){h=true;tl(YK+d+" has the wrong tag name '"+a.tagName+"', the requested tag name is '"+o+"'")}if(h){_v(l.g,l,b.d,-1,c);return false}if(!l.c.has(20)){return true}k=uv(l,20);m=Fd(VA(UB(k,TK)),6);if(!m){return true}j=tv(m,2);g=null;for(i=0;i<(jB(j.a),j.c.length);i++){n=Fd(j.c[i],6);f=n.a;if(I(f,a)){g=vF(n.d);break}}if(g){ll&&cE($wnd.console,YK+d+" has been already attached previously via the node id='"+g+"'");_v(l.g,l,b.d,g.a,c);return false}return true} -function Mu(b,c,d,e){var f,g,h,i,j,k,l,m;if(c.length!=d.length+1){debugger;throw Xj(new HE)}try{j=new ($wnd.Function.bind.apply($wnd.Function,[null].concat(c)));j.apply(Ku(b,e,new Uu(b)),d)}catch(a){a=Wj(a);if(Pd(a,7)){i=a;ll&&nl(new ul(i));ll&&($wnd.console.error('Exception is thrown during JavaScript execution. Stacktrace will be dumped separately.'),undefined);if(!Fd(yl(b.a,xe),9).k){g=new aG('[');h='';for(l=0,m=c.length;l=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!rH()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype['delete']=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} -function Kx(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;if(!b){debugger;throw Xj(new HE)}f=b.b;s=b.e;if(!f){debugger;throw Xj(new IE('Cannot handle DOM event for a Node'))}C=a.type;r=uv(s,4);e=Fd(yl(s.g.c,Qg),58);i=Md(VA(UB(r,C)));if(i==null){debugger;throw Xj(new HE)}if(!Gu(e,i)){debugger;throw Xj(new HE)}j=Kd(Fu(e,i));o=(w=uE(j),w);A=new $wnd.Set;o.length==0?(g=null):(g={});for(l=0,m=o.length;l=0){g=b.substr(f+3);g=PF(g,hL,'$1');this.a=oF(g)}}else if(this.o){g=RF(b,b.indexOf('webkit/')+7);g=PF(g,iL,'$1');this.a=oF(g)}else if(this.n){g=RF(b,b.indexOf(eL)+8);g=PF(g,iL,'$1');this.a=oF(g);this.a>7&&(this.a=7)}else this.c&&(this.a=0)}catch(a){a=Wj(a);if(Pd(a,7)){c=a;dG();'Browser engine version parsing failed for: '+b+' '+c.P()}else throw Xj(a)}try{if(this.f){if(b.indexOf('msie')!=-1){if(this.n);else{e=RF(b,b.indexOf('msie ')+5);e=vD(e,0,KF(e,UF(59)));sD(e)}}else{f=b.indexOf('rv:');if(f>=0){g=b.substr(f+3);g=PF(g,hL,'$1');sD(g)}}}else if(this.d){d=b.indexOf(' firefox/')+9;sD(vD(b,d,d+5))}else if(this.b){oD(b)}else if(this.k){d=b.indexOf(' version/');if(d>=0){d+=9;sD(vD(b,d,d+5))}}else if(this.j){d=b.indexOf(' version/');d!=-1?(d+=9):(d=b.indexOf('opera/')+6);sD(vD(b,d,d+5))}else if(this.c){d=b.indexOf(' edge/')+6;b.indexOf(' edg/')!=-1?(d=b.indexOf(' edg/')+5):b.indexOf(fL)!=-1?(d=b.indexOf(fL)+6):b.indexOf(gL)!=-1&&(d=b.indexOf(gL)+8);sD(vD(b,d,d+8))}}catch(a){a=Wj(a);if(Pd(a,7)){c=a;dG();'Browser version parsing failed for: '+b+' '+c.P()}else throw Xj(a)}if(b.indexOf('windows ')!=-1){b.indexOf('windows phone')!=-1}else if(b.indexOf('android')!=-1){lD(b)}else if(b.indexOf('linux')!=-1);else if(b.indexOf('macintosh')!=-1||b.indexOf('mac osx')!=-1||b.indexOf('mac os x')!=-1){this.g=b.indexOf('ipad')!=-1;this.i=b.indexOf('iphone')!=-1;(this.g||this.i)&&pD(b)}else b.indexOf('; cros ')!=-1&&mD(b)} -var aJ='object',bJ='[object Array]',cJ='function',dJ='java.lang',eJ='v-uiId=',fJ='websocket',gJ='text/javascript',hJ='xhr-polling',iJ='xhr-streaming',jJ='VAADIN/push',kJ='transport',lJ='Received push (',mJ='com.github.mcollovati.vertx.vaadin.sockjs.client',nJ='com.vaadin.client',oJ={22:1},pJ='undefined',qJ='com.google.gwt.core.client',rJ='fallbackTransport',sJ={4:1},tJ={97:1},uJ={21:1},vJ='__noinit__',wJ='__java$exception',xJ={4:1,7:1,8:1,5:1},yJ='null',zJ='com.google.gwt.core.client.impl',AJ='Working array length changed ',BJ='anonymous',CJ='fnStack',DJ='Unknown',EJ=4194303,FJ=17592186044416,GJ=4194304,HJ='must be non-negative',IJ='must be positive',JJ='com.google.web.bindery.event.shared',KJ='url',LJ='historyIndex',MJ='historyResetToken',NJ='xPositions',OJ='yPositions',PJ='scrollPos-',QJ='Failed to get session storage: ',RJ='Unable to restore scroll positions. History.state has been manipulated or user has navigated away from site in an unrecognized way.',SJ='beforeunload',TJ='scrollPositionX',UJ='scrollPositionY',VJ='type',WJ={68:1},XJ={18:1},YJ='constructor',ZJ='properties',$J='value',_J='com.vaadin.client.flow.reactive',aK={14:1},bK='nodeId',cK='Root node for node ',dK=' could not be found',eK=' is not an Element',fK={69:1},gK={82:1},hK={44:1},iK={96:1},jK='script',kK='stylesheet',lK='click',mK='com.vaadin.flow.shared',nK='contextRootUrl',oK='versionInfo',pK='com.vaadin.client.communication',qK='dialogText',rK='dialogTextGaveUp',sK='syncId',tK='resynchronize',uK='Received message with server id ',vK='clientId',wK='Vaadin-Security-Key',xK='Vaadin-Push-ID',yK='sessionExpired',zK='pushServletMapping',AK='event',BK='node',CK='attachReqId',DK='attachAssignedId',EK='com.vaadin.client.flow',FK='bound',GK='payload',HK='subTemplate',IK={42:1},JK='Node is null',KK='Node is not created for this tree',LK='Node id is not registered with this tree',MK='$server',NK='feat',OK='remove',PK='com.vaadin.client.flow.binding',QK='intermediate',RK='elemental.util',SK='element',TK='shadowRoot',UK='The HTML node for the StateNode with id=',VK='An error occurred when Flow tried to find a state node matching the element ',WK='hidden',XK='styleDisplay',YK='Element addressed by the ',ZK='dom-repeat',$K='dom-change',_K='com.vaadin.client.flow.nodefeature',aL='Unsupported complex type in ',bL='com.vaadin.client.gwt.com.google.web.bindery.event.shared',cL='OS minor',dL=' headlesschrome/',eL='trident/',fL=' edga/',gL=' edgios/',hL='(\\.[0-9]+).+',iL='([0-9]+\\.[0-9]+).*',jL='com.vaadin.flow.shared.ui',kL='java.io',lL='For input string: "',mL='java.util',nL={43:1},oL='java.util.logging',pL={4:1,323:1},qL='java.util.stream',rL='user.agent';var _,dk,$j,Vj=-1;ek();fk(1,null,{},G);_.u=function H(a){return this===a};_.v=function J(){return this.hc};_.w=function L(){return TI(this)};_.A=function N(){var a;return RE(K(this))+'@'+(a=M(this)>>>0,a.toString(16))};_.equals=function(a){return this.u(a)};_.hashCode=function(){return this.w()};_.toString=function(){return this.A()};var Bd,Cd,Dd;fk(99,1,{},SE);_.Wb=function TE(a){var b;b=new SE;b.e=4;a>1?(b.c=$E(this,a-1)):(b.c=this);return b};_.Xb=function ZE(){QE(this);return this.b};_.Yb=function _E(){return RE(this)};_.Zb=function bF(){QE(this);return this.g};_.$b=function dF(){return (this.e&4)!=0};_._b=function eF(){return (this.e&1)!=0};_.A=function hF(){return ((this.e&2)!=0?'interface ':(this.e&1)!=0?'':'class ')+(QE(this),this.j)};_.e=0;var PE=1;var ej=VE(dJ,'Object',1);var Ti=VE(dJ,'Class',99);fk(105,1,{},$);_.B=function bb(a){this.e=(Bb(),zb);Fd(yl(this.c,Rf),16);ll&&($wnd.console.log('Push connection closed'),undefined)};_.C=function cb(a){this.e=(Bb(),xb);Yq(Fd(Fd(yl(this.c,Rf),16),88),'Push connection using '+a[kJ]+' failed!')};_.D=function db(a){var b,c;c=a['data'];b=xs(ys(c));if(!b){er(Fd(yl(this.c,Rf),16),this,c)}else{sl(lJ+this.f+') message: '+c);Fd(yl(this.c,Of),10).b==(qq(),pq)?tl(lJ+this.f+') message, but ui is already terminated: '+c):js(Fd(yl(this.c,ng),19),b)}};_.F=function eb(a){uI(zI((QE(ge),ge.j)),'Push connection established using '+this.d.getTransport());X(this,this.d)};_.G=function fb(a){this.e==(Bb(),Ab)&&(this.e=zb);hr(Fd(yl(this.c,Rf),16),this)};_.H=function gb(a){uI(zI((QE(ge),ge.j)),'Push connection re-established using '+this.d.getTransport());X(this,this.d)};var ge=VE(mJ,'SockJSPushConnection',105);fk(239,1,{},hb);_.I=function ib(){O(this.a)};var ae=VE(mJ,'SockJSPushConnection/0methodref$connect$Type',239);var uf=XE(nJ,'ResourceLoader/ResourceLoadListener');fk(241,1,oJ,jb);_.J=function kb(a){ir(Fd(yl(this.a.c,Rf),16),a.a)};_.K=function lb(a){if(ab()){sl(this.c+' loaded');W(this.b.a)}else{ll&&($wnd.console.log('SockJS not loaded???????'),undefined);ir(Fd(yl(this.a.c,Rf),16),a.a)}};var be=VE(mJ,'SockJSPushConnection/1',241);var je=VE(qJ,'JavaScriptObject$',0);var nb;fk(25,1,{4:1,32:1,25:1});_.u=function tb(a){return this===a};_.w=function ub(){return TI(this)};_.A=function vb(){return this.b!=null?this.b:''+this.c};_.c=0;var Vi=VE(dJ,'Enum',25);fk(50,25,{50:1,4:1,32:1,25:1},Cb);var xb,yb,zb,Ab;var ce=WE(mJ,'SockJSPushConnection/State',50,Db);fk(238,1,tJ,Eb);_.L=function Fb(a){U(this.a,a)};var de=VE(mJ,'SockJSPushConnection/lambda$0$Type',238);fk(371,$wnd.Function,{},Gb);_.M=function Hb(a,b){V(this.a,a,b)};var Ce=XE(nJ,'Command');fk(240,1,uJ,Ib);_.I=function Jb(){W(this.a)};var ee=VE(mJ,'SockJSPushConnection/lambda$2$Type',240);fk(237,1,uJ,Kb);_.I=function Lb(){};var fe=VE(mJ,'SockJSPushConnection/lambda$3$Type',237);fk(101,1,{},Nb);_.a=0;var he=VE(qJ,'Duration',101);var Ob=null;fk(5,1,{4:1,5:1});_.O=function Xb(a){return new Error(a)};_.P=function Zb(){return this.g};_.Q=function $b(){var a,b,c;c=this.g==null?null:this.g.replace(new RegExp('\n','g'),' ');b=(a=RE(this.hc),c==null?a:a+': '+c);Ub(this,Yb(this.O(b)));Zc(this)};_.A=function ac(){return Vb(this,this.P())};_.e=vJ;_.k=true;var lj=VE(dJ,'Throwable',5);fk(7,5,{4:1,7:1,5:1});var Xi=VE(dJ,'Exception',7);fk(8,7,xJ,dc);var gj=VE(dJ,'RuntimeException',8);fk(54,8,xJ,ec);var aj=VE(dJ,'JsException',54);fk(120,54,xJ);var le=VE(zJ,'JavaScriptExceptionBase',120);fk(23,120,{23:1,4:1,7:1,8:1,5:1},ic);_.P=function lc(){return hc(this),this.c};_.R=function mc(){return Yd(this.b)===Yd(fc)?null:this.b};var fc;var ie=VE(qJ,'JavaScriptException',23);fk(324,1,{});var ke=VE(qJ,'Scheduler',324);var oc=0,pc=false,qc,rc=0,sc=-1;fk(129,324,{});_.e=false;_.j=false;var Fc;var oe=VE(zJ,'SchedulerImpl',129);fk(130,1,{},Tc);_.S=function Uc(){this.a.e=true;Jc(this.a);this.a.e=false;return this.a.j=Kc(this.a)};var me=VE(zJ,'SchedulerImpl/Flusher',130);fk(131,1,{},Vc);_.S=function Wc(){this.a.e&&Rc(this.a.f,1);return this.a.j};var ne=VE(zJ,'SchedulerImpl/Rescuer',131);var Xc;fk(334,1,{});var se=VE(zJ,'StackTraceCreator/Collector',334);fk(121,334,{},cd);_.T=function dd(a){var b={},j;var c=[];a[CJ]=c;var d=arguments.callee.caller;while(d){var e=(Yc(),d.name||(d.name=_c(d.toString())));c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h0){Yo(this.b,this.c);return false}else if(a==0){Xo(this.b,this.c);return true}else if(Mb(this.a)>60000){Xo(this.b,this.c);return false}else{return true}};var pf=VE(nJ,'ResourceLoader/1',185);fk(186,38,{},mp);_.X=function np(){this.a.b.has(this.c)||Xo(this.a,this.b)};var qf=VE(nJ,'ResourceLoader/2',186);fk(190,38,{},op);_.X=function pp(){this.a.b.has(this.c)?Yo(this.a,this.b):Xo(this.a,this.b)};var rf=VE(nJ,'ResourceLoader/3',190);fk(191,1,oJ,qp);_.J=function rp(a){Xo(this.a,a)};_.K=function sp(a){Yo(this.a,a)};var sf=VE(nJ,'ResourceLoader/4',191);fk(62,1,{},tp);var tf=VE(nJ,'ResourceLoader/ResourceLoadEvent',62);fk(104,1,oJ,up);_.J=function vp(a){Xo(this.a,a)};_.K=function wp(a){Yo(this.a,a)};var vf=VE(nJ,'ResourceLoader/SimpleLoadListener',104);fk(184,1,oJ,xp);_.J=function yp(a){Xo(this.a,a)};_.K=function zp(a){var b;if((!fl&&(fl=new hl),fl).a.b||(!fl&&(fl=new hl),fl).a.f||(!fl&&(fl=new hl),fl).a.c){b=ip(this.b);if(b==0){Xo(this.a,a);return}}Yo(this.a,a)};var wf=VE(nJ,'ResourceLoader/StyleSheetLoadListener',184);fk(187,1,{},Ap);_.jb=function Bp(){return this.a.call(null)};var xf=VE(nJ,'ResourceLoader/lambda$0$Type',187);fk(188,1,XJ,Cp);_.X=function Dp(){this.b.K(this.a)};var yf=VE(nJ,'ResourceLoader/lambda$1$Type',188);fk(189,1,XJ,Ep);_.X=function Fp(){this.b.J(this.a)};var zf=VE(nJ,'ResourceLoader/lambda$2$Type',189);fk(150,1,{},Gp);_.ub=function Hp(a){Sl(this.a)};var Bf=VE(nJ,'ScrollPositionHandler/0methodref$onBeforeUnload$Type',150);fk(151,1,iK,Ip);_.vb=function Jp(a){Rl(this.a,this.b,this.c)};_.b=0;_.c=0;var Cf=VE(nJ,'ScrollPositionHandler/lambda$0$Type',151);fk(24,1,{24:1},Qp);var Jf=VE(nJ,'SystemErrorHandler',24);fk(155,1,{},Sp);_.xb=function Tp(a,b){Kp(b.P())};_.yb=function Up(a){var b;sl('Received xhr HTTP session resynchronization message: '+a.responseText);Al(this.a.a);hq(Fd(yl(this.a.a,Of),10),(qq(),oq));b=xs(ys(a.responseText));js(Fd(yl(this.a.a,ng),19),b);Sk(Fd(yl(this.a.a,xe),9),b['uiId']);cq((Gc(),Fc),new Yp(this))};var Gf=VE(nJ,'SystemErrorHandler/1',155);fk(156,1,{},Wp);_.pb=function Xp(a){Vp(a)};var Ef=VE(nJ,'SystemErrorHandler/1/0methodref$recreateNodes$Type',156);fk(157,1,{},Yp);_.I=function Zp(){DI(cH(Fd(yl(this.a.a.a,xe),9).e),new Wp)};var Ff=VE(nJ,'SystemErrorHandler/1/lambda$0$Type',157);fk(153,1,{},$p);_.ub=function _p(a){Bq(this.a)};var Hf=VE(nJ,'SystemErrorHandler/lambda$0$Type',153);fk(154,1,{},aq);_.ub=function bq(a){Rp(this.a,a)};var If=VE(nJ,'SystemErrorHandler/lambda$1$Type',154);fk(133,129,{},dq);_.a=0;var Lf=VE(nJ,'TrackingScheduler',133);fk(134,1,{},eq);_.I=function fq(){this.a.a--};var Kf=VE(nJ,'TrackingScheduler/lambda$0$Type',134);fk(10,1,{10:1},iq);var Of=VE(nJ,'UILifecycle',10);fk(161,343,{},kq);_.Z=function lq(a){Fd(a,97).L(this)};_._=function mq(){return jq};var jq=null;var Mf=VE(nJ,'UILifecycle/StateChangeEvent',161);fk(60,25,{60:1,4:1,32:1,25:1},rq);var nq,oq,pq;var Nf=WE(nJ,'UILifecycle/UIState',60,sq);fk(342,1,sJ);var Bi=VE(mK,'VaadinUriResolver',342);fk(47,342,{47:1,4:1},xq);_.zb=function zq(a){return wq(this,a)};var Pf=VE(nJ,'URIResolver',47);var Eq=false,Fq;fk(114,1,{},Pq);_.I=function Qq(){Lq(this.a)};var Qf=VE('com.vaadin.client.bootstrap','Bootstrapper/lambda$0$Type',114);var Rf=XE(pK,'ConnectionStateHandler');fk(88,1,{16:1,88:1},qr);_.a=0;_.b=null;var Xf=VE(pK,'DefaultConnectionStateHandler',88);fk(214,38,{},rr);_.X=function sr(){this.a.d=null;Wq(this.a,this.b)};var Sf=VE(pK,'DefaultConnectionStateHandler/1',214);fk(63,25,{63:1,4:1,32:1,25:1},yr);_.a=0;var tr,ur,vr;var Tf=WE(pK,'DefaultConnectionStateHandler/Type',63,zr);fk(213,1,tJ,Ar);_.L=function Br(a){cr(this.a,a)};var Uf=VE(pK,'DefaultConnectionStateHandler/lambda$0$Type',213);fk(215,1,{},Cr);_.ub=function Dr(a){Xq(this.a)};var Vf=VE(pK,'DefaultConnectionStateHandler/lambda$1$Type',215);fk(216,1,{},Er);_.ub=function Fr(a){dr(this.a)};var Wf=VE(pK,'DefaultConnectionStateHandler/lambda$2$Type',216);fk(56,1,{56:1},Kr);_.a=-1;var _f=VE(pK,'Heartbeat',56);fk(210,38,{},Lr);_.X=function Mr(){Ir(this.a)};var Yf=VE(pK,'Heartbeat/1',210);fk(212,1,{},Nr);_.xb=function Or(a,b){!b?ar(Fd(yl(this.a.b,Rf),16),a):_q(Fd(yl(this.a.b,Rf),16),b);Hr(this.a)};_.yb=function Pr(a){br(Fd(yl(this.a.b,Rf),16));Hr(this.a)};var Zf=VE(pK,'Heartbeat/2',212);fk(211,1,tJ,Qr);_.L=function Rr(a){Gr(this.a,a)};var $f=VE(pK,'Heartbeat/lambda$0$Type',211);fk(163,1,{},Vr);_.pb=function Wr(a){jl('firstDelay',vF(a.a))};var ag=VE(pK,'LoadingIndicatorConfigurator/0methodref$setFirstDelay$Type',163);fk(164,1,{},Xr);_.pb=function Yr(a){jl('secondDelay',vF(a.a))};var bg=VE(pK,'LoadingIndicatorConfigurator/1methodref$setSecondDelay$Type',164);fk(165,1,{},Zr);_.pb=function $r(a){jl('thirdDelay',vF(a.a))};var cg=VE(pK,'LoadingIndicatorConfigurator/2methodref$setThirdDelay$Type',165);fk(166,1,hK,_r);_.tb=function as(a){Ur(YA(Fd(a.e,28)))};var dg=VE(pK,'LoadingIndicatorConfigurator/lambda$0$Type',166);fk(167,1,hK,bs);_.tb=function cs(a){Tr(this.b,this.a,a)};_.a=0;var eg=VE(pK,'LoadingIndicatorConfigurator/lambda$1$Type',167);fk(19,1,{19:1},us);_.a=0;_.b='init';_.d=false;_.e=0;_.f=-1;_.j=null;_.p=0;var ng=VE(pK,'MessageHandler',19);fk(178,1,uJ,zs);_.I=function As(){!GA&&$wnd.Polymer!=null&&IF($wnd.Polymer.version.substr(0,'1.'.length),'1.')&&(GA=true,ll&&($wnd.console.log('Polymer micro is now loaded, using Polymer DOM API'),undefined),FA=new IA,undefined)};var fg=VE(pK,'MessageHandler/0methodref$updateApiImplementation$Type',178);fk(177,38,{},Bs);_.X=function Cs(){fs(this.a)};var gg=VE(pK,'MessageHandler/1',177);fk(359,$wnd.Function,{},Ds);_.pb=function Es(a){ds(Fd(a,6))};fk(61,1,{61:1},Fs);var hg=VE(pK,'MessageHandler/PendingUIDLMessage',61);fk(179,1,uJ,Gs);_.I=function Hs(){qs(this.a,this.d,this.b,this.c)};_.c=0;var ig=VE(pK,'MessageHandler/lambda$0$Type',179);fk(181,1,aK,Is);_.ob=function Js(){DC(new Ms(this.a,this.b))};var jg=VE(pK,'MessageHandler/lambda$1$Type',181);fk(183,1,aK,Ks);_.ob=function Ls(){ns(this.a)};var kg=VE(pK,'MessageHandler/lambda$3$Type',183);fk(180,1,aK,Ms);_.ob=function Ns(){os(this.a,this.b)};var lg=VE(pK,'MessageHandler/lambda$4$Type',180);fk(182,1,{},Os);_.I=function Ps(){this.a.forEach(hk(Ds.prototype.pb,Ds,[]))};var mg=VE(pK,'MessageHandler/lambda$5$Type',182);fk(17,1,{17:1},Zs);_.a=0;_.d=0;var pg=VE(pK,'MessageSender',17);fk(175,1,uJ,$s);_.I=function _s(){Rs(this.a)};var og=VE(pK,'MessageSender/lambda$0$Type',175);fk(158,1,hK,ct);_.tb=function dt(a){at(this.a,a)};var qg=VE(pK,'PollConfigurator/lambda$0$Type',158);fk(75,1,{75:1},ht);_.Ab=function it(){var a;a=Fd(yl(this.b,bh),11);Zv(a,a.e,'ui-poll',null)};_.a=null;var tg=VE(pK,'Poller',75);fk(160,38,{},jt);_.X=function kt(){var a;a=Fd(yl(this.a.b,bh),11);Zv(a,a.e,'ui-poll',null)};var rg=VE(pK,'Poller/1',160);fk(159,1,tJ,lt);_.L=function mt(a){et(this.a,a)};var sg=VE(pK,'Poller/lambda$0$Type',159);fk(46,1,{46:1},qt);var xg=VE(pK,'PushConfiguration',46);fk(221,1,hK,tt);_.tb=function ut(a){pt(this.a,a)};var ug=VE(pK,'PushConfiguration/0methodref$onPushModeChange$Type',221);fk(222,1,aK,vt);_.ob=function wt(){Ys(Fd(yl(this.a.a,pg),17),true)};var vg=VE(pK,'PushConfiguration/lambda$0$Type',222);fk(223,1,aK,xt);_.ob=function yt(){Ys(Fd(yl(this.a.a,pg),17),false)};var wg=VE(pK,'PushConfiguration/lambda$1$Type',223);fk(365,$wnd.Function,{},zt);_.M=function At(a,b){st(this.a,a,b)};fk(35,1,{35:1},Bt);var zg=VE(pK,'ReconnectConfiguration',35);fk(162,1,uJ,Ct);_.I=function Dt(){Vq(this.a)};var yg=VE(pK,'ReconnectConfiguration/lambda$0$Type',162);fk(13,1,{13:1},Jt);_.b=false;var Bg=VE(pK,'RequestResponseTracker',13);fk(176,1,{},Kt);_.I=function Lt(){Ht(this.a)};var Ag=VE(pK,'RequestResponseTracker/lambda$0$Type',176);fk(236,343,{},Mt);_.Z=function Nt(a){$d(a);null.kc()};_._=function Ot(){return null};var Cg=VE(pK,'RequestStartingEvent',236);fk(152,343,{},Qt);_.Z=function Rt(a){Fd(a,96).vb(this)};_._=function St(){return Pt};var Pt;var Dg=VE(pK,'ResponseHandlingEndedEvent',152);fk(276,343,{},Tt);_.Z=function Ut(a){$d(a);null.kc()};_._=function Vt(){return null};var Eg=VE(pK,'ResponseHandlingStartedEvent',276);fk(26,1,{26:1},cu);_.Bb=function du(a,b,c){Wt(this,a,b,c)};_.Cb=function eu(a,b,c){var d;d={};d[VJ]='channel';d[BK]=Object(a);d['channel']=Object(b);d['args']=c;$t(this,d)};var Fg=VE(pK,'ServerConnector',26);fk(34,1,{34:1},ku);_.b=false;var fu;var Jg=VE(pK,'ServerRpcQueue',34);fk(204,1,XJ,lu);_.X=function mu(){iu(this.a)};var Gg=VE(pK,'ServerRpcQueue/0methodref$doFlush$Type',204);fk(203,1,XJ,nu);_.X=function ou(){gu()};var Hg=VE(pK,'ServerRpcQueue/lambda$0$Type',203);fk(205,1,{},pu);_.I=function qu(){this.a.a.X()};var Ig=VE(pK,'ServerRpcQueue/lambda$1$Type',205);fk(73,1,{73:1},su);_.b=false;var Pg=VE(pK,'XhrConnection',73);fk(220,38,{},uu);_.X=function vu(){tu(this.b)&&this.a.b&&ok(this,250)};var Kg=VE(pK,'XhrConnection/1',220);fk(217,1,{},xu);_.xb=function yu(a,b){var c;c=new Eu(a,this.a);if(!b){or(Fd(yl(this.c.a,Rf),16),c);return}else{mr(Fd(yl(this.c.a,Rf),16),c)}};_.yb=function zu(a){var b,c;sl('Server visit took '+Po(this.b)+'ms');c=a.responseText;b=xs(ys(c));if(!b){nr(Fd(yl(this.c.a,Rf),16),new Eu(a,this.a));return}pr(Fd(yl(this.c.a,Rf),16));ll&&bE($wnd.console,'Received xhr message: '+c);js(Fd(yl(this.c.a,ng),19),b)};_.b=0;var Lg=VE(pK,'XhrConnection/XhrResponseHandler',217);fk(218,1,{},Au);_.ub=function Bu(a){this.a.b=true};var Mg=VE(pK,'XhrConnection/lambda$0$Type',218);fk(219,1,iK,Cu);_.vb=function Du(a){this.a.b=false};var Ng=VE(pK,'XhrConnection/lambda$1$Type',219);fk(108,1,{},Eu);var Og=VE(pK,'XhrConnectionError',108);fk(58,1,{58:1},Iu);var Qg=VE(EK,'ConstantPool',58);fk(87,1,{87:1},Qu);_.Db=function Ru(){return Fd(yl(this.a,xe),9).a};var Ug=VE(EK,'ExecuteJavaScriptProcessor',87);fk(207,1,{},Su);_.db=function Tu(a){return DC(new Wu(this.a,this.b)),LE(),true};var Rg=VE(EK,'ExecuteJavaScriptProcessor/lambda$0$Type',207);fk(208,1,XJ,Uu);_.X=function Vu(){Pu(this.a)};var Sg=VE(EK,'ExecuteJavaScriptProcessor/lambda$1$Type',208);fk(206,1,aK,Wu);_.ob=function Xu(){Lu(this.a,this.b)};var Tg=VE(EK,'ExecuteJavaScriptProcessor/lambda$3$Type',206);fk(302,1,{},$u);var Wg=VE(EK,'FragmentHandler',302);fk(303,1,iK,av);_.vb=function bv(a){Zu(this.a)};var Vg=VE(EK,'FragmentHandler/0methodref$onResponseHandlingEnded$Type',303);fk(300,1,{},cv);var Xg=VE(EK,'NodeUnregisterEvent',300);fk(173,1,{},lv);_.ub=function mv(a){gv(this.a,a)};var Yg=VE(EK,'RouterLinkHandler/lambda$0$Type',173);fk(174,1,uJ,nv);_.I=function ov(){Bq(this.a)};var Zg=VE(EK,'RouterLinkHandler/lambda$1$Type',174);fk(6,1,{6:1},Bv);_.Eb=function Cv(){return sv(this)};_.Fb=function Dv(){return this.g};_.d=0;_.j=false;var ah=VE(EK,'StateNode',6);fk(352,$wnd.Function,{},Fv);_.M=function Gv(a,b){vv(this.a,this.b,a,b)};fk(353,$wnd.Function,{},Hv);_.pb=function Iv(a){Ev(this.a,a)};var Ei=XE('elemental.events','EventRemover');fk(142,1,IK,Jv);_.Gb=function Kv(){wv(this.a,this.b)};var $g=VE(EK,'StateNode/lambda$2$Type',142);fk(354,$wnd.Function,{},Lv);_.pb=function Mv(a){xv(this.a,a)};fk(143,1,IK,Nv);_.Gb=function Ov(){yv(this.a,this.b)};var _g=VE(EK,'StateNode/lambda$4$Type',143);fk(11,1,{11:1},dw);_.Hb=function ew(){return this.e};_.Ib=function gw(a,b,c,d){var e;if(Uv(this,a)){e=Kd(c);bu(Fd(yl(this.c,Fg),26),a,b,e,d)}};_.d=false;_.f=false;var bh=VE(EK,'StateTree',11);fk(357,$wnd.Function,{},hw);_.pb=function iw(a){rv(Fd(a,6),hk(lw.prototype.M,lw,[]))};fk(358,$wnd.Function,{},jw);_.M=function kw(a,b){Wv(this.a,a)};fk(348,$wnd.Function,{},lw);_.M=function mw(a,b){fw(a,b)};var uw,vw;fk(168,1,{},Aw);var dh=VE(PK,'Binder/BinderContextImpl',168);var eh=XE(PK,'BindingStrategy');fk(94,1,{94:1},Fw);_.b=false;_.g=0;var Bw;var hh=VE(PK,'Debouncer',94);fk(347,1,{});_.b=false;_.c=0;var Ji=VE(RK,'Timer',347);fk(311,347,{},Lw);var fh=VE(PK,'Debouncer/1',311);fk(312,347,{},Mw);var gh=VE(PK,'Debouncer/2',312);fk(386,$wnd.Function,{},Ow);_.M=function Pw(a,b){var c;Nw(this,(c=Ld(a,$wnd.Map),Kd(b),c))};fk(387,$wnd.Function,{},Sw);_.pb=function Tw(a){Qw(this.a,a)};fk(388,$wnd.Function,{},Uw);_.pb=function Vw(a){Rw(this.a,a)};fk(297,1,{},Zw);_.jb=function $w(){return kx(this.a)};var ih=VE(PK,'ServerEventHandlerBinder/lambda$0$Type',297);fk(298,1,fK,_w);_.qb=function ax(a){Yw(this.b,this.a,this.c,a)};_.c=false;var jh=VE(PK,'ServerEventHandlerBinder/lambda$1$Type',298);var bx;fk(242,1,{320:1},jy);_.Jb=function ky(a,b,c){sx(this,a,b,c)};_.Kb=function ny(a){return Cx(a)};_.Mb=function sy(a,b){var c,d,e;d=Object.keys(a);e=new _z(d,a,b);c=Fd(b.e.get(lh),76);!c?$x(e.b,e.a,e.c):(c.a=e)};_.Nb=function ty(r,s){var t=this;var u=s._propertiesChanged;u&&(s._propertiesChanged=function(a,b,c){_I(function(){t.Mb(b,r)})();u.apply(this,arguments)});var v=r.Fb();var w=s.ready;s.ready=function(){w.apply(this,arguments);Nn(s);var q=function(){var o=s.root.querySelector(ZK);if(o){s.removeEventListener($K,q)}else{return}if(!o.constructor.prototype.$propChangedModified){o.constructor.prototype.$propChangedModified=true;var p=o.constructor.prototype._propertiesChanged;o.constructor.prototype._propertiesChanged=function(a,b,c){p.apply(this,arguments);var d=Object.getOwnPropertyNames(b);var e='items.';var f;for(f=0;f0){var i=h.substr(0,g);var j=h.substr(g+1);var k=a.items[i];if(k&&k.nodeId){var l=k.nodeId;var m=k[j];var n=this.__dataHost;while(!n.localName||n.__dataHost){n=n.__dataHost}_I(function(){ry(l,n,j,m,v)})()}}}}}}};s.root&&s.root.querySelector(ZK)?q():s.addEventListener($K,q)}};_.Lb=function uy(a){if(a.c.has(0)){return true}return !!a.g&&I(a,a.g.e)};var mx,nx;var Qh=VE(PK,'SimpleElementBindingStrategy',242);fk(376,$wnd.Function,{},Jy);_.pb=function Ky(a){Fd(a,42).Gb()};fk(380,$wnd.Function,{},Ly);_.pb=function My(a){Fd(a,18).X()};fk(106,1,{},Ny);var kh=VE(PK,'SimpleElementBindingStrategy/BindingContext',106);fk(76,1,{76:1},Oy);var lh=VE(PK,'SimpleElementBindingStrategy/InitialPropertyUpdate',76);fk(243,1,{},Py);_.Ob=function Qy(a){Ox(this.a,a)};var mh=VE(PK,'SimpleElementBindingStrategy/lambda$0$Type',243);fk(244,1,{},Ry);_.Ob=function Sy(a){Px(this.a,a)};var nh=VE(PK,'SimpleElementBindingStrategy/lambda$1$Type',244);fk(255,1,aK,Ty);_.ob=function Uy(){Qx(this.b,this.c,this.a)};var oh=VE(PK,'SimpleElementBindingStrategy/lambda$10$Type',255);fk(256,1,uJ,Vy);_.I=function Wy(){this.b.Ob(this.a)};var ph=VE(PK,'SimpleElementBindingStrategy/lambda$11$Type',256);fk(257,1,uJ,Xy);_.I=function Yy(){this.a[this.b]=Jn(this.c)};var qh=VE(PK,'SimpleElementBindingStrategy/lambda$12$Type',257);fk(259,1,fK,Zy);_.qb=function $y(a){Rx(this.a,a)};var rh=VE(PK,'SimpleElementBindingStrategy/lambda$13$Type',259);fk(261,1,fK,_y);_.qb=function az(a){Sx(this.a,a)};var sh=VE(PK,'SimpleElementBindingStrategy/lambda$14$Type',261);fk(262,1,XJ,bz);_.X=function cz(){Lx(this.a,this.b,this.c,false)};var th=VE(PK,'SimpleElementBindingStrategy/lambda$15$Type',262);fk(263,1,XJ,dz);_.X=function ez(){Lx(this.a,this.b,this.c,false)};var uh=VE(PK,'SimpleElementBindingStrategy/lambda$16$Type',263);fk(264,1,XJ,fz);_.X=function gz(){Nx(this.a,this.b,this.c,false)};var vh=VE(PK,'SimpleElementBindingStrategy/lambda$17$Type',264);fk(265,1,{},hz);_.jb=function iz(){return vy(this.a,this.b)};var wh=VE(PK,'SimpleElementBindingStrategy/lambda$18$Type',265);fk(266,1,{},jz);_.jb=function kz(){return wy(this.a,this.b)};var xh=VE(PK,'SimpleElementBindingStrategy/lambda$19$Type',266);fk(245,1,{},lz);_.Ob=function mz(a){Tx(this.a,a)};var yh=VE(PK,'SimpleElementBindingStrategy/lambda$2$Type',245);fk(373,$wnd.Function,{},nz);_.M=function oz(a,b){rC(Fd(a,49))};fk(374,$wnd.Function,{},pz);_.pb=function qz(a){xy(this.a,a)};fk(375,$wnd.Function,{},rz);_.M=function sz(a,b){Fd(a,42).Gb()};fk(377,$wnd.Function,{},tz);_.M=function uz(a,b){Ux(this.a,a)};fk(267,1,gK,vz);_.sb=function wz(a){Vx(this.a,a)};var zh=VE(PK,'SimpleElementBindingStrategy/lambda$25$Type',267);fk(268,1,uJ,xz);_.I=function yz(){Wx(this.b,this.a,this.c)};var Ah=VE(PK,'SimpleElementBindingStrategy/lambda$26$Type',268);fk(269,1,{},zz);_.ub=function Az(a){Xx(this.a,a)};var Bh=VE(PK,'SimpleElementBindingStrategy/lambda$27$Type',269);fk(378,$wnd.Function,{},Bz);_.pb=function Cz(a){Yx(this.a,this.b,a)};fk(270,1,{},Ez);_.pb=function Fz(a){Dz(this,a)};var Ch=VE(PK,'SimpleElementBindingStrategy/lambda$29$Type',270);fk(246,1,{},Gz);_.rb=function Hz(a){_x(this.c,this.b,this.a)};var Dh=VE(PK,'SimpleElementBindingStrategy/lambda$3$Type',246);fk(271,1,fK,Iz);_.qb=function Jz(a){zy(this.a,a)};var Eh=VE(PK,'SimpleElementBindingStrategy/lambda$30$Type',271);fk(272,1,{},Kz);_.jb=function Lz(){return this.a.b};var Fh=VE(PK,'SimpleElementBindingStrategy/lambda$31$Type',272);fk(379,$wnd.Function,{},Mz);_.pb=function Nz(a){this.a.push(Fd(a,6))};fk(247,1,{},Oz);_.I=function Pz(){Ay(this.a)};var Gh=VE(PK,'SimpleElementBindingStrategy/lambda$33$Type',247);fk(249,1,{},Qz);_.jb=function Rz(){return this.a[this.b]};var Hh=VE(PK,'SimpleElementBindingStrategy/lambda$34$Type',249);fk(251,1,aK,Sz);_.ob=function Tz(){rx(this.a)};var Ih=VE(PK,'SimpleElementBindingStrategy/lambda$35$Type',251);fk(258,1,aK,Uz);_.ob=function Vz(){Jx(this.b,this.a)};var Jh=VE(PK,'SimpleElementBindingStrategy/lambda$36$Type',258);fk(260,1,aK,Wz);_.ob=function Xz(){Zx(this.b,this.a)};var Kh=VE(PK,'SimpleElementBindingStrategy/lambda$37$Type',260);fk(248,1,aK,Yz);_.ob=function Zz(){By(this.a)};var Lh=VE(PK,'SimpleElementBindingStrategy/lambda$4$Type',248);fk(250,1,XJ,_z);_.X=function aA(){$z(this)};var Mh=VE(PK,'SimpleElementBindingStrategy/lambda$5$Type',250);fk(252,1,gK,bA);_.sb=function cA(a){CC(new Sz(this.a))};var Nh=VE(PK,'SimpleElementBindingStrategy/lambda$6$Type',252);fk(372,$wnd.Function,{},dA);_.M=function eA(a,b){Cy(this.b,this.a,a)};fk(253,1,gK,fA);_.sb=function gA(a){Dy(this.b,this.a,a)};var Oh=VE(PK,'SimpleElementBindingStrategy/lambda$8$Type',253);fk(254,1,hK,hA);_.tb=function iA(a){gy(this.c,this.b,this.a)};var Ph=VE(PK,'SimpleElementBindingStrategy/lambda$9$Type',254);fk(273,1,{320:1},nA);_.Jb=function oA(a,b,c){lA(a,b)};_.Kb=function pA(a){return $doc.createTextNode('')};_.Lb=function qA(a){return a.c.has(7)};var jA;var Th=VE(PK,'TextBindingStrategy',273);fk(274,1,uJ,rA);_.I=function sA(){kA();XD(this.a,Md(VA(this.b)))};var Rh=VE(PK,'TextBindingStrategy/lambda$0$Type',274);fk(275,1,{},tA);_.rb=function uA(a){mA(this.b,this.a)};var Sh=VE(PK,'TextBindingStrategy/lambda$1$Type',275);fk(351,$wnd.Function,{},zA);_.pb=function AA(a){this.a.add(a)};fk(355,$wnd.Function,{},CA);_.M=function DA(a,b){this.a.push(a)};var FA,GA=false;fk(289,1,{},IA);var Uh=VE('com.vaadin.client.flow.dom','PolymerDomApiImpl',289);fk(77,1,{77:1},JA);var Vh=VE('com.vaadin.client.flow.model','UpdatableModelProperties',77);fk(385,$wnd.Function,{},KA);_.pb=function LA(a){this.a.add(Md(a))};fk(91,1,{});_.Pb=function NA(){return this.e};var ti=VE(_J,'ReactiveValueChangeEvent',91);fk(52,91,{52:1},OA);_.Pb=function PA(){return Fd(this.e,29)};_.b=false;_.c=0;var Wh=VE(_K,'ListSpliceEvent',52);fk(28,1,{28:1,321:1},cB);_.Qb=function dB(a){return fB(this.a,a)};_.b=false;_.c=false;_.d=false;var QA;var di=VE(_K,'MapProperty',28);fk(89,1,{});var si=VE(_J,'ReactiveEventRouter',89);fk(228,89,{},lB);_.Rb=function mB(a,b){Fd(a,44).tb(Fd(b,79))};_.Sb=function nB(a){return new oB(a)};var Yh=VE(_K,'MapProperty/1',228);fk(229,1,hK,oB);_.tb=function pB(a){pC(this.a)};var Xh=VE(_K,'MapProperty/1/0methodref$onValueChange$Type',229);fk(227,1,XJ,qB);_.X=function rB(){RA()};var Zh=VE(_K,'MapProperty/lambda$0$Type',227);fk(230,1,aK,sB);_.ob=function tB(){this.a.d=false};var $h=VE(_K,'MapProperty/lambda$1$Type',230);fk(231,1,aK,uB);_.ob=function vB(){this.a.d=false};var _h=VE(_K,'MapProperty/lambda$2$Type',231);fk(232,1,XJ,wB);_.X=function xB(){$A(this.a,this.b)};var ai=VE(_K,'MapProperty/lambda$3$Type',232);fk(92,91,{92:1},yB);_.Pb=function zB(){return Fd(this.e,40)};var bi=VE(_K,'MapPropertyAddEvent',92);fk(79,91,{79:1},AB);_.Pb=function BB(){return Fd(this.e,28)};var ci=VE(_K,'MapPropertyChangeEvent',79);fk(39,1,{39:1});_.d=0;var ei=VE(_K,'NodeFeature',39);fk(29,39,{39:1,29:1,321:1},JB);_.Qb=function KB(a){return fB(this.a,a)};_.Tb=function LB(a){var b,c,d;c=[];for(b=0;b=0?':'+this.c:'')+')'};_.c=0;var hj=VE(dJ,'StackTraceElement',30);Dd={4:1,111:1,32:1,2:1};var kj=VE(dJ,'String',2);fk(71,85,{111:1},$F,_F,aG);var ij=VE(dJ,'StringBuilder',71);fk(123,86,xJ,bG);var jj=VE(dJ,'StringIndexOutOfBoundsException',123);fk(500,1,{});var cG;fk(338,1,{});_.A=function fG(){var a,b,c;c=new XH('[',']');for(b=this.ac();b.cc();){a=b.dc();WH(c,a===this?'(this Collection)':a==null?yJ:jk(a))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var mj=VE(mL,'AbstractCollection',338);fk(341,1,{110:1});_.u=function jG(a){var b,c,d;if(a===this){return true}if(!Pd(a,78)){return false}d=Fd(a,110);if(this.a.c+this.b.c!=d.a.c+d.b.c){return false}for(c=new yG((new tG(d)).a);c.b;){b=xG(c);if(!gG(this,b)){return false}}return true};_.w=function lG(){return dH(new tG(this))};_.A=function mG(){var a,b,c;c=new XH('{','}');for(b=new yG((new tG(this)).a);b.b;){a=xG(b);WH(c,iG(this,a.ec())+'='+iG(this,a.fc()))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var vj=VE(mL,'AbstractMap',341);fk(280,341,{110:1});var pj=VE(mL,'AbstractHashMap',280);fk(340,338,{319:1});_.u=function qG(a){var b;if(a===this){return true}if(!Pd(a,64)){return false}b=Fd(a,319);if(pG(b.a)!=this.bc()){return false}return eG(this,b)};_.w=function rG(){return dH(this)};var wj=VE(mL,'AbstractSet',340);fk(64,340,{64:1,319:1},tG);_.ac=function uG(){return new yG(this.a)};_.bc=function vG(){return pG(this.a)};var oj=VE(mL,'AbstractHashMap/EntrySet',64);fk(65,1,{},yG);_.dc=function AG(){return xG(this)};_.cc=function zG(){return this.b};_.b=false;var nj=VE(mL,'AbstractHashMap/EntrySetIterator',65);fk(339,338,{318:1});_.u=function BG(a){var b,c,d,e,f;if(a===this){return true}if(!Pd(a,45)){return false}f=Fd(a,318);if(this.bc()!=f.a.length){return false}e=new ZG(f);for(c=new ZG(this);c.a=0;d--){$E((g.a+=i,g),Td(c[d]));i='.'}return g.a} +function ab(a,b){var c,d,e,f,g;if(cb()){Y(b.a)}else{f=(Md(Hl(a.c,De),9).f?(e='vaadinPushSockJS-min.js'):(e='vaadinPushSockJS.js'),'VAADIN/static/push/'+e);ul&&kD($wnd.console,'Loading sockJS '+f);d=Md(Hl(a.c,Df),58);g=Md(Hl(a.c,De),9).b+f;c=new lb(a,f,b);Ko(d,g,c,false,jJ)}} +function cC(a,b){var c,d,e,f,g,h;if(rD(b)==1){c=b;h=ee(uD(c[0]));switch(h){case 0:{g=ee(uD(c[1]));d=(f=g,Md(a.a.get(f),6)).a;return d}case 1:return e=Qd(c[1]),e;case 2:return aC(ee(uD(c[1])),ee(uD(c[2])),Md(Hl(a.c,Fg),32));default:throw dk(new qE(UK+sD(c)));}}else{return b}} +function Kr(a,b){var c,d,e,f,g;ul&&($wnd.console.log('Handling dependencies'),undefined);c=new $wnd.Map;for(e=(QC(),Ad(ud(yi,1),vJ,42,0,[OC,NC,PC])),f=0,g=e.length;fa.a){a.a==0?ul&&kD($wnd.console,'Updating client-to-server id to '+b+' based on server'):Cl('Server expects next client-to-server id to be '+b+' but we were going to use '+a.a+'. Will use '+b+'.');a.a=b}} +function Lo(a,b,c){var d,e,f;f=bq(b);d=new ap(f);if(a.b.has(f)){!!c&&c.F(d);return}if(Po(f,c,a.a)){e=$doc.createElement('link');e.rel=cK;e.type='text/css';e.href=f;if((!ol&&(ol=new ql),ol).a.k||rl()){Yc((Mc(),new To(a,f,d)),10)}else{Qo(e,new ep(a,f),d);(!ol&&(ol=new ql),ol).a.j&&wk(new Vo(a,f,d),5000)}Co(e)}} +function R(a,b){if(!b){debugger;throw dk(new JD)}switch(a.e.c){case 0:a.e=(Db(),Ab);a.b=b;break;case 1:ul&&($wnd.console.log('Closing push connection'),undefined);a.d.close();a.e=(Db(),zb);b.C();break;case 2:case 3:throw dk(new rE('Can not disconnect more than once'));default:throw dk(new rE('Invalid state'));}} +function xx(a,b){var c,d,e,f,g,h;c=a.f;d=b.style;yA(a.a);if(a.c){h=(yA(a.a),Td(a.g));e=false;if(h.indexOf('!important')!=-1){f=fD($doc,b.tagName);g=f.style;g.cssText=c+': '+h+';';if(JE('important',YC(f.style,c))){_C(d,c,ZC(f.style,c),'important');e=true}}e||(d.setProperty(c,h),undefined)}else{d.removeProperty(c)}} +function wq(a){var b,c,d,e;kA((c=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(c,hK)))!=null&&sl('reconnectingText',kA((d=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(d,hK))));kA((e=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(e,iK)))!=null&&sl('offlineText',kA((b=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(b,iK))))} +function BG(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} +function En(a,b){var c,d,e,f,g;c=Wz(a).children;e=-1;for(f=0;f0){k=$w(a,b);d=!k?null:Wz(k.a).nextSibling}else{d=null}for(g=0;g0){e=i.length;while(e>0&&i[e-1]==''){--e}e=9223372036854775807){return Hd(),Ed}e=false;if(a<0){e=true;a=-a}d=0;if(a>=HJ){d=ee(a/HJ);a-=d*HJ}c=0;if(a>=IJ){c=ee(a/IJ);a-=c*IJ}b=ee(a);f=Cd(b,c,d);e&&(g=~f.l+1&GJ,h=~f.m+(g==0?1:0)&GJ,i=~f.h+(g==0&&h==0?1:0)&1048575,f.l=g,f.m=h,f.h=i,undefined);return f} +function xq(a,b){if(Md(Hl(a.c,Of),12).b!=(Up(),Sp)){ul&&($wnd.console.warn('Trying to reconnect after application has been stopped. Giving up'),undefined);return}if(b){ul&&($wnd.console.log('Re-sending last message to the server...'),undefined);vs(Md(Hl(a.c,pg),18),b)}else{ul&&($wnd.console.log('Trying to re-establish server connection...'),undefined);jr(Md(Hl(a.c,_f),57))}} +function mE(a){var b,c,d,e,f;if(a==null){throw dk(new DE(AJ))}d=a.length;e=d>0&&(SI(0,a.length),a.charCodeAt(0)==45||(SI(0,a.length),a.charCodeAt(0)==43))?1:0;for(b=e;b2147483647){throw dk(new DE(dL+a+'"'))}return f} +function zx(a,b,c,d){var e,f,g,h,i;i=Eu(a,24);for(f=0;f<(yA(i.a),i.c.length);f++){e=Md(i.c[f],6);if(e==b){continue}if(JE((h=Fu(b,0),sD(Rd(iA(hB(h,xK))))),(g=Fu(e,0),sD(Rd(iA(hB(g,xK))))))){Cl('There is already a request to attach element addressed by the '+d+". The existing request's node id='"+e.d+"'. Cannot attach the same element twice.");kv(b.g,a,b.d,e.d,c);return false}}return true} +function qs(a){var b,c,d;d=Md(Hl(a.c,Jg),36);if(d.c.length==0&&a.d!=1){return}c=d.c;d.c=[];d.b=false;d.a=It;if(c.length==0&&a.d!=1){ul&&($wnd.console.warn('All RPCs filtered out, not sending anything to the server'),undefined);return}b={};if(a.d==1){a.d=2;ul&&($wnd.console.log('Resynchronizing from server'),undefined);b[kK]=Object(true)}tl('loading');kt(Md(Hl(a.c,Bg),16));vs(a,ss(a,c,b))} +function td(a,b){var c;switch(vd(a)){case 6:return _d(b);case 7:return Yd(b);case 8:return Xd(b);case 3:return Array.isArray(b)&&(c=vd(b),!(c>=14&&c<=16));case 11:return b!=null&&ae(b);case 12:return b!=null&&(typeof b===dJ||typeof b==fJ);case 0:return Ld(b,a.__elementTypeId$);case 2:return be(b)&&!(b.lc===sk);case 1:return be(b)&&!(b.lc===sk)||Ld(b,a.__elementTypeId$);default:return true;}} +function Sm(b,c){if(document.body.$&&document.body.$.hasOwnProperty&&document.body.$.hasOwnProperty(c)){return document.body.$[c]}else if(b.shadowRoot){return b.shadowRoot.getElementById(c)}else if(b.getElementById){return b.getElementById(c)}else if(c&&c.match('^[a-zA-Z0-9-_]*$')){return b.querySelector('#'+c)}else{return Array.from(b.querySelectorAll('[id]')).find(function(a){return a.id==c})}} +function Aq(a,b,c){var d;if(Md(Hl(a.c,Of),12).b!=(Up(),Sp)){return}tl('reconnecting');if(a.b){if($q(b,a.b)){ul&&lD($wnd.console,'Now reconnecting because of '+b+' failure');a.b=b}}else{a.b=b;ul&&lD($wnd.console,'Reconnecting because of '+b+' failure')}if(a.b!=b){return}++a.a;Bl('Reconnect attempt '+a.a+' for '+b);a.a>=jA((d=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(d,'reconnectAttempts')),10000)?yq(a):Oq(a,c)} +function Tm(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;j=null;g=Wz(a.a).childNodes;o=new $wnd.Map;e=!b;i=-1;for(m=0;m=f){debugger;throw dk(new JD)}return g.length==0?null:g}else{return a}} +function Jx(a,b,c,d,e){var f,g,h;h=av(e,ee(a));if(!h.c.has(1)){return}if(!Ex(h,b)){debugger;throw dk(new KD('Host element is not a parent of the node whose property has changed. This is an implementation error. Most likely it means that there are several StateTrees on the same page (might be possible with portlets) and the target StateTree should not be passed into the method as an argument but somehow detected from the host element. Another option is that host element is calculated incorrectly.'))}f=Fu(h,1);g=hB(f,c);hA(g,d).V()} +function op(a,b,c,d){var e,f,g,h,i,j;h=$doc;j=h.createElement('div');j.className='v-system-error';if(a!=null){f=h.createElement('div');f.className='caption';f.textContent=a;j.appendChild(f);ul&&jD($wnd.console,a)}if(b!=null){i=h.createElement('div');i.className='message';i.textContent=b;j.appendChild(i);ul&&jD($wnd.console,b)}if(c!=null){g=h.createElement('div');g.className='details';g.textContent=c;j.appendChild(g);ul&&jD($wnd.console,c)}if(d!=null){e=h.querySelector(d);!!e&&bD(Rd(WG($G(e.shadowRoot),e)),j)}else{cD(h.body,j)}return j} +function nq(a,b){var c,d,e;c=vq(b,'serviceUrl');Wk(a,tq(b,'webComponentMode'));if(c==null){Sk(a,bq('.'));Mk(a,bq(vq(b,eK)))}else{a.i=c;Mk(a,bq(c+(''+vq(b,eK))))}Vk(a,uq(b,'v-uiId').a);Ok(a,uq(b,'heartbeatInterval').a);Pk(a,uq(b,'maxMessageSuspendTimeout').a);Tk(a,(d=b.getConfig(fK),d?d.vaadinVersion:null));e=b.getConfig(fK);sq();Uk(a,b.getConfig('sessExpMsg'));Qk(a,!tq(b,'debug'));Rk(a,tq(b,'requestTiming'));Nk(a,b.getConfig('webcomponents'));tq(b,'devToolsEnabled');vq(b,'liveReloadUrl');vq(b,'liveReloadBackend');vq(b,'springBootLiveReloadPort')} +function nd(a,b){var c,d,e,f,g,h,i,j,k;j='';if(b.length==0){return a.T(FJ,DJ,-1,-1)}k=UE(b);JE(k.substr(0,3),'at ')&&(k=k.substr(3));k=k.replace(/\[.*?\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=UE(k.substr(g+1));k=UE(k.substr(0,g))}}else{c=k.indexOf(')',g);j=k.substr(g+1,c-(g+1));k=UE(k.substr(0,g))}g=LE(k,VE(46));g!=-1&&(k=k.substr(g+1));(k.length==0||JE(k,'Anonymous function'))&&(k=DJ);h=NE(j,VE(58));e=OE(j,VE(58),h-1);i=-1;d=-1;f=FJ;if(h!=-1&&e!=-1){f=j.substr(0,e);i=gd(j.substr(e+1,h-(e+1)));d=gd(j.substr(h+1))}return a.T(f,k,i,d)} +function Sl(a,b){this.a=new $wnd.Map;this.b=new $wnd.Map;Kl(this,Ie,a);Kl(this,De,b);Kl(this,Df,new No(this));Kl(this,Pf,new _p(this));Kl(this,af,new km(this));Kl(this,Jf,new tp(this));Ll(this,Of,new Tl);Kl(this,Zg,new ov(this));Kl(this,Bg,new lt(this));Kl(this,ng,new Wr(this));Kl(this,pg,new As(this));Kl(this,Jg,new Nt(this));Kl(this,Fg,new Ft(this));Kl(this,Ug,new ru(this));Ll(this,Qg,new Vl);Ll(this,df,new Xl);Kl(this,ff,new nn(this));Kl(this,_f,new lr(this));Kl(this,Rf,new Tq(this));Kl(this,Pg,new Wt(this));Kl(this,xg,new Us(this));Kl(this,zg,new dt(this));Kl(this,tg,new Ls(this))} +function ob(b){var c=function(a){return typeof a!=sJ};var d=function(a){return a.replace(/\r\n/g,'')};if(c(b.outerHTML))return d(b.outerHTML);c(b.innerHTML)&&b.cloneNode&&$doc.createElement('div').appendChild(b.cloneNode(true)).innerHTML;if(c(b.nodeType)&&b.nodeType==3){return "'"+b.data.replace(/ /g,'\u25AB').replace(/\u00A0/,'\u25AA')+"'"}if(typeof c(b.htmlText)&&b.collapse){var e=b.htmlText;if(e){return 'IETextRange ['+d(e)+']'}else{var f=b.duplicate();f.pasteHTML('|');var g='IETextRange '+d(b.parentElement().outerHTML);f.moveStart('character',-1);f.pasteHTML('');return g}}return b.toString?b.toString():'[JavaScriptObject]'} +function Rn(a,b,c){var d,e,f;f=[];if(a.c.has(1)){if(!Wd(b,41)){debugger;throw dk(new KD('Received an inconsistent NodeFeature for a node that has a ELEMENT_PROPERTIES feature. It should be NodeMap, but it is: '+b))}e=Md(b,41);gB(e,pk(ko.prototype.H,ko,[f,c]));f.push(fB(e,new go(f,c)))}else if(a.c.has(16)){if(!Wd(b,27)){debugger;throw dk(new KD('Received an inconsistent NodeFeature for a node that has a TEMPLATE_MODELLIST feature. It should be NodeList, but it is: '+b))}d=Md(b,27);f.push(TA(d,new _n(c)))}if(f.length==0){debugger;throw dk(new KD('Node should have ELEMENT_PROPERTIES or TEMPLATE_MODELLIST feature'))}f.push(Bu(a,new eo(f)))} +function bb(a){var b,c,d,e;this.e=(Db(),Bb);this.c=a;Kp(Md(Hl(a,Of),12),new Gb(this));this.a={transport:iJ,fallbackTransport:kJ,transports:[iJ,kJ,lJ],reconnectInterval:5000,maxReconnectAttempts:10,timeout:5000};this.a['logLevel']='debug';Rs(Md(Hl(this.c,xg),49)).forEach(pk(Kb.prototype.H,Kb,[this]));rb(this.a);c=Ss(Md(Hl(this.c,xg),49));if(c==null||UE(c).length==0||JE('/',c)){this.g=mJ;d=Md(Hl(a,De),9).i;JE('.',d)||(e='/'.length,JE(d.substr(d.length-e,e),'/')||(d+='/'));this.g=d+(''+this.g)}else{b=Md(Hl(a,De),9).b;e='/'.length;JE(b.substr(b.length-e,e),'/')&&JE(c.substr(0,1),'/')&&(c=c.substr(1));this.g=b+(''+c)+mJ}ab(this,new Mb(this))} +function Ax(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;l=e.e;o=Td(iA(hB(Fu(b,0),'tag')));h=false;if(!a){h=true;ul&&lD($wnd.console,QK+d+" is not found. The requested tag name is '"+o+"'")}else if(!(!!a&&KE(o,a.tagName))){h=true;Cl(QK+d+" has the wrong tag name '"+a.tagName+"', the requested tag name is '"+o+"'")}if(h){kv(l.g,l,b.d,-1,c);return false}if(!l.c.has(20)){return true}k=Fu(l,20);m=Md(iA(hB(k,LK)),6);if(!m){return true}j=Eu(m,2);g=null;for(i=0;i<(yA(j.a),j.c.length);i++){n=Md(j.c[i],6);f=n.a;if(K(f,a)){g=wE(n.d);break}}if(g){ul&&lD($wnd.console,QK+d+" has been already attached previously via the node id='"+g+"'");kv(l.g,l,b.d,g.a,c);return false}return true} +function nu(b,c,d,e){var f,g,h,i,j,k,l,m,n;if(c.length!=d.length+1){debugger;throw dk(new JD)}try{j=new ($wnd.Function.bind.apply($wnd.Function,[null].concat(c)));j.apply(lu(b,e,new xu(b)),d)}catch(a){a=ck(a);if(Wd(a,7)){i=a;wl(new Dl(i));ul&&($wnd.console.error('Exception is thrown during JavaScript execution. Stacktrace will be dumped separately.'),undefined);if(!Md(Hl(b.a,De),9).f){g=new bF('[');h='';for(l=c,m=0,n=l.length;m=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!BG()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype['delete']=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} +function ax(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;if(!b){debugger;throw dk(new JD)}f=b.b;t=b.e;if(!f){debugger;throw dk(new KD('Cannot handle DOM event for a Node'))}D=a.type;s=Fu(t,4);e=Md(Hl(t.g.c,Qg),59);i=Td(iA(hB(s,D)));if(i==null){debugger;throw dk(new JD)}if(!hu(e,i)){debugger;throw dk(new JD)}j=Rd(gu(e,i));p=(A=xD(j),A);B=new $wnd.Set;p.length==0?(g=null):(g={});for(l=p,m=0,n=l.length;m=0){g=b.substr(f+3);g=QE(g,_K,'$1');this.a=pE(g)}}else if(this.o){g=SE(b,b.indexOf('webkit/')+7);g=QE(g,aL,'$1');this.a=pE(g)}else if(this.n){g=SE(b,b.indexOf(YK)+8);g=QE(g,aL,'$1');this.a=pE(g);this.a>7&&(this.a=7)}else this.c&&(this.a=0)}catch(a){a=ck(a);if(Wd(a,7)){c=a;eF();'Browser engine version parsing failed for: '+b+' '+c.N()}else throw dk(a)}try{if(this.f){if(b.indexOf('msie')!=-1){if(this.n);else{e=SE(b,b.indexOf('msie ')+5);e=DC(e,0,LE(e,VE(59)));AC(e)}}else{f=b.indexOf('rv:');if(f>=0){g=b.substr(f+3);g=QE(g,_K,'$1');AC(g)}}}else if(this.d){d=b.indexOf(' firefox/')+9;AC(DC(b,d,d+5))}else if(this.b){wC(b)}else if(this.k){d=b.indexOf(' version/');if(d>=0){d+=9;AC(DC(b,d,d+5))}}else if(this.j){d=b.indexOf(' version/');d!=-1?(d+=9):(d=b.indexOf('opera/')+6);AC(DC(b,d,d+5))}else if(this.c){d=b.indexOf(' edge/')+6;b.indexOf(' edg/')!=-1?(d=b.indexOf(' edg/')+5):b.indexOf(ZK)!=-1?(d=b.indexOf(ZK)+6):b.indexOf($K)!=-1&&(d=b.indexOf($K)+8);AC(DC(b,d,d+8))}}catch(a){a=ck(a);if(Wd(a,7)){c=a;eF();'Browser version parsing failed for: '+b+' '+c.N()}else throw dk(a)}if(b.indexOf('windows ')!=-1){b.indexOf('windows phone')!=-1}else if(b.indexOf('android')!=-1){tC(b)}else if(b.indexOf('linux')!=-1);else if(b.indexOf('macintosh')!=-1||b.indexOf('mac osx')!=-1||b.indexOf('mac os x')!=-1){this.g=b.indexOf('ipad')!=-1;this.i=b.indexOf('iphone')!=-1;(this.g||this.i)&&xC(b)}else b.indexOf('; cros ')!=-1&&uC(b)} +var dJ='object',eJ='[object Array]',fJ='function',gJ='java.lang',hJ='v-uiId=',iJ='websocket',jJ='text/javascript',kJ='xhr-polling',lJ='xhr-streaming',mJ='VAADIN/push',nJ='transport',oJ='Received push (',pJ='com.github.mcollovati.vertx.vaadin.sockjs.client',qJ='com.vaadin.client',rJ={22:1},sJ='undefined',tJ='com.google.gwt.core.client',uJ='fallbackTransport',vJ={4:1},wJ={97:1},xJ={26:1},yJ='__noinit__',zJ={4:1,7:1,8:1,5:1},AJ='null',BJ='com.google.gwt.core.client.impl',CJ='Working array length changed ',DJ='anonymous',EJ='fnStack',FJ='Unknown',GJ=4194303,HJ=17592186044416,IJ=4194304,JJ='must be non-negative',KJ='must be positive',LJ='com.google.web.bindery.event.shared',MJ={71:1},NJ={30:1},OJ='type',PJ={47:1},QJ={14:1},RJ='constructor',SJ='properties',TJ='value',UJ='com.vaadin.client.flow.reactive',VJ={15:1},WJ='nodeId',XJ='Root node for node ',YJ=' could not be found',ZJ=' is not an Element',$J={69:1},_J={89:1},aK={46:1},bK='script',cK='stylesheet',dK='com.vaadin.flow.shared',eK='contextRootUrl',fK='versionInfo',gK='com.vaadin.client.communication',hK='dialogText',iK='dialogTextGaveUp',jK='syncId',kK='resynchronize',lK='Received message with server id ',mK='clientId',nK='Vaadin-Security-Key',oK='Vaadin-Push-ID',pK='sessionExpired',qK='pushServletMapping',rK='event',sK='node',tK='attachReqId',uK='attachAssignedId',vK='com.vaadin.client.flow',wK='bound',xK='payload',yK='subTemplate',zK={44:1},AK='Node is null',BK='Node is not created for this tree',CK='Node id is not registered with this tree',DK='$server',EK='feat',FK='remove',GK='com.vaadin.client.flow.binding',HK='trailing',IK='intermediate',JK='elemental.util',KK='element',LK='shadowRoot',MK='The HTML node for the StateNode with id=',NK='An error occurred when Flow tried to find a state node matching the element ',OK='hidden',PK='styleDisplay',QK='Element addressed by the ',RK='dom-repeat',SK='dom-change',TK='com.vaadin.client.flow.nodefeature',UK='Unsupported complex type in ',VK='com.vaadin.client.gwt.com.google.web.bindery.event.shared',WK='OS minor',XK=' headlesschrome/',YK='trident/',ZK=' edga/',$K=' edgios/',_K='(\\.[0-9]+).+',aL='([0-9]+\\.[0-9]+).*',bL='com.vaadin.flow.shared.ui',cL='java.io',dL='For input string: "',eL='java.util',fL={45:1},gL='java.util.logging',hL={4:1,327:1},iL='java.util.stream',jL='Index: ',kL=', Size: ',lL='user.agent';var _,lk,gk,bk=-1;$wnd.goog=$wnd.goog||{};$wnd.goog.global=$wnd.goog.global||$wnd;mk();nk(1,null,{},I);_.p=function J(a){return H(this,a)};_.q=function L(){return this.jc};_.r=function N(){return WI(this)};_.s=function P(){var a;return TD(M(this))+'@'+(a=O(this)>>>0,a.toString(16))};_.equals=function(a){return this.p(a)};_.hashCode=function(){return this.r()};_.toString=function(){return this.s()};var Id,Jd,Kd;nk(72,1,{72:1},UD);_.Sb=function VD(a){var b;b=new UD;b.e=4;a>1?(b.c=_D(this,a-1)):(b.c=this);return b};_.Tb=function $D(){SD(this);return this.b};_.Ub=function aE(){return TD(this)};_.Vb=function cE(){SD(this);return this.g};_.Wb=function eE(){return (this.e&4)!=0};_.Xb=function fE(){return (this.e&1)!=0};_.s=function iE(){return ((this.e&2)!=0?'interface ':(this.e&1)!=0?'':'class ')+(SD(this),this.j)};_.e=0;var RD=1;var $i=XD(gJ,'Object',1);var Ni=XD(gJ,'Class',72);nk(108,1,{},bb);_.t=function db(a){this.e=(Db(),Bb);Md(Hl(this.c,Rf),19);ul&&($wnd.console.log('Push connection closed'),undefined)};_.u=function eb(a){this.e=(Db(),zb);zq(Md(Hl(this.c,Rf),19),'Push connection using '+a[nJ]+' failed!')};_.v=function fb(a){var b,c;c=a['data'];b=Zr($r(c));if(!b){Hq(Md(Hl(this.c,Rf),19),this,c)}else{Bl(oJ+this.f+') message: '+c);Md(Hl(this.c,Of),12).b==(Up(),Tp)?Cl(oJ+this.f+') message, but ui is already terminated: '+c):Mr(Md(Hl(this.c,ng),24),b)}};_.w=function gb(a){QH(VH((SD(me),me.j)),'Push connection established using '+this.d.getTransport());Z(this,this.d)};_.A=function hb(a){this.e==(Db(),Cb)&&(this.e=Bb);Kq(Md(Hl(this.c,Rf),19),this)};_.B=function ib(a){QH(VH((SD(me),me.j)),'Push connection re-established using '+this.d.getTransport());Z(this,this.d)};var me=XD(pJ,'SockJSPushConnection',108);nk(252,1,{},jb);_.C=function kb(){Q(this.a)};var ge=XD(pJ,'SockJSPushConnection/0methodref$connect$Type',252);var xf=ZD(qJ,'ResourceLoader/ResourceLoadListener');nk(254,1,rJ,lb);_.D=function mb(a){Lq(Md(Hl(this.a.c,Rf),19),a.a)};_.F=function nb(a){if(cb()){Bl(this.c+' loaded');Y(this.b.a)}else{ul&&($wnd.console.log('SockJS not loaded???????'),undefined);Lq(Md(Hl(this.a.c,Rf),19),a.a)}};var he=XD(pJ,'SockJSPushConnection/1',254);var pe=XD(tJ,'JavaScriptObject$',0);var pb;nk(20,1,{4:1,29:1,20:1});_.p=function vb(a){return this===a};_.r=function wb(){return WI(this)};_.s=function xb(){return this.b!=null?this.b:''+this.c};_.c=0;var Pi=XD(gJ,'Enum',20);nk(52,20,{52:1,4:1,29:1,20:1},Eb);var zb,Ab,Bb,Cb;var ie=YD(pJ,'SockJSPushConnection/State',52,Fb);nk(251,1,wJ,Gb);_.G=function Hb(a){W(this.a,a)};var je=XD(pJ,'SockJSPushConnection/lambda$0$Type',251);var Ke=ZD(qJ,'Command');nk(250,1,xJ,Ib);_.C=function Jb(){};var ke=XD(pJ,'SockJSPushConnection/lambda$1$Type',250);nk(379,$wnd.Function,{},Kb);_.H=function Lb(a,b){X(this.a,Td(a),Td(b))};nk(253,1,xJ,Mb);_.C=function Nb(){Y(this.a)};var le=XD(pJ,'SockJSPushConnection/lambda$3$Type',253);nk(103,1,{},Pb);_.a=0;var ne=XD(tJ,'Duration',103);var Qb=null;nk(5,1,{4:1,5:1});_.J=function $b(a){return new Error(a)};_.K=function ac(){return this.e};_.L=function bc(){var a;return a=Md(oI(qI(mG((this.j==null&&(this.j=wd(fj,vJ,5,0,0,1)),this.j)),new gF),YH(new iI,new gI,new kI,Ad(ud(Qj,1),vJ,48,0,[(bI(),_H)]))),98),aG(a,wd($i,vJ,1,a.a.length,5,1))};_.M=function cc(){return this.f};_.N=function dc(){return this.g};_.O=function ec(){Xb(this,_b(this.J(Yb(this,this.g))));dd(this)};_.s=function gc(){return Yb(this,this.N())};_.e=yJ;_.k=true;var fj=XD(gJ,'Throwable',5);nk(7,5,{4:1,7:1,5:1});var Ri=XD(gJ,'Exception',7);nk(8,7,zJ,jc);var _i=XD(gJ,'RuntimeException',8);nk(55,8,zJ,kc);var Wi=XD(gJ,'JsException',55);nk(129,55,zJ);var re=XD(BJ,'JavaScriptExceptionBase',129);nk(31,129,{31:1,4:1,7:1,8:1,5:1},oc);_.N=function rc(){return nc(this),this.c};_.P=function sc(){return de(this.b)===de(lc)?null:this.b};var lc;var oe=XD(tJ,'JavaScriptException',31);nk(328,1,{});var qe=XD(tJ,'Scheduler',328);var uc=0,vc=false,wc,xc=0,yc=-1;nk(138,328,{});_.e=false;_.j=false;var Lc;var ue=XD(BJ,'SchedulerImpl',138);nk(139,1,{},Zc);_.Q=function $c(){this.a.e=true;Pc(this.a);this.a.e=false;return this.a.j=Qc(this.a)};var se=XD(BJ,'SchedulerImpl/Flusher',139);nk(140,1,{},_c);_.Q=function ad(){this.a.e&&Xc(this.a.f,1);return this.a.j};var te=XD(BJ,'SchedulerImpl/Rescuer',140);var bd;nk(338,1,{});var ye=XD(BJ,'StackTraceCreator/Collector',338);nk(130,338,{},kd);_.R=function ld(a){var b={},j;var c=[];a[EJ]=c;var d=arguments.callee.caller;while(d){var e=(cd(),d.name||(d.name=fd(d.toString())));c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h0){Fo(this.b,this.c);return false}else if(a==0){Eo(this.b,this.c);return true}else if(Ob(this.a)>60000){Eo(this.b,this.c);return false}else{return true}};var sf=XD(qJ,'ResourceLoader/1',196);nk(197,40,{},Vo);_.V=function Wo(){this.a.b.has(this.c)||Eo(this.a,this.b)};var tf=XD(qJ,'ResourceLoader/2',197);nk(201,40,{},Xo);_.V=function Yo(){this.a.b.has(this.c)?Fo(this.a,this.b):Eo(this.a,this.b)};var uf=XD(qJ,'ResourceLoader/3',201);nk(202,1,rJ,Zo);_.D=function $o(a){Eo(this.a,a)};_.F=function _o(a){Fo(this.a,a)};var vf=XD(qJ,'ResourceLoader/4',202);nk(63,1,{},ap);var wf=XD(qJ,'ResourceLoader/ResourceLoadEvent',63);nk(107,1,rJ,bp);_.D=function cp(a){Eo(this.a,a)};_.F=function dp(a){Fo(this.a,a)};var yf=XD(qJ,'ResourceLoader/SimpleLoadListener',107);nk(195,1,rJ,ep);_.D=function fp(a){Eo(this.a,a)};_.F=function gp(a){var b;if((!ol&&(ol=new ql),ol).a.b||(!ol&&(ol=new ql),ol).a.f||(!ol&&(ol=new ql),ol).a.c){b=Ro(this.b);if(b==0){Eo(this.a,a);return}}Fo(this.a,a)};var zf=XD(qJ,'ResourceLoader/StyleSheetLoadListener',195);nk(198,1,NJ,hp);_.lb=function ip(){return this.a.call(null)};var Af=XD(qJ,'ResourceLoader/lambda$0$Type',198);nk(199,1,QJ,jp);_.V=function kp(){this.b.F(this.a)};var Bf=XD(qJ,'ResourceLoader/lambda$1$Type',199);nk(200,1,QJ,lp);_.V=function mp(){this.b.D(this.a)};var Cf=XD(qJ,'ResourceLoader/lambda$2$Type',200);nk(25,1,{25:1},tp);var Jf=XD(qJ,'SystemErrorHandler',25);nk(171,1,{},vp);_.tb=function wp(a,b){var c;c=b;np(c.N())};_.ub=function xp(a){var b;Bl('Received xhr HTTP session resynchronization message: '+a.responseText);Jl(this.a.a);Lp(Md(Hl(this.a.a,Of),12),(Up(),Sp));b=Zr($r(a.responseText));Mr(Md(Hl(this.a.a,ng),24),b);Vk(Md(Hl(this.a.a,De),9),b['uiId']);Gp((Mc(),Lc),new Ap(this))};var Gf=XD(qJ,'SystemErrorHandler/1',171);nk(172,1,{},yp);_.nb=function zp(a){sp(Td(a))};var Ef=XD(qJ,'SystemErrorHandler/1/0methodref$recreateNodes$Type',172);nk(173,1,{},Ap);_.C=function Bp(){pI(mG(Md(Hl(this.a.a.a,De),9).c),new yp)};var Ff=XD(qJ,'SystemErrorHandler/1/lambda$0$Type',173);nk(169,1,{},Cp);_.db=function Dp(a){cq(this.a)};var Hf=XD(qJ,'SystemErrorHandler/lambda$0$Type',169);nk(170,1,{},Ep);_.db=function Fp(a){up(this.a,a)};var If=XD(qJ,'SystemErrorHandler/lambda$1$Type',170);nk(142,138,{},Hp);_.a=0;var Lf=XD(qJ,'TrackingScheduler',142);nk(143,1,{},Ip);_.C=function Jp(){this.a.a--};var Kf=XD(qJ,'TrackingScheduler/lambda$0$Type',143);nk(12,1,{12:1},Mp);var Of=XD(qJ,'UILifecycle',12);nk(177,347,{},Op);_.X=function Pp(a){Md(a,97).G(this)};_.Y=function Qp(){return Np};var Np=null;var Mf=XD(qJ,'UILifecycle/StateChangeEvent',177);nk(61,20,{61:1,4:1,29:1,20:1},Vp);var Rp,Sp,Tp;var Nf=YD(qJ,'UILifecycle/UIState',61,Wp);nk(346,1,vJ);var wi=XD(dK,'VaadinUriResolver',346);nk(50,346,{50:1,4:1},_p);_.vb=function aq(a){return $p(this,a)};var Pf=XD(qJ,'URIResolver',50);var fq=false,gq;nk(123,1,{},qq);_.C=function rq(){mq(this.a)};var Qf=XD('com.vaadin.client.bootstrap','Bootstrapper/lambda$0$Type',123);var Rf=ZD(gK,'ConnectionStateHandler');nk(224,1,{19:1},Tq);_.a=0;_.b=null;var Xf=XD(gK,'DefaultConnectionStateHandler',224);nk(226,40,{},Uq);_.V=function Vq(){this.a.d=null;xq(this.a,this.b)};var Sf=XD(gK,'DefaultConnectionStateHandler/1',226);nk(64,20,{64:1,4:1,29:1,20:1},_q);_.a=0;var Wq,Xq,Yq;var Tf=YD(gK,'DefaultConnectionStateHandler/Type',64,ar);nk(225,1,wJ,br);_.G=function cr(a){Fq(this.a,a)};var Uf=XD(gK,'DefaultConnectionStateHandler/lambda$0$Type',225);nk(227,1,{},dr);_.db=function er(a){yq(this.a)};var Vf=XD(gK,'DefaultConnectionStateHandler/lambda$1$Type',227);nk(228,1,{},fr);_.db=function gr(a){Gq(this.a)};var Wf=XD(gK,'DefaultConnectionStateHandler/lambda$2$Type',228);nk(57,1,{57:1},lr);_.a=-1;var _f=XD(gK,'Heartbeat',57);nk(221,40,{},mr);_.V=function nr(){jr(this.a)};var Yf=XD(gK,'Heartbeat/1',221);nk(223,1,{},or);_.tb=function pr(a,b){!b?Dq(Md(Hl(this.a.b,Rf),19),a):Cq(Md(Hl(this.a.b,Rf),19),b);ir(this.a)};_.ub=function qr(a){Eq(Md(Hl(this.a.b,Rf),19));ir(this.a)};var Zf=XD(gK,'Heartbeat/2',223);nk(222,1,wJ,rr);_.G=function sr(a){hr(this.a,a)};var $f=XD(gK,'Heartbeat/lambda$0$Type',222);nk(179,1,{},wr);_.nb=function xr(a){sl('firstDelay',wE(Md(a,23).a))};var ag=XD(gK,'LoadingIndicatorConfigurator/0methodref$setFirstDelay$Type',179);nk(180,1,{},yr);_.nb=function zr(a){sl('secondDelay',wE(Md(a,23).a))};var bg=XD(gK,'LoadingIndicatorConfigurator/1methodref$setSecondDelay$Type',180);nk(181,1,{},Ar);_.nb=function Br(a){sl('thirdDelay',wE(Md(a,23).a))};var cg=XD(gK,'LoadingIndicatorConfigurator/2methodref$setThirdDelay$Type',181);nk(182,1,aK,Cr);_.rb=function Dr(a){vr(lA(Md(a.e,13)))};var dg=XD(gK,'LoadingIndicatorConfigurator/lambda$3$Type',182);nk(183,1,aK,Er);_.rb=function Fr(a){ur(this.b,this.a,a)};_.a=0;var eg=XD(gK,'LoadingIndicatorConfigurator/lambda$4$Type',183);nk(24,1,{24:1},Wr);_.a=0;_.b='init';_.d=false;_.e=0;_.f=-1;_.i=null;_.o=0;var ng=XD(gK,'MessageHandler',24);nk(188,1,xJ,_r);_.C=function as(){!Vz&&$wnd.Polymer!=null&&JE($wnd.Polymer.version.substr(0,'1.'.length),'1.')&&(Vz=true,ul&&($wnd.console.log('Polymer micro is now loaded, using Polymer DOM API'),undefined),Uz=new Xz,undefined)};var fg=XD(gK,'MessageHandler/0methodref$updateApiImplementation$Type',188);nk(187,40,{},bs);_.V=function cs(){Ir(this.a)};var gg=XD(gK,'MessageHandler/1',187);nk(367,$wnd.Function,{},ds);_.nb=function es(a){Gr(Md(a,6))};nk(62,1,{62:1},fs);var hg=XD(gK,'MessageHandler/PendingUIDLMessage',62);nk(189,1,xJ,gs);_.C=function hs(){Tr(this.a,this.d,this.b,this.c)};_.c=0;var ig=XD(gK,'MessageHandler/lambda$1$Type',189);nk(191,1,VJ,is);_.mb=function js(){SB(new ks(this.a,this.b))};var jg=XD(gK,'MessageHandler/lambda$3$Type',191);nk(190,1,VJ,ks);_.mb=function ls(){Qr(this.a,this.b)};var kg=XD(gK,'MessageHandler/lambda$4$Type',190);nk(193,1,VJ,ms);_.mb=function ns(){Rr(this.a)};var lg=XD(gK,'MessageHandler/lambda$5$Type',193);nk(192,1,{},os);_.C=function ps(){this.a.forEach(pk(ds.prototype.nb,ds,[]))};var mg=XD(gK,'MessageHandler/lambda$6$Type',192);nk(18,1,{18:1},As);_.a=0;_.d=0;var pg=XD(gK,'MessageSender',18);nk(185,1,xJ,Cs);_.C=function Ds(){rs(this.a)};var og=XD(gK,'MessageSender/lambda$0$Type',185);nk(174,1,aK,Gs);_.rb=function Hs(a){Es(this.a,a)};var qg=XD(gK,'PollConfigurator/lambda$0$Type',174);nk(78,1,{78:1},Ls);_.wb=function Ms(){var a;a=Md(Hl(this.b,Zg),10);iv(a,a.e,'ui-poll',null)};_.a=null;var tg=XD(gK,'Poller',78);nk(176,40,{},Ns);_.V=function Os(){var a;a=Md(Hl(this.a.b,Zg),10);iv(a,a.e,'ui-poll',null)};var rg=XD(gK,'Poller/1',176);nk(175,1,wJ,Ps);_.G=function Qs(a){Is(this.a,a)};var sg=XD(gK,'Poller/lambda$0$Type',175);nk(49,1,{49:1},Us);var xg=XD(gK,'PushConfiguration',49);nk(234,1,aK,Xs);_.rb=function Ys(a){Ts(this.a,a)};var ug=XD(gK,'PushConfiguration/0methodref$onPushModeChange$Type',234);nk(235,1,VJ,Zs);_.mb=function $s(){zs(Md(Hl(this.a.a,pg),18),true)};var vg=XD(gK,'PushConfiguration/lambda$1$Type',235);nk(236,1,VJ,_s);_.mb=function at(){zs(Md(Hl(this.a.a,pg),18),false)};var wg=XD(gK,'PushConfiguration/lambda$2$Type',236);nk(373,$wnd.Function,{},bt);_.H=function ct(a,b){Ws(this.a,Md(a,13),Td(b))};nk(37,1,{37:1},dt);var zg=XD(gK,'ReconnectConfiguration',37);nk(178,1,xJ,et);_.C=function ft(){wq(this.a)};var yg=XD(gK,'ReconnectConfiguration/lambda$0$Type',178);nk(16,1,{16:1},lt);_.b=false;var Bg=XD(gK,'RequestResponseTracker',16);nk(186,1,{},mt);_.C=function nt(){jt(this.a)};var Ag=XD(gK,'RequestResponseTracker/lambda$0$Type',186);nk(249,347,{},ot);_.X=function pt(a){fe(a);null.mc()};_.Y=function qt(){return null};var Cg=XD(gK,'RequestStartingEvent',249);nk(233,347,{},st);_.X=function tt(a){Md(a,353).a.b=false};_.Y=function ut(){return rt};var rt;var Dg=XD(gK,'ResponseHandlingEndedEvent',233);nk(289,347,{},vt);_.X=function wt(a){fe(a);null.mc()};_.Y=function xt(){return null};var Eg=XD(gK,'ResponseHandlingStartedEvent',289);nk(32,1,{32:1},Ft);_.xb=function Gt(a,b,c){yt(this,a,b,c)};_.yb=function Ht(a,b,c){var d;d={};d[OJ]='channel';d[sK]=Object(a);d['channel']=Object(b);d['args']=c;Ct(this,d)};var Fg=XD(gK,'ServerConnector',32);nk(36,1,{36:1},Nt);_.b=false;var It;var Jg=XD(gK,'ServerRpcQueue',36);nk(215,1,QJ,Ot);_.V=function Pt(){Lt(this.a)};var Gg=XD(gK,'ServerRpcQueue/0methodref$doFlush$Type',215);nk(214,1,QJ,Qt);_.V=function Rt(){Jt()};var Hg=XD(gK,'ServerRpcQueue/lambda$0$Type',214);nk(216,1,{},St);_.C=function Tt(){this.a.a.V()};var Ig=XD(gK,'ServerRpcQueue/lambda$2$Type',216);nk(76,1,{76:1},Wt);_.b=false;var Pg=XD(gK,'XhrConnection',76);nk(232,40,{},Yt);_.V=function Zt(){Xt(this.b)&&this.a.b&&wk(this,250)};var Kg=XD(gK,'XhrConnection/1',232);nk(229,1,{},_t);_.tb=function au(a,b){var c;c=new fu(a,this.a);if(!b){Rq(Md(Hl(this.c.a,Rf),19),c);return}else{Pq(Md(Hl(this.c.a,Rf),19),c)}};_.ub=function bu(a){var b,c;Bl('Server visit took '+uo(this.b)+'ms');c=a.responseText;b=Zr($r(c));if(!b){Qq(Md(Hl(this.c.a,Rf),19),new fu(a,this.a));return}Sq(Md(Hl(this.c.a,Rf),19));ul&&kD($wnd.console,'Received xhr message: '+c);Mr(Md(Hl(this.c.a,ng),24),b)};_.b=0;var Lg=XD(gK,'XhrConnection/XhrResponseHandler',229);nk(230,1,{},cu);_.db=function du(a){this.a.b=true};var Mg=XD(gK,'XhrConnection/lambda$0$Type',230);nk(231,1,{353:1},eu);var Ng=XD(gK,'XhrConnection/lambda$1$Type',231);nk(111,1,{},fu);var Og=XD(gK,'XhrConnectionError',111);nk(59,1,{59:1},ju);var Qg=XD(vK,'ConstantPool',59);nk(92,1,{92:1},ru);_.zb=function su(){return Md(Hl(this.a,De),9).a};var Ug=XD(vK,'ExecuteJavaScriptProcessor',92);nk(218,1,MJ,tu);_.eb=function uu(a){var b;return SB(new vu(this.a,(b=this.b,b))),ND(),true};var Rg=XD(vK,'ExecuteJavaScriptProcessor/lambda$0$Type',218);nk(217,1,VJ,vu);_.mb=function wu(){mu(this.a,this.b)};var Sg=XD(vK,'ExecuteJavaScriptProcessor/lambda$1$Type',217);nk(219,1,QJ,xu);_.V=function yu(){qu(this.a)};var Tg=XD(vK,'ExecuteJavaScriptProcessor/lambda$2$Type',219);nk(312,1,{},zu);var Vg=XD(vK,'NodeUnregisterEvent',312);nk(6,1,{6:1},Mu);_.Ab=function Nu(){return Du(this)};_.Bb=function Ou(){return this.g};_.d=0;_.j=false;var Yg=XD(vK,'StateNode',6);nk(360,$wnd.Function,{},Qu);_.H=function Ru(a,b){Gu(this.a,this.b,Md(a,33),Od(b))};nk(361,$wnd.Function,{},Su);_.nb=function Tu(a){Pu(this.a,Md(a,114))};var zi=ZD('elemental.events','EventRemover');nk(162,1,zK,Uu);_.Cb=function Vu(){Hu(this.a,this.b)};var Wg=XD(vK,'StateNode/lambda$2$Type',162);nk(362,$wnd.Function,{},Wu);_.nb=function Xu(a){Iu(this.a,Md(a,71))};nk(163,1,zK,Yu);_.Cb=function Zu(){Ju(this.a,this.b)};var Xg=XD(vK,'StateNode/lambda$4$Type',163);nk(10,1,{10:1},ov);_.Db=function pv(){return this.e};_.Eb=function rv(a,b,c,d){var e;if(dv(this,a)){e=Rd(c);Et(Md(Hl(this.c,Fg),32),a,b,e,d)}};_.d=false;_.f=false;var Zg=XD(vK,'StateTree',10);nk(365,$wnd.Function,{},sv);_.nb=function tv(a){Cu(Md(a,6),pk(wv.prototype.H,wv,[]))};nk(366,$wnd.Function,{},uv);_.H=function vv(a,b){var c;fv(this.a,(c=Md(a,6),Od(b),c))};nk(352,$wnd.Function,{},wv);_.H=function xv(a,b){qv(Md(a,33),Od(b))};var Fv,Gv;nk(184,1,{},Lv);var $g=XD(GK,'Binder/BinderContextImpl',184);var _g=ZD(GK,'BindingStrategy');nk(86,1,{86:1},Qv);_.k=0;var Mv;var dh=XD(GK,'Debouncer',86);nk(395,$wnd.Function,{},Uv);_.nb=function Vv(a){Md(a,14).V()};nk(351,1,{});_.c=false;_.d=0;var Di=XD(JK,'Timer',351);nk(317,351,{},$v);var ah=XD(GK,'Debouncer/1',317);nk(318,351,{},aw);var bh=XD(GK,'Debouncer/2',318);nk(396,$wnd.Function,{},cw);_.H=function dw(a,b){var c;bw(this,(c=Sd(a,$wnd.Map),Rd(b),c))};nk(397,$wnd.Function,{},gw);_.nb=function hw(a){ew(this.a,Sd(a,$wnd.Map))};nk(398,$wnd.Function,{},iw);_.nb=function jw(a){fw(this.a,Md(a,86))};nk(394,$wnd.Function,{},kw);_.H=function lw(a,b){Sv(this.a,Md(a,14),Td(b))};nk(309,1,NJ,pw);_.lb=function qw(){return Cw(this.a)};var eh=XD(GK,'ServerEventHandlerBinder/lambda$0$Type',309);nk(310,1,$J,rw);_.ob=function sw(a){ow(this.b,this.a,this.c,a)};_.c=false;var fh=XD(GK,'ServerEventHandlerBinder/lambda$1$Type',310);var tw;nk(255,1,{325:1},Bx);_.Fb=function Cx(a,b,c){Kw(this,a,b,c)};_.Gb=function Fx(a){return Uw(a)};_.Ib=function Kx(a,b){var c,d,e;d=Object.keys(a);e=new rz(d,a,b);c=Md(b.e.get(hh),81);!c?qx(e.b,e.a,e.c):(c.a=e)};_.Jb=function Lx(r,s){var t=this;var u=s._propertiesChanged;u&&(s._propertiesChanged=function(a,b,c){cJ(function(){t.Ib(b,r)})();u.apply(this,arguments)});var v=r.Bb();var w=s.ready;s.ready=function(){w.apply(this,arguments);Dn(s);var q=function(){var o=s.root.querySelector(RK);if(o){s.removeEventListener(SK,q)}else{return}if(!o.constructor.prototype.$propChangedModified){o.constructor.prototype.$propChangedModified=true;var p=o.constructor.prototype._propertiesChanged;o.constructor.prototype._propertiesChanged=function(a,b,c){p.apply(this,arguments);var d=Object.getOwnPropertyNames(b);var e='items.';var f;for(f=0;f0){var i=h.substr(0,g);var j=h.substr(g+1);var k=a.items[i];if(k&&k.nodeId){var l=k.nodeId;var m=k[j];var n=this.__dataHost;while(!n.localName||n.__dataHost){n=n.__dataHost}cJ(function(){Jx(l,n,j,m,v)})()}}}}}}};s.root&&s.root.querySelector(RK)?q():s.addEventListener(SK,q)}};_.Hb=function Mx(a){if(a.c.has(0)){return true}return !!a.g&&K(a,a.g.e)};var Ew,Fw;var Mh=XD(GK,'SimpleElementBindingStrategy',255);nk(384,$wnd.Function,{},$x);_.nb=function _x(a){Md(a,44).Cb()};nk(387,$wnd.Function,{},ay);_.nb=function by(a){Md(a,14).V()};nk(109,1,{},cy);var gh=XD(GK,'SimpleElementBindingStrategy/BindingContext',109);nk(81,1,{81:1},dy);var hh=XD(GK,'SimpleElementBindingStrategy/InitialPropertyUpdate',81);nk(256,1,{},ey);_.Kb=function fy(a){ex(this.a,a)};var ih=XD(GK,'SimpleElementBindingStrategy/lambda$0$Type',256);nk(257,1,{},gy);_.Kb=function hy(a){fx(this.a,a)};var jh=XD(GK,'SimpleElementBindingStrategy/lambda$1$Type',257);nk(380,$wnd.Function,{},iy);_.H=function jy(a,b){var c;Nx(this.b,this.a,(c=Md(a,13),Td(b),c))};nk(266,1,_J,ky);_.qb=function ly(a){Ox(this.b,this.a,a)};var kh=XD(GK,'SimpleElementBindingStrategy/lambda$11$Type',266);nk(267,1,aK,my);_.rb=function ny(a){yx(this.c,this.b,this.a)};var lh=XD(GK,'SimpleElementBindingStrategy/lambda$12$Type',267);nk(268,1,VJ,oy);_.mb=function py(){gx(this.b,this.c,this.a)};var mh=XD(GK,'SimpleElementBindingStrategy/lambda$13$Type',268);nk(269,1,xJ,qy);_.C=function ry(){this.b.Kb(this.a)};var nh=XD(GK,'SimpleElementBindingStrategy/lambda$14$Type',269);nk(270,1,xJ,sy);_.C=function ty(){this.a[this.b]=zn(this.c)};var oh=XD(GK,'SimpleElementBindingStrategy/lambda$15$Type',270);nk(272,1,$J,uy);_.ob=function vy(a){hx(this.a,a)};var ph=XD(GK,'SimpleElementBindingStrategy/lambda$16$Type',272);nk(271,1,VJ,wy);_.mb=function xy(){_w(this.b,this.a)};var qh=XD(GK,'SimpleElementBindingStrategy/lambda$17$Type',271);nk(274,1,$J,yy);_.ob=function zy(a){ix(this.a,a)};var rh=XD(GK,'SimpleElementBindingStrategy/lambda$18$Type',274);nk(273,1,VJ,Ay);_.mb=function By(){jx(this.b,this.a)};var sh=XD(GK,'SimpleElementBindingStrategy/lambda$19$Type',273);nk(258,1,{},Cy);_.Kb=function Dy(a){kx(this.a,a)};var th=XD(GK,'SimpleElementBindingStrategy/lambda$2$Type',258);nk(275,1,QJ,Ey);_.V=function Fy(){bx(this.a,this.b,this.c,false)};var uh=XD(GK,'SimpleElementBindingStrategy/lambda$20$Type',275);nk(276,1,QJ,Gy);_.V=function Hy(){bx(this.a,this.b,this.c,false)};var vh=XD(GK,'SimpleElementBindingStrategy/lambda$21$Type',276);nk(277,1,QJ,Iy);_.V=function Jy(){dx(this.a,this.b,this.c,false)};var wh=XD(GK,'SimpleElementBindingStrategy/lambda$22$Type',277);nk(278,1,NJ,Ky);_.lb=function Ly(){return Px(this.a,this.b)};var xh=XD(GK,'SimpleElementBindingStrategy/lambda$23$Type',278);nk(279,1,NJ,My);_.lb=function Ny(){return Qx(this.a,this.b)};var yh=XD(GK,'SimpleElementBindingStrategy/lambda$24$Type',279);nk(381,$wnd.Function,{},Oy);_.H=function Py(a,b){var c;GB((c=Md(a,79),Td(b),c))};nk(382,$wnd.Function,{},Qy);_.nb=function Ry(a){Rx(this.a,Sd(a,$wnd.Map))};nk(383,$wnd.Function,{},Sy);_.H=function Ty(a,b){var c;(c=Md(a,44),Td(b),c).Cb()};nk(259,1,{114:1},Uy);_.pb=function Vy(a){rx(this.c,this.b,this.a)};var zh=XD(GK,'SimpleElementBindingStrategy/lambda$3$Type',259);nk(385,$wnd.Function,{},Wy);_.H=function Xy(a,b){var c;lx(this.a,(c=Md(a,13),Td(b),c))};nk(280,1,_J,Yy);_.qb=function Zy(a){mx(this.a,a)};var Ah=XD(GK,'SimpleElementBindingStrategy/lambda$31$Type',280);nk(281,1,xJ,$y);_.C=function _y(){nx(this.b,this.a,this.c)};var Bh=XD(GK,'SimpleElementBindingStrategy/lambda$32$Type',281);nk(282,1,{},az);_.db=function bz(a){ox(this.a,a)};var Ch=XD(GK,'SimpleElementBindingStrategy/lambda$33$Type',282);nk(386,$wnd.Function,{},cz);_.nb=function dz(a){px(this.a,this.b,Td(a))};nk(283,1,{},ez);_.nb=function fz(a){Yx(this.b,this.c,this.a,Td(a))};var Dh=XD(GK,'SimpleElementBindingStrategy/lambda$35$Type',283);nk(284,1,$J,gz);_.ob=function hz(a){Sx(this.a,a)};var Eh=XD(GK,'SimpleElementBindingStrategy/lambda$37$Type',284);nk(285,1,NJ,iz);_.lb=function jz(){return this.a.b};var Fh=XD(GK,'SimpleElementBindingStrategy/lambda$38$Type',285);nk(388,$wnd.Function,{},kz);_.nb=function lz(a){this.a.push(Md(a,6))};nk(261,1,VJ,mz);_.mb=function nz(){Tx(this.a)};var Gh=XD(GK,'SimpleElementBindingStrategy/lambda$4$Type',261);nk(260,1,{},oz);_.C=function pz(){Ux(this.a)};var Hh=XD(GK,'SimpleElementBindingStrategy/lambda$5$Type',260);nk(263,1,QJ,rz);_.V=function sz(){qz(this)};var Ih=XD(GK,'SimpleElementBindingStrategy/lambda$6$Type',263);nk(262,1,NJ,tz);_.lb=function uz(){return this.a[this.b]};var Jh=XD(GK,'SimpleElementBindingStrategy/lambda$7$Type',262);nk(265,1,_J,vz);_.qb=function wz(a){RB(new xz(this.a))};var Kh=XD(GK,'SimpleElementBindingStrategy/lambda$8$Type',265);nk(264,1,VJ,xz);_.mb=function yz(){Jw(this.a)};var Lh=XD(GK,'SimpleElementBindingStrategy/lambda$9$Type',264);nk(286,1,{325:1},Dz);_.Fb=function Ez(a,b,c){Bz(a,b)};_.Gb=function Fz(a){return $doc.createTextNode('')};_.Hb=function Gz(a){return a.c.has(7)};var zz;var Ph=XD(GK,'TextBindingStrategy',286);nk(287,1,xJ,Hz);_.C=function Iz(){Az();eD(this.a,Td(iA(this.b)))};var Nh=XD(GK,'TextBindingStrategy/lambda$0$Type',287);nk(288,1,{114:1},Jz);_.pb=function Kz(a){Cz(this.b,this.a)};var Oh=XD(GK,'TextBindingStrategy/lambda$1$Type',288);nk(359,$wnd.Function,{},Oz);_.nb=function Pz(a){this.a.add(a)};nk(363,$wnd.Function,{},Rz);_.H=function Sz(a,b){this.a.push(a)};var Uz,Vz=false;nk(301,1,{},Xz);var Qh=XD('com.vaadin.client.flow.dom','PolymerDomApiImpl',301);nk(82,1,{82:1},Yz);var Rh=XD('com.vaadin.client.flow.model','UpdatableModelProperties',82);nk(393,$wnd.Function,{},Zz);_.nb=function $z(a){this.a.add(Td(a))};nk(94,1,{});_.Lb=function aA(){return this.e};var pi=XD(UJ,'ReactiveValueChangeEvent',94);nk(53,94,{53:1},bA);_.Lb=function cA(){return Md(this.e,27)};_.b=false;_.c=0;var Sh=XD(TK,'ListSpliceEvent',53);nk(13,1,{13:1,326:1},rA);_.Mb=function sA(a){return uA(this.a,a)};_.b=false;_.c=false;_.d=false;var dA;var _h=XD(TK,'MapProperty',13);nk(93,1,{});var oi=XD(UJ,'ReactiveEventRouter',93);nk(242,93,{},AA);_.Nb=function BA(a,b){Md(a,46).rb(Md(b,84))};_.Ob=function CA(a){return new DA(a)};var Uh=XD(TK,'MapProperty/1',242);nk(243,1,aK,DA);_.rb=function EA(a){EB(this.a)};var Th=XD(TK,'MapProperty/1/0methodref$onValueChange$Type',243);nk(241,1,QJ,FA);_.V=function GA(){eA()};var Vh=XD(TK,'MapProperty/lambda$0$Type',241);nk(244,1,VJ,HA);_.mb=function IA(){this.a.d=false};var Wh=XD(TK,'MapProperty/lambda$1$Type',244);nk(245,1,VJ,JA);_.mb=function KA(){this.a.d=false};var Xh=XD(TK,'MapProperty/lambda$2$Type',245);nk(246,1,QJ,LA);_.V=function MA(){nA(this.a,this.b)};var Yh=XD(TK,'MapProperty/lambda$3$Type',246);nk(95,94,{95:1},NA);_.Lb=function OA(){return Md(this.e,41)};var Zh=XD(TK,'MapPropertyAddEvent',95);nk(84,94,{84:1},PA);_.Lb=function QA(){return Md(this.e,13)};var $h=XD(TK,'MapPropertyChangeEvent',84);nk(33,1,{33:1});_.d=0;var ai=XD(TK,'NodeFeature',33);nk(27,33,{33:1,27:1,326:1},YA);_.Mb=function ZA(a){return uA(this.a,a)};_.Pb=function $A(a){var b,c,d;c=[];for(b=0;b=0?':'+this.c:'')+')'};_.c=0;var aj=XD(gJ,'StackTraceElement',28);Kd={4:1,120:1,29:1,2:1};var dj=XD(gJ,'String',2);nk(73,91,{120:1},_E,aF,bF);var bj=XD(gJ,'StringBuilder',73);nk(132,74,zJ,cF);var cj=XD(gJ,'StringIndexOutOfBoundsException',132);nk(502,1,{});var dF;nk(115,1,MJ,gF);_.eb=function hF(a){return fF(a)};var ej=XD(gJ,'Throwable/lambda$0$Type',115);nk(102,8,zJ,iF);var gj=XD(gJ,'UnsupportedOperationException',102);nk(342,1,{87:1});_.Yb=function kF(a){throw dk(new iF('Add not supported on this collection'))};_.s=function lF(){var a,b,c;c=new qH('[',']');for(b=this.Zb();b._b();){a=b.ac();pH(c,a===this?'(this Collection)':a==null?AJ:rk(a))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var hj=XD(eL,'AbstractCollection',342);nk(345,1,{113:1});_.p=function pF(a){var b,c,d;if(a===this){return true}if(!Wd(a,83)){return false}d=Md(a,113);if(this.a.c+this.b.c!=d.a.c+d.b.c){return false}for(c=new EF((new zF(d)).a);c.b;){b=DF(c);if(!mF(this,b)){return false}}return true};_.r=function rF(){return nG(new zF(this))};_.s=function sF(){var a,b,c;c=new qH('{','}');for(b=new EF((new zF(this)).a);b.b;){a=DF(b);pH(c,oF(this,a.cc())+'='+oF(this,a.dc()))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var qj=XD(eL,'AbstractMap',345);nk(292,345,{113:1});var kj=XD(eL,'AbstractHashMap',292);nk(344,342,{87:1,324:1});_.p=function wF(a){var b;if(a===this){return true}if(!Wd(a,65)){return false}b=Md(a,324);if(vF(b.a)!=this.$b()){return false}return jF(this,b)};_.r=function xF(){return nG(this)};var rj=XD(eL,'AbstractSet',344);nk(65,344,{65:1,87:1,324:1},zF);_.Zb=function AF(){return new EF(this.a)};_.$b=function BF(){return vF(this.a)};var jj=XD(eL,'AbstractHashMap/EntrySet',65);nk(66,1,{},EF);_.ac=function GF(){return DF(this)};_._b=function FF(){return this.b};_.b=false;var ij=XD(eL,'AbstractHashMap/EntrySetIterator',66);nk(343,342,{87:1,98:1});_.bc=function HF(a,b){throw dk(new iF('Add not supported on this list'))};_.Yb=function IF(a){this.bc(this.$b(),a);return true};_.p=function JF(a){var b,c,d,e,f;if(a===this){return true}if(!Wd(a,35)){return false}f=Md(a,98);if(this.$b()!=f.a.length){return false}e=new hG(f);for(c=new hG(this);c.a Element[]; -export declare const licenseCheckOk: (data: Product) => void; -export declare const licenseCheckFailed: (data: ProductAndMessage) => void; -export declare const licenseCheckNoKey: (data: ProductAndMessage) => void; -export declare const licenseInit: () => void; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js deleted file mode 100644 index 5f0f6178..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js +++ /dev/null @@ -1,110 +0,0 @@ -const noLicenseFallbackTimeout = 1000; -export const findAll = (element, tags) => { - const lightDom = Array.from(element.querySelectorAll(tags.join(', '))); - const shadowDom = Array.from(element.querySelectorAll('*')) - .filter((e) => e.shadowRoot) - .flatMap((e) => findAll(e.shadowRoot, tags)); - return [...lightDom, ...shadowDom]; -}; -let licenseCheckListener = false; -const showNoLicenseFallback = (element, productAndMessage) => { - if (!licenseCheckListener) { - // When a license check has succeeded, refresh so that all elements are properly shown again - window.addEventListener('message', (e) => { - if (e.data === 'validate-license') { - window.location.reload(); - } - }, false); - licenseCheckListener = true; - } - const overlay = element._overlayElement; - if (overlay) { - if (overlay.shadowRoot) { - const defaultSlot = overlay.shadowRoot.querySelector('slot:not([name])'); - if (defaultSlot && defaultSlot.assignedElements().length > 0) { - showNoLicenseFallback(defaultSlot.assignedElements()[0], productAndMessage); - return; - } - } - showNoLicenseFallback(overlay, productAndMessage); - return; - } - const htmlMessage = productAndMessage.messageHtml - ? productAndMessage.messageHtml - : `${productAndMessage.message}

Component: ${productAndMessage.product.name} ${productAndMessage.product.version}

`.replace(/https:([^ ]*)/g, "
https:$1"); - if (element.isConnected) { - element.outerHTML = `
${htmlMessage}
`; - } -}; -const productTagNames = {}; -const productChecking = {}; -const productMissingLicense = {}; -const productCheckOk = {}; -const key = (product) => { - return `${product.name}_${product.version}`; -}; -const checkLicenseIfNeeded = (cvdlElement) => { - var _a; - const { cvdlName, version } = cvdlElement.constructor; - const product = { name: cvdlName, version }; - const tagName = cvdlElement.tagName.toLowerCase(); - productTagNames[cvdlName] = (_a = productTagNames[cvdlName]) !== null && _a !== void 0 ? _a : []; - productTagNames[cvdlName].push(tagName); - const failedLicenseCheck = productMissingLicense[key(product)]; - if (failedLicenseCheck) { - // Has been checked and the check failed - setTimeout(() => showNoLicenseFallback(cvdlElement, failedLicenseCheck), noLicenseFallbackTimeout); - } - if (productMissingLicense[key(product)] || productCheckOk[key(product)]) { - // Already checked - } - else if (!productChecking[key(product)]) { - // Has not been checked - productChecking[key(product)] = true; - window.Vaadin.devTools.checkLicense(product); - } -}; -export const licenseCheckOk = (data) => { - productCheckOk[key(data)] = true; - // eslint-disable-next-line no-console - console.debug('License check ok for', data); -}; -export const licenseCheckFailed = (data) => { - const productName = data.product.name; - productMissingLicense[key(data.product)] = data; - // eslint-disable-next-line no-console - console.error('License check failed for', productName); - const tags = productTagNames[productName]; - if ((tags === null || tags === void 0 ? void 0 : tags.length) > 0) { - findAll(document, tags).forEach((element) => { - setTimeout(() => showNoLicenseFallback(element, productMissingLicense[key(data.product)]), noLicenseFallbackTimeout); - }); - } -}; -export const licenseCheckNoKey = (data) => { - const keyUrl = data.message; - const productName = data.product.name; - data.messageHtml = `No license found. Go here to start a trial or retrieve your license.`; - productMissingLicense[key(data.product)] = data; - // eslint-disable-next-line no-console - console.error('No license found when checking', productName); - const tags = productTagNames[productName]; - if ((tags === null || tags === void 0 ? void 0 : tags.length) > 0) { - findAll(document, tags).forEach((element) => { - setTimeout(() => showNoLicenseFallback(element, productMissingLicense[key(data.product)]), noLicenseFallbackTimeout); - }); - } -}; -export const licenseInit = () => { - // Process already registered elements - window.Vaadin.devTools.createdCvdlElements.forEach((element) => { - checkLicenseIfNeeded(element); - }); - // Handle new elements directly - window.Vaadin.devTools.createdCvdlElements = { - push: (element) => { - checkLicenseIfNeeded(element); - } - }; -}; -//# sourceMappingURL=License.js.map \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js.map b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js.map deleted file mode 100644 index 49a8674c..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/License.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"License.js","sourceRoot":"","sources":["../../../../src/main/frontend/License.ts"],"names":[],"mappings":"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","sourcesContent":["const noLicenseFallbackTimeout = 1000;\n\nexport interface Product {\n name: string;\n version: string;\n}\n\nexport interface ProductAndMessage {\n message: string;\n messageHtml?: string;\n product: Product;\n}\n\nexport const findAll = (element: Element | ShadowRoot | Document, tags: string[]): Element[] => {\n const lightDom = Array.from(element.querySelectorAll(tags.join(', ')));\n const shadowDom = Array.from(element.querySelectorAll('*'))\n .filter((e) => e.shadowRoot)\n .flatMap((e) => findAll(e.shadowRoot!, tags));\n return [...lightDom, ...shadowDom];\n};\n\nlet licenseCheckListener = false;\n\nconst showNoLicenseFallback = (element: Element, productAndMessage: ProductAndMessage) => {\n if (!licenseCheckListener) {\n // When a license check has succeeded, refresh so that all elements are properly shown again\n window.addEventListener(\n 'message',\n (e) => {\n if (e.data === 'validate-license') {\n window.location.reload();\n }\n },\n false\n );\n licenseCheckListener = true;\n }\n const overlay = (element as any)._overlayElement;\n if (overlay) {\n if (overlay.shadowRoot) {\n const defaultSlot = overlay.shadowRoot.querySelector('slot:not([name])');\n if (defaultSlot && defaultSlot.assignedElements().length > 0) {\n showNoLicenseFallback(defaultSlot.assignedElements()[0], productAndMessage);\n return;\n }\n }\n showNoLicenseFallback(overlay, productAndMessage);\n return;\n }\n\n const htmlMessage = productAndMessage.messageHtml\n ? productAndMessage.messageHtml\n : `${productAndMessage.message}

Component: ${productAndMessage.product.name} ${productAndMessage.product.version}

`.replace(\n /https:([^ ]*)/g,\n \"https:$1\"\n );\n\n if (element.isConnected) {\n element.outerHTML = `
${htmlMessage}
`;\n }\n};\n\nconst productTagNames: Record = {};\nconst productChecking: Record = {};\nconst productMissingLicense: Record = {};\nconst productCheckOk: Record = {};\n\nconst key = (product: Product): string => {\n return `${product.name}_${product.version}`;\n};\n\nconst checkLicenseIfNeeded = (cvdlElement: Element) => {\n const { cvdlName, version } = cvdlElement.constructor as CustomElementConstructor & {\n cvdlName: string;\n version: string;\n };\n const product: Product = { name: cvdlName, version };\n const tagName = cvdlElement.tagName.toLowerCase();\n productTagNames[cvdlName] = productTagNames[cvdlName] ?? [];\n productTagNames[cvdlName].push(tagName);\n\n const failedLicenseCheck = productMissingLicense[key(product)];\n if (failedLicenseCheck) {\n // Has been checked and the check failed\n setTimeout(() => showNoLicenseFallback(cvdlElement, failedLicenseCheck), noLicenseFallbackTimeout);\n }\n\n if (productMissingLicense[key(product)] || productCheckOk[key(product)]) {\n // Already checked\n } else if (!productChecking[key(product)]) {\n // Has not been checked\n productChecking[key(product)] = true;\n (window as any).Vaadin.devTools.checkLicense(product);\n }\n};\n\nexport const licenseCheckOk = (data: Product) => {\n productCheckOk[key(data)] = true;\n\n // eslint-disable-next-line no-console\n console.debug('License check ok for', data);\n};\n\nexport const licenseCheckFailed = (data: ProductAndMessage) => {\n const productName = data.product.name;\n productMissingLicense[key(data.product)] = data;\n // eslint-disable-next-line no-console\n console.error('License check failed for', productName);\n\n const tags = productTagNames[productName];\n if (tags?.length > 0) {\n findAll(document, tags).forEach((element) => {\n setTimeout(\n () => showNoLicenseFallback(element, productMissingLicense[key(data.product)]),\n noLicenseFallbackTimeout\n );\n });\n }\n};\n\nexport const licenseCheckNoKey = (data: ProductAndMessage) => {\n const keyUrl = data.message;\n\n const productName = data.product.name;\n data.messageHtml = `No license found. Go here to start a trial or retrieve your license.`;\n productMissingLicense[key(data.product)] = data;\n // eslint-disable-next-line no-console\n console.error('No license found when checking', productName);\n\n const tags = productTagNames[productName];\n if (tags?.length > 0) {\n findAll(document, tags).forEach((element) => {\n setTimeout(\n () => showNoLicenseFallback(element, productMissingLicense[key(data.product)]),\n noLicenseFallbackTimeout\n );\n });\n }\n};\n\nexport const licenseInit = () => {\n // Process already registered elements\n (window as any).Vaadin.devTools.createdCvdlElements.forEach((element: Element) => {\n checkLicenseIfNeeded(element);\n });\n\n // Handle new elements directly\n (window as any).Vaadin.devTools.createdCvdlElements = {\n push: (element: Element) => {\n checkLicenseIfNeeded(element);\n }\n };\n};\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/copy-to-clipboard.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/copy-to-clipboard.js deleted file mode 100755 index 475842a8..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/copy-to-clipboard.js +++ /dev/null @@ -1,150 +0,0 @@ -"use strict"; - -var deselectCurrent = function () { - var selection = document.getSelection(); - if (!selection.rangeCount) { - return function () {}; - } - var active = document.activeElement; - - var ranges = []; - for (var i = 0; i < selection.rangeCount; i++) { - ranges.push(selection.getRangeAt(i)); - } - - switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML - case 'INPUT': - case 'TEXTAREA': - active.blur(); - break; - - default: - active = null; - break; - } - - selection.removeAllRanges(); - return function () { - selection.type === 'Caret' && - selection.removeAllRanges(); - - if (!selection.rangeCount) { - ranges.forEach(function(range) { - selection.addRange(range); - }); - } - - active && - active.focus(); - }; -}; - - -var clipboardToIE11Formatting = { - "text/plain": "Text", - "text/html": "Url", - "default": "Text" -} - -var defaultMessage = "Copy to clipboard: #{key}, Enter"; - -function format(message) { - var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; - return message.replace(/#{\s*key\s*}/g, copyKey); -} - -export function copy(text, options) { - var debug, - message, - reselectPrevious, - range, - selection, - mark, - success = false; - if (!options) { - options = {}; - } - debug = options.debug || false; - try { - reselectPrevious = deselectCurrent(); - - range = document.createRange(); - selection = document.getSelection(); - - mark = document.createElement("span"); - mark.textContent = text; - // reset user styles for span element - mark.style.all = "unset"; - // prevents scrolling to the end of the page - mark.style.position = "fixed"; - mark.style.top = 0; - mark.style.clip = "rect(0, 0, 0, 0)"; - // used to preserve spaces and line breaks - mark.style.whiteSpace = "pre"; - // do not inherit user-select (it may be `none`) - mark.style.webkitUserSelect = "text"; - mark.style.MozUserSelect = "text"; - mark.style.msUserSelect = "text"; - mark.style.userSelect = "text"; - mark.addEventListener("copy", function(e) { - e.stopPropagation(); - if (options.format) { - e.preventDefault(); - if (typeof e.clipboardData === "undefined") { // IE 11 - debug && console.warn("unable to use e.clipboardData"); - debug && console.warn("trying IE specific stuff"); - window.clipboardData.clearData(); - var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"] - window.clipboardData.setData(format, text); - } else { // all other browsers - e.clipboardData.clearData(); - e.clipboardData.setData(options.format, text); - } - } - if (options.onCopy) { - e.preventDefault(); - options.onCopy(e.clipboardData); - } - }); - - document.body.appendChild(mark); - - range.selectNodeContents(mark); - selection.addRange(range); - - var successful = document.execCommand("copy"); - if (!successful) { - throw new Error("copy command was unsuccessful"); - } - success = true; - } catch (err) { - debug && console.error("unable to copy using execCommand: ", err); - debug && console.warn("trying IE specific stuff"); - try { - window.clipboardData.setData(options.format || "text", text); - options.onCopy && options.onCopy(window.clipboardData); - success = true; - } catch (err) { - debug && console.error("unable to copy using clipboardData: ", err); - debug && console.error("falling back to prompt"); - message = format("message" in options ? options.message : defaultMessage); - window.prompt(message, text); - } - } finally { - if (selection) { - if (typeof selection.removeRange == "function") { - selection.removeRange(range); - } else { - selection.removeAllRanges(); - } - } - - if (mark) { - document.body.removeChild(mark); - } - reselectPrevious(); - } - - return success; -} - diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector-es6.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector-es6.js deleted file mode 100644 index 699684da..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector-es6.js +++ /dev/null @@ -1 +0,0 @@ -import './dndConnector.js'; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector.js index 13170ec2..7dcb9751 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/dndConnector.js @@ -10,7 +10,7 @@ window.Vaadin.Flow.dndConnector = { event.dataTransfer.dropEffect = effect; } - if (effect && effect !== 'none') { + if (effect !== 'none') { /* #7108: if drag moves on top of drop target's children, first another ondragenter event * is fired and then a ondragleave event. This happens again once the drag * moves on top of another children, or back on top of the drop target element. diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/lumo-includes.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/lumo-includes.ts deleted file mode 100644 index bd4834fe..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/lumo-includes.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { color } from '@vaadin/vaadin-lumo-styles/color.js'; -import { typography } from '@vaadin/vaadin-lumo-styles/typography.js'; - -const tpl = document.createElement('template'); -tpl.innerHTML = ``; -document.head.appendChild(tpl.content); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world-jandex.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world-jandex.ts deleted file mode 100644 index db258179..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world-jandex.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { html, LitElement } from 'lit'; -import '@axa-ch/input-text'; - -class HelloWorldJandex extends LitElement { - - render() { - return html` -
- Addon with Jandex index - -
`; - } -} - -customElements.define('hello-world-jandex', HelloWorldJandex); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world.ts deleted file mode 100644 index 9a850e1c..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/src/hello-world.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { html, LitElement } from 'lit'; -import '@axa-ch/input-text'; - -class HelloWorld extends LitElement { - - render() { - return html` -
- Addon without Jandex index - -
`; - } -} - -customElements.define('hello-world', HelloWorld); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/themes/reusable-theme/styles.css b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/themes/reusable-theme/styles.css deleted file mode 100644 index 699c70e0..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/themes/reusable-theme/styles.css +++ /dev/null @@ -1,13 +0,0 @@ - -/* - CSS styling examples for the Vaadin app. - This is the style entrypoint for the theme and together with css in ./components/ included - automatically into the theme. - Visit https://vaadin.com/docs-beta/latest/theming/application-theme/ for more information. -*/ - -/* Example: CSS class name to center align the content . */ -.centered-content { - margin: 0 auto; - max-width: 250px; -} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/tooltip.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/tooltip.ts index e5849ac6..351527ce 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/tooltip.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/tooltip.ts @@ -1,11 +1,23 @@ import { Tooltip } from '@vaadin/tooltip/src/vaadin-tooltip.js'; const _window = window as any; -_window.Vaadin = _window.Vaadin || {}; -_window.Vaadin.Flow = _window.Vaadin.Flow || {}; +_window.Vaadin ||= {}; +_window.Vaadin.Flow ||= {}; +_window.Vaadin.Flow.tooltip ||= {}; -_window.Vaadin.Flow.tooltip = { +Object.assign(_window.Vaadin.Flow.tooltip, { setDefaultHideDelay: (hideDelay: number) => Tooltip.setDefaultHideDelay(hideDelay), setDefaultFocusDelay: (focusDelay: number) => Tooltip.setDefaultFocusDelay(focusDelay), - setDefaultHoverDelay: (hoverDelay: number) => Tooltip.setDefaultHoverDelay(hoverDelay), + setDefaultHoverDelay: (hoverDelay: number) => Tooltip.setDefaultHoverDelay(hoverDelay) +}); + +const { defaultHideDelay, defaultFocusDelay, defaultHoverDelay } = _window.Vaadin.Flow.tooltip; +if (defaultHideDelay) { + Tooltip.setDefaultHideDelay(defaultHideDelay); +} +if (defaultFocusDelay) { + Tooltip.setDefaultFocusDelay(defaultFocusDelay); +} +if (defaultHoverDelay) { + Tooltip.setDefaultHoverDelay(defaultHoverDelay); } diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.d.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.d.ts deleted file mode 100644 index a7583c0c..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { LitElement } from 'lit'; -import { Product } from './License'; -interface Feature { - id: string; - title: string; - moreInfoLink: string; - requiresServerRestart: boolean; - enabled: boolean; -} -declare enum ConnectionStatus { - ACTIVE = "active", - INACTIVE = "inactive", - UNAVAILABLE = "unavailable", - ERROR = "error" -} -export declare class Connection extends Object { - static HEARTBEAT_INTERVAL: number; - status: ConnectionStatus; - webSocket?: WebSocket; - constructor(url?: string); - onHandshake(): void; - onReload(): void; - onConnectionError(_: string): void; - onStatusChange(_: ConnectionStatus): void; - onMessage(message: any): void; - handleMessage(msg: any): void; - handleError(msg: any): void; - setActive(yes: boolean): void; - setStatus(status: ConnectionStatus): void; - private send; - setFeature(featureId: string, enabled: boolean): void; - sendTelemetry(browserData: any): void; - sendLicenseCheck(product: Product): void; -} -declare enum MessageType { - LOG = "log", - INFORMATION = "information", - WARNING = "warning", - ERROR = "error" -} -interface Message { - id: number; - type: MessageType; - message: string; - details?: string; - link?: string; - persistentId?: string; - dontShowAgain: boolean; - deleted: boolean; -} -export declare class VaadinDevTools extends LitElement { - static BLUE_HSL: import("lit").CSSResult; - static GREEN_HSL: import("lit").CSSResult; - static GREY_HSL: import("lit").CSSResult; - static YELLOW_HSL: import("lit").CSSResult; - static RED_HSL: import("lit").CSSResult; - static MAX_LOG_ROWS: number; - static get styles(): import("lit").CSSResult; - static DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE: string; - static ACTIVE_KEY_IN_SESSION_STORAGE: string; - static TRIGGERED_KEY_IN_SESSION_STORAGE: string; - static TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE: string; - static AUTO_DEMOTE_NOTIFICATION_DELAY: number; - static HOTSWAP_AGENT: string; - static JREBEL: string; - static SPRING_BOOT_DEVTOOLS: string; - static BACKEND_DISPLAY_NAME: Record; - static get isActive(): boolean; - static notificationDismissed(persistentId: string): boolean; - url?: string; - liveReloadDisabled?: boolean; - backend?: string; - springBootLiveReloadPort?: number; - expanded: boolean; - messages: Message[]; - splashMessage?: string; - notifications: Message[]; - frontendStatus: ConnectionStatus; - javaStatus: ConnectionStatus; - private tabs; - private activeTab; - private serverInfo; - private features; - private unreadErrors; - private root; - private javaConnection?; - private frontendConnection?; - private nextMessageId; - private disableEventListener?; - private transitionDuration; - elementTelemetry(): void; - openWebSocketConnection(): void; - getDedicatedWebSocketUrl(): string | undefined; - getSpringBootWebSocketUrl(location: any): string; - connectedCallback(): void; - format(o: any): string; - catchErrors(): void; - disconnectedCallback(): void; - toggleExpanded(): void; - showSplashMessage(msg: string | undefined): void; - demoteSplashMessage(): void; - checkLicense(productInfo: Product): void; - log(type: MessageType, message: string, details?: string, link?: string): void; - showNotification(type: MessageType, message: string, details?: string, link?: string, persistentId?: string): void; - dismissNotification(id: number): void; - findNotificationIndex(id: number): number; - toggleDontShowAgain(id: number): void; - setActive(yes: boolean): void; - getStatusColor(status: ConnectionStatus | undefined): import("lit").CSSResult; - renderMessage(messageObject: Message): import("lit-html").TemplateResult<1>; - render(): import("lit-html").TemplateResult<1>; - renderLog(): import("lit-html").TemplateResult<1>; - activateLog(): void; - renderInfo(): import("lit-html").TemplateResult<1>; - private renderFeatures; - copyInfoToClipboard(): void; - toggleFeatureFlag(e: Event, feature: Feature): void; -} -export {}; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js deleted file mode 100644 index 547fd0da..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js +++ /dev/null @@ -1,1477 +0,0 @@ -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -import { css, html, LitElement, nothing } from 'lit'; -import { property, query, state } from 'lit/decorators.js'; -import { classMap } from 'lit/directives/class-map.js'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import { copy } from './copy-to-clipboard.js'; -import { licenseCheckFailed, licenseCheckNoKey, licenseCheckOk, licenseInit } from './License'; -var ConnectionStatus; -(function (ConnectionStatus) { - ConnectionStatus["ACTIVE"] = "active"; - ConnectionStatus["INACTIVE"] = "inactive"; - ConnectionStatus["UNAVAILABLE"] = "unavailable"; - ConnectionStatus["ERROR"] = "error"; -})(ConnectionStatus || (ConnectionStatus = {})); -export class Connection extends Object { - constructor(url) { - super(); - this.status = ConnectionStatus.UNAVAILABLE; - if (url) { - this.webSocket = new WebSocket(url); - this.webSocket.onmessage = (msg) => this.handleMessage(msg); - this.webSocket.onerror = (err) => this.handleError(err); - this.webSocket.onclose = (_) => { - if (this.status !== ConnectionStatus.ERROR) { - this.setStatus(ConnectionStatus.UNAVAILABLE); - } - this.webSocket = undefined; - }; - } - setInterval(() => { - if (this.webSocket && self.status !== ConnectionStatus.ERROR && this.status !== ConnectionStatus.UNAVAILABLE) { - this.webSocket.send(''); - } - }, Connection.HEARTBEAT_INTERVAL); - } - onHandshake() { - // Intentionally empty - } - onReload() { - // Intentionally empty - } - onConnectionError(_) { - // Intentionally empty - } - onStatusChange(_) { - // Intentionally empty - } - onMessage(message) { - // eslint-disable-next-line no-console - console.error('Unknown message received from the live reload server:', message); - } - handleMessage(msg) { - let json; - try { - json = JSON.parse(msg.data); - } - catch (e) { - this.handleError(`[${e.name}: ${e.message}`); - return; - } - if (json.command === 'hello') { - this.setStatus(ConnectionStatus.ACTIVE); - this.onHandshake(); - } - else if (json.command === 'reload') { - if (this.status === ConnectionStatus.ACTIVE) { - this.onReload(); - } - } - else if (json.command === 'license-check-ok') { - licenseCheckOk(json.data); - } - else if (json.command === 'license-check-failed') { - licenseCheckFailed(json.data); - } - else if (json.command === 'license-check-nokey') { - licenseCheckNoKey(json.data); - } - else { - this.onMessage(json); - } - } - handleError(msg) { - // eslint-disable-next-line no-console - console.error(msg); - this.setStatus(ConnectionStatus.ERROR); - if (msg instanceof Event && this.webSocket) { - this.onConnectionError(`Error in WebSocket connection to ${this.webSocket.url}`); - } - else { - this.onConnectionError(msg); - } - } - setActive(yes) { - if (!yes && this.status === ConnectionStatus.ACTIVE) { - this.setStatus(ConnectionStatus.INACTIVE); - } - else if (yes && this.status === ConnectionStatus.INACTIVE) { - this.setStatus(ConnectionStatus.ACTIVE); - } - } - setStatus(status) { - if (this.status !== status) { - this.status = status; - this.onStatusChange(status); - } - } - send(command, data) { - const message = JSON.stringify({ command, data }); - if (!this.webSocket) { - // eslint-disable-next-line no-console - console.error(`Unable to send message ${command}. No websocket is available`); - } - else if (this.webSocket.readyState !== WebSocket.OPEN) { - this.webSocket.addEventListener('open', () => this.webSocket.send(message)); - } - else { - this.webSocket.send(message); - } - } - setFeature(featureId, enabled) { - this.send('setFeature', { featureId, enabled }); - } - sendTelemetry(browserData) { - this.send('reportTelemetry', { browserData }); - } - sendLicenseCheck(product) { - this.send('checkLicense', product); - } -} -Connection.HEARTBEAT_INTERVAL = 180000; -var MessageType; -(function (MessageType) { - MessageType["LOG"] = "log"; - MessageType["INFORMATION"] = "information"; - MessageType["WARNING"] = "warning"; - MessageType["ERROR"] = "error"; -})(MessageType || (MessageType = {})); -export class VaadinDevTools extends LitElement { - constructor() { - super(...arguments); - this.expanded = false; - this.messages = []; - this.notifications = []; - this.frontendStatus = ConnectionStatus.UNAVAILABLE; - this.javaStatus = ConnectionStatus.UNAVAILABLE; - this.tabs = [ - { id: 'log', title: 'Log', render: this.renderLog, activate: this.activateLog }, - { id: 'info', title: 'Info', render: this.renderInfo }, - { id: 'features', title: 'Feature Flags', render: this.renderFeatures } - ]; - this.activeTab = 'log'; - this.serverInfo = { - flowVersion: '', - vaadinVersion: '', - javaVersion: '', - osVersion: '', - productName: '' - }; - this.features = []; - this.unreadErrors = false; - this.nextMessageId = 1; - this.transitionDuration = 0; - } - static get styles() { - return css ` - :host { - --dev-tools-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, - 'Helvetica Neue', sans-serif; - --dev-tools-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', - monospace; - - --dev-tools-font-size: 0.8125rem; - --dev-tools-font-size-small: 0.75rem; - - --dev-tools-text-color: rgba(255, 255, 255, 0.8); - --dev-tools-text-color-secondary: rgba(255, 255, 255, 0.65); - --dev-tools-text-color-emphasis: rgba(255, 255, 255, 0.95); - --dev-tools-text-color-active: rgba(255, 255, 255, 1); - - --dev-tools-background-color-inactive: rgba(45, 45, 45, 0.25); - --dev-tools-background-color-active: rgba(45, 45, 45, 0.98); - --dev-tools-background-color-active-blurred: rgba(45, 45, 45, 0.85); - - --dev-tools-border-radius: 0.5rem; - --dev-tools-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05), 0 4px 12px -2px rgba(0, 0, 0, 0.4); - - --dev-tools-blue-hsl: ${this.BLUE_HSL}; - --dev-tools-blue-color: hsl(var(--dev-tools-blue-hsl)); - --dev-tools-green-hsl: ${this.GREEN_HSL}; - --dev-tools-green-color: hsl(var(--dev-tools-green-hsl)); - --dev-tools-grey-hsl: ${this.GREY_HSL}; - --dev-tools-grey-color: hsl(var(--dev-tools-grey-hsl)); - --dev-tools-yellow-hsl: ${this.YELLOW_HSL}; - --dev-tools-yellow-color: hsl(var(--dev-tools-yellow-hsl)); - --dev-tools-red-hsl: ${this.RED_HSL}; - --dev-tools-red-color: hsl(var(--dev-tools-red-hsl)); - - /* Needs to be in ms, used in JavaScript as well */ - --dev-tools-transition-duration: 180ms; - - all: initial; - - direction: ltr; - cursor: default; - font: normal 400 var(--dev-tools-font-size) / 1.125rem var(--dev-tools-font-family); - color: var(--dev-tools-text-color); - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - - position: fixed; - z-index: 20000; - pointer-events: none; - bottom: 0; - right: 0; - width: 100%; - height: 100%; - display: flex; - flex-direction: column-reverse; - align-items: flex-end; - } - - .dev-tools { - pointer-events: auto; - display: flex; - align-items: center; - position: fixed; - z-index: inherit; - right: 0.5rem; - bottom: 0.5rem; - min-width: 1.75rem; - height: 1.75rem; - max-width: 1.75rem; - border-radius: 0.5rem; - padding: 0.375rem; - box-sizing: border-box; - background-color: var(--dev-tools-background-color-inactive); - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05); - color: var(--dev-tools-text-color); - transition: var(--dev-tools-transition-duration); - white-space: nowrap; - line-height: 1rem; - } - - .dev-tools:hover, - .dev-tools.active { - background-color: var(--dev-tools-background-color-active); - box-shadow: var(--dev-tools-box-shadow); - } - - .dev-tools.active { - max-width: calc(100% - 1rem); - } - - .dev-tools .dev-tools-icon { - flex: none; - pointer-events: none; - display: inline-block; - width: 1rem; - height: 1rem; - fill: #fff; - transition: var(--dev-tools-transition-duration); - margin: 0; - } - - .dev-tools.active .dev-tools-icon { - opacity: 0; - position: absolute; - transform: scale(0.5); - } - - .dev-tools .status-blip { - flex: none; - display: block; - width: 6px; - height: 6px; - border-radius: 50%; - z-index: 20001; - background: var(--dev-tools-grey-color); - position: absolute; - top: -1px; - right: -1px; - } - - .dev-tools .status-description { - overflow: hidden; - text-overflow: ellipsis; - padding: 0 0.25rem; - } - - .dev-tools.error { - background-color: hsla(var(--dev-tools-red-hsl), 0.15); - animation: bounce 0.5s; - animation-iteration-count: 2; - } - - .switch { - display: inline-flex; - align-items: center; - } - - .switch input { - opacity: 0; - width: 0; - height: 0; - position: absolute; - } - - .switch .slider { - display: block; - flex: none; - width: 28px; - height: 18px; - border-radius: 9px; - background-color: rgba(255, 255, 255, 0.3); - transition: var(--dev-tools-transition-duration); - margin-right: 0.5rem; - } - - .switch:focus-within .slider, - .switch .slider:hover { - background-color: rgba(255, 255, 255, 0.35); - transition: none; - } - - .switch input:focus-visible ~ .slider { - box-shadow: 0 0 0 2px var(--dev-tools-background-color-active), 0 0 0 4px var(--dev-tools-blue-color); - } - - .switch .slider::before { - content: ''; - display: block; - margin: 2px; - width: 14px; - height: 14px; - background-color: #fff; - transition: var(--dev-tools-transition-duration); - border-radius: 50%; - } - - .switch input:checked + .slider { - background-color: var(--dev-tools-green-color); - } - - .switch input:checked + .slider::before { - transform: translateX(10px); - } - - .switch input:disabled + .slider::before { - background-color: var(--dev-tools-grey-color); - } - - .window.hidden { - opacity: 0; - transform: scale(0); - position: absolute; - } - - .window.visible { - transform: none; - opacity: 1; - pointer-events: auto; - } - - .window.visible ~ .dev-tools { - opacity: 0; - pointer-events: none; - } - - .window.visible ~ .dev-tools .dev-tools-icon, - .window.visible ~ .dev-tools .status-blip { - transition: none; - opacity: 0; - } - - .window { - border-radius: var(--dev-tools-border-radius); - overflow: hidden; - margin: 0.5rem; - width: 30rem; - max-width: calc(100% - 1rem); - max-height: calc(100vh - 1rem); - flex-shrink: 1; - background-color: var(--dev-tools-background-color-active); - color: var(--dev-tools-text-color); - transition: var(--dev-tools-transition-duration); - transform-origin: bottom right; - display: flex; - flex-direction: column; - box-shadow: var(--dev-tools-box-shadow); - outline: none; - } - - .window-toolbar { - display: flex; - flex: none; - align-items: center; - padding: 0.375rem; - white-space: nowrap; - order: 1; - background-color: rgba(0, 0, 0, 0.2); - gap: 0.5rem; - } - - .tab { - color: var(--dev-tools-text-color-secondary); - font: inherit; - font-size: var(--dev-tools-font-size-small); - font-weight: 500; - line-height: 1; - padding: 0.25rem 0.375rem; - background: none; - border: none; - margin: 0; - border-radius: 0.25rem; - transition: var(--dev-tools-transition-duration); - } - - .tab:hover, - .tab.active { - color: var(--dev-tools-text-color-active); - } - - .tab.active { - background-color: rgba(255, 255, 255, 0.12); - } - - .tab.unreadErrors::after { - content: '•'; - color: hsl(var(--dev-tools-red-hsl)); - font-size: 1.5rem; - position: absolute; - transform: translate(0, -50%); - } - - .ahreflike { - font-weight: 500; - color: var(--dev-tools-text-color-secondary); - text-decoration: underline; - cursor: pointer; - } - - .ahreflike:hover { - color: var(--dev-tools-text-color-emphasis); - } - - .button { - all: initial; - font-family: inherit; - font-size: var(--dev-tools-font-size-small); - line-height: 1; - white-space: nowrap; - background-color: rgba(0, 0, 0, 0.2); - color: inherit; - font-weight: 600; - padding: 0.25rem 0.375rem; - border-radius: 0.25rem; - } - - .button:focus, - .button:hover { - color: var(--dev-tools-text-color-emphasis); - } - - .minimize-button { - flex: none; - width: 1rem; - height: 1rem; - color: inherit; - background-color: transparent; - border: 0; - padding: 0; - margin: 0 0 0 auto; - opacity: 0.8; - } - - .minimize-button:hover { - opacity: 1; - } - - .minimize-button svg { - max-width: 100%; - } - - .message.information { - --dev-tools-notification-color: var(--dev-tools-blue-color); - } - - .message.warning { - --dev-tools-notification-color: var(--dev-tools-yellow-color); - } - - .message.error { - --dev-tools-notification-color: var(--dev-tools-red-color); - } - - .message { - display: flex; - padding: 0.1875rem 0.75rem 0.1875rem 2rem; - background-clip: padding-box; - } - - .message.log { - padding-left: 0.75rem; - } - - .message-content { - margin-right: 0.5rem; - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; - } - - .message-heading { - position: relative; - display: flex; - align-items: center; - margin: 0.125rem 0; - } - - .message.log { - color: var(--dev-tools-text-color-secondary); - } - - .message:not(.log) .message-heading { - font-weight: 500; - } - - .message.has-details .message-heading { - color: var(--dev-tools-text-color-emphasis); - font-weight: 600; - } - - .message-heading::before { - position: absolute; - margin-left: -1.5rem; - display: inline-block; - text-align: center; - font-size: 0.875em; - font-weight: 600; - line-height: calc(1.25em - 2px); - width: 14px; - height: 14px; - box-sizing: border-box; - border: 1px solid transparent; - border-radius: 50%; - } - - .message.information .message-heading::before { - content: 'i'; - border-color: currentColor; - color: var(--dev-tools-notification-color); - } - - .message.warning .message-heading::before, - .message.error .message-heading::before { - content: '!'; - color: var(--dev-tools-background-color-active); - background-color: var(--dev-tools-notification-color); - } - - .features-tray { - padding: 0.75rem; - flex: auto; - overflow: auto; - animation: fade-in var(--dev-tools-transition-duration) ease-in; - user-select: text; - } - - .features-tray p { - margin-top: 0; - color: var(--dev-tools-text-color-secondary); - } - - .features-tray .feature { - display: flex; - align-items: center; - gap: 1rem; - padding-bottom: 0.5em; - } - - .message .message-details { - font-weight: 400; - color: var(--dev-tools-text-color-secondary); - margin: 0.25rem 0; - } - - .message .message-details[hidden] { - display: none; - } - - .message .message-details p { - display: inline; - margin: 0; - margin-right: 0.375em; - word-break: break-word; - } - - .message .persist { - color: var(--dev-tools-text-color-secondary); - white-space: nowrap; - margin: 0.375rem 0; - display: flex; - align-items: center; - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - } - - .message .persist::before { - content: ''; - width: 1em; - height: 1em; - border-radius: 0.2em; - margin-right: 0.375em; - background-color: rgba(255, 255, 255, 0.3); - } - - .message .persist:hover::before { - background-color: rgba(255, 255, 255, 0.4); - } - - .message .persist.on::before { - background-color: rgba(255, 255, 255, 0.9); - } - - .message .persist.on::after { - content: ''; - order: -1; - position: absolute; - width: 0.75em; - height: 0.25em; - border: 2px solid var(--dev-tools-background-color-active); - border-width: 0 0 2px 2px; - transform: translate(0.05em, -0.05em) rotate(-45deg) scale(0.8, 0.9); - } - - .message .dismiss-message { - font-weight: 600; - align-self: stretch; - display: flex; - align-items: center; - padding: 0 0.25rem; - margin-left: 0.5rem; - color: var(--dev-tools-text-color-secondary); - } - - .message .dismiss-message:hover { - color: var(--dev-tools-text-color); - } - - .notification-tray { - display: flex; - flex-direction: column-reverse; - align-items: flex-end; - margin: 0.5rem; - flex: none; - } - - .window.hidden + .notification-tray { - margin-bottom: 3rem; - } - - .notification-tray .message { - pointer-events: auto; - background-color: var(--dev-tools-background-color-active); - color: var(--dev-tools-text-color); - max-width: 30rem; - box-sizing: border-box; - border-radius: var(--dev-tools-border-radius); - margin-top: 0.5rem; - transition: var(--dev-tools-transition-duration); - transform-origin: bottom right; - animation: slideIn var(--dev-tools-transition-duration); - box-shadow: var(--dev-tools-box-shadow); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .notification-tray .message.animate-out { - animation: slideOut forwards var(--dev-tools-transition-duration); - } - - .notification-tray .message .message-details { - max-height: 10em; - overflow: hidden; - } - - .message-tray { - flex: auto; - overflow: auto; - max-height: 20rem; - user-select: text; - } - - .message-tray .message { - animation: fade-in var(--dev-tools-transition-duration) ease-in; - padding-left: 2.25rem; - } - - .message-tray .message.warning { - background-color: hsla(var(--dev-tools-yellow-hsl), 0.09); - } - - .message-tray .message.error { - background-color: hsla(var(--dev-tools-red-hsl), 0.09); - } - - .message-tray .message.error .message-heading { - color: hsl(var(--dev-tools-red-hsl)); - } - - .message-tray .message.warning .message-heading { - color: hsl(var(--dev-tools-yellow-hsl)); - } - - .message-tray .message + .message { - border-top: 1px solid rgba(255, 255, 255, 0.07); - } - - .message-tray .dismiss-message, - .message-tray .persist { - display: none; - } - - .info-tray { - padding: 0.75rem; - position: relative; - flex: auto; - overflow: auto; - animation: fade-in var(--dev-tools-transition-duration) ease-in; - user-select: text; - } - - .info-tray dl { - margin: 0; - display: grid; - grid-template-columns: max-content 1fr; - column-gap: 0.75rem; - position: relative; - } - - .info-tray dt { - grid-column: 1; - color: var(--dev-tools-text-color-emphasis); - } - - .info-tray dt:not(:first-child)::before { - content: ''; - width: 100%; - position: absolute; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - margin-top: -0.375rem; - } - - .info-tray dd { - grid-column: 2; - margin: 0; - } - - .info-tray :is(dt, dd):not(:last-child) { - margin-bottom: 0.75rem; - } - - .info-tray dd + dd { - margin-top: -0.5rem; - } - - .info-tray .live-reload-status::before { - content: '•'; - color: var(--status-color); - width: 0.75rem; - display: inline-block; - font-size: 1rem; - line-height: 0.5rem; - } - - .info-tray .copy { - position: fixed; - z-index: 1; - top: 0.5rem; - right: 0.5rem; - } - - .info-tray .switch { - vertical-align: -4px; - } - - @keyframes slideIn { - from { - transform: translateX(100%); - opacity: 0; - } - to { - transform: translateX(0%); - opacity: 1; - } - } - - @keyframes slideOut { - from { - transform: translateX(0%); - opacity: 1; - } - to { - transform: translateX(100%); - opacity: 0; - } - } - - @keyframes fade-in { - 0% { - opacity: 0; - } - } - - @keyframes bounce { - 0% { - transform: scale(0.8); - } - 50% { - transform: scale(1.5); - background-color: hsla(var(--dev-tools-red-hsl), 1); - } - 100% { - transform: scale(1); - } - } - - @supports (backdrop-filter: blur(1px)) { - .dev-tools, - .window, - .notification-tray .message { - backdrop-filter: blur(8px); - } - .dev-tools:hover, - .dev-tools.active, - .window, - .notification-tray .message { - background-color: var(--dev-tools-background-color-active-blurred); - } - } - `; - } - static get isActive() { - const active = window.sessionStorage.getItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE); - return active === null || active !== 'false'; - } - static notificationDismissed(persistentId) { - const shown = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE); - return shown !== null && shown.includes(persistentId); - } - elementTelemetry() { - let data = {}; - try { - // localstorage data is collected by vaadin-usage-statistics.js - const localStorageStatsString = localStorage.getItem('vaadin.statistics.basket'); - if (!localStorageStatsString) { - // Do not send empty data - return; - } - data = JSON.parse(localStorageStatsString); - } - catch (e) { - // In case of parse errors don't send anything - return; - } - if (this.frontendConnection) { - this.frontendConnection.sendTelemetry(data); - } - } - openWebSocketConnection() { - this.frontendStatus = ConnectionStatus.UNAVAILABLE; - this.javaStatus = ConnectionStatus.UNAVAILABLE; - const onConnectionError = (msg) => this.log(MessageType.ERROR, msg); - const onReload = () => { - if (this.liveReloadDisabled) { - return; - } - this.showSplashMessage('Reloading…'); - const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE); - const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1; - window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString()); - window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE, 'true'); - window.location.reload(); - }; - const frontendConnection = new Connection(this.getDedicatedWebSocketUrl()); - frontendConnection.onHandshake = () => { - this.log(MessageType.LOG, 'Vaadin development mode initialized'); - if (!VaadinDevTools.isActive) { - frontendConnection.setActive(false); - } - this.elementTelemetry(); - }; - frontendConnection.onConnectionError = onConnectionError; - frontendConnection.onReload = onReload; - frontendConnection.onStatusChange = (status) => { - this.frontendStatus = status; - }; - frontendConnection.onMessage = (message) => { - if ((message === null || message === void 0 ? void 0 : message.command) === 'serverInfo') { - this.serverInfo = message.data; - } - else if ((message === null || message === void 0 ? void 0 : message.command) === 'featureFlags') { - this.features = message.data.features; - } - else { - // eslint-disable-next-line no-console - console.error('Unknown message from front-end connection:', JSON.stringify(message)); - } - }; - this.frontendConnection = frontendConnection; - let javaConnection; - if (this.backend === VaadinDevTools.SPRING_BOOT_DEVTOOLS && this.springBootLiveReloadPort) { - javaConnection = new Connection(this.getSpringBootWebSocketUrl(window.location)); - javaConnection.onHandshake = () => { - if (!VaadinDevTools.isActive) { - javaConnection.setActive(false); - } - }; - javaConnection.onReload = onReload; - javaConnection.onConnectionError = onConnectionError; - } - else if (this.backend === VaadinDevTools.JREBEL || this.backend === VaadinDevTools.HOTSWAP_AGENT) { - javaConnection = frontendConnection; - } - else { - javaConnection = new Connection(undefined); - } - const prevOnStatusChange = javaConnection.onStatusChange; - javaConnection.onStatusChange = (status) => { - prevOnStatusChange(status); - this.javaStatus = status; - }; - const prevOnHandshake = javaConnection.onHandshake; - javaConnection.onHandshake = () => { - prevOnHandshake(); - if (this.backend) { - this.log(MessageType.INFORMATION, `Java live reload available: ${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]}`); - } - }; - this.javaConnection = javaConnection; - if (!this.backend) { - this.showNotification(MessageType.WARNING, 'Java live reload unavailable', 'Live reload for Java changes is currently not set up. Find out how to make use of this functionality to boost your workflow.', 'https://vaadin.com/docs/latest/flow/configuration/live-reload', 'liveReloadUnavailable'); - } - } - getDedicatedWebSocketUrl() { - function getAbsoluteUrl(relative) { - // Use innerHTML to obtain an absolute URL - const div = document.createElement('div'); - div.innerHTML = ``; - return div.firstChild.href; - } - if (this.url === undefined) { - return undefined; - } - const connectionBaseUrl = getAbsoluteUrl(this.url); - if (!connectionBaseUrl.startsWith('http://') && !connectionBaseUrl.startsWith('https://')) { - // eslint-disable-next-line no-console - console.error('The protocol of the url should be http or https for live reload to work.'); - return undefined; - } - return `${connectionBaseUrl.replace(/^http/, 'ws')}?v-r=push&debug_window`; - } - getSpringBootWebSocketUrl(location) { - const { hostname } = location; - const wsProtocol = location.protocol === 'https:' ? 'wss' : 'ws'; - if (hostname.endsWith('gitpod.io')) { - // Gitpod uses `port-url` instead of `url:port` - const hostnameWithoutPort = hostname.replace(/.*?-/, ''); - return `${wsProtocol}://${this.springBootLiveReloadPort}-${hostnameWithoutPort}`; - } - else { - return `${wsProtocol}://${hostname}:${this.springBootLiveReloadPort}`; - } - } - connectedCallback() { - super.connectedCallback(); - this.catchErrors(); - // when focus or clicking anywhere, move the splash message to the message tray - this.disableEventListener = (_) => this.demoteSplashMessage(); - document.body.addEventListener('focus', this.disableEventListener); - document.body.addEventListener('click', this.disableEventListener); - this.openWebSocketConnection(); - const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); - if (lastReload) { - const now = new Date(); - const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice(-2)}:${`0${now.getSeconds()}`.slice(-2)}`; - this.showSplashMessage(`Page reloaded at ${reloaded}`); - window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); - } - this.transitionDuration = parseInt(window.getComputedStyle(this).getPropertyValue('--dev-tools-transition-duration'), 10); - const windowAny = window; - windowAny.Vaadin = windowAny.Vaadin || {}; - windowAny.Vaadin.devTools = Object.assign(this, windowAny.Vaadin.devTools); - licenseInit(); - } - format(o) { - return o.toString(); - } - catchErrors() { - // Process stored messages - const queue = window.Vaadin.ConsoleErrors; - if (queue) { - queue.forEach((args) => { - this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' ')); - }); - } - // Install new handler that immediately processes messages - window.Vaadin.ConsoleErrors = { - push: (args) => { - this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' ')); - } - }; - } - disconnectedCallback() { - if (this.disableEventListener) { - document.body.removeEventListener('focus', this.disableEventListener); - document.body.removeEventListener('click', this.disableEventListener); - } - super.disconnectedCallback(); - } - toggleExpanded() { - this.notifications.slice().forEach((notification) => this.dismissNotification(notification.id)); - this.expanded = !this.expanded; - if (this.expanded) { - this.root.focus(); - } - } - showSplashMessage(msg) { - this.splashMessage = msg; - if (this.splashMessage) { - if (this.expanded) { - this.demoteSplashMessage(); - } - else { - // automatically move notification to message tray after a certain amount of time - setTimeout(() => { - this.demoteSplashMessage(); - }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY); - } - } - } - demoteSplashMessage() { - if (this.splashMessage) { - this.log(MessageType.LOG, this.splashMessage); - } - this.showSplashMessage(undefined); - } - checkLicense(productInfo) { - if (this.frontendConnection) { - this.frontendConnection.sendLicenseCheck(productInfo); - } - else { - licenseCheckFailed({ message: 'Internal error: no connection', product: productInfo }); - } - } - log(type, message, details, link) { - const id = this.nextMessageId; - this.nextMessageId += 1; - this.messages.push({ - id, - type, - message, - details, - link, - dontShowAgain: false, - deleted: false - }); - while (this.messages.length > VaadinDevTools.MAX_LOG_ROWS) { - this.messages.shift(); - } - this.requestUpdate(); - this.updateComplete.then(() => { - // Scroll into view - const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child'); - if (this.expanded && lastMessage) { - setTimeout(() => lastMessage.scrollIntoView({ behavior: 'smooth' }), this.transitionDuration); - this.unreadErrors = false; - } - else if (type === MessageType.ERROR) { - this.unreadErrors = true; - } - }); - } - showNotification(type, message, details, link, persistentId) { - if (persistentId === undefined || !VaadinDevTools.notificationDismissed(persistentId)) { - // Do not open persistent message if another is already visible with the same persistentId - const matchingVisibleNotifications = this.notifications - .filter((notification) => notification.persistentId === persistentId) - .filter((notification) => !notification.deleted); - if (matchingVisibleNotifications.length > 0) { - return; - } - const id = this.nextMessageId; - this.nextMessageId += 1; - this.notifications.push({ - id, - type, - message, - details, - link, - persistentId, - dontShowAgain: false, - deleted: false - }); - // automatically move notification to message tray after a certain amount of time unless it contains a link - if (link === undefined) { - setTimeout(() => { - this.dismissNotification(id); - }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY); - } - this.requestUpdate(); - } - else { - this.log(type, message, details, link); - } - } - dismissNotification(id) { - const index = this.findNotificationIndex(id); - if (index !== -1 && !this.notifications[index].deleted) { - const notification = this.notifications[index]; - // user is explicitly dismissing a notification---after that we won't bug them with it - if (notification.dontShowAgain && - notification.persistentId && - !VaadinDevTools.notificationDismissed(notification.persistentId)) { - let dismissed = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE); - dismissed = dismissed === null ? notification.persistentId : `${dismissed},${notification.persistentId}`; - window.localStorage.setItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE, dismissed); - } - notification.deleted = true; - this.log(notification.type, notification.message, notification.details, notification.link); - // give some time for the animation - setTimeout(() => { - const idx = this.findNotificationIndex(id); - if (idx !== -1) { - this.notifications.splice(idx, 1); - this.requestUpdate(); - } - }, this.transitionDuration); - } - } - findNotificationIndex(id) { - let index = -1; - this.notifications.some((notification, idx) => { - if (notification.id === id) { - index = idx; - return true; - } - else { - return false; - } - }); - return index; - } - toggleDontShowAgain(id) { - const index = this.findNotificationIndex(id); - if (index !== -1 && !this.notifications[index].deleted) { - const notification = this.notifications[index]; - notification.dontShowAgain = !notification.dontShowAgain; - this.requestUpdate(); - } - } - setActive(yes) { - var _a, _b; - (_a = this.frontendConnection) === null || _a === void 0 ? void 0 : _a.setActive(yes); - (_b = this.javaConnection) === null || _b === void 0 ? void 0 : _b.setActive(yes); - window.sessionStorage.setItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE, yes ? 'true' : 'false'); - } - getStatusColor(status) { - if (status === ConnectionStatus.ACTIVE) { - return css `hsl(${VaadinDevTools.GREEN_HSL})`; - } - else if (status === ConnectionStatus.INACTIVE) { - return css `hsl(${VaadinDevTools.GREY_HSL})`; - } - else if (status === ConnectionStatus.UNAVAILABLE) { - return css `hsl(${VaadinDevTools.YELLOW_HSL})`; - } - else if (status === ConnectionStatus.ERROR) { - return css `hsl(${VaadinDevTools.RED_HSL})`; - } - else { - return css `none`; - } - } - /* eslint-disable lit/no-template-arrow */ - renderMessage(messageObject) { - return html ` - - `; - } - /* eslint-disable lit/no-template-map */ - render() { - return html `
e.key === 'Escape' && this.toggleExpanded()} - > -
- ${this.tabs.map((tab) => html ` `)} - -
- ${this.tabs.map((tab) => (this.activeTab === tab.id ? tab.render.call(this) : nothing))} -
- -
${this.notifications.map((msg) => this.renderMessage(msg))}
-
this.toggleExpanded()} - > - ${this.unreadErrors - ? html ` - - - - - - ` - : html ``} - - - ${this.splashMessage ? html `${this.splashMessage}
` : nothing} - `; - } - renderLog() { - return html `
${this.messages.map((msg) => this.renderMessage(msg))}
`; - } - activateLog() { - this.unreadErrors = false; - this.updateComplete.then(() => { - const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child'); - if (lastMessage) { - lastMessage.scrollIntoView(); - } - }); - } - renderInfo() { - return html `
- -
-
${this.serverInfo.productName}
-
${this.serverInfo.vaadinVersion}
-
Flow
-
${this.serverInfo.flowVersion}
-
Java
-
${this.serverInfo.javaVersion}
-
OS
-
${this.serverInfo.osVersion}
-
Browser
-
${navigator.userAgent}
-
- Live reload - -
-
- Java ${this.javaStatus} ${this.backend ? `(${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]})` : ''} -
-
- Front end ${this.frontendStatus} -
-
-
`; - } - renderFeatures() { - return html `
- ${this.features.map((feature) => html `
- - Learn more -
`)} -
`; - } - copyInfoToClipboard() { - const items = this.renderRoot.querySelectorAll('.info-tray dt, .info-tray dd'); - const text = Array.from(items) - .map((message) => (message.localName === 'dd' ? ': ' : '\n') + message.textContent.trim()) - .join('') - .replace(/^\n/, ''); - copy(text); - this.showNotification(MessageType.INFORMATION, 'Environment information copied to clipboard', undefined, undefined, 'versionInfoCopied'); - } - toggleFeatureFlag(e, feature) { - const enabled = e.target.checked; - if (this.frontendConnection) { - this.frontendConnection.setFeature(feature.id, enabled); - this.showNotification(MessageType.INFORMATION, `“${feature.title}” ${enabled ? 'enabled' : 'disabled'}`, feature.requiresServerRestart ? 'This feature requires a server restart' : undefined, undefined, `feature${feature.id}${enabled ? 'Enabled' : 'Disabled'}`); - } - else { - this.log(MessageType.ERROR, `Unable to toggle feature ${feature.title}: No server connection available`); - } - } -} -VaadinDevTools.BLUE_HSL = css `206, 100%, 70%`; -VaadinDevTools.GREEN_HSL = css `145, 80%, 42%`; -VaadinDevTools.GREY_HSL = css `0, 0%, 50%`; -VaadinDevTools.YELLOW_HSL = css `38, 98%, 64%`; -VaadinDevTools.RED_HSL = css `355, 100%, 68%`; -VaadinDevTools.MAX_LOG_ROWS = 1000; -VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE = 'vaadin.live-reload.dismissedNotifications'; -VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.active'; -VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggered'; -VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggeredCount'; -VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY = 5000; -VaadinDevTools.HOTSWAP_AGENT = 'HOTSWAP_AGENT'; -VaadinDevTools.JREBEL = 'JREBEL'; -VaadinDevTools.SPRING_BOOT_DEVTOOLS = 'SPRING_BOOT_DEVTOOLS'; -VaadinDevTools.BACKEND_DISPLAY_NAME = { - HOTSWAP_AGENT: 'HotswapAgent', - JREBEL: 'JRebel', - SPRING_BOOT_DEVTOOLS: 'Spring Boot Devtools' -}; -__decorate([ - property({ type: String }) -], VaadinDevTools.prototype, "url", void 0); -__decorate([ - property({ type: Boolean, attribute: true }) -], VaadinDevTools.prototype, "liveReloadDisabled", void 0); -__decorate([ - property({ type: String }) -], VaadinDevTools.prototype, "backend", void 0); -__decorate([ - property({ type: Number }) -], VaadinDevTools.prototype, "springBootLiveReloadPort", void 0); -__decorate([ - property({ type: Boolean, attribute: false }) -], VaadinDevTools.prototype, "expanded", void 0); -__decorate([ - property({ type: Array, attribute: false }) -], VaadinDevTools.prototype, "messages", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "splashMessage", void 0); -__decorate([ - property({ type: Array, attribute: false }) -], VaadinDevTools.prototype, "notifications", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "frontendStatus", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "javaStatus", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "tabs", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "activeTab", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "serverInfo", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "features", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "unreadErrors", void 0); -__decorate([ - query('.window') -], VaadinDevTools.prototype, "root", void 0); -if (customElements.get('vaadin-dev-tools') === undefined) { - customElements.define('vaadin-dev-tools', VaadinDevTools); -} -//# sourceMappingURL=vaadin-dev-tools.js.map \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js.map b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js.map deleted file mode 100644 index 55ba4dd0..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/jar-resources/vaadin-dev-tools.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vaadin-dev-tools.js","sourceRoot":"","sources":["../../../../src/main/frontend/vaadin-dev-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { copy } from './copy-to-clipboard.js';\nimport { licenseCheckFailed, licenseCheckNoKey, licenseCheckOk, Product, licenseInit } from './License';\n\ninterface ServerInfo {\n vaadinVersion: string;\n flowVersion: string;\n javaVersion: string;\n osVersion: string;\n productName: string;\n}\n\ninterface Feature {\n id: string;\n title: string;\n moreInfoLink: string;\n requiresServerRestart: boolean;\n enabled: boolean;\n}\n\ninterface Tab {\n id: 'log' | 'info' | 'features';\n title: string;\n render: () => unknown;\n activate?: () => void;\n}\n\nenum ConnectionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n UNAVAILABLE = 'unavailable',\n ERROR = 'error'\n}\n\nexport class Connection extends Object {\n static HEARTBEAT_INTERVAL = 180000;\n\n status: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n webSocket?: WebSocket;\n\n constructor(url?: string) {\n super();\n\n if (url) {\n this.webSocket = new WebSocket(url);\n this.webSocket.onmessage = (msg) => this.handleMessage(msg);\n this.webSocket.onerror = (err) => this.handleError(err);\n this.webSocket.onclose = (_) => {\n if (this.status !== ConnectionStatus.ERROR) {\n this.setStatus(ConnectionStatus.UNAVAILABLE);\n }\n this.webSocket = undefined;\n };\n }\n\n setInterval(() => {\n if (this.webSocket && self.status !== ConnectionStatus.ERROR && this.status !== ConnectionStatus.UNAVAILABLE) {\n this.webSocket.send('');\n }\n }, Connection.HEARTBEAT_INTERVAL);\n }\n\n onHandshake() {\n // Intentionally empty\n }\n\n onReload() {\n // Intentionally empty\n }\n\n onConnectionError(_: string) {\n // Intentionally empty\n }\n\n onStatusChange(_: ConnectionStatus) {\n // Intentionally empty\n }\n\n onMessage(message: any) {\n // eslint-disable-next-line no-console\n console.error('Unknown message received from the live reload server:', message);\n }\n\n handleMessage(msg: any) {\n let json;\n try {\n json = JSON.parse(msg.data);\n } catch (e: any) {\n this.handleError(`[${e.name}: ${e.message}`);\n return;\n }\n if (json.command === 'hello') {\n this.setStatus(ConnectionStatus.ACTIVE);\n this.onHandshake();\n } else if (json.command === 'reload') {\n if (this.status === ConnectionStatus.ACTIVE) {\n this.onReload();\n }\n } else if (json.command === 'license-check-ok') {\n licenseCheckOk(json.data);\n } else if (json.command === 'license-check-failed') {\n licenseCheckFailed(json.data);\n } else if (json.command === 'license-check-nokey') {\n licenseCheckNoKey(json.data);\n } else {\n this.onMessage(json);\n }\n }\n\n handleError(msg: any) {\n // eslint-disable-next-line no-console\n console.error(msg);\n this.setStatus(ConnectionStatus.ERROR);\n if (msg instanceof Event && this.webSocket) {\n this.onConnectionError(`Error in WebSocket connection to ${this.webSocket.url}`);\n } else {\n this.onConnectionError(msg);\n }\n }\n\n setActive(yes: boolean) {\n if (!yes && this.status === ConnectionStatus.ACTIVE) {\n this.setStatus(ConnectionStatus.INACTIVE);\n } else if (yes && this.status === ConnectionStatus.INACTIVE) {\n this.setStatus(ConnectionStatus.ACTIVE);\n }\n }\n\n setStatus(status: ConnectionStatus) {\n if (this.status !== status) {\n this.status = status;\n this.onStatusChange(status);\n }\n }\n\n private send(command: string, data: any) {\n const message = JSON.stringify({ command, data });\n if (!this.webSocket) {\n // eslint-disable-next-line no-console\n console.error(`Unable to send message ${command}. No websocket is available`);\n } else if (this.webSocket.readyState !== WebSocket.OPEN) {\n this.webSocket.addEventListener('open', () => this.webSocket!.send(message));\n } else {\n this.webSocket.send(message);\n }\n }\n\n setFeature(featureId: string, enabled: boolean) {\n this.send('setFeature', { featureId, enabled });\n }\n sendTelemetry(browserData: any) {\n this.send('reportTelemetry', { browserData });\n }\n sendLicenseCheck(product: Product) {\n this.send('checkLicense', product);\n }\n}\n\nenum MessageType {\n LOG = 'log',\n INFORMATION = 'information',\n WARNING = 'warning',\n ERROR = 'error'\n}\n\ninterface Message {\n id: number;\n type: MessageType;\n message: string;\n details?: string;\n link?: string;\n persistentId?: string;\n dontShowAgain: boolean;\n deleted: boolean;\n}\n\nexport class VaadinDevTools extends LitElement {\n static BLUE_HSL = css`206, 100%, 70%`;\n static GREEN_HSL = css`145, 80%, 42%`;\n static GREY_HSL = css`0, 0%, 50%`;\n static YELLOW_HSL = css`38, 98%, 64%`;\n static RED_HSL = css`355, 100%, 68%`;\n static MAX_LOG_ROWS = 1000;\n\n static get styles() {\n return css`\n :host {\n --dev-tools-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,\n 'Helvetica Neue', sans-serif;\n --dev-tools-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',\n monospace;\n\n --dev-tools-font-size: 0.8125rem;\n --dev-tools-font-size-small: 0.75rem;\n\n --dev-tools-text-color: rgba(255, 255, 255, 0.8);\n --dev-tools-text-color-secondary: rgba(255, 255, 255, 0.65);\n --dev-tools-text-color-emphasis: rgba(255, 255, 255, 0.95);\n --dev-tools-text-color-active: rgba(255, 255, 255, 1);\n\n --dev-tools-background-color-inactive: rgba(45, 45, 45, 0.25);\n --dev-tools-background-color-active: rgba(45, 45, 45, 0.98);\n --dev-tools-background-color-active-blurred: rgba(45, 45, 45, 0.85);\n\n --dev-tools-border-radius: 0.5rem;\n --dev-tools-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05), 0 4px 12px -2px rgba(0, 0, 0, 0.4);\n\n --dev-tools-blue-hsl: ${this.BLUE_HSL};\n --dev-tools-blue-color: hsl(var(--dev-tools-blue-hsl));\n --dev-tools-green-hsl: ${this.GREEN_HSL};\n --dev-tools-green-color: hsl(var(--dev-tools-green-hsl));\n --dev-tools-grey-hsl: ${this.GREY_HSL};\n --dev-tools-grey-color: hsl(var(--dev-tools-grey-hsl));\n --dev-tools-yellow-hsl: ${this.YELLOW_HSL};\n --dev-tools-yellow-color: hsl(var(--dev-tools-yellow-hsl));\n --dev-tools-red-hsl: ${this.RED_HSL};\n --dev-tools-red-color: hsl(var(--dev-tools-red-hsl));\n\n /* Needs to be in ms, used in JavaScript as well */\n --dev-tools-transition-duration: 180ms;\n\n all: initial;\n\n direction: ltr;\n cursor: default;\n font: normal 400 var(--dev-tools-font-size) / 1.125rem var(--dev-tools-font-family);\n color: var(--dev-tools-text-color);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n position: fixed;\n z-index: 20000;\n pointer-events: none;\n bottom: 0;\n right: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-end;\n }\n\n .dev-tools {\n pointer-events: auto;\n display: flex;\n align-items: center;\n position: fixed;\n z-index: inherit;\n right: 0.5rem;\n bottom: 0.5rem;\n min-width: 1.75rem;\n height: 1.75rem;\n max-width: 1.75rem;\n border-radius: 0.5rem;\n padding: 0.375rem;\n box-sizing: border-box;\n background-color: var(--dev-tools-background-color-inactive);\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05);\n color: var(--dev-tools-text-color);\n transition: var(--dev-tools-transition-duration);\n white-space: nowrap;\n line-height: 1rem;\n }\n\n .dev-tools:hover,\n .dev-tools.active {\n background-color: var(--dev-tools-background-color-active);\n box-shadow: var(--dev-tools-box-shadow);\n }\n\n .dev-tools.active {\n max-width: calc(100% - 1rem);\n }\n\n .dev-tools .dev-tools-icon {\n flex: none;\n pointer-events: none;\n display: inline-block;\n width: 1rem;\n height: 1rem;\n fill: #fff;\n transition: var(--dev-tools-transition-duration);\n margin: 0;\n }\n\n .dev-tools.active .dev-tools-icon {\n opacity: 0;\n position: absolute;\n transform: scale(0.5);\n }\n\n .dev-tools .status-blip {\n flex: none;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n z-index: 20001;\n background: var(--dev-tools-grey-color);\n position: absolute;\n top: -1px;\n right: -1px;\n }\n\n .dev-tools .status-description {\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 0.25rem;\n }\n\n .dev-tools.error {\n background-color: hsla(var(--dev-tools-red-hsl), 0.15);\n animation: bounce 0.5s;\n animation-iteration-count: 2;\n }\n\n .switch {\n display: inline-flex;\n align-items: center;\n }\n\n .switch input {\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n }\n\n .switch .slider {\n display: block;\n flex: none;\n width: 28px;\n height: 18px;\n border-radius: 9px;\n background-color: rgba(255, 255, 255, 0.3);\n transition: var(--dev-tools-transition-duration);\n margin-right: 0.5rem;\n }\n\n .switch:focus-within .slider,\n .switch .slider:hover {\n background-color: rgba(255, 255, 255, 0.35);\n transition: none;\n }\n\n .switch input:focus-visible ~ .slider {\n box-shadow: 0 0 0 2px var(--dev-tools-background-color-active), 0 0 0 4px var(--dev-tools-blue-color);\n }\n\n .switch .slider::before {\n content: '';\n display: block;\n margin: 2px;\n width: 14px;\n height: 14px;\n background-color: #fff;\n transition: var(--dev-tools-transition-duration);\n border-radius: 50%;\n }\n\n .switch input:checked + .slider {\n background-color: var(--dev-tools-green-color);\n }\n\n .switch input:checked + .slider::before {\n transform: translateX(10px);\n }\n\n .switch input:disabled + .slider::before {\n background-color: var(--dev-tools-grey-color);\n }\n\n .window.hidden {\n opacity: 0;\n transform: scale(0);\n position: absolute;\n }\n\n .window.visible {\n transform: none;\n opacity: 1;\n pointer-events: auto;\n }\n\n .window.visible ~ .dev-tools {\n opacity: 0;\n pointer-events: none;\n }\n\n .window.visible ~ .dev-tools .dev-tools-icon,\n .window.visible ~ .dev-tools .status-blip {\n transition: none;\n opacity: 0;\n }\n\n .window {\n border-radius: var(--dev-tools-border-radius);\n overflow: hidden;\n margin: 0.5rem;\n width: 30rem;\n max-width: calc(100% - 1rem);\n max-height: calc(100vh - 1rem);\n flex-shrink: 1;\n background-color: var(--dev-tools-background-color-active);\n color: var(--dev-tools-text-color);\n transition: var(--dev-tools-transition-duration);\n transform-origin: bottom right;\n display: flex;\n flex-direction: column;\n box-shadow: var(--dev-tools-box-shadow);\n outline: none;\n }\n\n .window-toolbar {\n display: flex;\n flex: none;\n align-items: center;\n padding: 0.375rem;\n white-space: nowrap;\n order: 1;\n background-color: rgba(0, 0, 0, 0.2);\n gap: 0.5rem;\n }\n\n .tab {\n color: var(--dev-tools-text-color-secondary);\n font: inherit;\n font-size: var(--dev-tools-font-size-small);\n font-weight: 500;\n line-height: 1;\n padding: 0.25rem 0.375rem;\n background: none;\n border: none;\n margin: 0;\n border-radius: 0.25rem;\n transition: var(--dev-tools-transition-duration);\n }\n\n .tab:hover,\n .tab.active {\n color: var(--dev-tools-text-color-active);\n }\n\n .tab.active {\n background-color: rgba(255, 255, 255, 0.12);\n }\n\n .tab.unreadErrors::after {\n content: '•';\n color: hsl(var(--dev-tools-red-hsl));\n font-size: 1.5rem;\n position: absolute;\n transform: translate(0, -50%);\n }\n\n .ahreflike {\n font-weight: 500;\n color: var(--dev-tools-text-color-secondary);\n text-decoration: underline;\n cursor: pointer;\n }\n\n .ahreflike:hover {\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .button {\n all: initial;\n font-family: inherit;\n font-size: var(--dev-tools-font-size-small);\n line-height: 1;\n white-space: nowrap;\n background-color: rgba(0, 0, 0, 0.2);\n color: inherit;\n font-weight: 600;\n padding: 0.25rem 0.375rem;\n border-radius: 0.25rem;\n }\n\n .button:focus,\n .button:hover {\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .minimize-button {\n flex: none;\n width: 1rem;\n height: 1rem;\n color: inherit;\n background-color: transparent;\n border: 0;\n padding: 0;\n margin: 0 0 0 auto;\n opacity: 0.8;\n }\n\n .minimize-button:hover {\n opacity: 1;\n }\n\n .minimize-button svg {\n max-width: 100%;\n }\n\n .message.information {\n --dev-tools-notification-color: var(--dev-tools-blue-color);\n }\n\n .message.warning {\n --dev-tools-notification-color: var(--dev-tools-yellow-color);\n }\n\n .message.error {\n --dev-tools-notification-color: var(--dev-tools-red-color);\n }\n\n .message {\n display: flex;\n padding: 0.1875rem 0.75rem 0.1875rem 2rem;\n background-clip: padding-box;\n }\n\n .message.log {\n padding-left: 0.75rem;\n }\n\n .message-content {\n margin-right: 0.5rem;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n }\n\n .message-heading {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0.125rem 0;\n }\n\n .message.log {\n color: var(--dev-tools-text-color-secondary);\n }\n\n .message:not(.log) .message-heading {\n font-weight: 500;\n }\n\n .message.has-details .message-heading {\n color: var(--dev-tools-text-color-emphasis);\n font-weight: 600;\n }\n\n .message-heading::before {\n position: absolute;\n margin-left: -1.5rem;\n display: inline-block;\n text-align: center;\n font-size: 0.875em;\n font-weight: 600;\n line-height: calc(1.25em - 2px);\n width: 14px;\n height: 14px;\n box-sizing: border-box;\n border: 1px solid transparent;\n border-radius: 50%;\n }\n\n .message.information .message-heading::before {\n content: 'i';\n border-color: currentColor;\n color: var(--dev-tools-notification-color);\n }\n\n .message.warning .message-heading::before,\n .message.error .message-heading::before {\n content: '!';\n color: var(--dev-tools-background-color-active);\n background-color: var(--dev-tools-notification-color);\n }\n\n .features-tray {\n padding: 0.75rem;\n flex: auto;\n overflow: auto;\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n user-select: text;\n }\n\n .features-tray p {\n margin-top: 0;\n color: var(--dev-tools-text-color-secondary);\n }\n\n .features-tray .feature {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding-bottom: 0.5em;\n }\n\n .message .message-details {\n font-weight: 400;\n color: var(--dev-tools-text-color-secondary);\n margin: 0.25rem 0;\n }\n\n .message .message-details[hidden] {\n display: none;\n }\n\n .message .message-details p {\n display: inline;\n margin: 0;\n margin-right: 0.375em;\n word-break: break-word;\n }\n\n .message .persist {\n color: var(--dev-tools-text-color-secondary);\n white-space: nowrap;\n margin: 0.375rem 0;\n display: flex;\n align-items: center;\n position: relative;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n\n .message .persist::before {\n content: '';\n width: 1em;\n height: 1em;\n border-radius: 0.2em;\n margin-right: 0.375em;\n background-color: rgba(255, 255, 255, 0.3);\n }\n\n .message .persist:hover::before {\n background-color: rgba(255, 255, 255, 0.4);\n }\n\n .message .persist.on::before {\n background-color: rgba(255, 255, 255, 0.9);\n }\n\n .message .persist.on::after {\n content: '';\n order: -1;\n position: absolute;\n width: 0.75em;\n height: 0.25em;\n border: 2px solid var(--dev-tools-background-color-active);\n border-width: 0 0 2px 2px;\n transform: translate(0.05em, -0.05em) rotate(-45deg) scale(0.8, 0.9);\n }\n\n .message .dismiss-message {\n font-weight: 600;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0 0.25rem;\n margin-left: 0.5rem;\n color: var(--dev-tools-text-color-secondary);\n }\n\n .message .dismiss-message:hover {\n color: var(--dev-tools-text-color);\n }\n\n .notification-tray {\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-end;\n margin: 0.5rem;\n flex: none;\n }\n\n .window.hidden + .notification-tray {\n margin-bottom: 3rem;\n }\n\n .notification-tray .message {\n pointer-events: auto;\n background-color: var(--dev-tools-background-color-active);\n color: var(--dev-tools-text-color);\n max-width: 30rem;\n box-sizing: border-box;\n border-radius: var(--dev-tools-border-radius);\n margin-top: 0.5rem;\n transition: var(--dev-tools-transition-duration);\n transform-origin: bottom right;\n animation: slideIn var(--dev-tools-transition-duration);\n box-shadow: var(--dev-tools-box-shadow);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n }\n\n .notification-tray .message.animate-out {\n animation: slideOut forwards var(--dev-tools-transition-duration);\n }\n\n .notification-tray .message .message-details {\n max-height: 10em;\n overflow: hidden;\n }\n\n .message-tray {\n flex: auto;\n overflow: auto;\n max-height: 20rem;\n user-select: text;\n }\n\n .message-tray .message {\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n padding-left: 2.25rem;\n }\n\n .message-tray .message.warning {\n background-color: hsla(var(--dev-tools-yellow-hsl), 0.09);\n }\n\n .message-tray .message.error {\n background-color: hsla(var(--dev-tools-red-hsl), 0.09);\n }\n\n .message-tray .message.error .message-heading {\n color: hsl(var(--dev-tools-red-hsl));\n }\n\n .message-tray .message.warning .message-heading {\n color: hsl(var(--dev-tools-yellow-hsl));\n }\n\n .message-tray .message + .message {\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n }\n\n .message-tray .dismiss-message,\n .message-tray .persist {\n display: none;\n }\n\n .info-tray {\n padding: 0.75rem;\n position: relative;\n flex: auto;\n overflow: auto;\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n user-select: text;\n }\n\n .info-tray dl {\n margin: 0;\n display: grid;\n grid-template-columns: max-content 1fr;\n column-gap: 0.75rem;\n position: relative;\n }\n\n .info-tray dt {\n grid-column: 1;\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .info-tray dt:not(:first-child)::before {\n content: '';\n width: 100%;\n position: absolute;\n height: 1px;\n background-color: rgba(255, 255, 255, 0.1);\n margin-top: -0.375rem;\n }\n\n .info-tray dd {\n grid-column: 2;\n margin: 0;\n }\n\n .info-tray :is(dt, dd):not(:last-child) {\n margin-bottom: 0.75rem;\n }\n\n .info-tray dd + dd {\n margin-top: -0.5rem;\n }\n\n .info-tray .live-reload-status::before {\n content: '•';\n color: var(--status-color);\n width: 0.75rem;\n display: inline-block;\n font-size: 1rem;\n line-height: 0.5rem;\n }\n\n .info-tray .copy {\n position: fixed;\n z-index: 1;\n top: 0.5rem;\n right: 0.5rem;\n }\n\n .info-tray .switch {\n vertical-align: -4px;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0%);\n opacity: 1;\n }\n }\n\n @keyframes slideOut {\n from {\n transform: translateX(0%);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n\n @keyframes fade-in {\n 0% {\n opacity: 0;\n }\n }\n\n @keyframes bounce {\n 0% {\n transform: scale(0.8);\n }\n 50% {\n transform: scale(1.5);\n background-color: hsla(var(--dev-tools-red-hsl), 1);\n }\n 100% {\n transform: scale(1);\n }\n }\n\n @supports (backdrop-filter: blur(1px)) {\n .dev-tools,\n .window,\n .notification-tray .message {\n backdrop-filter: blur(8px);\n }\n .dev-tools:hover,\n .dev-tools.active,\n .window,\n .notification-tray .message {\n background-color: var(--dev-tools-background-color-active-blurred);\n }\n }\n `;\n }\n\n static DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE = 'vaadin.live-reload.dismissedNotifications';\n static ACTIVE_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.active';\n static TRIGGERED_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggered';\n static TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggeredCount';\n\n static AUTO_DEMOTE_NOTIFICATION_DELAY = 5000;\n\n static HOTSWAP_AGENT = 'HOTSWAP_AGENT';\n static JREBEL = 'JREBEL';\n static SPRING_BOOT_DEVTOOLS = 'SPRING_BOOT_DEVTOOLS';\n static BACKEND_DISPLAY_NAME: Record = {\n HOTSWAP_AGENT: 'HotswapAgent',\n JREBEL: 'JRebel',\n SPRING_BOOT_DEVTOOLS: 'Spring Boot Devtools'\n };\n\n static get isActive() {\n const active = window.sessionStorage.getItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE);\n return active === null || active !== 'false';\n }\n\n static notificationDismissed(persistentId: string) {\n const shown = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE);\n return shown !== null && shown.includes(persistentId);\n }\n\n @property({ type: String })\n url?: string;\n\n @property({ type: Boolean, attribute: true })\n liveReloadDisabled?: boolean;\n\n @property({ type: String })\n backend?: string;\n\n @property({ type: Number })\n springBootLiveReloadPort?: number;\n\n @property({ type: Boolean, attribute: false })\n expanded: boolean = false;\n\n @property({ type: Array, attribute: false })\n messages: Message[] = [];\n\n @property({ type: String, attribute: false })\n splashMessage?: string;\n\n @property({ type: Array, attribute: false })\n notifications: Message[] = [];\n\n @property({ type: String, attribute: false })\n frontendStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n\n @property({ type: String, attribute: false })\n javaStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n\n @state()\n private tabs: readonly Tab[] = [\n { id: 'log', title: 'Log', render: this.renderLog, activate: this.activateLog },\n { id: 'info', title: 'Info', render: this.renderInfo },\n { id: 'features', title: 'Feature Flags', render: this.renderFeatures }\n ];\n\n @state()\n private activeTab: string = 'log';\n\n @state()\n private serverInfo: ServerInfo = {\n flowVersion: '',\n vaadinVersion: '',\n javaVersion: '',\n osVersion: '',\n productName: ''\n };\n\n @state()\n private features: Feature[] = [];\n\n @state()\n private unreadErrors = false;\n\n @query('.window')\n private root!: HTMLElement;\n\n private javaConnection?: Connection;\n private frontendConnection?: Connection;\n\n private nextMessageId: number = 1;\n\n private disableEventListener?: EventListener;\n\n private transitionDuration: number = 0;\n\n elementTelemetry() {\n let data = {};\n try {\n // localstorage data is collected by vaadin-usage-statistics.js\n const localStorageStatsString = localStorage.getItem('vaadin.statistics.basket');\n if (!localStorageStatsString) {\n // Do not send empty data\n return;\n }\n data = JSON.parse(localStorageStatsString);\n } catch (e) {\n // In case of parse errors don't send anything\n return;\n }\n\n if (this.frontendConnection) {\n this.frontendConnection.sendTelemetry(data);\n }\n }\n\n openWebSocketConnection() {\n this.frontendStatus = ConnectionStatus.UNAVAILABLE;\n this.javaStatus = ConnectionStatus.UNAVAILABLE;\n\n const onConnectionError = (msg: string) => this.log(MessageType.ERROR, msg);\n const onReload = () => {\n if (this.liveReloadDisabled) {\n return;\n }\n this.showSplashMessage('Reloading…');\n const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE);\n const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1;\n window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString());\n window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE, 'true');\n window.location.reload();\n };\n\n const frontendConnection = new Connection(this.getDedicatedWebSocketUrl());\n frontendConnection.onHandshake = () => {\n this.log(MessageType.LOG, 'Vaadin development mode initialized');\n if (!VaadinDevTools.isActive) {\n frontendConnection.setActive(false);\n }\n this.elementTelemetry();\n };\n frontendConnection.onConnectionError = onConnectionError;\n frontendConnection.onReload = onReload;\n frontendConnection.onStatusChange = (status: ConnectionStatus) => {\n this.frontendStatus = status;\n };\n frontendConnection.onMessage = (message: any) => {\n if (message?.command === 'serverInfo') {\n this.serverInfo = message.data as ServerInfo;\n } else if (message?.command === 'featureFlags') {\n this.features = message.data.features as Feature[];\n } else {\n // eslint-disable-next-line no-console\n console.error('Unknown message from front-end connection:', JSON.stringify(message));\n }\n };\n this.frontendConnection = frontendConnection;\n\n let javaConnection: Connection;\n if (this.backend === VaadinDevTools.SPRING_BOOT_DEVTOOLS && this.springBootLiveReloadPort) {\n javaConnection = new Connection(this.getSpringBootWebSocketUrl(window.location));\n javaConnection.onHandshake = () => {\n if (!VaadinDevTools.isActive) {\n javaConnection.setActive(false);\n }\n };\n javaConnection.onReload = onReload;\n javaConnection.onConnectionError = onConnectionError;\n } else if (this.backend === VaadinDevTools.JREBEL || this.backend === VaadinDevTools.HOTSWAP_AGENT) {\n javaConnection = frontendConnection;\n } else {\n javaConnection = new Connection(undefined);\n }\n const prevOnStatusChange = javaConnection.onStatusChange;\n javaConnection.onStatusChange = (status) => {\n prevOnStatusChange(status);\n this.javaStatus = status;\n };\n const prevOnHandshake = javaConnection.onHandshake;\n javaConnection.onHandshake = () => {\n prevOnHandshake();\n if (this.backend) {\n this.log(\n MessageType.INFORMATION,\n `Java live reload available: ${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]}`\n );\n }\n };\n this.javaConnection = javaConnection;\n\n if (!this.backend) {\n this.showNotification(\n MessageType.WARNING,\n 'Java live reload unavailable',\n 'Live reload for Java changes is currently not set up. Find out how to make use of this functionality to boost your workflow.',\n 'https://vaadin.com/docs/latest/flow/configuration/live-reload',\n 'liveReloadUnavailable'\n );\n }\n }\n\n getDedicatedWebSocketUrl(): string | undefined {\n function getAbsoluteUrl(relative: string) {\n // Use innerHTML to obtain an absolute URL\n const div = document.createElement('div');\n div.innerHTML = ``;\n return (div.firstChild as HTMLLinkElement).href;\n }\n if (this.url === undefined) {\n return undefined;\n }\n const connectionBaseUrl = getAbsoluteUrl(this.url!);\n\n if (!connectionBaseUrl.startsWith('http://') && !connectionBaseUrl.startsWith('https://')) {\n // eslint-disable-next-line no-console\n console.error('The protocol of the url should be http or https for live reload to work.');\n return undefined;\n }\n return `${connectionBaseUrl.replace(/^http/, 'ws')}?v-r=push&debug_window`;\n }\n\n getSpringBootWebSocketUrl(location: any) {\n const { hostname } = location;\n const wsProtocol = location.protocol === 'https:' ? 'wss' : 'ws';\n if (hostname.endsWith('gitpod.io')) {\n // Gitpod uses `port-url` instead of `url:port`\n const hostnameWithoutPort = hostname.replace(/.*?-/, '');\n return `${wsProtocol}://${this.springBootLiveReloadPort}-${hostnameWithoutPort}`;\n } else {\n return `${wsProtocol}://${hostname}:${this.springBootLiveReloadPort}`;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.catchErrors();\n\n // when focus or clicking anywhere, move the splash message to the message tray\n this.disableEventListener = (_: any) => this.demoteSplashMessage();\n document.body.addEventListener('focus', this.disableEventListener);\n document.body.addEventListener('click', this.disableEventListener);\n this.openWebSocketConnection();\n\n const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);\n if (lastReload) {\n const now = new Date();\n const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice(\n -2\n )}:${`0${now.getSeconds()}`.slice(-2)}`;\n this.showSplashMessage(`Page reloaded at ${reloaded}`);\n window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);\n }\n\n this.transitionDuration = parseInt(\n window.getComputedStyle(this).getPropertyValue('--dev-tools-transition-duration'),\n 10\n );\n\n const windowAny = window as any;\n windowAny.Vaadin = windowAny.Vaadin || {};\n windowAny.Vaadin.devTools = Object.assign(this, windowAny.Vaadin.devTools);\n\n licenseInit();\n }\n format(o: any): string {\n return o.toString();\n }\n catchErrors() {\n // Process stored messages\n const queue = (window as any).Vaadin.ConsoleErrors as any[];\n if (queue) {\n queue.forEach((args: any[]) => {\n this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' '));\n });\n }\n // Install new handler that immediately processes messages\n (window as any).Vaadin.ConsoleErrors = {\n push: (args: any[]) => {\n this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' '));\n }\n };\n }\n\n disconnectedCallback() {\n if (this.disableEventListener) {\n document.body.removeEventListener('focus', this.disableEventListener!);\n document.body.removeEventListener('click', this.disableEventListener!);\n }\n super.disconnectedCallback();\n }\n\n toggleExpanded() {\n this.notifications.slice().forEach((notification) => this.dismissNotification(notification.id));\n this.expanded = !this.expanded;\n if (this.expanded) {\n this.root.focus();\n }\n }\n\n showSplashMessage(msg: string | undefined) {\n this.splashMessage = msg;\n if (this.splashMessage) {\n if (this.expanded) {\n this.demoteSplashMessage();\n } else {\n // automatically move notification to message tray after a certain amount of time\n setTimeout(() => {\n this.demoteSplashMessage();\n }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY);\n }\n }\n }\n\n demoteSplashMessage() {\n if (this.splashMessage) {\n this.log(MessageType.LOG, this.splashMessage);\n }\n this.showSplashMessage(undefined);\n }\n\n checkLicense(productInfo: Product) {\n if (this.frontendConnection) {\n this.frontendConnection.sendLicenseCheck(productInfo);\n } else {\n licenseCheckFailed({ message: 'Internal error: no connection', product: productInfo });\n }\n }\n\n log(type: MessageType, message: string, details?: string, link?: string) {\n const id = this.nextMessageId;\n this.nextMessageId += 1;\n this.messages.push({\n id,\n type,\n message,\n details,\n link,\n dontShowAgain: false,\n deleted: false\n });\n while (this.messages.length > VaadinDevTools.MAX_LOG_ROWS) {\n this.messages.shift();\n }\n this.requestUpdate();\n this.updateComplete.then(() => {\n // Scroll into view\n const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child');\n if (this.expanded && lastMessage) {\n setTimeout(() => lastMessage.scrollIntoView({ behavior: 'smooth' }), this.transitionDuration);\n this.unreadErrors = false;\n } else if (type === MessageType.ERROR) {\n this.unreadErrors = true;\n }\n });\n }\n\n showNotification(type: MessageType, message: string, details?: string, link?: string, persistentId?: string) {\n if (persistentId === undefined || !VaadinDevTools.notificationDismissed(persistentId!)) {\n // Do not open persistent message if another is already visible with the same persistentId\n const matchingVisibleNotifications = this.notifications\n .filter((notification) => notification.persistentId === persistentId)\n .filter((notification) => !notification.deleted);\n if (matchingVisibleNotifications.length > 0) {\n return;\n }\n const id = this.nextMessageId;\n this.nextMessageId += 1;\n this.notifications.push({\n id,\n type,\n message,\n details,\n link,\n persistentId,\n dontShowAgain: false,\n deleted: false\n });\n // automatically move notification to message tray after a certain amount of time unless it contains a link\n if (link === undefined) {\n setTimeout(() => {\n this.dismissNotification(id);\n }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY);\n }\n this.requestUpdate();\n } else {\n this.log(type, message, details, link);\n }\n }\n\n dismissNotification(id: number) {\n const index = this.findNotificationIndex(id);\n if (index !== -1 && !this.notifications[index].deleted) {\n const notification = this.notifications[index];\n\n // user is explicitly dismissing a notification---after that we won't bug them with it\n if (\n notification.dontShowAgain &&\n notification.persistentId &&\n !VaadinDevTools.notificationDismissed(notification.persistentId)\n ) {\n let dismissed = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE);\n dismissed = dismissed === null ? notification.persistentId : `${dismissed},${notification.persistentId}`;\n window.localStorage.setItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE, dismissed);\n }\n\n notification.deleted = true;\n this.log(notification.type, notification.message, notification.details, notification.link);\n\n // give some time for the animation\n setTimeout(() => {\n const idx = this.findNotificationIndex(id);\n if (idx !== -1) {\n this.notifications.splice(idx, 1);\n this.requestUpdate();\n }\n }, this.transitionDuration);\n }\n }\n\n findNotificationIndex(id: number): number {\n let index = -1;\n this.notifications.some((notification, idx) => {\n if (notification.id === id) {\n index = idx;\n return true;\n } else {\n return false;\n }\n });\n return index;\n }\n\n toggleDontShowAgain(id: number) {\n const index = this.findNotificationIndex(id);\n if (index !== -1 && !this.notifications[index].deleted) {\n const notification = this.notifications[index];\n notification.dontShowAgain = !notification.dontShowAgain;\n this.requestUpdate();\n }\n }\n\n setActive(yes: boolean) {\n this.frontendConnection?.setActive(yes);\n this.javaConnection?.setActive(yes);\n window.sessionStorage.setItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE, yes ? 'true' : 'false');\n }\n\n getStatusColor(status: ConnectionStatus | undefined) {\n if (status === ConnectionStatus.ACTIVE) {\n return css`hsl(${VaadinDevTools.GREEN_HSL})`;\n } else if (status === ConnectionStatus.INACTIVE) {\n return css`hsl(${VaadinDevTools.GREY_HSL})`;\n } else if (status === ConnectionStatus.UNAVAILABLE) {\n return css`hsl(${VaadinDevTools.YELLOW_HSL})`;\n } else if (status === ConnectionStatus.ERROR) {\n return css`hsl(${VaadinDevTools.RED_HSL})`;\n } else {\n return css`none`;\n }\n }\n\n /* eslint-disable lit/no-template-arrow */\n renderMessage(messageObject: Message) {\n return html`\n \n
\n
${messageObject.message}
\n
\n ${messageObject.persistentId\n ? html` this.toggleDontShowAgain(messageObject.id)}\n >\n Don’t show again\n
`\n : ''}\n \n
this.dismissNotification(messageObject.id)}>Dismiss
\n \n `;\n }\n\n /* eslint-disable lit/no-template-map */\n render() {\n return html` e.key === 'Escape' && this.toggleExpanded()}\n >\n
\n ${this.tabs.map(\n (tab) =>\n html` {\n this.activeTab = tab.id;\n if (tab.activate) tab.activate.call(this);\n }}\n >\n ${tab.title}\n `\n )}\n \n
\n ${this.tabs.map((tab) => (this.activeTab === tab.id ? tab.render.call(this) : nothing))}\n \n\n
${this.notifications.map((msg) => this.renderMessage(msg))}
\n this.toggleExpanded()}\n >\n ${this.unreadErrors\n ? html`\n \n \n \n \n \n `\n : html`\n \n \n \n \n `}\n\n \n ${this.splashMessage ? html`${this.splashMessage}` : nothing}\n `;\n }\n\n renderLog() {\n return html`
${this.messages.map((msg) => this.renderMessage(msg))}
`;\n }\n activateLog() {\n this.unreadErrors = false;\n this.updateComplete.then(() => {\n const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child');\n if (lastMessage) {\n lastMessage.scrollIntoView();\n }\n });\n }\n\n renderInfo() {\n return html`
\n \n
\n
${this.serverInfo.productName}
\n
${this.serverInfo.vaadinVersion}
\n
Flow
\n
${this.serverInfo.flowVersion}
\n
Java
\n
${this.serverInfo.javaVersion}
\n
OS
\n
${this.serverInfo.osVersion}
\n
Browser
\n
${navigator.userAgent}
\n
\n Live reload\n \n
\n
\n Java ${this.javaStatus} ${this.backend ? `(${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]})` : ''}\n
\n
\n Front end ${this.frontendStatus}\n
\n
\n
`;\n }\n\n private renderFeatures() {\n return html`
\n ${this.features.map(\n (feature) => html`
\n \n Learn more\n
`\n )}\n
`;\n }\n\n copyInfoToClipboard() {\n const items = this.renderRoot.querySelectorAll('.info-tray dt, .info-tray dd');\n const text = Array.from(items)\n .map((message) => (message.localName === 'dd' ? ': ' : '\\n') + message.textContent!.trim())\n .join('')\n .replace(/^\\n/, '');\n copy(text);\n this.showNotification(\n MessageType.INFORMATION,\n 'Environment information copied to clipboard',\n undefined,\n undefined,\n 'versionInfoCopied'\n );\n }\n\n toggleFeatureFlag(e: Event, feature: Feature) {\n const enabled = (e.target! as HTMLInputElement).checked;\n if (this.frontendConnection) {\n this.frontendConnection.setFeature(feature.id, enabled);\n this.showNotification(\n MessageType.INFORMATION,\n `“${feature.title}” ${enabled ? 'enabled' : 'disabled'}`,\n feature.requiresServerRestart ? 'This feature requires a server restart' : undefined,\n undefined,\n `feature${feature.id}${enabled ? 'Enabled' : 'Disabled'}`\n );\n } else {\n this.log(MessageType.ERROR, `Unable to toggle feature ${feature.title}: No server connection available`);\n }\n }\n}\n\nif (customElements.get('vaadin-dev-tools') === undefined) {\n customElements.define('vaadin-dev-tools', VaadinDevTools);\n}\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme-reusable-theme.generated.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme-reusable-theme.generated.js deleted file mode 100644 index 8455c8ec..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme-reusable-theme.generated.js +++ /dev/null @@ -1,114 +0,0 @@ -import 'construct-style-sheets-polyfill'; -import stripCssComments from 'strip-css-comments'; - -const createLinkReferences = (css, target) => { - // Unresolved urls are written as '@import url(text);' or '@import "text";' to the css - // media query can be present on @media tag or on @import directive after url - // Note that with Vite production build there is no space between @import and "text" - // [0] is the full match - // [1] matches the media query - // [2] matches the url - // [3] matches the quote char surrounding in '@import "..."' - // [4] matches the url in '@import "..."' - // [5] matches media query on @import statement - const importMatcher = /(?:@media\s(.+?))?(?:\s{)?\@import\s*(?:url\(\s*['"]?(.+?)['"]?\s*\)|(["'])((?:\\.|[^\\])*?)\3)([^;]*);(?:})?/g - - // Only cleanup if comment exist - if(/\/\*(.|[\r\n])*?\*\//gm.exec(css) != null) { - // clean up comments - css = stripCssComments(css); - } - - var match; - var styleCss = css; - - // For each external url import add a link reference - while((match = importMatcher.exec(css)) !== null) { - styleCss = styleCss.replace(match[0], ""); - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = match[2] || match[4]; - const media = match[1] || match[5]; - if (media) { - link.media = media; - } - // For target document append to head else append to target - if (target === document) { - document.head.appendChild(link); - } else { - target.appendChild(link); - } - }; - return styleCss; -}; - -// target: Document | ShadowRoot -export const injectGlobalCss = (css, target, first) => { - if(target === document) { - const hash = getHash(css); - if (window.Vaadin.theme.injectedGlobalCss.indexOf(hash) !== -1) { - return; - } - window.Vaadin.theme.injectedGlobalCss.push(hash); - } - const sheet = new CSSStyleSheet(); - sheet.replaceSync(createLinkReferences(css,target)); - if (first) { - target.adoptedStyleSheets = [sheet, ...target.adoptedStyleSheets]; - } else { - target.adoptedStyleSheets = [...target.adoptedStyleSheets, sheet]; - } -}; -import stylesCss from 'themes/reusable-theme/styles.css?inline'; -import { color } from '@vaadin/vaadin-lumo-styles/color.js'; -import { typography } from '@vaadin/vaadin-lumo-styles/typography.js'; - -window.Vaadin = window.Vaadin || {}; -window.Vaadin.theme = window.Vaadin.theme || {}; -window.Vaadin.theme.injectedGlobalCss = []; - -/** - * Calculate a 32 bit FNV-1a hash - * Found here: https://gist.github.com/vaiorabbit/5657561 - * Ref.: http://isthe.com/chongo/tech/comp/fnv/ - * - * @param {string} str the input value - * @returns {string} 32 bit (as 8 byte hex string) - */ -function hashFnv32a(str) { - /*jshint bitwise:false */ - let i, l, hval = 0x811c9dc5; - - for (i = 0, l = str.length; i < l; i++) { - hval ^= str.charCodeAt(i); - hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24); - } - - // Convert to 8 digit hex string - return ("0000000" + (hval >>> 0).toString(16)).substr(-8); -} - -/** - * Calculate a 64 bit hash for the given input. - * Double hash is used to significantly lower the collision probability. - * - * @param {string} input value to get hash for - * @returns {string} 64 bit (as 16 byte hex string) - */ -function getHash(input) { - let h1 = hashFnv32a(input); // returns 32 bit (as 8 byte hex string) - return h1 + hashFnv32a(h1 + input); -} -export const applyTheme = (target) => { - - injectGlobalCss(stylesCss.toString(), target); - - - if (!document['_vaadintheme_reusable-theme_componentCss']) { - - document['_vaadintheme_reusable-theme_componentCss'] = true; - } - injectGlobalCss(color.cssText, target, true); -injectGlobalCss(typography.cssText, target, true); - -} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.d.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.d.ts deleted file mode 100644 index 94ce92d6..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const applyTheme: (target: Node) => void; \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.js b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.js deleted file mode 100644 index a39a3c4f..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/theme.js +++ /dev/null @@ -1,2 +0,0 @@ -import {applyTheme as _applyTheme} from './theme-reusable-theme.generated.js'; -export const applyTheme = _applyTheme; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin-featureflags.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin-featureflags.ts deleted file mode 100644 index d3399438..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin-featureflags.ts +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-nocheck -window.Vaadin = window.Vaadin || {}; -window.Vaadin.featureFlags = window.Vaadin.featureFlags || {}; -window.Vaadin.featureFlags.exampleFeatureFlag = false; -window.Vaadin.featureFlags.hillaPush = false; -window.Vaadin.featureFlags.hillaEngine = false; -window.Vaadin.featureFlags.oldLicenseChecker = false; -window.Vaadin.featureFlags.collaborationEngineBackend = false; -window.Vaadin.featureFlags.webpackForFrontendBuild = false; -window.Vaadin.featureFlags.enforceFieldValidation = false; -export {}; \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin.ts deleted file mode 100644 index c3362dc4..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vaadin.ts +++ /dev/null @@ -1,8 +0,0 @@ -import './vaadin-featureflags.ts'; - -import './index'; - -import 'Frontend/generated/jar-resources/vaadin-dev-tools.js'; - -import { applyTheme } from './theme.js'; -applyTheme(document); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vite-devmode.ts b/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vite-devmode.ts deleted file mode 100644 index f9f7a5fb..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/frontend/generated/vite-devmode.ts +++ /dev/null @@ -1,31 +0,0 @@ -// @ts-ignore -if (import.meta.hot) { - // @ts-ignore - const hot = import.meta.hot; - - const isLiveReloadDisabled = () => { - // Checks if live reload is disabled in the debug window - return sessionStorage.getItem('vaadin.live-reload.active') === 'false'; - }; - - const preventViteReload = (payload: any) => { - // Changing the path prevents Vite from reloading - payload.path = '/_fake/path.html'; - }; - - let pendingNavigationTo: string | undefined = undefined; - - window.addEventListener('vaadin-router-go', (routerEvent: any) => { - pendingNavigationTo = routerEvent.detail.pathname + routerEvent.detail.search; - }); - hot.on('vite:beforeFullReload', (payload: any) => { - if (isLiveReloadDisabled()) { - preventViteReload(payload); - } - if (pendingNavigationTo) { - // Force reload with the new URL - location.href = pendingNavigationTo; - preventViteReload(payload); - } - }); -} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/development/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/development/pom.xml index c8bf2a1b..266a9403 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/development/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/development/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-development-tests diff --git a/vertx-vaadin-quarkus-extension/integration-tests/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/pom.xml index eb6ef8b2..fe3c4dbe 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-extension-parent - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-integration-tests diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/index.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/index.ts index c20aa03f..1b1823bb 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/index.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/index.ts @@ -17,11 +17,11 @@ import { Router } from '@vaadin/router'; import { Flow } from 'Frontend/generated/jar-resources/Flow.js'; const { serverSideRoutes } = new Flow({ - imports: () => import('../../target/frontend/generated-flow-imports.js') + imports: () => import('Frontend/generated/flow/generated-flow-imports.js') }); const routes = [ - // for client-side, place routes below (more info https://vaadin.com/docs/v15/flow/typescript/creating-routes.html) + // for client-side, place routes below (more info https://hilla.dev/docs/lit/guides/routing#initializing-the-router) // for server-side, the next magic line sends all unmatched routes: ...serverSideRoutes // IMPORTANT: this must be the last entry in the array diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.d.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.d.ts index efbbbe84..a6b01dff 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.d.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.d.ts @@ -5,7 +5,6 @@ interface AppConfig { productionMode: boolean; appId: string; uidl: any; - clientRouting: boolean; } interface AppInitResponse { appConfig: AppConfig; @@ -18,6 +17,7 @@ interface HTMLRouterContainer extends HTMLElement { onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise; onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise; serverConnected?: (cancel: boolean, url?: NavigationParameters) => void; + serverPaused?: () => void; } interface FlowRoute { action: (params: NavigationParameters) => Promise; @@ -44,6 +44,7 @@ export declare class Flow { private isActive; private baseRegex; private appShellTitle; + private navigation; constructor(config?: FlowConfig); /** * Return a `route` object for vaadin-router in an one-element array. diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js index 66ab4ae1..999afb2f 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js @@ -14,6 +14,7 @@ export class Flow { // flag used to inform Testbench whether a server route is in progress this.isActive = false; this.baseRegex = /^\//; + this.navigation = ''; flowRoot.$ = flowRoot.$ || []; this.config = config || {}; // TB checks for the existence of window.Vaadin.Flow in order @@ -60,6 +61,30 @@ export class Flow { // Make Testbench know that server request has finished this.isActive = false; $wnd.Vaadin.connectionState.loadingFinished(); + if ($wnd.Vaadin.listener) { + // Listeners registered, do not register again. + return; + } + $wnd.Vaadin.listener = {}; + // Listen for click on router-links -> 'link' navigation trigger + // and on nodes -> 'client' navigation trigger. + // Use capture phase to detect prevented / stopped events. + document.addEventListener('click', (_e) => { + if (_e.target) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (_e.target.hasAttribute('router-link')) { + this.navigation = 'link'; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + } + else if (_e.composedPath().some((node) => node.nodeName === 'A')) { + this.navigation = 'client'; + } + } + }, { + capture: true + }); } get action() { // Return a function which is bound to the flow instance, thus we can use @@ -133,8 +158,14 @@ export class Flow { } this.loadingFinished(); }; + this.container.serverPaused = () => { + this.loadingFinished(); + }; // Call server side to navigate to the given route - flowRoot.$server.connectClient(this.container.localName, this.container.id, this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx), this.appShellTitle, history.state); + flowRoot.$server.connectClient(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx), this.appShellTitle, history.state, this.navigation); + // Default to history navigation trigger. + // Link and client cases are handled by click listener in loadingFinished(). + this.navigation = 'history'; }); } else { @@ -149,15 +180,13 @@ export class Flow { return (context.search && context.search.substring(1)) || ''; } // import flow client modules and initialize UI in server side. - async flowInit(serverSideRouting = false) { + async flowInit() { // Do not start flow twice if (!this.isFlowClientLoaded()) { // show flow progress indicator this.loadingStarted(); // Initialize server side UI - this.response = await this.flowInitUi(serverSideRouting); - // Enable or disable server side routing - this.response.appConfig.clientRouting = !serverSideRouting; + this.response = await this.flowInitUi(); const { pushScript, appConfig } = this.response; if (typeof pushScript === 'string') { await this.loadScript(pushScript); @@ -171,16 +200,20 @@ export class Flow { this.injectAppIdScript(appId); await this.config.imports(); } - // Load flow-client module - const clientMod = await import('./FlowClient'); - await this.flowInitClient(clientMod); - if (!serverSideRouting) { - // we use a custom tag for the flow app container - const tag = `flow-container-${appId.toLowerCase()}`; + // we use a custom tag for the flow app container + const tag = `flow-container-${appId.toLowerCase()}`; + const serverCreatedContainer = document.querySelector(tag); + if (serverCreatedContainer) { + this.container = serverCreatedContainer; + } + else { this.container = document.createElement(tag); - flowRoot.$[appId] = this.container; this.container.id = appId; } + flowRoot.$[appId] = this.container; + // Load flow-client module + const clientMod = await import('./FlowClient'); + await this.flowInitClient(clientMod); // hide flow progress indicator this.loadingFinished(); } @@ -228,7 +261,7 @@ export class Flow { }); } // Returns the `appConfig` object - async flowInitUi(serverSideRouting) { + async flowInitUi() { // appConfig was sent in the index.html request const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial; if (initial) { @@ -239,8 +272,7 @@ export class Flow { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); const httpRequest = xhr; - const serverRoutingParam = serverSideRouting ? '&serverSideRouting' : ''; - const requestPath = `?v-r=init&location=${encodeURIComponent(this.getFlowRoutePath(location))}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}${serverRoutingParam}`; + const requestPath = `?v-r=init&location=${encodeURIComponent(this.getFlowRoutePath(location))}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}`; httpRequest.open('GET', requestPath); httpRequest.onerror = () => reject(new FlowUiInitializationError(`Invalid server response when initializing Flow UI. ${httpRequest.status} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js.map b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js.map index bbd8ef2a..beea9485 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js.map +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/Flow.js.map @@ -1 +1 @@ -{"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../../src/main/frontend/Flow.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ConnectionIndicator,\n ConnectionState,\n ConnectionStateChangeListener,\n ConnectionStateStore\n} from '@vaadin/common-frontend';\n\nexport interface FlowConfig {\n imports?: () => void;\n}\n\nclass FlowUiInitializationError extends Error {}\n\ninterface AppConfig {\n productionMode: boolean;\n appId: string;\n uidl: any;\n clientRouting: boolean;\n}\n\ninterface AppInitResponse {\n appConfig: AppConfig;\n pushScript?: string;\n}\n\ninterface Router {\n render: (ctx: NavigationParameters, shouldUpdateHistory: boolean) => Promise;\n}\n\ninterface HTMLRouterContainer extends HTMLElement {\n onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise;\n onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise;\n serverConnected?: (cancel: boolean, url?: NavigationParameters) => void;\n}\n\ninterface FlowRoute {\n action: (params: NavigationParameters) => Promise;\n path: string;\n}\n\ninterface FlowRoot {\n $: any;\n $server: any;\n}\n\nexport interface NavigationParameters {\n pathname: string;\n search: string;\n}\n\nexport interface PreventCommands {\n prevent: () => any;\n}\n\nexport interface PreventAndRedirectCommands extends PreventCommands {\n redirect: (route: string) => any;\n}\n\n// flow uses body for keeping references\nconst flowRoot: FlowRoot = window.document.body as any;\nconst $wnd = window as any as {\n Vaadin: {\n Flow: any;\n TypeScript: any;\n connectionState: ConnectionStateStore;\n };\n} & EventTarget;\n\n/**\n * Client API for flow UI operations.\n */\nexport class Flow {\n config: FlowConfig;\n response?: AppInitResponse = undefined;\n pathname = '';\n\n container!: HTMLRouterContainer;\n\n // flag used to inform Testbench whether a server route is in progress\n private isActive = false;\n\n private baseRegex = /^\\//;\n private appShellTitle: string;\n\n constructor(config?: FlowConfig) {\n flowRoot.$ = flowRoot.$ || [];\n this.config = config || {};\n\n // TB checks for the existence of window.Vaadin.Flow in order\n // to consider that TB needs to wait for `initFlow()`.\n $wnd.Vaadin = $wnd.Vaadin || {};\n $wnd.Vaadin.Flow = $wnd.Vaadin.Flow || {};\n $wnd.Vaadin.Flow.clients = {\n TypeScript: {\n isActive: () => this.isActive\n }\n };\n\n // Regular expression used to remove the app-context\n const elm = document.head.querySelector('base');\n this.baseRegex = new RegExp(\n `^${\n // IE11 does not support document.baseURI\n (document.baseURI || (elm && elm.href) || '/').replace(/^https?:\\/\\/[^/]+/i, '')\n }`\n );\n this.appShellTitle = document.title;\n // Put a vaadin-connection-indicator in the dom\n this.addConnectionIndicator();\n }\n\n /**\n * Return a `route` object for vaadin-router in an one-element array.\n *\n * The `FlowRoute` object `path` property handles any route,\n * and the `action` returns the flow container without updating the content,\n * delaying the actual Flow server call to the `onBeforeEnter` phase.\n *\n * This is a specific API for its use with `vaadin-router`.\n */\n get serverSideRoutes(): [FlowRoute] {\n return [\n {\n path: '(.*)',\n action: this.action\n }\n ];\n }\n\n loadingStarted() {\n // Make Testbench know that server request is in progress\n this.isActive = true;\n $wnd.Vaadin.connectionState.loadingStarted();\n }\n\n loadingFinished() {\n // Make Testbench know that server request has finished\n this.isActive = false;\n $wnd.Vaadin.connectionState.loadingFinished();\n }\n\n private get action(): (params: NavigationParameters) => Promise {\n // Return a function which is bound to the flow instance, thus we can use\n // the syntax `...serverSideRoutes` in vaadin-router.\n return async (params: NavigationParameters) => {\n // Store last action pathname so as we can check it in events\n this.pathname = params.pathname;\n\n if ($wnd.Vaadin.connectionState.online) {\n try {\n await this.flowInit();\n } catch (error) {\n if (error instanceof FlowUiInitializationError) {\n // error initializing Flow: assume connection lost\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n return this.offlineStubAction();\n } else {\n throw error;\n }\n }\n } else {\n // insert an offline stub\n return this.offlineStubAction();\n }\n\n // When an action happens, navigation will be resolved `onBeforeEnter`\n this.container.onBeforeEnter = (ctx, cmd) => this.flowNavigate(ctx, cmd);\n // For covering the 'server -> client' use case\n this.container.onBeforeLeave = (ctx, cmd) => this.flowLeave(ctx, cmd);\n return this.container;\n };\n }\n\n // Send a remote call to `JavaScriptBootstrapUI` to check\n // whether navigation has to be cancelled.\n private async flowLeave(ctx: NavigationParameters, cmd?: PreventCommands): Promise {\n // server -> server, viewing offline stub, or browser is offline\n const { connectionState } = $wnd.Vaadin;\n if (this.pathname === ctx.pathname || !this.isFlowClientLoaded() || connectionState.offline) {\n return Promise.resolve({});\n }\n // 'server -> client'\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side to cancel navigation\n this.container.serverConnected = (cancel) => {\n resolve(cmd && cancel ? cmd.prevent() : {});\n this.loadingFinished();\n };\n\n // Call server side to check whether we can leave the view\n flowRoot.$server.leaveNavigation(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx));\n });\n }\n\n // Send the remote call to `JavaScriptBootstrapUI` to render the flow\n // route specified by the context\n private async flowNavigate(ctx: NavigationParameters, cmd?: PreventAndRedirectCommands): Promise {\n if (this.response) {\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side once the view is ready\n this.container.serverConnected = (cancel, redirectContext?: NavigationParameters) => {\n if (cmd && cancel) {\n resolve(cmd.prevent());\n } else if (cmd && cmd.redirect && redirectContext) {\n resolve(cmd.redirect(redirectContext.pathname));\n } else {\n this.container.style.display = '';\n resolve(this.container);\n }\n this.loadingFinished();\n };\n\n // Call server side to navigate to the given route\n flowRoot.$server.connectClient(\n this.container.localName,\n this.container.id,\n this.getFlowRoutePath(ctx),\n this.getFlowRouteQuery(ctx),\n this.appShellTitle,\n history.state\n );\n });\n } else {\n // No server response => offline or erroneous connection\n return Promise.resolve(this.container);\n }\n }\n\n private getFlowRoutePath(context: NavigationParameters | Location): string {\n return decodeURIComponent(context.pathname).replace(this.baseRegex, '');\n }\n private getFlowRouteQuery(context: NavigationParameters | Location): string {\n return (context.search && context.search.substring(1)) || '';\n }\n\n // import flow client modules and initialize UI in server side.\n private async flowInit(serverSideRouting = false): Promise {\n // Do not start flow twice\n if (!this.isFlowClientLoaded()) {\n // show flow progress indicator\n this.loadingStarted();\n\n // Initialize server side UI\n this.response = await this.flowInitUi(serverSideRouting);\n\n // Enable or disable server side routing\n this.response.appConfig.clientRouting = !serverSideRouting;\n\n const { pushScript, appConfig } = this.response;\n\n if (typeof pushScript === 'string') {\n await this.loadScript(pushScript);\n }\n const { appId } = appConfig;\n\n // Load bootstrap script with server side parameters\n const bootstrapMod = await import('./FlowBootstrap');\n await bootstrapMod.init(this.response);\n\n // Load custom modules defined by user\n if (typeof this.config.imports === 'function') {\n this.injectAppIdScript(appId);\n await this.config.imports();\n }\n\n // Load flow-client module\n const clientMod = await import('./FlowClient');\n await this.flowInitClient(clientMod);\n\n if (!serverSideRouting) {\n // we use a custom tag for the flow app container\n const tag = `flow-container-${appId.toLowerCase()}`;\n this.container = document.createElement(tag);\n flowRoot.$[appId] = this.container;\n this.container.id = appId;\n }\n\n // hide flow progress indicator\n this.loadingFinished();\n }\n\n // It might be that components created from server expect that their content has been rendered.\n // Appending eagerly the container we avoid these kind of errors.\n // Note that the client router will move this container to the outlet if the navigation succeed\n if (this.container && !this.container.isConnected) {\n this.container.style.display = 'none';\n document.body.appendChild(this.container);\n }\n return this.response!;\n }\n\n private async loadScript(url: string): Promise {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.onload = () => resolve();\n script.onerror = reject;\n script.src = url;\n document.body.appendChild(script);\n });\n }\n\n private injectAppIdScript(appId: string) {\n const appIdWithoutHashCode = appId.substring(0, appId.lastIndexOf('-'));\n const scriptAppId = document.createElement('script');\n scriptAppId.type = 'module';\n scriptAppId.setAttribute('data-app-id', appIdWithoutHashCode);\n document.body.append(scriptAppId);\n }\n\n // After the flow-client javascript module has been loaded, this initializes flow UI\n // in the browser.\n private async flowInitClient(clientMod: any): Promise {\n clientMod.init();\n // client init is async, we need to loop until initialized\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n // client `isActive() == true` while initializing or processing\n const initializing = Object.keys($wnd.Vaadin.Flow.clients)\n .filter((key) => key !== 'TypeScript')\n .reduce((prev, id) => prev || $wnd.Vaadin.Flow.clients[id].isActive(), false);\n if (!initializing) {\n clearInterval(intervalId);\n resolve();\n }\n }, 5);\n });\n }\n\n // Returns the `appConfig` object\n private async flowInitUi(serverSideRouting: boolean): Promise {\n // appConfig was sent in the index.html request\n const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial;\n if (initial) {\n $wnd.Vaadin.TypeScript.initial = undefined;\n return Promise.resolve(initial);\n }\n\n // send a request to the `JavaScriptBootstrapHandler`\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const httpRequest = xhr as any;\n const serverRoutingParam = serverSideRouting ? '&serverSideRouting' : '';\n const requestPath = `?v-r=init&location=${encodeURIComponent(\n this.getFlowRoutePath(location)\n )}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}${serverRoutingParam}`;\n\n httpRequest.open('GET', requestPath);\n\n httpRequest.onerror = () =>\n reject(\n new FlowUiInitializationError(\n `Invalid server response when initializing Flow UI.\n ${httpRequest.status}\n ${httpRequest.responseText}`\n )\n );\n\n httpRequest.onload = () => {\n const contentType = httpRequest.getResponseHeader('content-type');\n if (contentType && contentType.indexOf('application/json') !== -1) {\n resolve(JSON.parse(httpRequest.responseText));\n } else {\n httpRequest.onerror();\n }\n };\n httpRequest.send();\n });\n }\n\n // Create shared connection state store and connection indicator\n private addConnectionIndicator() {\n // add connection indicator to DOM\n ConnectionIndicator.create();\n\n // Listen to browser online/offline events and update the loading indicator accordingly.\n // Note: if flow-client is loaded, it instead handles the state transitions.\n $wnd.addEventListener('online', () => {\n if (!this.isFlowClientLoaded()) {\n // Send an HTTP HEAD request for sw.js to verify server reachability.\n // We do not expect sw.js to be cached, so the request goes to the\n // server rather than being served from local cache.\n // Require network-level failure to revert the state to CONNECTION_LOST\n // (HTTP error code is ok since it still verifies server's presence).\n $wnd.Vaadin.connectionState.state = ConnectionState.RECONNECTING;\n const http = new XMLHttpRequest();\n http.open('HEAD', 'sw.js');\n http.onload = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTED;\n };\n http.onerror = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n };\n // Postpone request to reduce potential net::ERR_INTERNET_DISCONNECTED\n // errors that sometimes occurs even if browser says it is online\n setTimeout(() => http.send(), 50);\n }\n });\n $wnd.addEventListener('offline', () => {\n if (!this.isFlowClientLoaded()) {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n }\n });\n }\n\n private async offlineStubAction() {\n const offlineStub = document.createElement('iframe') as HTMLRouterContainer;\n const offlineStubPath = './offline-stub.html';\n offlineStub.setAttribute('src', offlineStubPath);\n offlineStub.setAttribute('style', 'width: 100%; height: 100%; border: 0');\n this.response = undefined;\n\n let onlineListener: ConnectionStateChangeListener | undefined;\n const removeOfflineStubAndOnlineListener = () => {\n if (onlineListener !== undefined) {\n $wnd.Vaadin.connectionState.removeStateChangeListener(onlineListener);\n onlineListener = undefined;\n }\n };\n\n offlineStub.onBeforeEnter = (ctx, _cmds, router) => {\n onlineListener = () => {\n if ($wnd.Vaadin.connectionState.online) {\n removeOfflineStubAndOnlineListener();\n router.render(ctx, false);\n }\n };\n $wnd.Vaadin.connectionState.addStateChangeListener(onlineListener);\n };\n offlineStub.onBeforeLeave = (_ctx, _cmds, _router) => {\n removeOfflineStubAndOnlineListener();\n };\n return offlineStub;\n }\n\n private isFlowClientLoaded(): boolean {\n return this.response !== undefined;\n }\n}\n"]} \ No newline at end of file +{"version":3,"file":"Flow.js","sourceRoot":"","sources":["../../../../src/main/frontend/Flow.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ConnectionIndicator,\n ConnectionState,\n ConnectionStateChangeListener,\n ConnectionStateStore\n} from '@vaadin/common-frontend';\n\nexport interface FlowConfig {\n imports?: () => void;\n}\n\nclass FlowUiInitializationError extends Error {}\n\ninterface AppConfig {\n productionMode: boolean;\n appId: string;\n uidl: any;\n}\n\ninterface AppInitResponse {\n appConfig: AppConfig;\n pushScript?: string;\n}\n\ninterface Router {\n render: (ctx: NavigationParameters, shouldUpdateHistory: boolean) => Promise;\n}\n\ninterface HTMLRouterContainer extends HTMLElement {\n onBeforeEnter?: (ctx: NavigationParameters, cmd: PreventAndRedirectCommands, router: Router) => void | Promise;\n onBeforeLeave?: (ctx: NavigationParameters, cmd: PreventCommands, router: Router) => void | Promise;\n serverConnected?: (cancel: boolean, url?: NavigationParameters) => void;\n serverPaused?: () => void;\n}\n\ninterface FlowRoute {\n action: (params: NavigationParameters) => Promise;\n path: string;\n}\n\ninterface FlowRoot {\n $: any;\n $server: any;\n}\n\nexport interface NavigationParameters {\n pathname: string;\n search: string;\n}\n\nexport interface PreventCommands {\n prevent: () => any;\n}\n\nexport interface PreventAndRedirectCommands extends PreventCommands {\n redirect: (route: string) => any;\n}\n\n// flow uses body for keeping references\nconst flowRoot: FlowRoot = window.document.body as any;\nconst $wnd = window as any as {\n Vaadin: {\n Flow: any;\n TypeScript: any;\n connectionState: ConnectionStateStore;\n listener: any;\n };\n} & EventTarget;\n\n/**\n * Client API for flow UI operations.\n */\nexport class Flow {\n config: FlowConfig;\n response?: AppInitResponse = undefined;\n pathname = '';\n\n container!: HTMLRouterContainer;\n\n // flag used to inform Testbench whether a server route is in progress\n private isActive = false;\n\n private baseRegex = /^\\//;\n private appShellTitle: string;\n\n private navigation: string = '';\n\n constructor(config?: FlowConfig) {\n flowRoot.$ = flowRoot.$ || [];\n this.config = config || {};\n\n // TB checks for the existence of window.Vaadin.Flow in order\n // to consider that TB needs to wait for `initFlow()`.\n $wnd.Vaadin = $wnd.Vaadin || {};\n $wnd.Vaadin.Flow = $wnd.Vaadin.Flow || {};\n $wnd.Vaadin.Flow.clients = {\n TypeScript: {\n isActive: () => this.isActive\n }\n };\n\n // Regular expression used to remove the app-context\n const elm = document.head.querySelector('base');\n this.baseRegex = new RegExp(\n `^${\n // IE11 does not support document.baseURI\n (document.baseURI || (elm && elm.href) || '/').replace(/^https?:\\/\\/[^/]+/i, '')\n }`\n );\n this.appShellTitle = document.title;\n // Put a vaadin-connection-indicator in the dom\n this.addConnectionIndicator();\n }\n\n /**\n * Return a `route` object for vaadin-router in an one-element array.\n *\n * The `FlowRoute` object `path` property handles any route,\n * and the `action` returns the flow container without updating the content,\n * delaying the actual Flow server call to the `onBeforeEnter` phase.\n *\n * This is a specific API for its use with `vaadin-router`.\n */\n get serverSideRoutes(): [FlowRoute] {\n return [\n {\n path: '(.*)',\n action: this.action\n }\n ];\n }\n\n loadingStarted() {\n // Make Testbench know that server request is in progress\n this.isActive = true;\n $wnd.Vaadin.connectionState.loadingStarted();\n }\n\n loadingFinished() {\n // Make Testbench know that server request has finished\n this.isActive = false;\n $wnd.Vaadin.connectionState.loadingFinished();\n\n if ($wnd.Vaadin.listener) {\n // Listeners registered, do not register again.\n return;\n }\n $wnd.Vaadin.listener = {};\n // Listen for click on router-links -> 'link' navigation trigger\n // and on nodes -> 'client' navigation trigger.\n // Use capture phase to detect prevented / stopped events.\n document.addEventListener(\n 'click',\n (_e) => {\n if (_e.target) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (_e.target.hasAttribute('router-link')) {\n this.navigation = 'link';\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n } else if (_e.composedPath().some((node) => node.nodeName === 'A')) {\n this.navigation = 'client';\n }\n }\n },\n {\n capture: true\n }\n );\n }\n\n private get action(): (params: NavigationParameters) => Promise {\n // Return a function which is bound to the flow instance, thus we can use\n // the syntax `...serverSideRoutes` in vaadin-router.\n return async (params: NavigationParameters) => {\n // Store last action pathname so as we can check it in events\n this.pathname = params.pathname;\n\n if ($wnd.Vaadin.connectionState.online) {\n try {\n await this.flowInit();\n } catch (error) {\n if (error instanceof FlowUiInitializationError) {\n // error initializing Flow: assume connection lost\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n return this.offlineStubAction();\n } else {\n throw error;\n }\n }\n } else {\n // insert an offline stub\n return this.offlineStubAction();\n }\n\n // When an action happens, navigation will be resolved `onBeforeEnter`\n this.container.onBeforeEnter = (ctx, cmd) => this.flowNavigate(ctx, cmd);\n // For covering the 'server -> client' use case\n this.container.onBeforeLeave = (ctx, cmd) => this.flowLeave(ctx, cmd);\n return this.container;\n };\n }\n\n // Send a remote call to `JavaScriptBootstrapUI` to check\n // whether navigation has to be cancelled.\n private async flowLeave(ctx: NavigationParameters, cmd?: PreventCommands): Promise {\n // server -> server, viewing offline stub, or browser is offline\n const { connectionState } = $wnd.Vaadin;\n if (this.pathname === ctx.pathname || !this.isFlowClientLoaded() || connectionState.offline) {\n return Promise.resolve({});\n }\n // 'server -> client'\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side to cancel navigation\n this.container.serverConnected = (cancel) => {\n resolve(cmd && cancel ? cmd.prevent() : {});\n this.loadingFinished();\n };\n\n // Call server side to check whether we can leave the view\n flowRoot.$server.leaveNavigation(this.getFlowRoutePath(ctx), this.getFlowRouteQuery(ctx));\n });\n }\n\n // Send the remote call to `JavaScriptBootstrapUI` to render the flow\n // route specified by the context\n private async flowNavigate(ctx: NavigationParameters, cmd?: PreventAndRedirectCommands): Promise {\n if (this.response) {\n return new Promise((resolve) => {\n this.loadingStarted();\n // The callback to run from server side once the view is ready\n this.container.serverConnected = (cancel, redirectContext?: NavigationParameters) => {\n if (cmd && cancel) {\n resolve(cmd.prevent());\n } else if (cmd && cmd.redirect && redirectContext) {\n resolve(cmd.redirect(redirectContext.pathname));\n } else {\n this.container.style.display = '';\n resolve(this.container);\n }\n this.loadingFinished();\n };\n\n this.container.serverPaused = () => {\n this.loadingFinished();\n };\n\n // Call server side to navigate to the given route\n flowRoot.$server.connectClient(\n this.getFlowRoutePath(ctx),\n this.getFlowRouteQuery(ctx),\n this.appShellTitle,\n history.state,\n this.navigation\n );\n // Default to history navigation trigger.\n // Link and client cases are handled by click listener in loadingFinished().\n this.navigation = 'history';\n });\n } else {\n // No server response => offline or erroneous connection\n return Promise.resolve(this.container);\n }\n }\n\n private getFlowRoutePath(context: NavigationParameters | Location): string {\n return decodeURIComponent(context.pathname).replace(this.baseRegex, '');\n }\n private getFlowRouteQuery(context: NavigationParameters | Location): string {\n return (context.search && context.search.substring(1)) || '';\n }\n\n // import flow client modules and initialize UI in server side.\n private async flowInit(): Promise {\n // Do not start flow twice\n if (!this.isFlowClientLoaded()) {\n // show flow progress indicator\n this.loadingStarted();\n\n // Initialize server side UI\n this.response = await this.flowInitUi();\n\n const { pushScript, appConfig } = this.response;\n\n if (typeof pushScript === 'string') {\n await this.loadScript(pushScript);\n }\n const { appId } = appConfig;\n\n // Load bootstrap script with server side parameters\n const bootstrapMod = await import('./FlowBootstrap');\n await bootstrapMod.init(this.response);\n\n // Load custom modules defined by user\n if (typeof this.config.imports === 'function') {\n this.injectAppIdScript(appId);\n await this.config.imports();\n }\n\n // we use a custom tag for the flow app container\n const tag = `flow-container-${appId.toLowerCase()}`;\n const serverCreatedContainer = document.querySelector(tag);\n if (serverCreatedContainer) {\n this.container = serverCreatedContainer as HTMLElement;\n } else {\n this.container = document.createElement(tag);\n this.container.id = appId;\n }\n flowRoot.$[appId] = this.container;\n\n // Load flow-client module\n const clientMod = await import('./FlowClient');\n await this.flowInitClient(clientMod);\n\n // hide flow progress indicator\n this.loadingFinished();\n }\n\n // It might be that components created from server expect that their content has been rendered.\n // Appending eagerly the container we avoid these kind of errors.\n // Note that the client router will move this container to the outlet if the navigation succeed\n if (this.container && !this.container.isConnected) {\n this.container.style.display = 'none';\n document.body.appendChild(this.container);\n }\n return this.response!;\n }\n\n private async loadScript(url: string): Promise {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.onload = () => resolve();\n script.onerror = reject;\n script.src = url;\n document.body.appendChild(script);\n });\n }\n\n private injectAppIdScript(appId: string) {\n const appIdWithoutHashCode = appId.substring(0, appId.lastIndexOf('-'));\n const scriptAppId = document.createElement('script');\n scriptAppId.type = 'module';\n scriptAppId.setAttribute('data-app-id', appIdWithoutHashCode);\n document.body.append(scriptAppId);\n }\n\n // After the flow-client javascript module has been loaded, this initializes flow UI\n // in the browser.\n private async flowInitClient(clientMod: any): Promise {\n clientMod.init();\n // client init is async, we need to loop until initialized\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n // client `isActive() == true` while initializing or processing\n const initializing = Object.keys($wnd.Vaadin.Flow.clients)\n .filter((key) => key !== 'TypeScript')\n .reduce((prev, id) => prev || $wnd.Vaadin.Flow.clients[id].isActive(), false);\n if (!initializing) {\n clearInterval(intervalId);\n resolve();\n }\n }, 5);\n });\n }\n\n // Returns the `appConfig` object\n private async flowInitUi(): Promise {\n // appConfig was sent in the index.html request\n const initial = $wnd.Vaadin && $wnd.Vaadin.TypeScript && $wnd.Vaadin.TypeScript.initial;\n if (initial) {\n $wnd.Vaadin.TypeScript.initial = undefined;\n return Promise.resolve(initial);\n }\n\n // send a request to the `JavaScriptBootstrapHandler`\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n const httpRequest = xhr as any;\n const requestPath = `?v-r=init&location=${encodeURIComponent(\n this.getFlowRoutePath(location)\n )}&query=${encodeURIComponent(this.getFlowRouteQuery(location))}`;\n\n httpRequest.open('GET', requestPath);\n\n httpRequest.onerror = () =>\n reject(\n new FlowUiInitializationError(\n `Invalid server response when initializing Flow UI.\n ${httpRequest.status}\n ${httpRequest.responseText}`\n )\n );\n\n httpRequest.onload = () => {\n const contentType = httpRequest.getResponseHeader('content-type');\n if (contentType && contentType.indexOf('application/json') !== -1) {\n resolve(JSON.parse(httpRequest.responseText));\n } else {\n httpRequest.onerror();\n }\n };\n httpRequest.send();\n });\n }\n\n // Create shared connection state store and connection indicator\n private addConnectionIndicator() {\n // add connection indicator to DOM\n ConnectionIndicator.create();\n\n // Listen to browser online/offline events and update the loading indicator accordingly.\n // Note: if flow-client is loaded, it instead handles the state transitions.\n $wnd.addEventListener('online', () => {\n if (!this.isFlowClientLoaded()) {\n // Send an HTTP HEAD request for sw.js to verify server reachability.\n // We do not expect sw.js to be cached, so the request goes to the\n // server rather than being served from local cache.\n // Require network-level failure to revert the state to CONNECTION_LOST\n // (HTTP error code is ok since it still verifies server's presence).\n $wnd.Vaadin.connectionState.state = ConnectionState.RECONNECTING;\n const http = new XMLHttpRequest();\n http.open('HEAD', 'sw.js');\n http.onload = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTED;\n };\n http.onerror = () => {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n };\n // Postpone request to reduce potential net::ERR_INTERNET_DISCONNECTED\n // errors that sometimes occurs even if browser says it is online\n setTimeout(() => http.send(), 50);\n }\n });\n $wnd.addEventListener('offline', () => {\n if (!this.isFlowClientLoaded()) {\n $wnd.Vaadin.connectionState.state = ConnectionState.CONNECTION_LOST;\n }\n });\n }\n\n private async offlineStubAction() {\n const offlineStub = document.createElement('iframe') as HTMLRouterContainer;\n const offlineStubPath = './offline-stub.html';\n offlineStub.setAttribute('src', offlineStubPath);\n offlineStub.setAttribute('style', 'width: 100%; height: 100%; border: 0');\n this.response = undefined;\n\n let onlineListener: ConnectionStateChangeListener | undefined;\n const removeOfflineStubAndOnlineListener = () => {\n if (onlineListener !== undefined) {\n $wnd.Vaadin.connectionState.removeStateChangeListener(onlineListener);\n onlineListener = undefined;\n }\n };\n\n offlineStub.onBeforeEnter = (ctx, _cmds, router) => {\n onlineListener = () => {\n if ($wnd.Vaadin.connectionState.online) {\n removeOfflineStubAndOnlineListener();\n router.render(ctx, false);\n }\n };\n $wnd.Vaadin.connectionState.addStateChangeListener(onlineListener);\n };\n offlineStub.onBeforeLeave = (_ctx, _cmds, _router) => {\n removeOfflineStubAndOnlineListener();\n };\n return offlineStub;\n }\n\n private isFlowClientLoaded(): boolean {\n return this.response !== undefined;\n }\n}\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/FlowClient.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/FlowClient.js index cc3ead94..2fb9e139 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/FlowClient.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/FlowClient.js @@ -1,6 +1,6 @@ // Vertx-Vaadin FLowClient const init = function(){ -function client(){var Jb='',Kb=0,Lb='gwt.codesvr=',Mb='gwt.hosted=',Nb='gwt.hybrid',Ob='client',Pb='#',Qb='?',Rb='/',Sb=1,Tb='img',Ub='clear.cache.gif',Vb='baseUrl',Wb='script',Xb='client.nocache.js',Yb='base',Zb='//',$b='meta',_b='name',ac='gwt:property',bc='content',cc='=',dc='gwt:onPropertyErrorFn',ec='Bad handler "',fc='" for "gwt:onPropertyErrorFn"',gc='gwt:onLoadErrorFn',hc='" for "gwt:onLoadErrorFn"',ic='user.agent',jc='webkit',kc='safari',lc='msie',mc=10,nc=11,oc='ie10',pc=9,qc='ie9',rc=8,sc='ie8',tc='gecko',uc='gecko1_8',vc=2,wc=3,xc=4,yc='Single-script hosted mode not yet implemented. See issue ',zc='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Ac='9AD1E3DE66C168E6E989BC7BD2DA078C',Bc=':1',Cc=':',Dc='DOMContentLoaded',Ec=50;var l=Jb,m=Kb,n=Lb,o=Mb,p=Nb,q=Ob,r=Pb,s=Qb,t=Rb,u=Sb,v=Tb,w=Ub,A=Vb,B=Wb,C=Xb,D=Yb,F=Zb,G=$b,H=_b,I=ac,J=bc,K=cc,L=dc,M=ec,N=fc,O=gc,P=hc,Q=ic,R=jc,S=kc,T=lc,U=mc,V=nc,W=oc,X=pc,Y=qc,Z=rc,$=sc,_=tc,ab=uc,bb=vc,cb=wc,db=xc,eb=yc,fb=zc,gb=Ac,hb=Bc,ib=Cc,jb=Dc,kb=Ec;var lb=window,mb=document,nb,ob,pb=l,qb={},rb=[],sb=[],tb=[],ub=m,vb,wb;if(!lb.__gwt_stylesLoaded){lb.__gwt_stylesLoaded={}}if(!lb.__gwt_scriptsLoaded){lb.__gwt_scriptsLoaded={}}function xb(){var b=false;try{var c=lb.location.search;return (c.indexOf(n)!=-1||(c.indexOf(o)!=-1||lb.external&&lb.external.gwtOnLoad))&&c.indexOf(p)==-1}catch(a){}xb=function(){return b};return b} +function client(){var Jb='',Kb=0,Lb='gwt.codesvr=',Mb='gwt.hosted=',Nb='gwt.hybrid',Ob='client',Pb='#',Qb='?',Rb='/',Sb=1,Tb='img',Ub='clear.cache.gif',Vb='baseUrl',Wb='script',Xb='client.nocache.js',Yb='base',Zb='//',$b='meta',_b='name',ac='gwt:property',bc='content',cc='=',dc='gwt:onPropertyErrorFn',ec='Bad handler "',fc='" for "gwt:onPropertyErrorFn"',gc='gwt:onLoadErrorFn',hc='" for "gwt:onLoadErrorFn"',ic='user.agent',jc='webkit',kc='safari',lc='msie',mc=10,nc=11,oc='ie10',pc=9,qc='ie9',rc=8,sc='ie8',tc='gecko',uc='gecko1_8',vc=2,wc=3,xc=4,yc='Single-script hosted mode not yet implemented. See issue ',zc='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Ac='54E807181CC95598D9E4541FB4E73A76',Bc=':1',Cc=':',Dc='DOMContentLoaded',Ec=50;var l=Jb,m=Kb,n=Lb,o=Mb,p=Nb,q=Ob,r=Pb,s=Qb,t=Rb,u=Sb,v=Tb,w=Ub,A=Vb,B=Wb,C=Xb,D=Yb,F=Zb,G=$b,H=_b,I=ac,J=bc,K=cc,L=dc,M=ec,N=fc,O=gc,P=hc,Q=ic,R=jc,S=kc,T=lc,U=mc,V=nc,W=oc,X=pc,Y=qc,Z=rc,$=sc,_=tc,ab=uc,bb=vc,cb=wc,db=xc,eb=yc,fb=zc,gb=Ac,hb=Bc,ib=Cc,jb=Dc,kb=Ec;var lb=window,mb=document,nb,ob,pb=l,qb={},rb=[],sb=[],tb=[],ub=m,vb,wb;if(!lb.__gwt_stylesLoaded){lb.__gwt_stylesLoaded={}}if(!lb.__gwt_scriptsLoaded){lb.__gwt_scriptsLoaded={}}function xb(){var b=false;try{var c=lb.location.search;return (c.indexOf(n)!=-1||(c.indexOf(o)!=-1||lb.external&&lb.external.gwtOnLoad))&&c.indexOf(p)==-1}catch(a){}xb=function(){return b};return b} function yb(){if(nb&&ob){nb(vb,q,pb,ub)}} function zb(){function e(a){var b=a.lastIndexOf(r);if(b==-1){b=a.length}var c=a.indexOf(s);if(c==-1){c=a.length}var d=a.lastIndexOf(t,Math.min(c,b));return d>=m?a.substring(m,d+u):l} function f(a){if(a.match(/^\w+:\/\//)){}else{var b=mb.createElement(v);b.src=a+w;a=e(b.src)}return a} @@ -14,1119 +14,1105 @@ var Bb=function(a,b){return b in rb[a]};var Cb=function(a){var b=qb[a];return b= function Eb(a){var b=sb[a](),c=rb[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(wb){wb(a,d,b)}throw null} sb[Q]=function(){var a=navigator.userAgent.toLowerCase();var b=mb.documentMode;if(function(){return a.indexOf(R)!=-1}())return S;if(function(){return a.indexOf(T)!=-1&&(b>=U&&b=X&&b=Z&&b=V}())return ab;return S};rb[Q]={'gecko1_8':m,'ie10':u,'ie8':bb,'ie9':cb,'safari':db};client.onScriptLoad=function(a){client=null;nb=a;yb()};if(xb()){alert(eb+fb);return}zb();Ab();try{var Fb;Db([ab],gb);Db([S],gb+hb);Fb=tb[Eb(Q)];var Gb=Fb.indexOf(ib);if(Gb!=-1){ub=Number(Fb.substring(Gb+u))}}catch(a){return}var Hb;function Ib(){if(!ob){ob=true;yb();if(mb.removeEventListener){mb.removeEventListener(jb,Ib,false)}if(Hb){clearInterval(Hb)}}} if(mb.addEventListener){mb.addEventListener(jb,function(){Ib()},false)}var Hb=setInterval(function(){if(/loaded|complete/.test(mb.readyState)){Ib()}},kb)} -client();(function () {var $gwt_version = "2.8.2";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '9AD1E3DE66C168E6E989BC7BD2DA078C';function G(){} -function kk(){} -function gk(){} -function qk(){} -function Uk(){} -function Kb(){} -function cd(){} +client();(function () {var $gwt_version = "2.9.0";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '54E807181CC95598D9E4541FB4E73A76';function I(){} +function Ib(){} +function sk(){} +function ok(){} +function yk(){} +function Xk(){} +function Xl(){} +function gl(){} +function kl(){} function kd(){} -function bl(){} -function Jl(){} -function Ll(){} -function Nl(){} -function zm(){} -function Em(){} -function Jm(){} -function Lm(){} -function Zm(){} -function Zr(){} -function Vr(){} -function Xr(){} +function rd(){} +function Tl(){} +function Vl(){} +function Vn(){} +function Xn(){} +function Zn(){} +function qm(){} +function vm(){} +function Am(){} +function Cm(){} +function Mm(){} +function wo(){} +function yo(){} +function yp(){} +function Hp(){} +function wr(){} +function yr(){} +function Ar(){} +function Cr(){} function _r(){} -function eo(){} -function go(){} -function io(){} -function Ro(){} -function To(){} -function Tt(){} -function Mt(){} +function ds(){} +function ot(){} +function st(){} +function vt(){} function Qt(){} -function Wp(){} -function dq(){} -function zs(){} -function Ds(){} -function nu(){} -function nz(){} -function rz(){} -function cv(){} -function hw(){} -function lw(){} -function Aw(){} -function AE(){} -function jy(){} -function Jy(){} -function Ly(){} -function IA(){} -function qB(){} -function wC(){} -function cI(){} +function zu(){} +function sv(){} +function wv(){} +function Lv(){} +function Uv(){} +function Bx(){} +function $x(){} +function ay(){} +function Oy(){} +function Sy(){} +function Xz(){} +function XH(){} +function sH(){} +function yH(){} +function FA(){} +function LB(){} +function lC(){} +function CD(){} +function gF(){} +function gI(){} +function iI(){} +function kI(){} function BI(){} -function HI(){} -function nA(){kA()} -function Ek(a,b){a.b=b} -function Gk(a,b){a.d=b} -function Hk(a,b){a.e=b} -function Ik(a,b){a.f=b} -function Jk(a,b){a.g=b} -function Kk(a,b){a.i=b} -function Lk(a,b){a.j=b} -function Nk(a,b){a.n=b} -function Ok(a,b){a.o=b} -function Pk(a,b){a.p=b} -function Qk(a,b){a.q=b} -function Rk(a,b){a.r=b} -function Sk(a,b){a.s=b} -function Tk(a,b){a.t=b} -function ts(a,b){a.g=b} -function wu(a,b){a.b=b} -function wl(a){this.a=a} -function ul(a){this.a=a} -function hb(a){this.a=a} -function Eb(a){this.a=a} +function KI(){} +function Dz(){Az()} +function Nk(a,b){a.c=b} +function Ok(a,b){a.d=b} +function Pk(a,b){a.e=b} +function Rk(a,b){a.g=b} +function Sk(a,b){a.i=b} +function Tk(a,b){a.j=b} +function Uk(a,b){a.k=b} +function Vk(a,b){a.n=b} +function Wk(a,b){a.o=b} +function $t(a,b){a.b=b} +function AI(a,b){a.a=b} +function jb(a){this.a=a} function Gb(a){this.a=a} -function Ib(a){this.a=a} -function Tc(a){this.a=a} -function Vc(a){this.a=a} -function Vm(a){this.a=a} -function xm(a){this.a=a} -function Cm(a){this.a=a} -function Hm(a){this.a=a} -function Pm(a){this.a=a} -function Rm(a){this.a=a} -function Tm(a){this.a=a} -function Xm(a){this.a=a} -function Dn(a){this.a=a} -function ko(a){this.a=a} -function mo(a){this.a=a} -function uo(a){this.a=a} -function Ho(a){this.a=a} -function Jo(a){this.a=a} -function Lo(a){this.a=a} -function Vo(a){this.a=a} -function Go(a){this.c=a} -function Gp(a){this.a=a} -function qp(a){this.a=a} +function Kb(a){this.a=a} +function Mb(a){this.a=a} +function Zc(a){this.a=a} +function _c(a){this.a=a} +function il(a){this.a=a} +function Dl(a){this.a=a} +function Fl(a){this.a=a} +function om(a){this.a=a} +function tm(a){this.a=a} +function ym(a){this.a=a} +function Gm(a){this.a=a} +function Im(a){this.a=a} +function Km(a){this.a=a} +function Om(a){this.a=a} +function Qm(a){this.a=a} +function tn(a){this.a=a} +function _n(a){this.a=a} +function eo(a){this.a=a} +function qo(a){this.a=a} +function Ao(a){this.a=a} +function Zo(a){this.a=a} +function ap(a){this.a=a} +function bp(a){this.a=a} +function hp(a){this.a=a} function tp(a){this.a=a} -function up(a){this.a=a} +function vp(a){this.a=a} function Ap(a){this.a=a} -function Qp(a){this.a=a} -function Sp(a){this.a=a} -function Yp(a){this.a=a} -function $p(a){this.a=a} -function aq(a){this.a=a} -function eq(a){this.a=a} -function kq(a){this.a=a} -function xq(a){this.a=a} -function Pq(a){this.a=a} -function Ar(a){this.a=a} -function Cr(a){this.a=a} -function Er(a){this.a=a} -function Nr(a){this.a=a} -function Qr(a){this.a=a} -function Fs(a){this.a=a} -function Ks(a){this.a=a} -function Os(a){this.a=a} -function $s(a){this.a=a} -function Zs(a){this.c=a} -function ct(a){this.a=a} -function lt(a){this.a=a} -function tt(a){this.a=a} -function vt(a){this.a=a} -function xt(a){this.a=a} -function zt(a){this.a=a} -function Bt(a){this.a=a} -function Ct(a){this.a=a} -function Kt(a){this.a=a} +function Cp(a){this.a=a} +function Ep(a){this.a=a} +function Ip(a){this.a=a} +function Op(a){this.a=a} +function _p(a){this.a=a} +function qq(a){this.a=a} +function br(a){this.a=a} +function dr(a){this.a=a} +function fr(a){this.a=a} +function or(a){this.a=a} +function rr(a){this.a=a} +function fs(a){this.a=a} +function ms(a){this.a=a} +function os(a){this.a=a} +function Cs(a){this.a=a} +function Gs(a){this.a=a} +function Ps(a){this.a=a} +function Xs(a){this.a=a} +function Zs(a){this.a=a} +function _s(a){this.a=a} +function As(a){this.c=a} +function _t(a){this.c=a} +function bt(a){this.a=a} +function dt(a){this.a=a} +function et(a){this.a=a} +function mt(a){this.a=a} +function Ft(a){this.a=a} +function Ot(a){this.a=a} +function St(a){this.a=a} +function Su(a){this.a=a} function cu(a){this.a=a} -function lu(a){this.a=a} -function pu(a){this.a=a} -function Au(a){this.a=a} -function Cu(a){this.a=a} -function Qu(a){this.a=a} -function Uu(a){this.a=a} -function xu(a){this.c=a} -function av(a){this.a=a} -function lv(a){this.a=a} -function nv(a){this.a=a} -function Hv(a){this.a=a} -function Lv(a){this.a=a} -function Lw(a){this.a=a} -function jw(a){this.a=a} -function Mw(a){this.a=a} -function Ow(a){this.a=a} -function Sw(a){this.a=a} -function Uw(a){this.a=a} -function Zw(a){this.a=a} -function Zy(a){this.a=a} -function Py(a){this.a=a} -function Ry(a){this.a=a} -function _y(a){this.a=a} -function Oy(a){this.b=a} -function lz(a){this.a=a} -function pz(a){this.a=a} -function tz(a){this.a=a} +function eu(a){this.a=a} +function ru(a){this.a=a} +function xu(a){this.a=a} +function Wu(a){this.a=a} +function uv(a){this.a=a} +function $v(a){this.a=a} +function cw(a){this.a=a} +function gw(a){this.a=a} +function iw(a){this.a=a} +function kw(a){this.a=a} +function pw(a){this.a=a} +function ey(a){this.a=a} +function gy(a){this.a=a} +function uy(a){this.a=a} +function yy(a){this.a=a} +function Cy(a){this.a=a} +function Qy(a){this.a=a} +function Wy(a){this.a=a} +function Yy(a){this.a=a} +function dy(a){this.b=a} +function az(a){this.a=a} +function gz(a){this.a=a} +function iz(a){this.a=a} +function kz(a){this.a=a} +function mz(a){this.a=a} +function oz(a){this.a=a} function vz(a){this.a=a} -function zz(a){this.a=a} -function Iz(a){this.a=a} -function Kz(a){this.a=a} -function Mz(a){this.a=a} +function xz(a){this.a=a} function Oz(a){this.a=a} -function Sz(a){this.a=a} -function Yz(a){this.a=a} -function bA(a){this.a=a} -function zA(a){this.a=a} -function CA(a){this.a=a} -function KA(a){this.a=a} -function MA(a){this.e=a} -function oB(a){this.a=a} +function Rz(a){this.a=a} +function Zz(a){this.a=a} +function _z(a){this.e=a} +function DA(a){this.a=a} +function HA(a){this.a=a} +function JA(a){this.a=a} +function JB(a){this.a=a} +function dB(a){this.a=a} function sB(a){this.a=a} function uB(a){this.a=a} -function QB(a){this.a=a} -function dC(a){this.a=a} -function fC(a){this.a=a} -function hC(a){this.a=a} -function sC(a){this.a=a} -function uC(a){this.a=a} -function KC(a){this.a=a} -function jD(a){this.a=a} -function wE(a){this.a=a} -function yE(a){this.a=a} -function BE(a){this.a=a} -function rF(a){this.a=a} -function tG(a){this.a=a} -function EG(a){this.b=a} -function ZG(a){this.c=a} -function NH(a){this.a=a} -function pl(a){throw a} -function Vp(a){Pp(Md(a))} -function lk(){Gq();Kq()} -function Pb(a){Ob=a;zc()} -function Nb(){this.a=nc()} -function Bk(){this.a=++Ak} -function bm(){this.d=null} -function Gq(){Gq=gk;Fq=[]} -function Xj(a){return a.e} -function HC(a){hB(a.a,a.b)} -function Gt(a,b){TC(a.a,b)} -function Ox(a,b){fy(b,a)} -function Tx(a,b){ey(b,a)} -function Xx(a,b){Kx(b,a)} -function $A(a,b){aw(b,a)} -function Ev(a,b){b.rb(a)} -function bE(b,a){b.log(a)} -function cE(b,a){b.warn(a)} -function XD(b,a){b.data=a} -function _D(b,a){b.debug(a)} -function aE(b,a){b.error(a)} -function R(a,b){a.send(b)} -function ds(a){a.j||es(a.a)} -function Ts(a){Ss(a)&&Ws(a)} -function Zc(a){Yc();Xc.T(a)} -function Oc(a){return a.S()} -function co(a){return Jn(a)} -function bc(){Wb.call(this)} -function HE(){Wb.call(this)} -function FE(){bc.call(this)} -function yF(){bc.call(this)} -function hH(){bc.call(this)} -function HH(){bc.call(this)} -function qH(){qH=gk;pH=sH()} -function kA(){kA=gk;jA=xA()} -function gc(){gc=gk;fc=new G} -function Gc(){Gc=gk;Fc=new dq} -function gu(){gu=gk;fu=new nu} -function hI(){this.a=new iH} -function RA(){RA=gk;QA=new qB} -function rl(a){Ob=a;!!a&&zc()} -function tm(a){km();this.a=a} -function SD(b,a){b.display=a} -function fE(b,a){b.replace(a)} -function xy(a,b){b.forEach(a)} -function vn(a,b){a.a.add(b.d)} -function ao(a,b,c){a.set(b,c)} -function iB(a,b,c){a.Rb(c,b)} -function un(a,b,c){pn(a,c,b)} -function UH(a,b,c){Vp(a.a[c])} -function Mk(a,b){a.k=b;ll=!b} -function tE(b,a){return a in b} -function ME(a){return MI(a),a} -function mF(a){return MI(a),a} -function Mb(a){return nc()-a.a} -function $z(a){$x(a.b,a.a,a.c)} -function lB(a){kB.call(this,a)} -function NB(a){kB.call(this,a)} -function aC(a){kB.call(this,a)} -function vE(a){cc.call(this,a)} -function DE(a){cc.call(this,a)} -function pF(a){cc.call(this,a)} -function qF(a){cc.call(this,a)} -function AF(a){cc.call(this,a)} -function zF(a){ec.call(this,a)} -function CF(a){pF.call(this,a)} -function EE(a){DE.call(this,a)} -function bG(a){DE.call(this,a)} -function $F(){BE.call(this,'')} -function _F(){BE.call(this,'')} -function EI(a){new VG;this.a=a} -function RE(a){QE(a);return a.j} -function xr(a,b){return a.a>b.a} -function Td(a,b){return Xd(a,b)} -function nd(a,b){return $E(a,b)} -function sE(a){return Object(a)} -function dp(a,b){a.d?fp(b):um()} -function rv(a,b){a.c.forEach(b)} -function oC(a,b){a.e||a.c.add(b)} -function rm(a,b){++jm;b.M(a,gm)} -function Xn(a,b){CC(new so(b,a))} -function Rx(a,b){CC(new Uz(b,a))} -function Sx(a,b){CC(new Wz(b,a))} -function Cy(a,b,c){qC(ly(a,c,b))} -function tc(){tc=gk;!!(Yc(),Xc)} -function _H(){_H=gk;ZH=new cI} -function dG(){dG=gk;cG=new AE} -function uH(){qH();return new pH} -function VA(a){jB(a.a);return a.g} -function ZA(a){jB(a.a);return a.c} -function SA(a,b){return eB(a.a,b)} -function SB(a,b){return eB(a.a,b)} -function EB(a,b){return eB(a.a,b)} -function wy(a,b){return _m(a.b,b)} -function Vx(a,b){return wx(b.a,a)} -function mk(b,a){return b.exec(a)} -function pG(a){return a.a.c+a.b.c} -function Kc(a){return !!a.b||!!a.g} -function dl(a,b){this.b=a;this.a=b} -function rb(a,b){this.b=a;this.c=b} -function Nm(a,b){this.a=a;this.b=b} -function hn(a,b){this.a=a;this.b=b} -function kn(a,b){this.a=a;this.b=b} -function zn(a,b){this.a=a;this.b=b} -function Bn(a,b){this.a=a;this.b=b} +function wB(a){this.a=a} +function HB(a){this.a=a} +function ZB(a){this.a=a} +function rC(a){this.a=a} +function yD(a){this.a=a} +function AD(a){this.a=a} +function DD(a){this.a=a} +function sE(a){this.a=a} +function zF(a){this.a=a} +function MF(a){this.b=a} +function hG(a){this.c=a} +function XG(a){this.a=a} +function EI(a){this.a=a} +function yl(a){throw a} +function dk(a){return a.e} +function tk(){hq();lq()} +function Rb(a){Qb=a;Fc()} +function Pb(){this.a=tc()} +function Jk(){this.a=++Ik} +function hq(){hq=ok;gq=[]} +function kD(b,a){b.log(a)} +function lD(b,a){b.warn(a)} +function eD(b,a){b.data=a} +function Pu(a,b){b.pb(a)} +function ex(a,b){xx(b,a)} +function kx(a,b){wx(b,a)} +function ox(a,b){ax(b,a)} +function nA(a,b){lv(b,a)} +function it(a,b){gC(a.a,b)} +function WB(a){wA(a.a,a.b)} +function Uc(a){return a.Q()} +function Un(a){return zn(a)} +function dd(a){cd();bd.R(a)} +function us(a){ts(a)&&ws(a)} +function Gr(a){a.j||Hr(a.a)} +function jD(b,a){b.error(a)} +function iD(b,a){b.debug(a)} +function T(a,b){a.send(b)} +function hc(){Zb.call(this)} +function JD(){Zb.call(this)} +function HD(){hc.call(this)} +function zE(){hc.call(this)} +function rG(){hc.call(this)} +function RG(){hc.call(this)} +function AG(){AG=ok;zG=CG()} +function Az(){Az=ok;zz=Mz()} +function mc(){mc=ok;lc=new I} +function Mc(){Mc=ok;Lc=new Hp} +function Jt(){Jt=ok;It=new Qt} +function DH(){this.a=new sG} +function eA(){eA=ok;dA=new FA} +function Al(a){Qb=a;!!a&&Fc()} +function km(a){bm();this.a=a} +function $C(b,a){b.display=a} +function Rx(a,b){b.forEach(a)} +function Qk(a,b){a.f=b;ul=!b} +function Xb(a,b){a.e=b;Ub(a,b)} +function xA(a,b,c){a.Nb(c,b)} +function kn(a,b,c){en(a,c,b)} +function Sn(a,b,c){a.set(b,c)} +function ln(a,b){a.a.add(b.d)} +function qz(a){qx(a.b,a.a,a.c)} +function AA(a){zA.call(this,a)} +function aB(a){zA.call(this,a)} +function pB(a){zA.call(this,a)} +function FD(a){ic.call(this,a)} +function qE(a){ic.call(this,a)} +function rE(a){ic.call(this,a)} +function BE(a){ic.call(this,a)} +function AE(a){kc.call(this,a)} +function DE(a){qE.call(this,a)} +function GD(a){FD.call(this,a)} +function cF(a){FD.call(this,a)} +function iF(a){ic.call(this,a)} +function aF(){DD.call(this,'')} +function _E(){DD.call(this,'')} +function ik(){gk==null&&(gk=[])} +function zc(){zc=ok;!!(cd(),bd)} +function eF(){eF=ok;dF=new CD} +function vH(){vH=ok;uH=new yH} +function TD(a){SD(a);return a.j} +function OD(a){return QI(a),a} +function nE(a){return QI(a),a} +function Ob(a){return tc()-a.a} +function fF(a){return Md(a,5).e} +function $d(a,b){return ce(a,b)} +function ud(a,b){return _D(a,b)} +function $q(a,b){return a.a>b.a} +function wD(b,a){return a in b} +function vD(a){return Object(a)} +function vI(a,b,c){b.nb(fF(c))} +function lH(a,b,c){b.nb(a.a[c])} +function Nx(a,b,c){FB(Dx(a,c,b))} +function Nn(a,b){RB(new oo(b,a))} +function hx(a,b){RB(new wy(b,a))} +function ix(a,b){RB(new Ay(b,a))} +function im(a,b){++am;b.H(a,Zl)} +function pI(a,b){lI(a);a.a.hc(b)} +function fI(a,b){Md(a,87).Yb(b)} +function Mo(a,b){a.d?Oo(b):lm()} +function Cu(a,b){a.c.forEach(b)} +function DB(a,b){a.e||a.c.add(b)} +function aH(a,b){while(a.ic(b));} +function Qx(a,b){return Sm(a.b,b)} +function fA(a,b){return tA(a.a,b)} +function TA(a,b){return tA(a.a,b)} +function fB(a,b){return tA(a.a,b)} +function mx(a,b){return Ow(b.a,a)} +function uk(b,a){return b.exec(a)} +function vF(a){return a.a.c+a.b.c} +function mA(a){yA(a.a);return a.c} +function iA(a){yA(a.a);return a.g} +function EG(){AG();return new zG} +function Bw(b,a){uw();delete b[a]} +function Eb(a,b){tb.call(this,a,b)} +function jE(){ic.call(this,null)} +function ju(){this.a=new $wnd.Map} +function kC(){this.c=new $wnd.Map} +function tb(a,b){this.b=a;this.c=b} +function ml(a,b){this.b=a;this.a=b} +function bo(a,b){this.b=a;this.a=b} +function go(a,b){this.a=a;this.b=b} +function io(a,b){this.a=a;this.b=b} +function ko(a,b){this.a=a;this.b=b} +function mo(a,b){this.a=a;this.b=b} function oo(a,b){this.a=a;this.b=b} -function qo(a,b){this.a=a;this.b=b} -function so(a,b){this.a=a;this.b=b} -function wo(a,b){this.b=a;this.a=b} -function yo(a,b){this.a=a;this.b=b} -function Ao(a,b){this.a=a;this.b=b} -function xp(a,b){this.a=a;this.b=b} -function Cp(a,b){this.b=a;this.a=b} -function Ep(a,b){this.b=a;this.a=b} -function Cb(a,b){rb.call(this,a,b)} -function rq(a,b){rb.call(this,a,b)} -function iF(){cc.call(this,null)} -function ak(){$j==null&&($j=[])} -function Ec(){oc!=0&&(oc=0);sc=-1} -function Iu(){this.a=new $wnd.Map} -function $C(){this.c=new $wnd.Map} -function bs(a,b){this.b=a;this.a=b} -function Eu(a,b){this.b=a;this.a=b} -function Su(a,b){this.a=a;this.b=b} -function Wu(a,b){this.a=a;this.b=b} -function Is(a,b){this.a=a;this.b=b} -function Ms(a,b){this.a=a;this.b=b} -function Fv(a,b){this.a=a;this.b=b} -function Jv(a,b){this.a=a;this.b=b} -function Nv(a,b){this.a=a;this.b=b} -function hz(a,b){this.a=a;this.b=b} -function jz(a,b){this.a=a;this.b=b} -function Bz(a,b){this.a=a;this.b=b} -function Qz(a,b){this.a=a;this.b=b} -function Uz(a,b){this.b=a;this.a=b} -function Wz(a,b){this.b=a;this.a=b} -function Vy(a,b){this.b=a;this.a=b} -function dA(a,b){this.b=a;this.a=b} -function fA(a,b){this.b=a;this.a=b} -function tA(a,b){this.b=a;this.a=b} -function rA(a,b){this.a=a;this.b=b} -function wB(a,b){this.a=a;this.b=b} -function jC(a,b){this.a=a;this.b=b} -function IC(a,b){this.a=a;this.b=b} -function LC(a,b){this.a=a;this.b=b} -function DB(a,b){this.d=a;this.e=b} -function BD(a,b){rb.call(this,a,b)} -function JD(a,b){rb.call(this,a,b)} -function hE(c,a,b){c.setItem(a,b)} -function mn(a,b){return Kd(a.b[b])} -function wH(a,b){return a.a.get(b)} -function fr(a,b){Zq(a,(wr(),ur),b)} -function Xt(a,b,c,d){Wt(a,b.d,c,d)} -function Qx(a,b,c){cy(a,b);Fx(c.e)} -function jx(b,a){cx();delete b[a]} -function jE(b,a){b.clearTimeout(a)} -function Dc(a){$wnd.clearTimeout(a)} -function sk(a){$wnd.clearTimeout(a)} -function iE(b,a){b.clearInterval(a)} -function mA(a,b){rC(b);jA.delete(a)} -function wq(a,b){return uq(b,vq(a))} -function RF(a,b){return a.substr(b)} -function IF(a,b){return MI(a),a===b} -function NE(a,b){return MI(a),a===b} -function nF(a){return Zd((MI(a),a))} -function Vd(a){return typeof a===cJ} -function vA(a){a.length=0;return a} -function XF(a,b){a.a+=''+b;return a} -function YF(a,b){a.a+=''+b;return a} -function ZF(a,b){a.a+=''+b;return a} -function $d(a){OI(a==null);return a} -function NG(a){this.a=null;this.b=a} -function lH(a){this.a=uH();this.b=a} -function yH(a){this.a=uH();this.b=a} -function _C(a){UC(a.a,a.d,a.c,a.b)} -function mr(a,b){Zq(a,(wr(),vr),b.a)} -function tn(a,b){return a.a.has(b.d)} -function KF(a,b){return a.indexOf(b)} -function gE(b,a){return b.getItem(a)} -function pE(a){return a&&a.valueOf()} -function rE(a){return a&&a.valueOf()} -function kG(a){return !a?null:a.fc()} -function Yd(a){return a==null?null:a} -function JH(a){return a!=null?M(a):0} -function rk(a){$wnd.clearInterval(a)} -function W(a){cq((Gc(),Fc),new hb(a))} -function LH(){LH=gk;KH=new NH(null)} -function Cw(){Cw=gk;Bw=new $wnd.Map} -function cx(){cx=gk;bx=new $wnd.Map} -function LE(){LE=gk;JE=false;KE=true} -function br(a){!!a.b&&kr(a,(wr(),tr))} -function gr(a){!!a.b&&kr(a,(wr(),ur))} -function pr(a){!!a.b&&kr(a,(wr(),vr))} -function Qb(a){a.i=pd(hj,sJ,30,0,0,1)} -function ml(a){ll&&_D($wnd.console,a)} -function ol(a){ll&&aE($wnd.console,a)} -function sl(a){ll&&bE($wnd.console,a)} -function tl(a){ll&&cE($wnd.console,a)} -function Kp(a){ll&&aE($wnd.console,a)} -function Lr(a){this.a=a;qk.call(this)} -function Bs(a){this.a=a;qk.call(this)} -function jt(a){this.a=a;qk.call(this)} -function Jt(a){this.a=new $C;this.c=a} -function xA(){return new $wnd.WeakMap} -function wv(a,b){return a.i.delete(b)} -function yv(a,b){return a.b.delete(b)} -function hB(a,b){return a.a.delete(b)} -function fB(a,b){return eB(a,a.Sb(b))} -function Dy(a,b,c){return ly(a,c.a,b)} -function vy(a,b){return Pn(a.b.root,b)} -function gs(a){return sK in a?a[sK]:-1} -function ns(a){cq((Gc(),Fc),new Os(a))} -function By(a){cq((Gc(),Fc),new Oz(a))} -function om(a){cq((Gc(),Fc),new Xm(a))} -function Do(a){cq((Gc(),Fc),new Lo(a))} -function Oq(a){cq((Gc(),Fc),new Pq(a))} -function gn(a,b){Fd(yl(a,Df),27).kb(b)} -function Dz(a,b){yy(a.a,a.c,a.d,a.b,b)} -function GB(a,b){jB(a.a);a.c.forEach(b)} -function TB(a,b){jB(a.a);a.b.forEach(b)} -function wI(a,b){if(mI){return}a.b=b} -function UD(a,b,c,d){return MD(a,b,c,d)} -function vd(a,b,c){return {l:a,m:b,h:c}} -function MH(a,b){return a.a!=null?a.a:b} -function WF(a){return a==null?yJ:jk(a)} -function Pd(a,b){return a!=null&&Ed(a,b)} -function TI(a){return a.$H||(a.$H=++SI)} -function Po(a){return ''+Qo(No.wb()-a,3)} -function aG(a){BE.call(this,(MI(a),a))} -function VG(){this.a=pd(ej,sJ,1,0,5,1)} -function Wb(){Qb(this);Rb(this);this.Q()} -function gt(a){if(a.a){nk(a.a);a.a=null}} -function JI(a){if(!a){throw Xj(new FE)}} -function KI(a){if(!a){throw Xj(new HH)}} -function OI(a){if(!a){throw Xj(new iF)}} -function XI(){XI=gk;UI=new G;WI=new G} -function Ux(a,b){var c;c=wx(b,a);qC(c)} -function et(a,b){b.a.b==(qq(),pq)&>(a)} -function VD(a,b){return a.appendChild(b)} -function WD(b,a){return b.appendChild(a)} -function MF(a,b){return a.lastIndexOf(b)} -function LF(a,b,c){return a.indexOf(b,c)} -function vm(a,b,c){km();return a.set(c,b)} -function rI(a,b){if(mI){return}RG(a.a,b)} -function pC(a){if(a.d||a.e){return}nC(a)} -function QE(a){if(a.j!=null){return}cF(a)} -function kc(a){return a==null?null:a.name} -function Rd(a){return typeof a==='number'} -function Ud(a){return typeof a==='string'} -function SF(a,b,c){return a.substr(b,c-b)} -function dE(d,a,b,c){d.pushState(a,b,c)} -function TD(d,a,b,c){d.setProperty(a,b,c)} -function DI(a,b){CI(a);a.b=true;TH(a.a,b)} -function yB(a,b){MA.call(this,a);this.a=b} -function dv(a,b){MD(b,lK,new lv(a),false)} -function Ub(a,b){a.e=b;b!=null&&RI(b,wJ,a)} -function jB(a){var b;b=yC;!!b&&lC(b,a.b)} -function qb(a){return a.b!=null?a.b:''+a.c} -function Qd(a){return typeof a==='boolean'} -function YD(b,a){return b.createElement(a)} -function ad(a){Yc();return parseInt(a)||-1} -function wm(a){km();jm==0?a.I():im.push(a)} -function Gd(a){OI(a==null||Qd(a));return a} -function Hd(a){OI(a==null||Rd(a));return a} -function Id(a){OI(a==null||Vd(a));return a} -function Md(a){OI(a==null||Ud(a));return a} -function CC(a){zC==null&&(zC=[]);zC.push(a)} -function DC(a){BC==null&&(BC=[]);BC.push(a)} -function Ul(a){a.f=[];a.g=[];a.a=0;a.b=nc()} -function jI(a){this.a=a;dG();Zj(Date.now())} -function kB(a){this.a=new $wnd.Set;this.b=a} -function on(){this.a=new $wnd.Map;this.b=[]} -function VH(a,b){this.b=0;this.c=b;this.a=a} -function xI(a,b){if(mI){return}!!b&&(a.d=b)} -function Gr(a,b){b.a.b==(qq(),pq)&&Jr(a,-1)} -function Nc(a,b){a.b=Pc(a.b,[b,false]);Lc(a)} -function Mp(a,b){Np(a,b,Fd(yl(a.a,xe),9).q)} -function wk(a,b){return $wnd.setTimeout(a,b)} -function NF(a,b,c){return a.lastIndexOf(b,c)} -function uc(a,b,c){return a.apply(b,c);var d} -function Xd(a,b){return a&&b&&a instanceof b} -function vk(a,b){return $wnd.setInterval(a,b)} -function cH(a){return new EI(bH(a,a.length))} -function jc(a){return a==null?null:a.message} -function Hw(a){a.b?iE($wnd,a.c):jE($wnd,a.c)} -function eE(d,a,b,c){d.replaceState(a,b,c)} -function st(a,b,c){a.set(c,(jB(b.a),Md(b.g)))} -function Tr(a,b,c){a.pb(vF(WA(Fd(c.e,28),b)))} -function yr(a,b,c){rb.call(this,a,b);this.a=c} -function jb(a,b,c){this.a=a;this.c=b;this.b=c} -function Fw(a,b,c){this.a=a;this.c=b;this.g=c} -function Ip(a,b,c){this.a=a;this.b=b;this.c=c} -function Xy(a,b,c){this.a=a;this.b=b;this.c=c} -function bz(a,b,c){this.a=a;this.b=b;this.c=c} -function dz(a,b,c){this.a=a;this.b=b;this.c=c} -function fz(a,b,c){this.a=a;this.b=b;this.c=c} -function xz(a,b,c){this.b=a;this.a=b;this.c=c} -function _z(a,b,c){this.b=a;this.a=b;this.c=c} -function _w(a,b,c){this.b=a;this.a=b;this.c=c} -function Ty(a,b,c){this.b=a;this.c=b;this.a=c} -function Gz(a,b,c){this.c=a;this.b=b;this.a=c} -function hA(a,b,c){this.c=a;this.b=b;this.a=c} -function DH(a,b,c){this.a=a;this.b=b;this.c=c} -function iq(){this.b=(qq(),nq);this.a=new $C} -function km(){km=gk;im=[];gm=new zm;hm=new Em} -function xF(){xF=gk;wF=pd(_i,sJ,33,256,0,1)} -function pv(a,b){a.b.add(b);return new Nv(a,b)} -function qv(a,b){a.i.add(b);return new Jv(a,b)} -function uI(a,b){if(!lI){return}vI(a,(_H(),b))} -function mE(a){if(a==null){return 0}return +a} -function Fd(a,b){OI(a==null||Ed(a,b));return a} -function Ld(a,b){OI(a==null||Xd(a,b));return a} -function XE(a,b){var c;c=UE(a,b);c.e=2;return c} -function RG(a,b){a.a[a.a.length]=b;return true} -function SG(a,b){LI(b,a.a.length);return a.a[b]} -function Cl(a,b,c){Bl(a,b,c.jb());a.b.set(b,c)} -function yn(a,b,c){return a.set(c,(jB(b.a),b.g))} -function RD(b,a){return b.getPropertyValue(a)} -function tk(a,b){return _I(function(){a.W(b)})} -function Ww(a,b){return Xw(new Zw(a),b,19,true)} -function Jq(a){return $wnd.Vaadin.Flow.getApp(a)} -function rC(a){a.e=true;nC(a);a.c.clear();mC(a)} -function aB(a,b){a.d=true;TA(a,b);DC(new sB(a))} -function QC(a,b){a.a==null&&(a.a=[]);a.a.push(b)} -function SC(a,b,c,d){var e;e=WC(a,b,c);e.push(d)} -function at(a,b){var c;c=Zd(mF(Hd(b.a)));ft(a,c)} -function rr(a,b){this.a=a;this.b=b;qk.call(this)} -function uu(a,b){this.a=a;this.b=b;qk.call(this)} -function ku(a){gu();this.c=[];this.a=fu;this.d=a} -function xk(a){a.onreadystatechange=function(){}} -function RI(b,c,d){try{b[c]=d}catch(a){}} -function PD(a,b,c,d){a.removeEventListener(b,c,d)} -function QH(a){LH();return !a?KH:new NH(MI(a))} -function QD(b,a){return b.getPropertyPriority(a)} -function vH(a,b){return !(a.a.get(b)===undefined)} -function Sd(a){return a!=null&&Wd(a)&&!(a.jc===kk)} -function rd(a){return Array.isArray(a)&&a.jc===kk} -function Od(a){return !Array.isArray(a)&&a.jc===kk} -function Wd(a){return typeof a===aJ||typeof a===cJ} -function bH(a,b){return SH(b,a.length),new VH(a,b)} -function Yu(a){a.a=Et(Fd(yl(a.d,Bg),13),new av(a))} -function sm(a){++jm;dp(Fd(yl(a.a,Af),57),new Lm)} -function os(a,b){Ju(Fd(yl(a.k,Ug),87),b['execute'])} -function Pc(a,b){!a&&(a=[]);a[a.length]=b;return a} -function UE(a,b){var c;c=new SE;c.f=a;c.d=b;return c} -function VE(a,b,c){var d;d=UE(a,b);gF(c,d);return d} -function Rv(a,b){var c;c=b;return Fd(a.a.get(c),6)} -function sG(a,b){if(b){return gG(a.a,b)}return false} -function zc(){tc();if(pc){return}pc=true;Ac(false)} -function cc(a){Qb(this);this.g=a;Rb(this);this.Q()} -function AB(a,b,c){MA.call(this,a);this.b=b;this.a=c} -function zl(a,b,c){a.a.delete(c);a.a.set(c,b.jb())} -function Zn(a,b,c){return a.push(SA(c,new Ao(c,b)))} -function sd(a,b,c){JI(c==null||md(a,c));return a[b]=c} -function Jd(a){OI(a==null||Array.isArray(a));return a} -function MI(a){if(a==null){throw Xj(new yF)}return a} -function $I(){if(VI==256){UI=WI;WI=new G;VI=0}++VI} -function TH(a,b){MI(b);while(a.b=0){a.a=new jt(a);pk(a.a,b)}} -function Rl(a,b,c){am(td(nd(_d,1),sJ,95,15,[b,c]));_C(a.e)} -function KD(){ID();return td(nd(Di,1),sJ,51,0,[GD,FD,HD])} -function sq(){qq();return td(nd(Nf,1),sJ,60,0,[nq,oq,pq])} -function zr(){wr();return td(nd(Tf,1),sJ,63,0,[tr,ur,vr])} -function HA(a){if(!FA){return a}return $wnd.Polymer.dom(a)} -function lE(c,a,b){return c.setTimeout(_I(a.Vb).bind(a),b)} -function Nd(a){return a.hc||Array.isArray(a)&&nd(je,1)||je} -function Np(a,b,c){Op(a,c.caption,c.message,b,c.url,null)} -function Zv(a,b,c,d){Uv(a,b)&&Xt(Fd(yl(a.c,Fg),26),b,c,d)} -function bo(a,b,c,d,e){a.splice.apply(a,[b,c,d].concat(e))} -function mp(a,b,c){this.a=a;this.c=b;this.b=c;qk.call(this)} -function op(a,b,c){this.a=a;this.c=b;this.b=c;qk.call(this)} -function kp(a,b,c){this.b=a;this.d=b;this.c=c;this.a=new Nb} -function xv(a,b){Yd(b.db(a))===Yd((LE(),KE))&&a.b.delete(b)} -function OD(a,b){Od(a)?a.ub(b):(a.handleEvent(b),undefined)} -function Qw(a,b){BA(b).forEach(hk(Uw.prototype.pb,Uw,[a]))} -function iG(a,b){return b===a?'(this Map)':b==null?yJ:jk(b)} -function Vb(a,b){var c;c=RE(a.hc);return b==null?c:c+': '+b} -function gH(a){var b,c;c=a;b=c.$modCount|0;c.$modCount=b+1} -function Qn(a){var b;b=a.f;while(!!b&&!b.a){b=b.f}return b} -function aF(a){if(a._b()){return null}var b=a.i;return dk[b]} -function iu(a){a.a=fu;if(!a.b){return}Ws(Fd(yl(a.d,pg),17))} -function Ur(a){jl('applyDefaultTheme',(LE(),a?true:false))} -function es(a){a&&a.afterServerUpdate&&a.afterServerUpdate()} -function kE(c,a,b){return c.setInterval(_I(a.Vb).bind(a),b)} -function EA(a,b,c,d){return a.splice.apply(a,[b,c].concat(d))} -function Yx(a,b,c){return a.push(UA(UB(uv(b.e,1),c),b.b[c]))} -function Db(){Bb();return td(nd(ce,1),sJ,50,0,[zb,Ab,yb,xb])} -function CD(){AD();return td(nd(Ci,1),sJ,41,0,[zD,xD,yD,wD])} -function ab(){return $wnd.vaadinPush&&$wnd.vaadinPush.SockJS} -function Bq(a){a?($wnd.location=a):$wnd.location.reload(false)} -function GC(a){this.a=a;this.b=[];this.c=new $wnd.Set;nC(this)} -function GE(a,b){Qb(this);this.f=b;this.g=a;Rb(this);this.Q()} -function iH(){this.a=new lH(this);this.b=new yH(this);gH(this)} -function Yc(){Yc=gk;var a,b;b=!bd();a=new kd;Xc=b?new cd:a} -function WE(a,b,c,d){var e;e=UE(a,b);gF(c,e);e.e=d?8:0;return e} -function Ql(a){var b;b={};b[LJ]=sE(a.a);b[MJ]=sE(a.b);return b} -function ik(a){function b(){} +function Em(a,b){this.a=a;this.b=b} +function Zm(a,b){this.a=a;this.b=b} +function _m(a,b){this.a=a;this.b=b} +function pn(a,b){this.a=a;this.b=b} +function rn(a,b){this.a=a;this.b=b} +function ep(a,b){this.a=a;this.b=b} +function is(a,b){this.a=a;this.b=b} +function ks(a,b){this.a=a;this.b=b} +function jp(a,b){this.b=a;this.a=b} +function lp(a,b){this.b=a;this.a=b} +function Er(a,b){this.b=a;this.a=b} +function fu(a,b){this.b=a;this.a=b} +function tu(a,b){this.a=a;this.b=b} +function vu(a,b){this.a=a;this.b=b} +function Qu(a,b){this.a=a;this.b=b} +function Uu(a,b){this.a=a;this.b=b} +function Yu(a,b){this.a=a;this.b=b} +function aw(a,b){this.a=a;this.b=b} +function iy(a,b){this.b=a;this.a=b} +function ky(a,b){this.b=a;this.a=b} +function qy(a,b){this.b=a;this.a=b} +function wy(a,b){this.b=a;this.a=b} +function Ay(a,b){this.b=a;this.a=b} +function Ky(a,b){this.a=a;this.b=b} +function My(a,b){this.a=a;this.b=b} +function cz(a,b){this.a=a;this.b=b} +function tz(a,b){this.a=a;this.b=b} +function Hz(a,b){this.a=a;this.b=b} +function LA(a,b){this.a=a;this.b=b} +function SA(a,b){this.d=a;this.e=b} +function Jz(a,b){this.b=a;this.a=b} +function yB(a,b){this.a=a;this.b=b} +function XB(a,b){this.a=a;this.b=b} +function $B(a,b){this.a=a;this.b=b} +function Vp(a,b){tb.call(this,a,b)} +function JC(a,b){tb.call(this,a,b)} +function RC(a,b){tb.call(this,a,b)} +function cI(a,b){tb.call(this,a,b)} +function eI(a,b){this.a=a;this.b=b} +function yI(a,b){this.a=a;this.b=b} +function FI(a,b){this.b=a;this.a=b} +function gx(a,b,c){ux(a,b);Xw(c.e)} +function zt(a,b,c,d){yt(a,b.d,c,d)} +function HI(a,b,c){a.splice(b,0,c)} +function Iq(a,b){Aq(a,(Zq(),Xq),b)} +function GG(a,b){return a.a.get(b)} +function bn(a,b){return Rd(a.b[b])} +function $p(a,b){return Yp(b,Zp(a))} +function Qc(a){return !!a.b||!!a.g} +function ae(a){return typeof a===fJ} +function Lz(a){a.length=0;return a} +function fe(a){TI(a==null);return a} +function Jc(a){$wnd.clearTimeout(a)} +function Ak(a){$wnd.clearTimeout(a)} +function nD(b,a){b.clearTimeout(a)} +function mD(b,a){b.clearInterval(a)} +function Cz(a,b){GB(b);zz.delete(a)} +function SE(a,b){return a.substr(b)} +function oE(a){return ee((QI(a),a))} +function vG(a){this.a=EG();this.b=a} +function IG(a){this.a=EG();this.b=a} +function VF(a){this.a=null;this.b=a} +function de(a){return a==null?null:a} +function H(a,b){return de(a)===de(b)} +function jn(a,b){return a.a.has(b.d)} +function Pq(a,b){Aq(a,(Zq(),Yq),b.a)} +function YE(a,b){a.a+=''+b;return a} +function ZE(a,b){a.a+=''+b;return a} +function $E(a,b){a.a+=''+b;return a} +function tI(a,b,c){fI(b,c);return b} +function LE(a,b){return a.indexOf(b)} +function tD(a){return a&&a.valueOf()} +function uD(a){return a&&a.valueOf()} +function qF(a){return !a?null:a.dc()} +function TG(a){return a!=null?O(a):0} +function zk(a){$wnd.clearInterval(a)} +function Y(a){Gp((Mc(),Lc),new jb(a))} +function VG(){VG=ok;UG=new XG(null)} +function Nv(){Nv=ok;Mv=new $wnd.Map} +function uw(){uw=ok;tw=new $wnd.Map} +function ND(){ND=ok;LD=false;MD=true} +function Kc(){uc!=0&&(uc=0);yc=-1} +function Eq(a){!!a.b&&Nq(a,(Zq(),Wq))} +function Jq(a){!!a.b&&Nq(a,(Zq(),Xq))} +function Sq(a){!!a.b&&Nq(a,(Zq(),Yq))} +function Sb(a){a.i=wd(aj,vJ,28,0,0,1)} +function uI(a,b,c){AI(a,DI(b,a.a,c))} +function SH(a,b){if(IH){return}a.b=b} +function Hu(a,b){return a.i.delete(b)} +function Ju(a,b){return a.b.delete(b)} +function Ox(a,b,c){return Dx(a,c.a,b)} +function Mz(){return new $wnd.WeakMap} +function wA(a,b){return a.a.delete(b)} +function DI(a,b,c){return tI(a.a,b,c)} +function vl(a){ul&&iD($wnd.console,a)} +function xl(a){ul&&jD($wnd.console,a)} +function Bl(a){ul&&kD($wnd.console,a)} +function Cl(a){ul&&lD($wnd.console,a)} +function np(a){ul&&jD($wnd.console,a)} +function mr(a){this.a=a;yk.call(this)} +function bs(a){this.a=a;yk.call(this)} +function Ns(a){this.a=a;yk.call(this)} +function lt(a){this.a=new kC;this.c=a} +function $I(){$I=ok;XI=new I;ZI=new I} +function Jr(a){return jK in a?a[jK]:-1} +function XE(a){return a==null?AJ:rk(a)} +function Px(a,b){return Fn(a.b.root,b)} +function Cd(a,b,c){return {l:a,m:b,h:c}} +function aD(a,b,c,d){return UC(a,b,c,d)} +function WG(a,b){return a.a!=null?a.a:b} +function VA(a,b){yA(a.a);a.c.forEach(b)} +function gB(a,b){yA(a.a);a.b.forEach(b)} +function lx(a,b){var c;c=Ow(b,a);FB(c)} +function Tx(a){Gp((Mc(),Lc),new oz(a))} +function Rr(a){Gp((Mc(),Lc),new os(a))} +function fm(a){Gp((Mc(),Lc),new Km(a))} +function pq(a){Gp((Mc(),Lc),new qq(a))} +function bF(a){DD.call(this,(QI(a),a))} +function bG(){this.a=wd($i,vJ,1,0,5,1)} +function Zb(){Sb(this);Tb(this);this.O()} +function Ks(a){if(a.a){vk(a.a);a.a=null}} +function MI(a){if(!a){throw dk(new HD)}} +function NI(a){if(!a){throw dk(new RG)}} +function TI(a){if(!a){throw dk(new jE)}} +function EB(a){if(a.d||a.e){return}CB(a)} +function NH(a,b){if(IH){return}ZF(a.a,b)} +function Wd(a,b){return a!=null&&Ld(a,b)} +function bD(a,b){return a.appendChild(b)} +function cD(b,a){return b.appendChild(a)} +function NE(a,b){return a.lastIndexOf(b)} +function ME(a,b,c){return a.indexOf(b,c)} +function mm(a,b,c){bm();return a.set(c,b)} +function _C(d,a,b,c){d.setProperty(a,b,c)} +function TE(a,b,c){return a.substr(b,c-b)} +function WI(a){return a.$H||(a.$H=++VI)} +function uo(a){return ''+vo(so.sb()-a,3)} +function Yd(a){return typeof a==='number'} +function _d(a){return typeof a==='string'} +function qc(a){return a==null?null:a.name} +function Xd(a){return typeof a==='boolean'} +function sb(a){return a.b!=null?a.b:''+a.c} +function SD(a){if(a.j!=null){return}dE(a)} +function Nd(a){TI(a==null||Xd(a));return a} +function Od(a){TI(a==null||Yd(a));return a} +function Td(a){TI(a==null||_d(a));return a} +function Pd(a){TI(a==null||ae(a));return a} +function nm(a){bm();am==0?a.C():_l.push(a)} +function Is(a,b){b.a.b==(Up(),Tp)&&Ks(a)} +function hr(a,b){b.a.b==(Up(),Tp)&&kr(a,-1)} +function yA(a){var b;b=NB;!!b&&AB(b,a.b)} +function NA(a,b){_z.call(this,a);this.a=b} +function sI(a,b){nI.call(this,a);this.a=b} +function zA(a){this.a=new $wnd.Set;this.b=a} +function dn(){this.a=new $wnd.Map;this.b=[]} +function FH(a){this.a=a;eF();fk(Date.now())} +function RB(a){OB==null&&(OB=[]);OB.push(a)} +function SB(a){QB==null&&(QB=[]);QB.push(a)} +function fD(b,a){return b.createElement(a)} +function PD(a,b){return QI(a),de(a)===de(b)} +function JE(a,b){return QI(a),de(a)===de(b)} +function Ek(a,b){return $wnd.setTimeout(a,b)} +function ce(a,b){return a&&b&&a instanceof b} +function OE(a,b,c){return a.lastIndexOf(b,c)} +function Ac(a,b,c){return a.apply(b,c);var d} +function Dk(a,b){return $wnd.setInterval(a,b)} +function gd(a){cd();return parseInt(a)||-1} +function TH(a,b){if(IH){return}!!b&&(a.d=b)} +function pp(a,b){qp(a,b,Md(Hl(a.a,De),9).k)} +function ur(a,b,c){a.nb(wE(jA(Md(c.e,13),b)))} +function Ws(a,b,c){a.set(c,(yA(b.a),Td(b.g)))} +function Tc(a,b){a.b=Vc(a.b,[b,false]);Rc(a)} +function Wv(a){a.c?mD($wnd,a.d):nD($wnd,a.d)} +function yE(){yE=ok;xE=wd(Vi,vJ,23,256,0,1)} +function bm(){bm=ok;_l=[];Zl=new qm;$l=new vm} +function Mp(){this.b=(Up(),Rp);this.a=new kC} +function oy(a,b,c){this.b=a;this.c=b;this.a=c} +function my(a,b,c){this.c=a;this.b=b;this.a=c} +function Uy(a,b,c){this.c=a;this.b=b;this.a=c} +function sy(a,b,c){this.a=a;this.b=b;this.c=c} +function Ey(a,b,c){this.a=a;this.b=b;this.c=c} +function Gy(a,b,c){this.a=a;this.b=b;this.c=c} +function Iy(a,b,c){this.a=a;this.b=b;this.c=c} +function $y(a,b,c){this.b=a;this.a=b;this.c=c} +function rw(a,b,c){this.b=a;this.a=b;this.c=c} +function rz(a,b,c){this.b=a;this.a=b;this.c=c} +function ez(a,b,c){this.b=a;this.c=b;this.a=c} +function lb(a,b,c){this.a=a;this.c=b;this.b=c} +function NG(a,b,c){this.a=a;this.b=b;this.c=c} +function Qv(a,b,c){this.c=a;this.d=b;this.k=c} +function _q(a,b,c){tb.call(this,a,b);this.a=c} +function Ll(a,b,c){Kl(a,b,c.lb());a.b.set(b,c)} +function dD(c,a,b){return c.insertBefore(a,b)} +function ZC(b,a){return b.getPropertyValue(a)} +function pc(a){return a==null?null:a.message} +function Bk(a,b){return cJ(function(){a.U(b)})} +function Bu(a,b){a.i.add(b);return new Uu(a,b)} +function Au(a,b){a.b.add(b);return new Yu(a,b)} +function QH(a,b){if(!HH){return}RH(a,(vH(),b))} +function qD(a){if(a==null){return 0}return +a} +function Sd(a,b){TI(a==null||ce(a,b));return a} +function Md(a,b){TI(a==null||Ld(a,b));return a} +function ZD(a,b){var c;c=WD(a,b);c.e=2;return c} +function ZF(a,b){a.a[a.a.length]=b;return true} +function $F(a,b){OI(b,a.a.length);return a.a[b]} +function Bs(a,b){$wnd.navigator.sendBeacon(a,b)} +function pA(a,b){a.d=true;gA(a,b);SB(new HA(a))} +function GB(a){a.e=true;CB(a);a.c.clear();BB(a)} +function $G(a){VG();return !a?UG:new XG(QI(a))} +function on(a,b,c){return a.set(c,(yA(b.a),b.g))} +function mw(a,b){return nw(new pw(a),b,19,true)} +function YC(b,a){return b.getPropertyPriority(a)} +function kq(a){return $wnd.Vaadin.Flow.getApp(a)} +function yd(a){return Array.isArray(a)&&a.lc===sk} +function mG(a){return new sI(null,lG(a,a.length))} +function FG(a,b){return !(a.a.get(b)===undefined)} +function Vd(a){return !Array.isArray(a)&&a.lc===sk} +function Zd(a){return a!=null&&be(a)&&!(a.lc===sk)} +function dC(a,b){a.a==null&&(a.a=[]);a.a.push(b)} +function fC(a,b,c,d){var e;e=hC(a,b,c);e.push(d)} +function XC(a,b,c,d){a.removeEventListener(b,c,d)} +function Es(a,b){var c;c=ee(nE(Od(b.a)));Js(a,c)} +function Uq(a,b){this.a=a;this.b=b;yk.call(this)} +function Yt(a,b){this.a=a;this.b=b;yk.call(this)} +function Nt(a){Jt();this.c=[];this.a=It;this.d=a} +function ic(a){Sb(this);this.g=a;Tb(this);this.O()} +function Vc(a,b){!a&&(a=[]);a[a.length]=b;return a} +function XD(a,b,c){var d;d=WD(a,b);hE(c,d);return d} +function av(a,b){var c;c=b;return Md(a.a.get(c),6)} +function Il(a,b,c){a.a.delete(c);a.a.set(c,b.lb())} +function Pn(a,b,c){return a.push(fA(c,new mo(c,b)))} +function lG(a,b){return bH(b,a.length),new mH(a,b)} +function be(a){return typeof a===dJ||typeof a===fJ} +function Fk(a){a.onreadystatechange=function(){}} +function wl(a){$wnd.setTimeout(function(){a.V()},0)} +function Xw(a){var b;b=a.a;Ku(a,null);Ku(a,b);Kv(a)} +function jm(a){++am;Mo(Md(Hl(a.a,Df),58),new Cm)} +function Qr(a,b){ku(Md(Hl(a.j,Ug),92),b['execute'])} +function gH(a,b){QI(b);while(a.c=0){a.a=new Ns(a);xk(a.a,b)}} +function nI(a){if(!a){this.b=null;new bG}else{this.b=a}} +function gs(a,b,c,d){this.a=a;this.d=b;this.b=c;this.c=d} +function Ls(a){this.b=a;Kp(Md(Hl(a,Of),12),new Ps(this))} +function Ct(a,b){var c;c=Md(Hl(a.a,Jg),36);Kt(c,b);Mt(c)} +function zq(a,b){rp(Md(Hl(a.c,Jf),25),'',b,'',null,null)} +function qp(a,b,c){rp(a,c.caption,c.message,b,c.url,null)} +function IE(a,b){SI(b,a.length);return a.charCodeAt(b)} +function Hc(a){$wnd.setTimeout(function(){throw a},0)} +function Jl(a){a.b.forEach(pk(Ao.prototype.H,Ao,[a]))} +function Vx(a){return PD((ND(),LD),iA(hB(Fu(a,0),wK)))} +function Wp(){Up();return Ad(ud(Nf,1),vJ,61,0,[Rp,Sp,Tp])} +function ar(){Zq();return Ad(ud(Tf,1),vJ,64,0,[Wq,Xq,Yq])} +function SC(){QC();return Ad(ud(yi,1),vJ,42,0,[OC,NC,PC])} +function dI(){bI();return Ad(ud(Qj,1),vJ,48,0,[ZH,_H,aI])} +function iv(a,b,c,d){dv(a,b)&&zt(Md(Hl(a.c,Fg),32),b,c,d)} +function gD(a,b,c,d){this.b=a;this.c=b;this.a=c;this.d=d} +function mC(a,b,c){this.a=a;this.d=b;this.c=null;this.b=c} +function mH(a,b){this.c=0;this.d=b;this.b=17488;this.a=a} +function UB(a,b){var c;c=NB;NB=a;try{b.C()}finally{NB=c}} +function Gn(a){var b;b=a.f;while(!!b&&!b.a){b=b.f}return b} +function Rd(a){TI(a==null||be(a)&&!(a.lc===sk));return a} +function Tb(a){if(a.k){a.e!==yJ&&a.O();a.i=null}return a} +function Wz(a){if(!Uz){return a}return $wnd.Polymer.dom(a)} +function pD(c,a,b){return c.setTimeout(cJ(a.Rb).bind(a),b)} +function Ud(a){return a.jc||Array.isArray(a)&&ud(pe,1)||pe} +function vr(a){sl('applyDefaultTheme',(ND(),a?true:false))} +function Tn(a,b,c,d,e){a.splice.apply(a,[b,c,d].concat(e))} +function Vo(a,b,c){this.a=a;this.c=b;this.b=c;yk.call(this)} +function Xo(a,b,c){this.a=a;this.c=b;this.b=c;yk.call(this)} +function To(a,b,c){this.b=a;this.d=b;this.c=c;this.a=new Pb} +function Iu(a,b){de(b.eb(a))===de((ND(),MD))&&a.b.delete(b)} +function oF(a,b){return b===a?'(this Map)':b==null?AJ:rk(b)} +function Yb(a,b){var c;c=TD(a.jc);return b==null?c:c+': '+b} +function oI(a,b){var c;return rI(a,new bG,(c=new EI(b),c))} +function RI(a,b){if(a<0||a>b){throw dk(new FD(jL+a+kL+b))}} +function OI(a,b){if(a<0||a>=b){throw dk(new FD(jL+a+kL+b))}} +function SI(a,b){if(a<0||a>=b){throw dk(new cF(jL+a+kL+b))}} +function WC(a,b){Vd(a)?a.db(b):(a.handleEvent(b),undefined)} +function ew(a,b){Qz(b).forEach(pk(iw.prototype.nb,iw,[a]))} +function bw(a,b){Qz(b).forEach(pk(gw.prototype.nb,gw,[a.a]))} +function qk(a){function b(){} ;b.prototype=a||{};return new b} -function Nw(a,b){BA(b).forEach(hk(Sw.prototype.pb,Sw,[a.a]))} -function TA(a,b){if(!a.b&&a.c&&IH(b,a.g)){return}bB(a,b,true)} -function Vs(a,b){!!a.b&&T(a.b)?Y(a.b,b):ru(Fd(yl(a.c,Pg),73),b)} -function UC(a,b,c,d){a.b>0?QC(a,new dD(a,b,c,d)):VC(a,b,c,d)} -function gD(a,b,c,d){return iD(new $wnd.XMLHttpRequest,a,b,c,d)} -function Gn(a,b){a.updateComplete.then(_I(function(){b.X()}))} -function fp(a){$wnd.HTMLImports.whenReady(_I(function(){a.X()}))} -function _A(a){if(a.c){a.d=true;bB(a,null,false);DC(new uB(a))}} -function nD(a){if(a.length>2){rD(a[0],'OS major');rD(a[1],cL)}} -function fH(a,b){if(b.$modCount!=a.$modCount){throw Xj(new hH)}} -function fn(a,b){var c;if(b.length!=0){c=new JA(b);a.e.set(Vh,c)}} -function Ju(a,b){var c,d;for(c=0;c-1} -function Zd(a){return Math.max(Math.min(a,2147483647),-2147483648)|0} -function ED(){ED=gk;DD=sb((AD(),td(nd(Ci,1),sJ,41,0,[zD,xD,yD,wD])))} -function Px(a,b){var c;c=b.f;Iy(Fd(yl(b.e.e.g.c,xe),9),a,c,(jB(b.a),b.g))} -function bt(a,b){var c,d;c=uv(a,8);d=UB(c,'pollInterval');SA(d,new ct(b))} -function XB(a,b){DB.call(this,a,b);this.b=new $wnd.Map;this.a=new aC(this)} -function XH(a,b){this.b=', ';this.d=a;this.e=b;this.c=this.d+(''+this.e)} -function us(a){this.n=new $wnd.Set;this.i=[];this.c=new Bs(this);this.k=a} -function Kw(a){!!a.a.e&&Hw(a.a.e);a.a.b&&Dz(a.a.f,'trailing');Ew(a.a)} -function Rw(a,b){Dz(b.f,null);RG(a,b.f);if(b.d){Hw(b.d);Iw(b.d,Zd(b.g))}} -function IB(a,b,c,d){var e;e=EA(a.c,b,c,d);gB(a.a,new OA(a,b,e,d,false))} -function _q(a,b){ol('Heartbeat exception: '+b.P());Zq(a,(wr(),tr),null)} -function VB(a,b){if(!a.b.has(b)){return false}return ZA(Fd(a.b.get(b),28))} -function LI(a,b){if(a<0||a>=b){throw Xj(new DE('Index: '+a+', Size: '+b))}} -function NI(a,b){if(a<0||a>=b){throw Xj(new bG('Index: '+a+', Size: '+b))}} -function Pu(a){Fd(yl(a.a,Of),10).b==(qq(),pq)||hq(Fd(yl(a.a,Of),10),pq)} -function dr(a){Jr(Fd(yl(a.c,_f),56),Fd(yl(a.c,xe),9).f);Zq(a,(wr(),tr),null)} -function xG(a){var b;fH(a.d,a);KI(a.b);b=Fd(a.a.dc(),43);a.b=wG(a);return b} -function pd(a,b,c,d,e,f){var g;g=qd(e,d);e!=10&&td(nd(a,f),b,c,e,g);return g} -function VC(a,b,c,d){var e,f;e=XC(a,b,c);f=wA(e,d);f&&e.length==0&&ZC(a,b,c)} -function Dq(a,b,c){c==null?HA(a).removeAttribute(b):HA(a).setAttribute(b,c)} -function Un(a,b){$wnd.customElements.whenDefined(a).then(function(){b.X()})} -function Lq(a){Gq();!$wnd.WebComponents||$wnd.WebComponents.ready?Iq(a):Hq(a)} -function FI(a,b){return od(b)!=10&&td(K(b),b.ic,b.__elementTypeId$,od(b),a),a} -function K(a){return Ud(a)?kj:Rd(a)?Ui:Qd(a)?Ri:Od(a)?a.hc:rd(a)?a.hc:Nd(a)} -function Ys(a,b){b&&!a.b?(a.b=new $(a.c)):!b&&!!a.b&&S(a.b)&&P(a.b,new $s(a))} -function JA(a){this.a=new $wnd.Set;a.forEach(hk(KA.prototype.pb,KA,[this.a]))} -function ay(a){var b;b=HA(a);while(b.firstChild){b.removeChild(b.firstChild)}} -function rt(a){var b;if(a==null){return false}b=Md(a);return !IF('DISABLED',b)} -function ud(a){var b,c,d;b=a&EJ;c=a>>22&EJ;d=a<0?1048575:0;return vd(b,c,d)} -function nw(a,b){var c,d,e;e=Zd(rE(a[NK]));d=uv(b,e);c=a['key'];return UB(d,c)} -function wb(a,b){var c;MI(b);c=a[':'+b];II(!!c,td(nd(ej,1),sJ,1,5,[b]));return c} -function yq(a,b){if(IF(b.substr(0,a.length),a)){return RF(b,a.length)}return b} -function TG(a,b,c){for(;ca||a>b){throw Xj(new EE('fromIndex: 0, toIndex: '+a+', length: '+b))}} -function DF(a,b,c){if(a==null){debugger;throw Xj(new HE)}this.a=DJ;this.d=a;this.b=b;this.c=c} -function _v(a,b,c,d,e){if(!Pv(a,b)){debugger;throw Xj(new HE)}Zt(Fd(yl(a.c,Fg),26),b,c,d,e)} -function $v(a,b,c,d,e,f){if(!Pv(a,b)){debugger;throw Xj(new HE)}Yt(Fd(yl(a.c,Fg),26),b,c,d,e,f)} -function Nx(a,b,c,d){var e,f,g;g=c[GK];e="path='"+mb(g)+"'";f=new hz(a,g);Ex(a,b,d,f,null,e)} -function xx(a,b,c,d){var e;e=uv(d,a);TB(e,hk(dA.prototype.M,dA,[b,c]));return SB(e,new fA(b,c))} -function Uq(c,a){var b=c.getConfig(a);if(b===null||b===undefined){return null}else{return b+''}} -function Tq(c,a){var b=c.getConfig(a);if(b===null||b===undefined){return null}else{return vF(b)}} -function tu(b){if(b.readyState!=1){return false}try{b.send();return true}catch(a){return false}} -function ju(a){if(fu!=a.a||a.c.length==0){return}a.b=true;a.a=new lu(a);cq((Gc(),Fc),new pu(a))} -function Xk(a,b){if(!b){Ts(Fd(yl(a.a,pg),17))}else{It(Fd(yl(a.a,Bg),13));js(Fd(yl(a.a,ng),19),b)}} -function er(a,b,c){T(b)&&Ft(Fd(yl(a.c,Bg),13));jr(c)||$q(a,'Invalid JSON from server: '+c,null)} -function Jr(a,b){ll&&bE($wnd.console,'Setting heartbeat interval to '+b+'sec.');a.a=b;Hr(a)} -function NC(b,c,d){return _I(function(){var a=Array.prototype.slice.call(arguments);d.Cb(b,c,a)})} -function Rc(b,c){Gc();function d(){var a=_I(Oc)(b);a&&$wnd.setTimeout(d,c)} +function bE(a){if(a.Xb()){return null}var b=a.i;return lk[b]} +function Lt(a){a.a=It;if(!a.b){return}ws(Md(Hl(a.d,pg),18))} +function px(a,b,c){return a.set(c,hA(hB(Fu(b.e,1),c),b.b[c]))} +function Tz(a,b,c,d){return a.splice.apply(a,[b,c].concat(d))} +function oD(c,a,b){return c.setInterval(cJ(a.Rb).bind(a),b)} +function Fb(){Db();return Ad(ud(ie,1),vJ,52,0,[Bb,Cb,Ab,zb])} +function KC(){IC();return Ad(ud(xi,1),vJ,43,0,[HC,FC,GC,EC])} +function cb(){return $wnd.vaadinPush&&$wnd.vaadinPush.SockJS} +function cq(a){a?($wnd.location=a):$wnd.location.reload(false)} +function VB(a){this.a=a;this.b=[];this.c=new $wnd.Set;CB(this)} +function sG(){this.a=new vG(this);this.b=new IG(this);qG(this)} +function ID(a,b){Sb(this);this.f=b;this.g=a;Tb(this);this.O()} +function wn(a,b){a.updateComplete.then(cJ(function(){b.V()}))} +function _D(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.Sb(b))} +function qG(a){var b,c;c=a;b=c.$modCount|0;c.$modCount=b+1} +function pG(a,b){if(b.$modCount!=a.$modCount){throw dk(new rG)}} +function oA(a){if(a.c){a.d=true;qA(a,null,false);SB(new JA(a))}} +function vC(a){if(a.length>2){zC(a[0],'OS major');zC(a[1],WK)}} +function gA(a,b){if(!a.b&&a.c&&SG(b,a.g)){return}qA(a,b,true)} +function vs(a,b){!!a.b&&V(a.b)?$(a.b,b):Vt(Md(Hl(a.c,Pg),76),b)} +function qA(a,b,c){var d;d=a.g;a.c=c;a.g=b;vA(a.a,new PA(a,d,b))} +function ku(a,b){var c,d;for(c=0;c-1} +function ee(a){return Math.max(Math.min(a,2147483647),-2147483648)|0} +function Cc(b){zc();return function(){return Dc(b,this,arguments);var a}} +function tc(){if(Date.now){return Date.now()}return (new Date).getTime()} +function gu(a,b){if(b==null){debugger;throw dk(new JD)}return a.a.get(b)} +function hu(a,b){if(b==null){debugger;throw dk(new JD)}return a.a.has(b)} +function iB(a,b){if(!a.b.has(b)){return false}return mA(Md(a.b.get(b),13))} +function hH(a,b){QI(b);if(a.c>22&GJ;d=a<0?1048575:0;return Cd(b,c,d)} +function DF(a){var b;pG(a.d,a);NI(a.b);b=Md(a.a.ac(),45);a.b=CF(a);return b} +function rI(a,b,c){var d;lI(a);d=new BI;d.a=b;a.a.hc(new FI(d,c));return d.a} +function wd(a,b,c,d,e,f){var g;g=xd(e,d);e!=10&&Ad(ud(a,f),b,c,e,g);return g} +function qu(a){Md(Hl(a.a,Of),12).b==(Up(),Tp)||Lp(Md(Hl(a.a,Of),12),Tp)} +function Gq(a){kr(Md(Hl(a.c,_f),57),Md(Hl(a.c,De),9).d);Aq(a,(Zq(),Wq),null)} +function MC(){MC=ok;LC=ub((IC(),Ad(ud(xi,1),vJ,43,0,[HC,FC,GC,EC])))} +function Hv(){var a;Hv=ok;Gv=(a=[],a.push(new Bx),a.push(new Dz),a);Fv=new Lv} +function sx(a){var b;b=Wz(a);while(b.firstChild){b.removeChild(b.firstChild)}} +function Yz(a){this.a=new $wnd.Set;a.forEach(pk(Zz.prototype.nb,Zz,[this.a]))} +function jc(a){Sb(this);this.g=!a?null:Yb(a,a.N());this.f=a;Tb(this);this.O()} +function kc(a){Sb(this);Tb(this);this.e=a;Ub(this,a);this.g=a==null?AJ:rk(a)} +function mq(a){hq();!$wnd.WebComponents||$wnd.WebComponents.ready?jq(a):iq(a)} +function Kn(a,b){$wnd.customElements.whenDefined(a).then(function(){b.V()})} +function eq(a,b,c){c==null?Wz(a).removeAttribute(b):Wz(a).setAttribute(b,c)} +function _F(a,b,c){for(;ca||a>b){throw dk(new GD('fromIndex: 0, toIndex: '+a+', length: '+b))}} +function EE(a,b,c){if(a==null){debugger;throw dk(new JD)}this.a=FJ;this.d=a;this.b=b;this.c=c} +function kv(a,b,c,d,e){if(!$u(a,b)){debugger;throw dk(new JD)}Bt(Md(Hl(a.c,Fg),32),b,c,d,e)} +function jv(a,b,c,d,e,f){if(!$u(a,b)){debugger;throw dk(new JD)}At(Md(Hl(a.c,Fg),32),b,c,d,e,f)} +function dx(a,b,c,d){var e,f,g;g=c[xK];e="path='"+ob(g)+"'";f=new Ky(a,g);Ww(a,b,d,f,null,e)} +function fv(a,b){var c;if(b!=a.e){c=b.a;!!c&&(uw(),!!c[DK])&&Aw((uw(),c[DK]));nv(a,b);b.f=null}} +function tx(a,b){var c;c=Md(b.d.get(a),44);b.d.delete(a);if(!c){debugger;throw dk(new JD)}c.Cb()} +function Pw(a,b,c,d){var e;e=Fu(d,a);gB(e,pk(iy.prototype.H,iy,[b,c]));return fB(e,new ky(b,c))} +function aC(b,c,d){return cJ(function(){var a=Array.prototype.slice.call(arguments);d.yb(b,c,a)})} +function Xc(b,c){Mc();function d(){var a=cJ(Uc)(b);a&&$wnd.setTimeout(d,c)} $wnd.setTimeout(d,c)} -function CI(a){if(a.b){throw Xj(new qF("Stream already terminated, can't be modified or used"))}} -function Lc(a){if(!a.j){a.j=true;!a.f&&(a.f=new Tc(a));Rc(a.f,1);!a.i&&(a.i=new Vc(a));Rc(a.i,50)}} -function wr(){wr=gk;tr=new yr('HEARTBEAT',0,0);ur=new yr('PUSH',1,1);vr=new yr('XHR',2,2)} -function qq(){qq=gk;nq=new rq('INITIALIZING',0);oq=new rq('RUNNING',1);pq=new rq('TERMINATED',2)} -function ap(a,b){var c,d;c=new tp(a);d=new $wnd.Function(a);jp(a,new Ap(d),new Cp(b,c),new Ep(b,c))} -function by(a,b){var c;c=Fd(b.d.get(a),42);b.d.delete(a);if(!c){debugger;throw Xj(new HE)}c.Gb()} -function AI(a){var b,c;b=IF(typeof(b),pJ)?null:new HI;if(!b){return}_H();c=(null,'info');GI(c,a.a)} -function _b(a){var b;if(a!=null){b=a[wJ];if(b){return b}}return Td(a,TypeError)?new zF(a):new ec(a)} -function uq(a,b){var c;if(a==null){return null}c=tq('context://',b,a);c=tq('base://','',c);return c} -function Yj(a){var b;b=a.h;if(b==0){return a.l+a.m*GJ}if(b==1048575){return a.l+a.m*GJ-FJ}return a} -function ls(a,b){if(b==-1){return true}if(b==a.f+1){return true}if(a.f==-1){return true}return false} -function wG(a){if(a.a.cc()){return true}if(a.a!=a.c){return false}a.a=new mH(a.d.a);return a.a.cc()} -function tI(a){if(mI){return pd(Lj,pL,80,0,0,1)}return Fd(UG(a.a,pd(Lj,pL,80,a.a.a.length,0,1)),323)} -function fw(a,b){var c;if(Pd(a,29)){c=Fd(a,29);Zd((MI(b),b))==2?HB(c,(jB(c.a),c.c.length)):FB(c)}} -function Wv(a,b){var c;if(b!=a.e){c=b.a;!!c&&(cx(),!!c[MK])&&ix((cx(),c[MK]));cw(a,b);b.f=null}} -function jH(a){var b,c,d;for(c=0,d=a.length;ca.length?(d=a.length):(d=c);return a.substr(e,d-e)} -function Wt(a,b,c,d){var e;e={};e[VJ]=AK;e[BK]=Object(b);e[AK]=c;!!d&&(e['data']=d,undefined);$t(a,e)} -function td(a,b,c,d,e){e.hc=a;e.ic=b;e.jc=kk;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e} -function ND(b){var c=b.handler;if(!c){c=_I(function(a){OD(b,a)});c.listener=b;b.handler=c}return c} -function oE(c){return $wnd.JSON.stringify(c,function(a,b){if(a=='$H'){return undefined}return b},0)} -function Sc(b,c){Gc();var d=$wnd.setInterval(function(){var a=_I(Oc)(b);!a&&$wnd.clearInterval(d)},c)} -function qm(a,b){var c;c=new $wnd.Map;b.forEach(hk(Nm.prototype.M,Nm,[a,c]));c.size==0||wm(new Pm(c))} -function Fk(a,b){var c;c='/'.length;if(!IF(b.substr(b.length-c,c),'/')){debugger;throw Xj(new HE)}a.c=b} -function Nu(a,b){var c;c=!!b.a&&!NE((LE(),JE),VA(UB(uv(b,0),FK)));if(!c||!b.f){return c}return Nu(a,b.f)} -function px(a,b){var c;if(b.d.has(a)){debugger;throw Xj(new HE)}c=UD(b.b,a,new zz(b),false);b.d.set(a,c)} -function aH(a){var b,c,d,e;e=1;for(c=0,d=a.length;c-129&&a<128){b=a+128;c=(xF(),wF)[b];!c&&(c=wF[b]=new rF(a));return c}return new rF(a)} -function zw(a){var b,c;c=yw(a);b=a.a;if(!a.a){b=c.Kb(a);if(!b){debugger;throw Xj(new HE)}zv(a,b)}xw(a,b);return b} -function gB(a,b){var c;if(b.Pb()!=a.b){debugger;throw Xj(new HE)}c=yA(a.a);c.forEach(hk(LC.prototype.pb,LC,[a,b]))} -function vI(a,b){var c;(kI?(sI(a),true):lI?(_H(),true):oI?(_H(),false):nI&&(_H(),false))&&(c=new jI(b),qI(a,c))} -function In(a,b){var c;Hn==null&&(Hn=xA());c=Ld(Hn.get(a),$wnd.Set);if(c==null){c=new $wnd.Set;Hn.set(a,c)}c.add(b)} -function Bv(a,b){this.c=new $wnd.Map;this.i=new $wnd.Set;this.b=new $wnd.Set;this.e=new $wnd.Map;this.d=a;this.g=b} -function am(a){$wnd.Vaadin.Flow.setScrollPosition?$wnd.Vaadin.Flow.setScrollPosition(a):$wnd.scrollTo(a[0],a[1])} -function Xq(a){a.b=null;Fd(yl(a.c,Bg),13).b&&Ft(Fd(yl(a.c,Bg),13));kl('connection-lost');Jr(Fd(yl(a.c,_f),56),0)} -function ot(a){if(VB(uv(Fd(yl(a.a,bh),11).e,5),zK)){return Md(VA(UB(uv(Fd(yl(a.a,bh),11).e,5),zK)))}return null} -function XA(a){var b;jB(a.a);if(a.c){b=(jB(a.a),a.g);if(b==null){return null}return jB(a.a),Md(a.g)}else{return null}} -function lx(a){var b;b=Id(bx.get(a));if(b==null){b=Id(new $wnd.Function(AK,SK,'return ('+a+')'));bx.set(a,b)}return b} -function gp(a,b,c){var d;d=Jd(c.get(a));if(d==null){d=[];d.push(b);c.set(a,d);return true}else{d.push(b);return false}} -function uE(c){var a=[];for(var b in c){Object.prototype.hasOwnProperty.call(c,b)&&b!='$H'&&a.push(b)}return a} -function wx(a,b){var c,d;d=a.f;if(b.c.has(d)){debugger;throw Xj(new HE)}c=new GC(new xz(a,b,d));b.c.set(d,c);return c} -function Sv(a,b){var c,d,e;e=BA(a.a);for(c=0;c0){c=Fd(a.b.splice(0,1)[0],28);wn(c,b)||aw(Fd(yl(a.c,bh),11),c);EC()}} -function Cc(a,b){tc();var c;c=Ob;if(c){if(c==qc){return}c.N(a);return}if(b){Bc(Pd(a,23)?Fd(a,23).R():a)}else{dG();Sb(a,cG,'')}} -function jk(a){var b;if(Array.isArray(a)&&a.jc===kk){return RE(K(a))+'@'+(b=M(a)>>>0,b.toString(16))}return a.toString()} -function vq(a){var b,c;b=Fd(yl(a.a,xe),9).c;c='/'.length;if(!IF(b.substr(b.length-c,c),'/')){debugger;throw Xj(new HE)}return b} -function um(){km();var a,b;--jm;if(jm==0&&im.length!=0){try{for(b=0;b1} -function hl(){this.a=new tD($wnd.navigator.userAgent);this.a.b?'ontouchstart' in window:this.a.f?!!navigator.msMaxTouchPoints:gl()} -function ep(a){this.b=new $wnd.Set;this.a=new $wnd.Map;this.d=!!($wnd.HTMLImports&&$wnd.HTMLImports.whenReady);this.c=a;Zo(this)} -function qr(a){this.c=a;gq(Fd(yl(a,Of),10),new Ar(this));MD($wnd,'offline',new Cr(this),false);MD($wnd,'online',new Er(this),false)} -function AD(){AD=gk;zD=new BD('STYLESHEET',0);xD=new BD('JAVASCRIPT',1);yD=new BD('JS_MODULE',2);wD=new BD('DYNAMIC_IMPORT',3)} -function Nn(a){var b;if(Hn==null){return}b=Ld(Hn.get(a),$wnd.Set);if(b!=null){Hn.delete(a);b.forEach(hk(io.prototype.pb,io,[]))}} -function nC(a){var b;a.d=true;mC(a);a.e||CC(new sC(a));if(a.c.size!=0){b=a.c;a.c=new $wnd.Set;b.forEach(hk(wC.prototype.pb,wC,[]))}} -function zx(a){var b;if(!a.b){debugger;throw Xj(new IE('Cannot bind shadow root to a Node'))}b=uv(a.e,20);rx(a);return SB(b,new bA(a))} -function Cx(a){var b;b=Md(VA(UB(uv(a,0),'tag')));if(b==null){debugger;throw Xj(new IE('New child must have a tag'))}return YD($doc,b)} -function au(a,b,c,d,e){var f;f={};f[VJ]='mSync';f[BK]=sE(b.d);f['feature']=Object(c);f['property']=d;f[$J]=e==null?null:e;$t(a,f)} -function al(a,b,c){var d;if(a==c.d){d=new $wnd.Function('callback','callback();');d.call(null,b);return LE(),true}return LE(),false} -function bd(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} -function Fn(a){return typeof a.update==cJ&&a.updateComplete instanceof Promise&&typeof a.shouldUpdate==cJ&&typeof a.firstUpdated==cJ} -function oF(a){var b;b=kF(a);if(b>3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} -function OE(a){if(a>=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} -function fF(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;cd&&sd(b,d,null);return b} -function tv(a,b){var c,d;d=b;c=Fd(a.c.get(d),39);if(!c){c=new JB(b,a);a.c.set(d,c)}if(!Pd(c,29)){debugger;throw Xj(new HE)}return Fd(c,29)} -function uv(a,b){var c,d;d=b;c=Fd(a.c.get(d),39);if(!c){c=new XB(b,a);a.c.set(d,c)}if(!Pd(c,40)){debugger;throw Xj(new HE)}return Fd(c,40)} -function JF(a,b){MI(a);if(b==null){return false}if(IF(a,b)){return true}return a.length==b.length&&IF(a.toLowerCase(),b.toLowerCase())} -function Xv(a){GB(tv(a.e,24),hk(hw.prototype.pb,hw,[]));rv(a.e,hk(lw.prototype.M,lw,[]));a.a.forEach(hk(jw.prototype.M,jw,[a]));a.d=true} -function pm(a){ll&&($wnd.console.log('Finished loading eager dependencies, loading lazy.'),undefined);a.forEach(hk(Zm.prototype.M,Zm,[]))} -function Ir(a){nk(a.c);ll&&($wnd.console.debug('Sending heartbeat request...'),undefined);gD(a.d,null,'text/plain; charset=utf-8',new Nr(a))} -function qE(b){var c;try{return c=$wnd.JSON.parse(b),c}catch(a){a=Wj(a);if(Pd(a,7)){throw Xj(new vE("Can't parse "+b))}else throw Xj(a)}} -function Wl(a){this.d=a;'scrollRestoration' in history&&(history.scrollRestoration='manual');MD($wnd,SJ,new Gp(this),false);Tl(this,true)} -function kr(a,b){if(a.b!=b){return}a.b=null;a.a=0;kl('connected');ll&&($wnd.console.log('Re-established connection to server'),undefined)} -function Zt(a,b,c,d,e){var f;f={};f[VJ]='attachExistingElementById';f[BK]=sE(b.d);f[CK]=Object(c);f[DK]=Object(d);f['attachId']=e;$t(a,f)} -function ZI(a){XI();var b,c,d;c=':'+a;d=WI[c];if(d!=null){return Zd((MI(d),d))}d=UI[c];b=d==null?YI(a):Zd((MI(d),d));$I();WI[c]=b;return b} -function M(a){return Ud(a)?ZI(a):Rd(a)?Zd((MI(a),a)):Qd(a)?(MI(a),a)?1231:1237:Od(a)?a.w():rd(a)?TI(a):!!a&&!!a.hashCode?a.hashCode():TI(a)} -function I(a,b){return Ud(a)?IF(a,b):Rd(a)?(MI(a),a===b):Qd(a)?(MI(a),a===b):Od(a)?a.u(b):rd(a)?a===b:!!a&&!!a.equals?a.equals(b):Yd(a)===Yd(b)} -function Bl(a,b,c){if(a.a.has(b)){debugger;throw Xj(new IE((QE(b),'Registry already has a class of type '+b.j+' registered')))}a.a.set(b,c)} -function xw(a,b){ww();var c;if(a.g.f){debugger;throw Xj(new IE('Binding state node while processing state tree changes'))}c=yw(a);c.Jb(a,b,uw)} -function OA(a,b,c,d,e){this.e=a;if(c==null){debugger;throw Xj(new HE)}if(d==null){debugger;throw Xj(new HE)}this.c=b;this.d=c;this.a=d;this.b=e} -function dy(a,b){var c,d;d=UB(b,WK);jB(d.a);d.c||aB(d,a.getAttribute(WK));c=UB(b,XK);Vn(a)&&(jB(c.a),!c.c)&&!!a.style&&aB(c,a.style.display)} -function bn(a,b,c,d){var e,f;if(!d){f=Fd(yl(a.g.c,Ye),59);e=Fd(f.a.get(c),33);if(!e){f.b[b]=c;f.a.set(c,vF(b));return vF(b)}return e}return d} -function qy(a,b){var c,d;while(b!=null){for(c=a.length-1;c>-1;c--){d=Fd(a[c],6);if(b.isSameNode(d.a)){return d.d}}b=HA(b.parentNode)}return -1} -function en(a,b,c){var d;if(cn(a.a,c)){d=Fd(a.e.get(Vh),77);if(!d||!d.a.has(c)){return}UA(UB(b,c),a.a[c]).X()}else{VB(b,c)||aB(UB(b,c),null)}} -function pn(a,b,c){var d,e;e=Rv(Fd(yl(a.c,bh),11),Zd((MI(b),b)));if(e.c.has(1)){d=new $wnd.Map;TB(uv(e,1),hk(Dn.prototype.M,Dn,[d]));c.set(b,d)}} -function WC(a,b,c){var d,e;e=Ld(a.c.get(b),$wnd.Map);if(e==null){e=new $wnd.Map;a.c.set(b,e)}d=Jd(e.get(c));if(d==null){d=[];e.set(c,d)}return d} -function py(a){var b;nx==null&&(nx=new $wnd.Map);b=Id(nx.get(a));if(b==null){b=Id(new $wnd.Function(AK,SK,'return ('+a+')'));nx.set(a,b)}return b} -function vs(){if($wnd.performance&&$wnd.performance.timing){return (new Date).getTime()-$wnd.performance.timing.responseStart}else{return -1}} -function Yw(a,b,c,d){var e,f,g,h,i;i=Kd(a.jb());h=d.d;for(g=0;g=1&&rD(a[0],'OS major');if(a.length>=2){b=KF(a[1],UF(45));if(b>-1){c=a[1].substr(0,b-0);rD(c,cL)}else{rD(a[1],cL)}}} -function rD(b,c){var d;try{return lF(b)}catch(a){a=Wj(a);if(Pd(a,7)){d=a;dG();c+' version parsing failed for: '+b+' '+d.P()}else throw Xj(a)}return -1} -function Sb(a,b,c){var d,e,f,g,h;Tb(a);for(e=(a.j==null&&(a.j=pd(lj,sJ,5,0,0,1)),a.j),f=0,g=e.length;f0){ml('Scheduling heartbeat in '+a.a+' seconds');ok(a.c,a.a*1000)}else{ll&&($wnd.console.debug('Disabling heartbeat'),undefined);nk(a.c)}} -function nt(a){var b,c,d,e;b=UB(uv(Fd(yl(a.a,bh),11).e,5),'parameters');e=(jB(b.a),Fd(b.g,6));d=uv(e,6);c=new $wnd.Map;TB(d,hk(zt.prototype.M,zt,[c]));return c} -function Ex(a,b,c,d,e,f){var g,h;if(!hy(a.e,b,e,f)){return}g=Kd(d.jb());if(iy(g,b,e,f,a)){if(!c){h=Fd(yl(b.g.c,$e),48);h.a.add(b.d);rn(h)}zv(b,g);zw(b)}c||EC()} -function aw(a,b){var c,d;if(!b){debugger;throw Xj(new HE)}d=b.e;c=d.e;if(sn(Fd(yl(a.c,$e),48),b)||!Uv(a,c)){return}au(Fd(yl(a.c,Fg),26),c,d.d,b.f,(jB(b.a),b.g))} -function jv(a,b){var c;c=$wnd.location.pathname;if(c==null){debugger;throw Xj(new IE('window.location.path should never be null'))}if(c!=a){return false}return b} -function RC(a,b,c){var d;if(!b){throw Xj(new AF('Cannot add a handler with a null type'))}a.b>0?QC(a,new bD(a,b,c)):(d=WC(a,b,null),d.push(c));return new aD(a,b,c)} -function cy(a,b){var c,d,e;dy(a,b);e=UB(b,WK);jB(e.a);e.c&&Iy(Fd(yl(b.e.g.c,xe),9),a,WK,(jB(e.a),e.g));c=UB(b,XK);jB(c.a);if(c.c){d=(jB(c.a),jk(c.g));SD(a.style,d)}} -function hq(a,b){if(b.c!=a.b.c+1){throw Xj(new pF('Tried to move from state '+qb(a.b)+' to '+(b.b!=null?b.b:''+b.c)+' which is not allowed'))}a.b=b;TC(a.a,new kq(a))} -function ys(a){var b;if(a==null){return null}if(!IF(a.substr(0,9),'for(;;);[')||(b=']'.length,!IF(a.substr(a.length-b,b),']'))){return null}return SF(a,9,a.length-1)} -function bk(b,c,d,e){ak();var f=$j;$moduleName=c;$moduleBase=d;Vj=e;function g(){for(var a=0;a=0;d--){if(IF(a[d].d,b)||IF(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a} -function Yt(a,b,c,d,e,f){var g;g={};g[VJ]='attachExistingElement';g[BK]=sE(b.d);g[CK]=Object(c);g[DK]=Object(d);g['attachTagName']=e;g['attachIndex']=Object(f);$t(a,g)} -function Wn(a){var b=typeof $wnd.Polymer===cJ&&$wnd.Polymer.Element&&a instanceof $wnd.Polymer.Element;var c=a.constructor.polymerElementVersion!==undefined;return b||c} -function Xw(a,b,c,d){var e,f,g,h;h=tv(b,c);jB(h.a);if(h.c.length>0){f=Kd(a.jb());for(e=0;e<(jB(h.a),h.c.length);e++){g=Md(h.c[e]);dx(f,g,b,d)}}return EB(h,new _w(a,b,d))} -function oy(a,b){var c,d,e,f,g;c=HA(b).childNodes;for(e=0;ea.length?(d=a.length):(d=c);return a.substr(e,d-e)} +function yt(a,b,c,d){var e;e={};e[OJ]=rK;e[sK]=Object(b);e[rK]=c;!!d&&(e['data']=d,undefined);Ct(a,e)} +function Ad(a,b,c,d,e){e.jc=a;e.kc=b;e.lc=sk;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e} +function X(a,b,c){KE(b,'true')||KE(b,'false')?(a.a[c]=KE(b,'true'),undefined):(a.a[c]=b,undefined)} +function Wb(a){var b,c,d,e;for(b=(a.i==null&&(a.i=(cd(),e=bd.S(a),ed(e))),a.i),c=0,d=b.length;c-129&&a<128){b=a+128;c=(yE(),xE)[b];!c&&(c=xE[b]=new sE(a));return c}return new sE(a)} +function Kv(a){var b,c;c=Jv(a);b=a.a;if(!a.a){b=c.Gb(a);if(!b){debugger;throw dk(new JD)}Ku(a,b)}Iv(a,b);return b} +function oG(a){var b,c,d;d=1;for(c=new hG(a);c.a0){c=Md(a.b.splice(0,1)[0],13);mn(c,b)||lv(Md(Hl(a.c,Zg),10),c);TB()}} +function Fq(a,b){var c;if(b.a.b==(Up(),Tp)){if(a.b){yq(a);c=Md(Hl(a.c,Of),12);c.b!=Tp&&Lp(c,Tp)}!!a.d&&!!a.d.f&&vk(a.d)}} +function Bq(a,b,c){var d,e;c&&(e=c.b);rp(Md(Hl(a.c,Jf),25),'',b,'',null,null);d=Md(Hl(a.c,Of),12);d.b!=(Up(),Tp)&&Lp(d,Tp)} +function jq(a){var b,c,d,e;b=(e=new Xk,e.a=a,nq(e,kq(a)),e);c=new al(b);gq.push(c);d=kq(a).getConfig('uidl');_k(c,d)} +function mn(a,b){var c,d;c=Sd(b.get(a.e.e.d),$wnd.Map);if(c!=null&&c.has(a.f)){d=c.get(a.f);pA(a,d);return true}return false} +function HG(a,b,c){var d;d=a.a.get(b);a.a.set(b,c===undefined?null:c);if(d===undefined){++a.c;qG(a.b)}else{++a.d}return d} +function OH(a){var b,c;if(a.b){return a.b}c=IH?null:a.d;while(c){b=IH?null:c.b;if(b){return b}c=IH?null:c.d}return vH(),uH} +function rk(a){var b;if(Array.isArray(a)&&a.lc===sk){return TD(M(a))+'@'+(b=O(a)>>>0,b.toString(16))}return a.toString()} +function Mw(a,b){var c,d;c=Eu(b,11);for(d=0;d<(yA(c.a),c.c.length);d++){Wz(a).classList.add(Td(c.c[d]))}return TA(c,new gz(a))} +function Zp(a){var b,c;b=Md(Hl(a.a,De),9).b;c='/'.length;if(!JE(b.substr(b.length-c,c),'/')){debugger;throw dk(new JD)}return b} +function yw(a,b){if(typeof a.get===fJ){var c=a.get(b);if(typeof c===dJ&&typeof c[WJ]!==sJ){return {nodeId:c[WJ]}}}return null} +function Aw(c){uw();var b=c['}p'].promises;b!==undefined&&b.forEach(function(a){a[1](Error('Client is resynchronizing'))})} +function Ic(a,b){zc();var c;c=Qb;if(c){if(c==wc){return}c.I(a);return}if(b){Hc(Wd(a,31)?Md(a,31).P():a)}else{eF();Vb(a,dF,'')}} +function Dn(a){var b;if(xn==null){return}b=Sd(xn.get(a),$wnd.Set);if(b!=null){xn.delete(a);b.forEach(pk(Zn.prototype.nb,Zn,[]))}} +function Tv(a,b,c,d){Nv();JE(HK,a)?c.forEach(pk(kw.prototype.H,kw,[d])):Qz(c).forEach(pk(Uv.prototype.nb,Uv,[]));Yx(b.b,b.c,b.a,a)} +function rb(a){qb();a[nJ]=Td(nF(pb,a[nJ],a[nJ]));a[uJ]=Td(nF(pb,a[uJ],a[uJ]));a.transports=[a.transport,a.fallbackTransport]} +function _v(a){if(a.a.b){Tv(IK,a.a.b,a.a.a,null);if(a.b.has(HK)){a.a.g=a.a.b;a.a.i=a.a.a}a.a.b=null;a.a.a=null}else{Pv(a.a)}} +function Zv(a){if(a.a.b){Tv(HK,a.a.b,a.a.a,a.a.j);a.a.b=null;a.a.a=null;a.a.j=null}else !!a.a.g&&Tv(HK,a.a.g,a.a.i,null);Pv(a.a)} +function rl(){return /iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==='MacIntel'&&navigator.maxTouchPoints>1} +function ql(){this.a=new BC($wnd.navigator.userAgent);this.a.b?'ontouchstart' in window:this.a.f?!!navigator.msMaxTouchPoints:pl()} +function No(a){this.b=new $wnd.Set;this.a=new $wnd.Map;this.d=!!($wnd.HTMLImports&&$wnd.HTMLImports.whenReady);this.c=a;Go(this)} +function Tq(a){this.c=a;Kp(Md(Hl(a,Of),12),new br(this));UC($wnd,'offline',new dr(this),false);UC($wnd,'online',new fr(this),false)} +function IC(){IC=ok;HC=new JC('STYLESHEET',0);FC=new JC('JAVASCRIPT',1);GC=new JC('JS_MODULE',2);EC=new JC('DYNAMIC_IMPORT',3)} +function Dt(a,b,c,d,e){var f;f={};f[OJ]='mSync';f[sK]=vD(b.d);f['feature']=Object(c);f['property']=d;f[TJ]=e==null?null:e;Ct(a,f)} +function fl(a,b,c){var d;if(a==c.d){d=new $wnd.Function('callback','callback();');d.call(null,b);return ND(),true}return ND(),false} +function hB(a,b){var c;c=Md(a.b.get(b),13);if(!c){c=new rA(b,a,JE('innerHTML',b)&&a.d==1);a.b.set(b,c);vA(a.a,new NA(a,c))}return c} +function gE(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;c3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} +function QD(a){if(a>=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} +function jd(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error} +function Uw(a){var b;b=Td(iA(hB(Fu(a,0),'tag')));if(b==null){debugger;throw dk(new KD('New child must have a tag'))}return fD($doc,b)} +function Rw(a){var b;if(!a.b){debugger;throw dk(new KD('Cannot bind shadow root to a Node'))}b=Fu(a.e,20);Jw(a);return fB(b,new vz(a))} +function Wm(a,b){var c,d;d=Fu(a,1);if(!a.a){Kn(Td(iA(hB(Fu(a,0),'tag'))),new Zm(a,b));return}for(c=0;cd&&zd(b,d,null);return b} +function vx(a,b){var c,d;d=hB(b,OK);yA(d.a);d.c||pA(d,a.getAttribute(OK));c=hB(b,PK);Ln(a)&&(yA(c.a),!c.c)&&!!a.style&&pA(c,a.style.display)} +function KE(a,b){QI(a);if(b==null){return false}if(JE(a,b)){return true}return a.length==b.length&&JE(a.toLowerCase(),b.toLowerCase())} +function Nq(a,b){if(a.b!=b){return}a.b=null;a.a=0;tl('connected');ul&&($wnd.console.log('Re-established connection to server'),undefined)} +function Bt(a,b,c,d,e){var f;f={};f[OJ]='attachExistingElementById';f[sK]=vD(b.d);f[tK]=Object(c);f[uK]=Object(d);f['attachId']=e;Ct(a,f)} +function fw(a,b){if(b.e){!!b.b&&Tv(HK,b.b,b.a,null)}else{Tv(IK,b.b,b.a,null);Yv(b.f,ee(b.k))}if(b.b){ZF(a,b.b);b.b=null;b.a=null;b.j=null}} +function aJ(a){$I();var b,c,d;c=':'+a;d=ZI[c];if(d!=null){return ee((QI(d),d))}d=XI[c];b=d==null?_I(a):ee((QI(d),d));bJ();ZI[c]=b;return b} +function O(a){return _d(a)?aJ(a):Yd(a)?ee((QI(a),a)):Xd(a)?(QI(a),a)?1231:1237:Vd(a)?a.r():yd(a)?WI(a):!!a&&!!a.hashCode?a.hashCode():WI(a)} +function Kl(a,b,c){if(a.a.has(b)){debugger;throw dk(new KD((SD(b),'Registry already has a class of type '+b.j+' registered')))}a.a.set(b,c)} +function Iv(a,b){Hv();var c;if(a.g.f){debugger;throw dk(new KD('Binding state node while processing state tree changes'))}c=Jv(a);c.Fb(a,b,Fv)} +function bA(a,b,c,d,e){this.e=a;if(c==null){debugger;throw dk(new JD)}if(d==null){debugger;throw dk(new JD)}this.c=b;this.d=c;this.a=d;this.b=e} +function jr(a){vk(a.c);ul&&($wnd.console.debug('Sending heartbeat request...'),undefined);oC(a.d,null,'text/plain; charset=utf-8',new or(a))} +function Um(a,b,c,d){var e,f;if(!d){f=Md(Hl(a.g.c,df),60);e=Md(f.a.get(c),23);if(!e){f.b[b]=c;f.a.set(c,wE(b));return wE(b)}return e}return d} +function Ix(a,b){var c,d;while(b!=null){for(c=a.length-1;c>-1;c--){d=Md(a[c],6);if(b.isSameNode(d.a)){return d.d}}b=Wz(b.parentNode)}return -1} +function Xm(a,b,c){var d;if(Vm(a.a,c)){d=Md(a.e.get(Rh),82);if(!d||!d.a.has(c)){return}hA(hB(b,c),a.a[c]).V()}else{iB(b,c)||pA(hB(b,c),null)}} +function en(a,b,c){var d,e;e=av(Md(Hl(a.c,Zg),10),ee((QI(b),b)));if(e.c.has(1)){d=new $wnd.Map;gB(Fu(e,1),pk(tn.prototype.H,tn,[d]));c.set(b,d)}} +function hC(a,b,c){var d,e;e=Sd(a.c.get(b),$wnd.Map);if(e==null){e=new $wnd.Map;a.c.set(b,e)}d=Qd(e.get(c));if(d==null){d=[];e.set(c,d)}return d} +function Hx(a){var b;Fw==null&&(Fw=new $wnd.Map);b=Pd(Fw.get(a));if(b==null){b=Pd(new $wnd.Function(rK,KK,'return ('+a+')'));Fw.set(a,b)}return b} +function Xr(){if($wnd.performance&&$wnd.performance.timing){return (new Date).getTime()-$wnd.performance.timing.responseStart}else{return -1}} +function ow(a,b,c,d){var e,f,g,h,i;i=Rd(a.lb());h=d.d;for(g=0;g=1000?'error':d>=900?'warn':d>=800?'info':'log');JI(c,a.a)} +function Ld(a,b){if(_d(a)){return !!Kd[b]}else if(a.kc){return !!a.kc[b]}else if(Yd(a)){return !!Jd[b]}else if(Xd(a)){return !!Id[b]}return false} +function K(a,b){return _d(a)?JE(a,b):Yd(a)?(QI(a),de(a)===de(b)):Xd(a)?PD(a,b):Vd(a)?a.p(b):yd(a)?H(a,b):!!a&&!!a.equals?a.equals(b):de(a)===de(b)} +function yC(a){var b,c;a.length>=1&&zC(a[0],'OS major');if(a.length>=2){b=LE(a[1],VE(45));if(b>-1){c=a[1].substr(0,b-0);zC(c,WK)}else{zC(a[1],WK)}}} +function nv(a,b){if(!$u(a,b)){debugger;throw dk(new JD)}if(b==a.e){debugger;throw dk(new KD("Root node can't be unregistered"))}a.a.delete(b.d);Lu(b)} +function $u(a,b){if(!b){debugger;throw dk(new KD(AK))}if(b.g!=a){debugger;throw dk(new KD(BK))}if(b!=av(a,b.d)){debugger;throw dk(new KD(CK))}return true} +function Dx(a,b,c){var d,e;e=b.f;if(c.has(e)){debugger;throw dk(new KD("There's already a binding for "+e))}d=new VB(new qy(a,b));c.set(e,d);return d} +function Ku(a,b){var c;if(!(!a.a||!b)){debugger;throw dk(new KD('StateNode already has a DOM node'))}a.a=b;c=Nz(a.b);c.forEach(pk(Wu.prototype.nb,Wu,[a]))} +function Hl(a,b){if(!a.a.has(b)){debugger;throw dk(new KD((SD(b),'Tried to lookup type '+b.j+' but no instance has been registered')))}return a.a.get(b)} +function zC(b,c){var d;try{return mE(b)}catch(a){a=ck(a);if(Wd(a,7)){d=a;eF();c+' version parsing failed for: '+b+' '+d.N()}else throw dk(a)}return -1} +function Vb(a,b,c){var d,e,f,g,h;Wb(a);for(e=(a.j==null&&(a.j=wd(fj,vJ,5,0,0,1)),a.j),f=0,g=e.length;f0?dC(a,new mC(a,b,c)):(d=hC(a,b,null),d.push(c));return new lC} +function Cn(a,b){var c,d,e,f,g;f=a.f;d=a.e.e;g=Gn(d);if(!g){Cl(XJ+d.d+YJ);return}c=zn((yA(a.a),a.g));if(Mn(g.a)){e=In(g,d,f);e!=null&&Sn(g.a,e,c);return}b[f]=c} +function ir(a){if(a.a>0){vl('Scheduling heartbeat in '+a.a+' seconds');wk(a.c,a.a*1000)}else{ul&&($wnd.console.debug('Disabling heartbeat'),undefined);vk(a.c)}} +function Rs(a){var b,c,d,e;b=hB(Fu(Md(Hl(a.a,Zg),10).e,5),'parameters');e=(yA(b.a),Md(b.g,6));d=Fu(e,6);c=new $wnd.Map;gB(d,pk(bt.prototype.H,bt,[c]));return c} +function Ww(a,b,c,d,e,f){var g,h;if(!zx(a.e,b,e,f)){return}g=Rd(d.lb());if(Ax(g,b,e,f,a)){if(!c){h=Md(Hl(b.g.c,ff),51);h.a.add(b.d);gn(h)}Ku(b,g);Kv(b)}c||TB()} +function lv(a,b){var c,d;if(!b){debugger;throw dk(new JD)}d=b.e;c=d.e;if(hn(Md(Hl(a.c,ff),51),b)||!dv(a,c)){return}Dt(Md(Hl(a.c,Fg),32),c,d.d,b.f,(yA(b.a),b.g))} +function Do(){var a,b,c,d;b=$doc.head.childNodes;c=b.length;for(d=0;d=0;d--){if(JE(a[d].d,b)||JE(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a} +function At(a,b,c,d,e,f){var g;g={};g[OJ]='attachExistingElement';g[sK]=vD(b.d);g[tK]=Object(c);g[uK]=Object(d);g['attachTagName']=e;g['attachIndex']=Object(f);Ct(a,g)} +function Mn(a){var b=typeof $wnd.Polymer===fJ&&$wnd.Polymer.Element&&a instanceof $wnd.Polymer.Element;var c=a.constructor.polymerElementVersion!==undefined;return b||c} +function nw(a,b,c,d){var e,f,g,h;h=Eu(b,c);yA(h.a);if(h.c.length>0){f=Rd(a.lb());for(e=0;e<(yA(h.a),h.c.length);e++){g=Td(h.c[e]);vw(f,g,b,d)}}return TA(h,new rw(a,b,d))} +function Gx(a,b){var c,d,e,f,g;c=Wz(b).childNodes;for(e=0;ed&&(NI(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b=65536){b=55296+(a-65536>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&65535)}} -function yc(a){a&&Ic((Gc(),Fc));--oc;if(oc<0){debugger;throw Xj(new IE('Negative entryDepth value at exit '+oc))}if(a){if(oc!=0){debugger;throw Xj(new IE('Depth not 0'+oc))}if(sc!=-1){Dc(sc);sc=-1}}} -function Fy(a,b,c,d){var e,f,g,h,i,j,k;e=false;for(h=0;h2000){rc=a;sc=$wnd.setTimeout(Ec,10)}}if(oc++==0){Hc((Gc(),Fc));return true}return false} -function Vk(f,b,c){var d=f;var e=$wnd.Vaadin.Flow.clients[b];e.isActive=_I(function(){return d.cb()});e.getVersionInfo=_I(function(a){return {'flow':c}});e.debug=_I(function(){var a=d.a;return a.hb().Hb().Eb()})} -function ks(a){var b,c,d,e;if(a.i.length==0){return false}e=-1;for(b=0;b=f&&(NI(b,a.length),a.charCodeAt(b)!=32)){--b}if(b==f){return}d=a.substr(b+1,c-(b+1));e=QF(d,'\\.',0);nD(e)} -function Hu(a,b){var c,d,e,f,g,h;if(!b){debugger;throw Xj(new HE)}for(d=(g=uE(b),g),e=0,f=d.length;e but none was found. Appending instead."),undefined);dD($doc.head,a,b)} +function MH(a,b){var c,d,e,f,g,h,i;for(d=PH(a),f=0,h=d.length;fd&&(SI(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b=65536){b=55296+(a-65536>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&65535)}} +function Ec(a){a&&Oc((Mc(),Lc));--uc;if(uc<0){debugger;throw dk(new KD('Negative entryDepth value at exit '+uc))}if(a){if(uc!=0){debugger;throw dk(new KD('Depth not 0'+uc))}if(yc!=-1){Jc(yc);yc=-1}}} +function bC(a,b){var c,d,e,f;if(rD(b)==1){c=b;f=ee(uD(c[0]));switch(f){case 0:{e=ee(uD(c[1]));return d=e,Md(a.a.get(d),6)}case 1:case 2:return null;default:throw dk(new qE(UK+sD(c)));}}else{return null}} +function Ko(a,b,c,d,e){var f,g,h;h=bq(b);f=new ap(h);if(a.b.has(h)){!!c&&c.F(f);return}if(Po(h,c,a.a)){g=$doc.createElement(bK);g.src=h;g.type=e;g.async=false;g.defer=d;Qo(g,new bp(a),f);cD($doc.head,g)}} +function lr(a){this.c=new mr(this);this.b=a;kr(this,Md(Hl(a,De),9).d);this.d=Md(Hl(a,De),9).i;this.d=TC(this.d,'v-r=heartbeat');this.d=TC(this.d,hJ+(''+Md(Hl(a,De),9).n));Kp(Md(Hl(a,Of),12),new rr(this))} +function Wx(a,b,c,d,e){var f,g,h,i,j,k,l;f=false;for(i=0;i2000){xc=a;yc=$wnd.setTimeout(Kc,10)}}if(uc++==0){Nc((Mc(),Lc));return true}return false} +function Zk(f,b,c){var d=f;var e=$wnd.Vaadin.Flow.clients[b];e.isActive=cJ(function(){return d.cb()});e.getVersionInfo=cJ(function(a){return {'flow':c}});e.debug=cJ(function(){var a=d.a;return a.jb().Db().Ab()})} +function Nr(a){var b,c,d,e;if(a.g.length==0){return false}e=-1;for(b=0;b=f&&(SI(b,a.length),a.charCodeAt(b)!=32)){--b}if(b==f){return}d=a.substr(b+1,c-(b+1));e=RE(d,'\\.');vC(e)} +function iu(a,b){var c,d,e,f,g,h;if(!b){debugger;throw dk(new JD)}for(d=(g=xD(b),g),e=0,f=d.length;e=0;d--){ZF((g.a+=i,g),Md(c[d]));i='.'}return g.a} -function Z(a,b){var c,d,e,f,g;if(ab()){W(b.a)}else{f=(Fd(yl(a.c,xe),9).k?(e='vaadinPushSockJS-min.js'):(e='vaadinPushSockJS.js'),'VAADIN/static/push/'+e);ll&&bE($wnd.console,'Loading sockJS '+f);d=Fd(yl(a.c,Af),57);g=Fd(yl(a.c,xe),9).c+f;c=new jb(a,f,b);bp(d,g,c,false,gJ)}} -function sw(a,b){var c,d,e,f;f=nw(a,b);if($J in a){e=a[$J];aB(f,e)}else if('nodeValue' in a){d=Zd(rE(a['nodeValue']));c=Rv(b.g,d);if(!c){debugger;throw Xj(new HE)}c.f=b;aB(f,c)}else{debugger;throw Xj(new IE('Change should have either value or nodeValue property: '+Cq(a)))}} -function PC(a,b){var c,d,e,f,g,h;if(nE(b)==1){c=b;h=Zd(rE(c[0]));switch(h){case 0:{g=Zd(rE(c[1]));d=(f=g,Fd(a.a.get(f),6)).a;return d}case 1:return e=Jd(c[1]),e;case 2:return NC(Zd(rE(c[1])),Zd(rE(c[2])),Fd(yl(a.c,Fg),26));default:throw Xj(new pF(aL+oE(c)));}}else{return b}} -function hs(a,b){var c,d,e,f,g;ll&&($wnd.console.log('Handling dependencies'),undefined);c=new $wnd.Map;for(e=(ID(),td(nd(Di,1),sJ,51,0,[GD,FD,HD])),f=0,g=e.length;fa.a){a.a==0?ll&&bE($wnd.console,'Updating client-to-server id to '+b+' based on server'):tl('Server expects next client-to-server id to be '+b+' but we were going to use '+a.a+'. Will use '+b+'.');a.a=b}} -function P(a,b){if(!b){debugger;throw Xj(new HE)}switch(a.e.c){case 0:a.e=(Bb(),yb);a.b=b;break;case 1:ll&&($wnd.console.log('Closing push connection'),undefined);a.d.close();a.e=(Bb(),xb);b.I();break;case 2:case 3:throw Xj(new qF('Can not disconnect more than once'));default:throw Xj(new qF('Invalid state'));}} -function fy(a,b){var c,d,e,f,g,h;c=a.f;d=b.style;jB(a.a);if(a.c){h=(jB(a.a),Md(a.g));e=false;if(h.indexOf('!important')!=-1){f=YD($doc,b.tagName);g=f.style;g.cssText=c+': '+h+';';if(IF('important',QD(f.style,c))){TD(d,c,RD(f.style,c),'important');e=true}}e||(d.setProperty(c,h),undefined)}else{d.removeProperty(c)}} -function Vq(a){var b,c,d,e;XA((c=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(c,qK)))!=null&&jl('reconnectingText',XA((d=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(d,qK))));XA((e=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(e,rK)))!=null&&jl('offlineText',XA((b=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(b,rK))))} -function cp(a,b,c){var d,e,f;f=Aq(b);d=new tp(f);if(a.b.has(f)){!!c&&c.K(d);return}if(gp(f,c,a.a)){e=$doc.createElement('link');e.rel=kK;e.type='text/css';e.href=f;if((!fl&&(fl=new hl),fl).a.k||il()){Sc((Gc(),new kp(a,f,d)),10)}else{hp(e,new xp(a,f),d);(!fl&&(fl=new hl),fl).a.j&&ok(new mp(a,f,d),5000)}WD($doc.head,e)}} -function Op(a,b,c,d,e,f){var g,h,i;if(b==null&&c==null&&d==null){Fd(yl(a.a,xe),9).t?(h=Fd(yl(a.a,xe),9).o+'web-component/web-component-bootstrap.js',i=LD(h,'v-r=webcomponent-resync'),fD(i,new Sp(a)),undefined):Bq(e);return}g=Lp(b,c,d,f);if(!Fd(yl(a.a,xe),9).t){MD(g,lK,new $p(e),false);MD($doc,'keydown',new aq(e),false)}} -function rH(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} -function On(a,b){var c,d,e,f,g;c=HA(a).children;e=-1;for(f=0;f0){k=Ix(a,b);d=!k?null:HA(k.a).nextSibling}else{d=null}for(g=0;g=a.f.length||a.a>=a.g.length){tl('No matching scroll position found (entries X:'+a.f.length+', Y:'+a.g.length+') for opened history index ('+a.a+'). '+RJ);Ul(a);return}c=nF(Hd(a.f[a.a]));d=nF(Hd(a.g[a.a]));b?(a.e=Et(Fd(yl(a.d,Bg),13),new Ip(a,c,d))):am(td(nd(_d,1),sJ,95,15,[c,d]))} -function Hx(b,c){var d,e,f,g,h;if(!c){return -1}try{h=HA(Kd(c));f=[];f.push(b);for(e=0;e=9223372036854775807){return Ad(),xd}e=false;if(a<0){e=true;a=-a}d=0;if(a>=FJ){d=Zd(a/FJ);a-=d*FJ}c=0;if(a>=GJ){c=Zd(a/GJ);a-=c*GJ}b=Zd(a);f=vd(b,c,d);e&&(g=~f.l+1&EJ,h=~f.m+(g==0?1:0)&EJ,i=~f.h+(g==0&&h==0?1:0)&1048575,f.l=g,f.m=h,f.h=i,undefined);return f} -function gv(a,b){var c,d,e,f;if(iv(b)||Fd(yl(a,Of),10).b!=(qq(),oq)){return}c=ev(b);if(!c){return}f=c.href;d=b.currentTarget.ownerDocument.baseURI;if(!IF(f.substr(0,d.length),d)){return}if(jv(c.pathname,c.href.indexOf('#')!=-1)){e=$doc.location.hash;IF(e,c.hash)||Fd(yl(a,Df),27).lb(f);Fd(yl(a,Df),27).nb(true);return}if(!c.hasAttribute('router-link')){return}hv(b,d,f,a)} -function Wq(a,b){if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){ll&&($wnd.console.warn('Trying to reconnect after application has been stopped. Giving up'),undefined);return}if(b){ll&&($wnd.console.log('Re-sending last message to the server...'),undefined);Vs(Fd(yl(a.c,pg),17),b)}else{ll&&($wnd.console.log('Trying to re-establish server connection...'),undefined);Ir(Fd(yl(a.c,_f),56))}} -function lF(a){var b,c,d,e,f;if(a==null){throw Xj(new CF(yJ))}d=a.length;e=d>0&&(NI(0,a.length),a.charCodeAt(0)==45||(NI(0,a.length),a.charCodeAt(0)==43))?1:0;for(b=e;b2147483647){throw Xj(new CF(lL+a+'"'))}return f} -function QF(a,b,c){var d,e,f,g,h,i,j,k;d=new RegExp(b,'g');j=pd(kj,sJ,2,0,6,1);e=0;k=a;g=null;while(true){i=d.exec(k);if(i==null||k==''||e==c-1&&c>0){j[e]=k;break}else{h=i.index;j[e]=k.substr(0,h);k=SF(k,h+i[0].length,k.length);d.lastIndex=0;if(g==k){j[e]=k.substr(0,1);k=k.substr(1)}g=k;++e}}if(c==0&&a.length>0){f=j.length;while(f>0&&j[f-1]==''){--f}f=14&&c<=16));case 11:return b!=null&&Vd(b);case 12:return b!=null&&(typeof b===aJ||typeof b==cJ);case 0:return Ed(b,a.__elementTypeId$);case 2:return Wd(b)&&!(b.jc===kk);case 1:return Wd(b)&&!(b.jc===kk)||Ed(b,a.__elementTypeId$);default:return true;}} -function _m(b,c){if(document.body.$&&document.body.$.hasOwnProperty&&document.body.$.hasOwnProperty(c)){return document.body.$[c]}else if(b.shadowRoot){return b.shadowRoot.getElementById(c)}else if(b.getElementById){return b.getElementById(c)}else if(c&&c.match('^[a-zA-Z0-9-_]*$')){return b.querySelector('#'+c)}else{return Array.from(b.querySelectorAll('[id]')).find(function(a){return a.id==c})}} -function Fo(a,b){var c,d,e,f,g,h,i,j;if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){Bq(null);return}d=$wnd.location.pathname;e=$wnd.location.search;if(a.a==null){debugger;throw Xj(new IE('Initial response has not ended before pop state event was triggered'))}f=!(d==a.a&&e==a.b);Fd(yl(a.c,Df),27).mb(b,f);if(!f){return}c=yq($doc.baseURI,$doc.location.href);c.indexOf('#')!=-1&&(c=QF(c,'#',2)[0]);g=b['state'];kv(a.c,c,g,false)} -function Zq(a,b,c){var d;if(Fd(yl(a.c,Of),10).b!=(qq(),oq)){return}kl('reconnecting');if(a.b){if(xr(b,a.b)){ll&&cE($wnd.console,'Now reconnecting because of '+b+' failure');a.b=b}}else{a.b=b;ll&&cE($wnd.console,'Reconnecting because of '+b+' failure')}if(a.b!=b){return}++a.a;sl('Reconnect attempt '+a.a+' for '+b);a.a>=WA((d=uv(Fd(yl(Fd(yl(a.c,zg),35).a,bh),11).e,9),UB(d,'reconnectAttempts')),10000)?Xq(a):lr(a,c)} -function an(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;j=null;g=HA(a.a).childNodes;o=new $wnd.Map;e=!b;i=-1;for(m=0;m. User has navigated out of site in an unrecognized way.');Ul(b)}}else{Ul(b)}} -function Iy(a,b,c,d){var e,f,g,h,i;if(d==null||Ud(d)){Dq(b,c,Md(d))}else{f=d;if(0==nE(f)){g=f;if(!('uri' in g)){debugger;throw Xj(new IE("Implementation error: JsonObject is recieved as an attribute value for '"+c+"' but it has no "+'uri'+' key'))}i=g['uri'];if(a.t&&!i.match(/^(?:[a-zA-Z]+:)?\/\//)){e=a.o;e=(h='/'.length,IF(e.substr(e.length-h,h),'/')?e:e+'/');HA(b).setAttribute(c,e+(''+i))}else{i==null?HA(b).removeAttribute(c):HA(b).setAttribute(c,i)}}else{Dq(b,c,jk(d))}}} -function Mx(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;o=Fd(c.e.get(Vh),77);if(!o||!o.a.has(a)){return}k=QF(a,'\\.',0);g=c;f=null;e=0;j=k.length;for(m=0,n=k.length;m=f){debugger;throw Xj(new HE)}return g.length==0?null:g}else{return a}} -function ry(a,b,c,d,e){var f,g,h;h=Rv(e,Zd(a));if(!h.c.has(1)){return}if(!my(h,b)){debugger;throw Xj(new IE('Host element is not a parent of the node whose property has changed. This is an implementation error. Most likely it means that there are several StateTrees on the same page (might be possible with portlets) and the target StateTree should not be passed into the method as an argument but somehow detected from the host element. Another option is that host element is calculated incorrectly.'))}f=uv(h,1);g=UB(f,c);UA(g,d).X()} -function Lp(a,b,c,d){var e,f,g,h,i,j;h=$doc;j=h.createElement('div');j.className='v-system-error';if(a!=null){f=h.createElement('div');f.className='caption';f.textContent=a;j.appendChild(f);ll&&aE($wnd.console,a)}if(b!=null){i=h.createElement('div');i.className='message';i.textContent=b;j.appendChild(i);ll&&aE($wnd.console,b)}if(c!=null){g=h.createElement('div');g.className='details';g.textContent=c;j.appendChild(g);ll&&aE($wnd.console,c)}if(d!=null){e=h.querySelector(d);!!e&&VD(Kd(MH(QH(e.shadowRoot),e)),j)}else{WD(h.body,j)}return j} -function Ku(h,e,f){var g={};g.getNode=_I(function(a){var b=e.get(a);if(b==null){throw new ReferenceError('There is no a StateNode for the given argument.')}return b});g.$appId=h.Db().replace(/-\d+$/,'');g.registry=h.a;g.attachExistingElement=_I(function(a,b,c,d){an(g.getNode(a),b,c,d)});g.populateModelProperties=_I(function(a,b){dn(g.getNode(a),b)});g.registerUpdatableModelProperties=_I(function(a,b){fn(g.getNode(a),b)});g.stopApplication=_I(function(){f.X()});g.scrollPositionHandlerAfterServerNavigation=_I(function(a){gn(g.registry,a)});return g} -function fd(a,b){var c,d,e,f,g,h,i,j,k;if(b.length==0){return a.V(DJ,BJ,-1,-1)}k=TF(b);IF(k.substr(0,3),'at ')&&(k=k.substr(3));k=k.replace(/\[.*?\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=TF(k.substr(g+1));k=TF(k.substr(0,g))}}else{c=k.indexOf(')',g);j=k.substr(g+1,c-(g+1));k=TF(k.substr(0,g))}g=KF(k,UF(46));g!=-1&&(k=k.substr(g+1));(k.length==0||IF(k,'Anonymous function'))&&(k=BJ);h=MF(j,UF(58));e=NF(j,UF(58),h-1);i=-1;d=-1;f=DJ;if(h!=-1&&e!=-1){f=j.substr(0,e);i=ad(j.substr(e+1,h-(e+1)));d=ad(j.substr(h+1))}return a.V(f,k,i,d)} -function Mq(a,b){var c,d,e;c=Uq(b,'serviceUrl');Tk(a,Sq(b,'webComponentMode'));Ek(a,Sq(b,'clientRouting'));if(c==null){Ok(a,Aq('.'));Fk(a,Aq(Uq(b,nK)))}else{a.o=c;Fk(a,Aq(c+(''+Uq(b,nK))))}Sk(a,Tq(b,'v-uiId').a);Ik(a,Tq(b,'heartbeatInterval').a);Lk(a,Tq(b,'maxMessageSuspendTimeout').a);Pk(a,(d=b.getConfig(oK),d?d.vaadinVersion:null));e=b.getConfig(oK);Rq();Qk(a,b.getConfig('sessExpMsg'));Mk(a,!Sq(b,'debug'));Nk(a,Sq(b,'requestTiming'));Hk(a,b.getConfig('webcomponents'));Gk(a,Sq(b,'devToolsEnabled'));Kk(a,Uq(b,'liveReloadUrl'));Jk(a,Uq(b,'liveReloadBackend'));Rk(a,Uq(b,'springBootLiveReloadPort'))} -function mb(b){var c=function(a){return typeof a!=pJ};var d=function(a){return a.replace(/\r\n/g,'')};if(c(b.outerHTML))return d(b.outerHTML);c(b.innerHTML)&&b.cloneNode&&$doc.createElement('div').appendChild(b.cloneNode(true)).innerHTML;if(c(b.nodeType)&&b.nodeType==3){return "'"+b.data.replace(/ /g,'\u25AB').replace(/\u00A0/,'\u25AA')+"'"}if(typeof c(b.htmlText)&&b.collapse){var e=b.htmlText;if(e){return 'IETextRange ['+d(e)+']'}else{var f=b.duplicate();f.pasteHTML('|');var g='IETextRange '+d(b.parentElement().outerHTML);f.moveStart('character',-1);f.pasteHTML('');return g}}return b.toString?b.toString():'[JavaScriptObject]'} -function $(a){var b,c,d,e;this.e=(Bb(),zb);this.c=a;gq(Fd(yl(a,Of),10),new Eb(this));this.a={transport:fJ,fallbackTransport:hJ,transports:[fJ,hJ,iJ],reconnectInterval:5000,maxReconnectAttempts:10,timeout:5000};this.a['logLevel']='debug';nt(Fd(yl(this.c,xg),46)).forEach(hk(Gb.prototype.M,Gb,[this]));pb(this.a);c=ot(Fd(yl(this.c,xg),46));if(c==null||TF(c).length==0||IF('/',c)){this.g=jJ;d=Fd(yl(a,xe),9).o;IF('.',d)||(e='/'.length,IF(d.substr(d.length-e,e),'/')||(d+='/'));this.g=d+(''+this.g)}else{b=Fd(yl(a,xe),9).c;e='/'.length;IF(b.substr(b.length-e,e),'/')&&IF(c.substr(0,1),'/')&&(c=c.substr(1));this.g=b+(''+c)+jJ}Z(this,new Ib(this))} -function _n(a,b,c){var d,e,f;f=[];if(a.c.has(1)){if(!Pd(b,40)){debugger;throw Xj(new IE('Received an inconsistent NodeFeature for a node that has a ELEMENT_PROPERTIES feature. It should be NodeMap, but it is: '+b))}e=Fd(b,40);TB(e,hk(qo.prototype.M,qo,[f,c]));f.push(SB(e,new oo(f,c)))}else if(a.c.has(16)){if(!Pd(b,29)){debugger;throw Xj(new IE('Received an inconsistent NodeFeature for a node that has a TEMPLATE_MODELLIST feature. It should be NodeList, but it is: '+b))}d=Fd(b,29);f.push(EB(d,new ko(c)))}if(f.length==0){debugger;throw Xj(new IE('Node should have ELEMENT_PROPERTIES or TEMPLATE_MODELLIST feature'))}f.push(qv(a,new mo(f)))} -function Il(a,b){this.a=new $wnd.Map;this.b=new $wnd.Map;Bl(this,Ae,a);Bl(this,xe,b);Bl(this,Af,new ep(this));Bl(this,Pf,new xq(this));Bl(this,Ve,new tm(this));Bl(this,Jf,new Qp(this));Cl(this,Of,new Jl);Bl(this,bh,new dw(this));Bl(this,Bg,new Jt(this));Bl(this,ng,new us(this));Bl(this,pg,new Zs(this));Bl(this,Jg,new ku(this));Bl(this,Fg,new cu(this));Bl(this,Ug,new Qu(this));Cl(this,Qg,new Ll);Cl(this,Ye,new Nl);Bl(this,$e,new xn(this));Bl(this,_f,new Kr(this));Bl(this,Rf,new qr(this));Bl(this,Pg,new su(this));Bl(this,xg,new qt(this));Bl(this,zg,new Bt(this));b.b||(b.t?Bl(this,Df,new bm):Bl(this,Df,new Wl(this)));Bl(this,tg,new ht(this))} -function iy(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;l=e.e;o=Md(VA(UB(uv(b,0),'tag')));h=false;if(!a){h=true;ll&&cE($wnd.console,YK+d+" is not found. The requested tag name is '"+o+"'")}else if(!(!!a&&JF(o,a.tagName))){h=true;tl(YK+d+" has the wrong tag name '"+a.tagName+"', the requested tag name is '"+o+"'")}if(h){_v(l.g,l,b.d,-1,c);return false}if(!l.c.has(20)){return true}k=uv(l,20);m=Fd(VA(UB(k,TK)),6);if(!m){return true}j=tv(m,2);g=null;for(i=0;i<(jB(j.a),j.c.length);i++){n=Fd(j.c[i],6);f=n.a;if(I(f,a)){g=vF(n.d);break}}if(g){ll&&cE($wnd.console,YK+d+" has been already attached previously via the node id='"+g+"'");_v(l.g,l,b.d,g.a,c);return false}return true} -function Mu(b,c,d,e){var f,g,h,i,j,k,l,m;if(c.length!=d.length+1){debugger;throw Xj(new HE)}try{j=new ($wnd.Function.bind.apply($wnd.Function,[null].concat(c)));j.apply(Ku(b,e,new Uu(b)),d)}catch(a){a=Wj(a);if(Pd(a,7)){i=a;ll&&nl(new ul(i));ll&&($wnd.console.error('Exception is thrown during JavaScript execution. Stacktrace will be dumped separately.'),undefined);if(!Fd(yl(b.a,xe),9).k){g=new aG('[');h='';for(l=0,m=c.length;l=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!rH()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype['delete']=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} -function Kx(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;if(!b){debugger;throw Xj(new HE)}f=b.b;s=b.e;if(!f){debugger;throw Xj(new IE('Cannot handle DOM event for a Node'))}C=a.type;r=uv(s,4);e=Fd(yl(s.g.c,Qg),58);i=Md(VA(UB(r,C)));if(i==null){debugger;throw Xj(new HE)}if(!Gu(e,i)){debugger;throw Xj(new HE)}j=Kd(Fu(e,i));o=(w=uE(j),w);A=new $wnd.Set;o.length==0?(g=null):(g={});for(l=0,m=o.length;l=0){g=b.substr(f+3);g=PF(g,hL,'$1');this.a=oF(g)}}else if(this.o){g=RF(b,b.indexOf('webkit/')+7);g=PF(g,iL,'$1');this.a=oF(g)}else if(this.n){g=RF(b,b.indexOf(eL)+8);g=PF(g,iL,'$1');this.a=oF(g);this.a>7&&(this.a=7)}else this.c&&(this.a=0)}catch(a){a=Wj(a);if(Pd(a,7)){c=a;dG();'Browser engine version parsing failed for: '+b+' '+c.P()}else throw Xj(a)}try{if(this.f){if(b.indexOf('msie')!=-1){if(this.n);else{e=RF(b,b.indexOf('msie ')+5);e=vD(e,0,KF(e,UF(59)));sD(e)}}else{f=b.indexOf('rv:');if(f>=0){g=b.substr(f+3);g=PF(g,hL,'$1');sD(g)}}}else if(this.d){d=b.indexOf(' firefox/')+9;sD(vD(b,d,d+5))}else if(this.b){oD(b)}else if(this.k){d=b.indexOf(' version/');if(d>=0){d+=9;sD(vD(b,d,d+5))}}else if(this.j){d=b.indexOf(' version/');d!=-1?(d+=9):(d=b.indexOf('opera/')+6);sD(vD(b,d,d+5))}else if(this.c){d=b.indexOf(' edge/')+6;b.indexOf(' edg/')!=-1?(d=b.indexOf(' edg/')+5):b.indexOf(fL)!=-1?(d=b.indexOf(fL)+6):b.indexOf(gL)!=-1&&(d=b.indexOf(gL)+8);sD(vD(b,d,d+8))}}catch(a){a=Wj(a);if(Pd(a,7)){c=a;dG();'Browser version parsing failed for: '+b+' '+c.P()}else throw Xj(a)}if(b.indexOf('windows ')!=-1){b.indexOf('windows phone')!=-1}else if(b.indexOf('android')!=-1){lD(b)}else if(b.indexOf('linux')!=-1);else if(b.indexOf('macintosh')!=-1||b.indexOf('mac osx')!=-1||b.indexOf('mac os x')!=-1){this.g=b.indexOf('ipad')!=-1;this.i=b.indexOf('iphone')!=-1;(this.g||this.i)&&pD(b)}else b.indexOf('; cros ')!=-1&&mD(b)} -var aJ='object',bJ='[object Array]',cJ='function',dJ='java.lang',eJ='v-uiId=',fJ='websocket',gJ='text/javascript',hJ='xhr-polling',iJ='xhr-streaming',jJ='VAADIN/push',kJ='transport',lJ='Received push (',mJ='com.github.mcollovati.vertx.vaadin.sockjs.client',nJ='com.vaadin.client',oJ={22:1},pJ='undefined',qJ='com.google.gwt.core.client',rJ='fallbackTransport',sJ={4:1},tJ={97:1},uJ={21:1},vJ='__noinit__',wJ='__java$exception',xJ={4:1,7:1,8:1,5:1},yJ='null',zJ='com.google.gwt.core.client.impl',AJ='Working array length changed ',BJ='anonymous',CJ='fnStack',DJ='Unknown',EJ=4194303,FJ=17592186044416,GJ=4194304,HJ='must be non-negative',IJ='must be positive',JJ='com.google.web.bindery.event.shared',KJ='url',LJ='historyIndex',MJ='historyResetToken',NJ='xPositions',OJ='yPositions',PJ='scrollPos-',QJ='Failed to get session storage: ',RJ='Unable to restore scroll positions. History.state has been manipulated or user has navigated away from site in an unrecognized way.',SJ='beforeunload',TJ='scrollPositionX',UJ='scrollPositionY',VJ='type',WJ={68:1},XJ={18:1},YJ='constructor',ZJ='properties',$J='value',_J='com.vaadin.client.flow.reactive',aK={14:1},bK='nodeId',cK='Root node for node ',dK=' could not be found',eK=' is not an Element',fK={69:1},gK={82:1},hK={44:1},iK={96:1},jK='script',kK='stylesheet',lK='click',mK='com.vaadin.flow.shared',nK='contextRootUrl',oK='versionInfo',pK='com.vaadin.client.communication',qK='dialogText',rK='dialogTextGaveUp',sK='syncId',tK='resynchronize',uK='Received message with server id ',vK='clientId',wK='Vaadin-Security-Key',xK='Vaadin-Push-ID',yK='sessionExpired',zK='pushServletMapping',AK='event',BK='node',CK='attachReqId',DK='attachAssignedId',EK='com.vaadin.client.flow',FK='bound',GK='payload',HK='subTemplate',IK={42:1},JK='Node is null',KK='Node is not created for this tree',LK='Node id is not registered with this tree',MK='$server',NK='feat',OK='remove',PK='com.vaadin.client.flow.binding',QK='intermediate',RK='elemental.util',SK='element',TK='shadowRoot',UK='The HTML node for the StateNode with id=',VK='An error occurred when Flow tried to find a state node matching the element ',WK='hidden',XK='styleDisplay',YK='Element addressed by the ',ZK='dom-repeat',$K='dom-change',_K='com.vaadin.client.flow.nodefeature',aL='Unsupported complex type in ',bL='com.vaadin.client.gwt.com.google.web.bindery.event.shared',cL='OS minor',dL=' headlesschrome/',eL='trident/',fL=' edga/',gL=' edgios/',hL='(\\.[0-9]+).+',iL='([0-9]+\\.[0-9]+).*',jL='com.vaadin.flow.shared.ui',kL='java.io',lL='For input string: "',mL='java.util',nL={43:1},oL='java.util.logging',pL={4:1,323:1},qL='java.util.stream',rL='user.agent';var _,dk,$j,Vj=-1;ek();fk(1,null,{},G);_.u=function H(a){return this===a};_.v=function J(){return this.hc};_.w=function L(){return TI(this)};_.A=function N(){var a;return RE(K(this))+'@'+(a=M(this)>>>0,a.toString(16))};_.equals=function(a){return this.u(a)};_.hashCode=function(){return this.w()};_.toString=function(){return this.A()};var Bd,Cd,Dd;fk(99,1,{},SE);_.Wb=function TE(a){var b;b=new SE;b.e=4;a>1?(b.c=$E(this,a-1)):(b.c=this);return b};_.Xb=function ZE(){QE(this);return this.b};_.Yb=function _E(){return RE(this)};_.Zb=function bF(){QE(this);return this.g};_.$b=function dF(){return (this.e&4)!=0};_._b=function eF(){return (this.e&1)!=0};_.A=function hF(){return ((this.e&2)!=0?'interface ':(this.e&1)!=0?'':'class ')+(QE(this),this.j)};_.e=0;var PE=1;var ej=VE(dJ,'Object',1);var Ti=VE(dJ,'Class',99);fk(105,1,{},$);_.B=function bb(a){this.e=(Bb(),zb);Fd(yl(this.c,Rf),16);ll&&($wnd.console.log('Push connection closed'),undefined)};_.C=function cb(a){this.e=(Bb(),xb);Yq(Fd(Fd(yl(this.c,Rf),16),88),'Push connection using '+a[kJ]+' failed!')};_.D=function db(a){var b,c;c=a['data'];b=xs(ys(c));if(!b){er(Fd(yl(this.c,Rf),16),this,c)}else{sl(lJ+this.f+') message: '+c);Fd(yl(this.c,Of),10).b==(qq(),pq)?tl(lJ+this.f+') message, but ui is already terminated: '+c):js(Fd(yl(this.c,ng),19),b)}};_.F=function eb(a){uI(zI((QE(ge),ge.j)),'Push connection established using '+this.d.getTransport());X(this,this.d)};_.G=function fb(a){this.e==(Bb(),Ab)&&(this.e=zb);hr(Fd(yl(this.c,Rf),16),this)};_.H=function gb(a){uI(zI((QE(ge),ge.j)),'Push connection re-established using '+this.d.getTransport());X(this,this.d)};var ge=VE(mJ,'SockJSPushConnection',105);fk(239,1,{},hb);_.I=function ib(){O(this.a)};var ae=VE(mJ,'SockJSPushConnection/0methodref$connect$Type',239);var uf=XE(nJ,'ResourceLoader/ResourceLoadListener');fk(241,1,oJ,jb);_.J=function kb(a){ir(Fd(yl(this.a.c,Rf),16),a.a)};_.K=function lb(a){if(ab()){sl(this.c+' loaded');W(this.b.a)}else{ll&&($wnd.console.log('SockJS not loaded???????'),undefined);ir(Fd(yl(this.a.c,Rf),16),a.a)}};var be=VE(mJ,'SockJSPushConnection/1',241);var je=VE(qJ,'JavaScriptObject$',0);var nb;fk(25,1,{4:1,32:1,25:1});_.u=function tb(a){return this===a};_.w=function ub(){return TI(this)};_.A=function vb(){return this.b!=null?this.b:''+this.c};_.c=0;var Vi=VE(dJ,'Enum',25);fk(50,25,{50:1,4:1,32:1,25:1},Cb);var xb,yb,zb,Ab;var ce=WE(mJ,'SockJSPushConnection/State',50,Db);fk(238,1,tJ,Eb);_.L=function Fb(a){U(this.a,a)};var de=VE(mJ,'SockJSPushConnection/lambda$0$Type',238);fk(371,$wnd.Function,{},Gb);_.M=function Hb(a,b){V(this.a,a,b)};var Ce=XE(nJ,'Command');fk(240,1,uJ,Ib);_.I=function Jb(){W(this.a)};var ee=VE(mJ,'SockJSPushConnection/lambda$2$Type',240);fk(237,1,uJ,Kb);_.I=function Lb(){};var fe=VE(mJ,'SockJSPushConnection/lambda$3$Type',237);fk(101,1,{},Nb);_.a=0;var he=VE(qJ,'Duration',101);var Ob=null;fk(5,1,{4:1,5:1});_.O=function Xb(a){return new Error(a)};_.P=function Zb(){return this.g};_.Q=function $b(){var a,b,c;c=this.g==null?null:this.g.replace(new RegExp('\n','g'),' ');b=(a=RE(this.hc),c==null?a:a+': '+c);Ub(this,Yb(this.O(b)));Zc(this)};_.A=function ac(){return Vb(this,this.P())};_.e=vJ;_.k=true;var lj=VE(dJ,'Throwable',5);fk(7,5,{4:1,7:1,5:1});var Xi=VE(dJ,'Exception',7);fk(8,7,xJ,dc);var gj=VE(dJ,'RuntimeException',8);fk(54,8,xJ,ec);var aj=VE(dJ,'JsException',54);fk(120,54,xJ);var le=VE(zJ,'JavaScriptExceptionBase',120);fk(23,120,{23:1,4:1,7:1,8:1,5:1},ic);_.P=function lc(){return hc(this),this.c};_.R=function mc(){return Yd(this.b)===Yd(fc)?null:this.b};var fc;var ie=VE(qJ,'JavaScriptException',23);fk(324,1,{});var ke=VE(qJ,'Scheduler',324);var oc=0,pc=false,qc,rc=0,sc=-1;fk(129,324,{});_.e=false;_.j=false;var Fc;var oe=VE(zJ,'SchedulerImpl',129);fk(130,1,{},Tc);_.S=function Uc(){this.a.e=true;Jc(this.a);this.a.e=false;return this.a.j=Kc(this.a)};var me=VE(zJ,'SchedulerImpl/Flusher',130);fk(131,1,{},Vc);_.S=function Wc(){this.a.e&&Rc(this.a.f,1);return this.a.j};var ne=VE(zJ,'SchedulerImpl/Rescuer',131);var Xc;fk(334,1,{});var se=VE(zJ,'StackTraceCreator/Collector',334);fk(121,334,{},cd);_.T=function dd(a){var b={},j;var c=[];a[CJ]=c;var d=arguments.callee.caller;while(d){var e=(Yc(),d.name||(d.name=_c(d.toString())));c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h0){Yo(this.b,this.c);return false}else if(a==0){Xo(this.b,this.c);return true}else if(Mb(this.a)>60000){Xo(this.b,this.c);return false}else{return true}};var pf=VE(nJ,'ResourceLoader/1',185);fk(186,38,{},mp);_.X=function np(){this.a.b.has(this.c)||Xo(this.a,this.b)};var qf=VE(nJ,'ResourceLoader/2',186);fk(190,38,{},op);_.X=function pp(){this.a.b.has(this.c)?Yo(this.a,this.b):Xo(this.a,this.b)};var rf=VE(nJ,'ResourceLoader/3',190);fk(191,1,oJ,qp);_.J=function rp(a){Xo(this.a,a)};_.K=function sp(a){Yo(this.a,a)};var sf=VE(nJ,'ResourceLoader/4',191);fk(62,1,{},tp);var tf=VE(nJ,'ResourceLoader/ResourceLoadEvent',62);fk(104,1,oJ,up);_.J=function vp(a){Xo(this.a,a)};_.K=function wp(a){Yo(this.a,a)};var vf=VE(nJ,'ResourceLoader/SimpleLoadListener',104);fk(184,1,oJ,xp);_.J=function yp(a){Xo(this.a,a)};_.K=function zp(a){var b;if((!fl&&(fl=new hl),fl).a.b||(!fl&&(fl=new hl),fl).a.f||(!fl&&(fl=new hl),fl).a.c){b=ip(this.b);if(b==0){Xo(this.a,a);return}}Yo(this.a,a)};var wf=VE(nJ,'ResourceLoader/StyleSheetLoadListener',184);fk(187,1,{},Ap);_.jb=function Bp(){return this.a.call(null)};var xf=VE(nJ,'ResourceLoader/lambda$0$Type',187);fk(188,1,XJ,Cp);_.X=function Dp(){this.b.K(this.a)};var yf=VE(nJ,'ResourceLoader/lambda$1$Type',188);fk(189,1,XJ,Ep);_.X=function Fp(){this.b.J(this.a)};var zf=VE(nJ,'ResourceLoader/lambda$2$Type',189);fk(150,1,{},Gp);_.ub=function Hp(a){Sl(this.a)};var Bf=VE(nJ,'ScrollPositionHandler/0methodref$onBeforeUnload$Type',150);fk(151,1,iK,Ip);_.vb=function Jp(a){Rl(this.a,this.b,this.c)};_.b=0;_.c=0;var Cf=VE(nJ,'ScrollPositionHandler/lambda$0$Type',151);fk(24,1,{24:1},Qp);var Jf=VE(nJ,'SystemErrorHandler',24);fk(155,1,{},Sp);_.xb=function Tp(a,b){Kp(b.P())};_.yb=function Up(a){var b;sl('Received xhr HTTP session resynchronization message: '+a.responseText);Al(this.a.a);hq(Fd(yl(this.a.a,Of),10),(qq(),oq));b=xs(ys(a.responseText));js(Fd(yl(this.a.a,ng),19),b);Sk(Fd(yl(this.a.a,xe),9),b['uiId']);cq((Gc(),Fc),new Yp(this))};var Gf=VE(nJ,'SystemErrorHandler/1',155);fk(156,1,{},Wp);_.pb=function Xp(a){Vp(a)};var Ef=VE(nJ,'SystemErrorHandler/1/0methodref$recreateNodes$Type',156);fk(157,1,{},Yp);_.I=function Zp(){DI(cH(Fd(yl(this.a.a.a,xe),9).e),new Wp)};var Ff=VE(nJ,'SystemErrorHandler/1/lambda$0$Type',157);fk(153,1,{},$p);_.ub=function _p(a){Bq(this.a)};var Hf=VE(nJ,'SystemErrorHandler/lambda$0$Type',153);fk(154,1,{},aq);_.ub=function bq(a){Rp(this.a,a)};var If=VE(nJ,'SystemErrorHandler/lambda$1$Type',154);fk(133,129,{},dq);_.a=0;var Lf=VE(nJ,'TrackingScheduler',133);fk(134,1,{},eq);_.I=function fq(){this.a.a--};var Kf=VE(nJ,'TrackingScheduler/lambda$0$Type',134);fk(10,1,{10:1},iq);var Of=VE(nJ,'UILifecycle',10);fk(161,343,{},kq);_.Z=function lq(a){Fd(a,97).L(this)};_._=function mq(){return jq};var jq=null;var Mf=VE(nJ,'UILifecycle/StateChangeEvent',161);fk(60,25,{60:1,4:1,32:1,25:1},rq);var nq,oq,pq;var Nf=WE(nJ,'UILifecycle/UIState',60,sq);fk(342,1,sJ);var Bi=VE(mK,'VaadinUriResolver',342);fk(47,342,{47:1,4:1},xq);_.zb=function zq(a){return wq(this,a)};var Pf=VE(nJ,'URIResolver',47);var Eq=false,Fq;fk(114,1,{},Pq);_.I=function Qq(){Lq(this.a)};var Qf=VE('com.vaadin.client.bootstrap','Bootstrapper/lambda$0$Type',114);var Rf=XE(pK,'ConnectionStateHandler');fk(88,1,{16:1,88:1},qr);_.a=0;_.b=null;var Xf=VE(pK,'DefaultConnectionStateHandler',88);fk(214,38,{},rr);_.X=function sr(){this.a.d=null;Wq(this.a,this.b)};var Sf=VE(pK,'DefaultConnectionStateHandler/1',214);fk(63,25,{63:1,4:1,32:1,25:1},yr);_.a=0;var tr,ur,vr;var Tf=WE(pK,'DefaultConnectionStateHandler/Type',63,zr);fk(213,1,tJ,Ar);_.L=function Br(a){cr(this.a,a)};var Uf=VE(pK,'DefaultConnectionStateHandler/lambda$0$Type',213);fk(215,1,{},Cr);_.ub=function Dr(a){Xq(this.a)};var Vf=VE(pK,'DefaultConnectionStateHandler/lambda$1$Type',215);fk(216,1,{},Er);_.ub=function Fr(a){dr(this.a)};var Wf=VE(pK,'DefaultConnectionStateHandler/lambda$2$Type',216);fk(56,1,{56:1},Kr);_.a=-1;var _f=VE(pK,'Heartbeat',56);fk(210,38,{},Lr);_.X=function Mr(){Ir(this.a)};var Yf=VE(pK,'Heartbeat/1',210);fk(212,1,{},Nr);_.xb=function Or(a,b){!b?ar(Fd(yl(this.a.b,Rf),16),a):_q(Fd(yl(this.a.b,Rf),16),b);Hr(this.a)};_.yb=function Pr(a){br(Fd(yl(this.a.b,Rf),16));Hr(this.a)};var Zf=VE(pK,'Heartbeat/2',212);fk(211,1,tJ,Qr);_.L=function Rr(a){Gr(this.a,a)};var $f=VE(pK,'Heartbeat/lambda$0$Type',211);fk(163,1,{},Vr);_.pb=function Wr(a){jl('firstDelay',vF(a.a))};var ag=VE(pK,'LoadingIndicatorConfigurator/0methodref$setFirstDelay$Type',163);fk(164,1,{},Xr);_.pb=function Yr(a){jl('secondDelay',vF(a.a))};var bg=VE(pK,'LoadingIndicatorConfigurator/1methodref$setSecondDelay$Type',164);fk(165,1,{},Zr);_.pb=function $r(a){jl('thirdDelay',vF(a.a))};var cg=VE(pK,'LoadingIndicatorConfigurator/2methodref$setThirdDelay$Type',165);fk(166,1,hK,_r);_.tb=function as(a){Ur(YA(Fd(a.e,28)))};var dg=VE(pK,'LoadingIndicatorConfigurator/lambda$0$Type',166);fk(167,1,hK,bs);_.tb=function cs(a){Tr(this.b,this.a,a)};_.a=0;var eg=VE(pK,'LoadingIndicatorConfigurator/lambda$1$Type',167);fk(19,1,{19:1},us);_.a=0;_.b='init';_.d=false;_.e=0;_.f=-1;_.j=null;_.p=0;var ng=VE(pK,'MessageHandler',19);fk(178,1,uJ,zs);_.I=function As(){!GA&&$wnd.Polymer!=null&&IF($wnd.Polymer.version.substr(0,'1.'.length),'1.')&&(GA=true,ll&&($wnd.console.log('Polymer micro is now loaded, using Polymer DOM API'),undefined),FA=new IA,undefined)};var fg=VE(pK,'MessageHandler/0methodref$updateApiImplementation$Type',178);fk(177,38,{},Bs);_.X=function Cs(){fs(this.a)};var gg=VE(pK,'MessageHandler/1',177);fk(359,$wnd.Function,{},Ds);_.pb=function Es(a){ds(Fd(a,6))};fk(61,1,{61:1},Fs);var hg=VE(pK,'MessageHandler/PendingUIDLMessage',61);fk(179,1,uJ,Gs);_.I=function Hs(){qs(this.a,this.d,this.b,this.c)};_.c=0;var ig=VE(pK,'MessageHandler/lambda$0$Type',179);fk(181,1,aK,Is);_.ob=function Js(){DC(new Ms(this.a,this.b))};var jg=VE(pK,'MessageHandler/lambda$1$Type',181);fk(183,1,aK,Ks);_.ob=function Ls(){ns(this.a)};var kg=VE(pK,'MessageHandler/lambda$3$Type',183);fk(180,1,aK,Ms);_.ob=function Ns(){os(this.a,this.b)};var lg=VE(pK,'MessageHandler/lambda$4$Type',180);fk(182,1,{},Os);_.I=function Ps(){this.a.forEach(hk(Ds.prototype.pb,Ds,[]))};var mg=VE(pK,'MessageHandler/lambda$5$Type',182);fk(17,1,{17:1},Zs);_.a=0;_.d=0;var pg=VE(pK,'MessageSender',17);fk(175,1,uJ,$s);_.I=function _s(){Rs(this.a)};var og=VE(pK,'MessageSender/lambda$0$Type',175);fk(158,1,hK,ct);_.tb=function dt(a){at(this.a,a)};var qg=VE(pK,'PollConfigurator/lambda$0$Type',158);fk(75,1,{75:1},ht);_.Ab=function it(){var a;a=Fd(yl(this.b,bh),11);Zv(a,a.e,'ui-poll',null)};_.a=null;var tg=VE(pK,'Poller',75);fk(160,38,{},jt);_.X=function kt(){var a;a=Fd(yl(this.a.b,bh),11);Zv(a,a.e,'ui-poll',null)};var rg=VE(pK,'Poller/1',160);fk(159,1,tJ,lt);_.L=function mt(a){et(this.a,a)};var sg=VE(pK,'Poller/lambda$0$Type',159);fk(46,1,{46:1},qt);var xg=VE(pK,'PushConfiguration',46);fk(221,1,hK,tt);_.tb=function ut(a){pt(this.a,a)};var ug=VE(pK,'PushConfiguration/0methodref$onPushModeChange$Type',221);fk(222,1,aK,vt);_.ob=function wt(){Ys(Fd(yl(this.a.a,pg),17),true)};var vg=VE(pK,'PushConfiguration/lambda$0$Type',222);fk(223,1,aK,xt);_.ob=function yt(){Ys(Fd(yl(this.a.a,pg),17),false)};var wg=VE(pK,'PushConfiguration/lambda$1$Type',223);fk(365,$wnd.Function,{},zt);_.M=function At(a,b){st(this.a,a,b)};fk(35,1,{35:1},Bt);var zg=VE(pK,'ReconnectConfiguration',35);fk(162,1,uJ,Ct);_.I=function Dt(){Vq(this.a)};var yg=VE(pK,'ReconnectConfiguration/lambda$0$Type',162);fk(13,1,{13:1},Jt);_.b=false;var Bg=VE(pK,'RequestResponseTracker',13);fk(176,1,{},Kt);_.I=function Lt(){Ht(this.a)};var Ag=VE(pK,'RequestResponseTracker/lambda$0$Type',176);fk(236,343,{},Mt);_.Z=function Nt(a){$d(a);null.kc()};_._=function Ot(){return null};var Cg=VE(pK,'RequestStartingEvent',236);fk(152,343,{},Qt);_.Z=function Rt(a){Fd(a,96).vb(this)};_._=function St(){return Pt};var Pt;var Dg=VE(pK,'ResponseHandlingEndedEvent',152);fk(276,343,{},Tt);_.Z=function Ut(a){$d(a);null.kc()};_._=function Vt(){return null};var Eg=VE(pK,'ResponseHandlingStartedEvent',276);fk(26,1,{26:1},cu);_.Bb=function du(a,b,c){Wt(this,a,b,c)};_.Cb=function eu(a,b,c){var d;d={};d[VJ]='channel';d[BK]=Object(a);d['channel']=Object(b);d['args']=c;$t(this,d)};var Fg=VE(pK,'ServerConnector',26);fk(34,1,{34:1},ku);_.b=false;var fu;var Jg=VE(pK,'ServerRpcQueue',34);fk(204,1,XJ,lu);_.X=function mu(){iu(this.a)};var Gg=VE(pK,'ServerRpcQueue/0methodref$doFlush$Type',204);fk(203,1,XJ,nu);_.X=function ou(){gu()};var Hg=VE(pK,'ServerRpcQueue/lambda$0$Type',203);fk(205,1,{},pu);_.I=function qu(){this.a.a.X()};var Ig=VE(pK,'ServerRpcQueue/lambda$1$Type',205);fk(73,1,{73:1},su);_.b=false;var Pg=VE(pK,'XhrConnection',73);fk(220,38,{},uu);_.X=function vu(){tu(this.b)&&this.a.b&&ok(this,250)};var Kg=VE(pK,'XhrConnection/1',220);fk(217,1,{},xu);_.xb=function yu(a,b){var c;c=new Eu(a,this.a);if(!b){or(Fd(yl(this.c.a,Rf),16),c);return}else{mr(Fd(yl(this.c.a,Rf),16),c)}};_.yb=function zu(a){var b,c;sl('Server visit took '+Po(this.b)+'ms');c=a.responseText;b=xs(ys(c));if(!b){nr(Fd(yl(this.c.a,Rf),16),new Eu(a,this.a));return}pr(Fd(yl(this.c.a,Rf),16));ll&&bE($wnd.console,'Received xhr message: '+c);js(Fd(yl(this.c.a,ng),19),b)};_.b=0;var Lg=VE(pK,'XhrConnection/XhrResponseHandler',217);fk(218,1,{},Au);_.ub=function Bu(a){this.a.b=true};var Mg=VE(pK,'XhrConnection/lambda$0$Type',218);fk(219,1,iK,Cu);_.vb=function Du(a){this.a.b=false};var Ng=VE(pK,'XhrConnection/lambda$1$Type',219);fk(108,1,{},Eu);var Og=VE(pK,'XhrConnectionError',108);fk(58,1,{58:1},Iu);var Qg=VE(EK,'ConstantPool',58);fk(87,1,{87:1},Qu);_.Db=function Ru(){return Fd(yl(this.a,xe),9).a};var Ug=VE(EK,'ExecuteJavaScriptProcessor',87);fk(207,1,{},Su);_.db=function Tu(a){return DC(new Wu(this.a,this.b)),LE(),true};var Rg=VE(EK,'ExecuteJavaScriptProcessor/lambda$0$Type',207);fk(208,1,XJ,Uu);_.X=function Vu(){Pu(this.a)};var Sg=VE(EK,'ExecuteJavaScriptProcessor/lambda$1$Type',208);fk(206,1,aK,Wu);_.ob=function Xu(){Lu(this.a,this.b)};var Tg=VE(EK,'ExecuteJavaScriptProcessor/lambda$3$Type',206);fk(302,1,{},$u);var Wg=VE(EK,'FragmentHandler',302);fk(303,1,iK,av);_.vb=function bv(a){Zu(this.a)};var Vg=VE(EK,'FragmentHandler/0methodref$onResponseHandlingEnded$Type',303);fk(300,1,{},cv);var Xg=VE(EK,'NodeUnregisterEvent',300);fk(173,1,{},lv);_.ub=function mv(a){gv(this.a,a)};var Yg=VE(EK,'RouterLinkHandler/lambda$0$Type',173);fk(174,1,uJ,nv);_.I=function ov(){Bq(this.a)};var Zg=VE(EK,'RouterLinkHandler/lambda$1$Type',174);fk(6,1,{6:1},Bv);_.Eb=function Cv(){return sv(this)};_.Fb=function Dv(){return this.g};_.d=0;_.j=false;var ah=VE(EK,'StateNode',6);fk(352,$wnd.Function,{},Fv);_.M=function Gv(a,b){vv(this.a,this.b,a,b)};fk(353,$wnd.Function,{},Hv);_.pb=function Iv(a){Ev(this.a,a)};var Ei=XE('elemental.events','EventRemover');fk(142,1,IK,Jv);_.Gb=function Kv(){wv(this.a,this.b)};var $g=VE(EK,'StateNode/lambda$2$Type',142);fk(354,$wnd.Function,{},Lv);_.pb=function Mv(a){xv(this.a,a)};fk(143,1,IK,Nv);_.Gb=function Ov(){yv(this.a,this.b)};var _g=VE(EK,'StateNode/lambda$4$Type',143);fk(11,1,{11:1},dw);_.Hb=function ew(){return this.e};_.Ib=function gw(a,b,c,d){var e;if(Uv(this,a)){e=Kd(c);bu(Fd(yl(this.c,Fg),26),a,b,e,d)}};_.d=false;_.f=false;var bh=VE(EK,'StateTree',11);fk(357,$wnd.Function,{},hw);_.pb=function iw(a){rv(Fd(a,6),hk(lw.prototype.M,lw,[]))};fk(358,$wnd.Function,{},jw);_.M=function kw(a,b){Wv(this.a,a)};fk(348,$wnd.Function,{},lw);_.M=function mw(a,b){fw(a,b)};var uw,vw;fk(168,1,{},Aw);var dh=VE(PK,'Binder/BinderContextImpl',168);var eh=XE(PK,'BindingStrategy');fk(94,1,{94:1},Fw);_.b=false;_.g=0;var Bw;var hh=VE(PK,'Debouncer',94);fk(347,1,{});_.b=false;_.c=0;var Ji=VE(RK,'Timer',347);fk(311,347,{},Lw);var fh=VE(PK,'Debouncer/1',311);fk(312,347,{},Mw);var gh=VE(PK,'Debouncer/2',312);fk(386,$wnd.Function,{},Ow);_.M=function Pw(a,b){var c;Nw(this,(c=Ld(a,$wnd.Map),Kd(b),c))};fk(387,$wnd.Function,{},Sw);_.pb=function Tw(a){Qw(this.a,a)};fk(388,$wnd.Function,{},Uw);_.pb=function Vw(a){Rw(this.a,a)};fk(297,1,{},Zw);_.jb=function $w(){return kx(this.a)};var ih=VE(PK,'ServerEventHandlerBinder/lambda$0$Type',297);fk(298,1,fK,_w);_.qb=function ax(a){Yw(this.b,this.a,this.c,a)};_.c=false;var jh=VE(PK,'ServerEventHandlerBinder/lambda$1$Type',298);var bx;fk(242,1,{320:1},jy);_.Jb=function ky(a,b,c){sx(this,a,b,c)};_.Kb=function ny(a){return Cx(a)};_.Mb=function sy(a,b){var c,d,e;d=Object.keys(a);e=new _z(d,a,b);c=Fd(b.e.get(lh),76);!c?$x(e.b,e.a,e.c):(c.a=e)};_.Nb=function ty(r,s){var t=this;var u=s._propertiesChanged;u&&(s._propertiesChanged=function(a,b,c){_I(function(){t.Mb(b,r)})();u.apply(this,arguments)});var v=r.Fb();var w=s.ready;s.ready=function(){w.apply(this,arguments);Nn(s);var q=function(){var o=s.root.querySelector(ZK);if(o){s.removeEventListener($K,q)}else{return}if(!o.constructor.prototype.$propChangedModified){o.constructor.prototype.$propChangedModified=true;var p=o.constructor.prototype._propertiesChanged;o.constructor.prototype._propertiesChanged=function(a,b,c){p.apply(this,arguments);var d=Object.getOwnPropertyNames(b);var e='items.';var f;for(f=0;f0){var i=h.substr(0,g);var j=h.substr(g+1);var k=a.items[i];if(k&&k.nodeId){var l=k.nodeId;var m=k[j];var n=this.__dataHost;while(!n.localName||n.__dataHost){n=n.__dataHost}_I(function(){ry(l,n,j,m,v)})()}}}}}}};s.root&&s.root.querySelector(ZK)?q():s.addEventListener($K,q)}};_.Lb=function uy(a){if(a.c.has(0)){return true}return !!a.g&&I(a,a.g.e)};var mx,nx;var Qh=VE(PK,'SimpleElementBindingStrategy',242);fk(376,$wnd.Function,{},Jy);_.pb=function Ky(a){Fd(a,42).Gb()};fk(380,$wnd.Function,{},Ly);_.pb=function My(a){Fd(a,18).X()};fk(106,1,{},Ny);var kh=VE(PK,'SimpleElementBindingStrategy/BindingContext',106);fk(76,1,{76:1},Oy);var lh=VE(PK,'SimpleElementBindingStrategy/InitialPropertyUpdate',76);fk(243,1,{},Py);_.Ob=function Qy(a){Ox(this.a,a)};var mh=VE(PK,'SimpleElementBindingStrategy/lambda$0$Type',243);fk(244,1,{},Ry);_.Ob=function Sy(a){Px(this.a,a)};var nh=VE(PK,'SimpleElementBindingStrategy/lambda$1$Type',244);fk(255,1,aK,Ty);_.ob=function Uy(){Qx(this.b,this.c,this.a)};var oh=VE(PK,'SimpleElementBindingStrategy/lambda$10$Type',255);fk(256,1,uJ,Vy);_.I=function Wy(){this.b.Ob(this.a)};var ph=VE(PK,'SimpleElementBindingStrategy/lambda$11$Type',256);fk(257,1,uJ,Xy);_.I=function Yy(){this.a[this.b]=Jn(this.c)};var qh=VE(PK,'SimpleElementBindingStrategy/lambda$12$Type',257);fk(259,1,fK,Zy);_.qb=function $y(a){Rx(this.a,a)};var rh=VE(PK,'SimpleElementBindingStrategy/lambda$13$Type',259);fk(261,1,fK,_y);_.qb=function az(a){Sx(this.a,a)};var sh=VE(PK,'SimpleElementBindingStrategy/lambda$14$Type',261);fk(262,1,XJ,bz);_.X=function cz(){Lx(this.a,this.b,this.c,false)};var th=VE(PK,'SimpleElementBindingStrategy/lambda$15$Type',262);fk(263,1,XJ,dz);_.X=function ez(){Lx(this.a,this.b,this.c,false)};var uh=VE(PK,'SimpleElementBindingStrategy/lambda$16$Type',263);fk(264,1,XJ,fz);_.X=function gz(){Nx(this.a,this.b,this.c,false)};var vh=VE(PK,'SimpleElementBindingStrategy/lambda$17$Type',264);fk(265,1,{},hz);_.jb=function iz(){return vy(this.a,this.b)};var wh=VE(PK,'SimpleElementBindingStrategy/lambda$18$Type',265);fk(266,1,{},jz);_.jb=function kz(){return wy(this.a,this.b)};var xh=VE(PK,'SimpleElementBindingStrategy/lambda$19$Type',266);fk(245,1,{},lz);_.Ob=function mz(a){Tx(this.a,a)};var yh=VE(PK,'SimpleElementBindingStrategy/lambda$2$Type',245);fk(373,$wnd.Function,{},nz);_.M=function oz(a,b){rC(Fd(a,49))};fk(374,$wnd.Function,{},pz);_.pb=function qz(a){xy(this.a,a)};fk(375,$wnd.Function,{},rz);_.M=function sz(a,b){Fd(a,42).Gb()};fk(377,$wnd.Function,{},tz);_.M=function uz(a,b){Ux(this.a,a)};fk(267,1,gK,vz);_.sb=function wz(a){Vx(this.a,a)};var zh=VE(PK,'SimpleElementBindingStrategy/lambda$25$Type',267);fk(268,1,uJ,xz);_.I=function yz(){Wx(this.b,this.a,this.c)};var Ah=VE(PK,'SimpleElementBindingStrategy/lambda$26$Type',268);fk(269,1,{},zz);_.ub=function Az(a){Xx(this.a,a)};var Bh=VE(PK,'SimpleElementBindingStrategy/lambda$27$Type',269);fk(378,$wnd.Function,{},Bz);_.pb=function Cz(a){Yx(this.a,this.b,a)};fk(270,1,{},Ez);_.pb=function Fz(a){Dz(this,a)};var Ch=VE(PK,'SimpleElementBindingStrategy/lambda$29$Type',270);fk(246,1,{},Gz);_.rb=function Hz(a){_x(this.c,this.b,this.a)};var Dh=VE(PK,'SimpleElementBindingStrategy/lambda$3$Type',246);fk(271,1,fK,Iz);_.qb=function Jz(a){zy(this.a,a)};var Eh=VE(PK,'SimpleElementBindingStrategy/lambda$30$Type',271);fk(272,1,{},Kz);_.jb=function Lz(){return this.a.b};var Fh=VE(PK,'SimpleElementBindingStrategy/lambda$31$Type',272);fk(379,$wnd.Function,{},Mz);_.pb=function Nz(a){this.a.push(Fd(a,6))};fk(247,1,{},Oz);_.I=function Pz(){Ay(this.a)};var Gh=VE(PK,'SimpleElementBindingStrategy/lambda$33$Type',247);fk(249,1,{},Qz);_.jb=function Rz(){return this.a[this.b]};var Hh=VE(PK,'SimpleElementBindingStrategy/lambda$34$Type',249);fk(251,1,aK,Sz);_.ob=function Tz(){rx(this.a)};var Ih=VE(PK,'SimpleElementBindingStrategy/lambda$35$Type',251);fk(258,1,aK,Uz);_.ob=function Vz(){Jx(this.b,this.a)};var Jh=VE(PK,'SimpleElementBindingStrategy/lambda$36$Type',258);fk(260,1,aK,Wz);_.ob=function Xz(){Zx(this.b,this.a)};var Kh=VE(PK,'SimpleElementBindingStrategy/lambda$37$Type',260);fk(248,1,aK,Yz);_.ob=function Zz(){By(this.a)};var Lh=VE(PK,'SimpleElementBindingStrategy/lambda$4$Type',248);fk(250,1,XJ,_z);_.X=function aA(){$z(this)};var Mh=VE(PK,'SimpleElementBindingStrategy/lambda$5$Type',250);fk(252,1,gK,bA);_.sb=function cA(a){CC(new Sz(this.a))};var Nh=VE(PK,'SimpleElementBindingStrategy/lambda$6$Type',252);fk(372,$wnd.Function,{},dA);_.M=function eA(a,b){Cy(this.b,this.a,a)};fk(253,1,gK,fA);_.sb=function gA(a){Dy(this.b,this.a,a)};var Oh=VE(PK,'SimpleElementBindingStrategy/lambda$8$Type',253);fk(254,1,hK,hA);_.tb=function iA(a){gy(this.c,this.b,this.a)};var Ph=VE(PK,'SimpleElementBindingStrategy/lambda$9$Type',254);fk(273,1,{320:1},nA);_.Jb=function oA(a,b,c){lA(a,b)};_.Kb=function pA(a){return $doc.createTextNode('')};_.Lb=function qA(a){return a.c.has(7)};var jA;var Th=VE(PK,'TextBindingStrategy',273);fk(274,1,uJ,rA);_.I=function sA(){kA();XD(this.a,Md(VA(this.b)))};var Rh=VE(PK,'TextBindingStrategy/lambda$0$Type',274);fk(275,1,{},tA);_.rb=function uA(a){mA(this.b,this.a)};var Sh=VE(PK,'TextBindingStrategy/lambda$1$Type',275);fk(351,$wnd.Function,{},zA);_.pb=function AA(a){this.a.add(a)};fk(355,$wnd.Function,{},CA);_.M=function DA(a,b){this.a.push(a)};var FA,GA=false;fk(289,1,{},IA);var Uh=VE('com.vaadin.client.flow.dom','PolymerDomApiImpl',289);fk(77,1,{77:1},JA);var Vh=VE('com.vaadin.client.flow.model','UpdatableModelProperties',77);fk(385,$wnd.Function,{},KA);_.pb=function LA(a){this.a.add(Md(a))};fk(91,1,{});_.Pb=function NA(){return this.e};var ti=VE(_J,'ReactiveValueChangeEvent',91);fk(52,91,{52:1},OA);_.Pb=function PA(){return Fd(this.e,29)};_.b=false;_.c=0;var Wh=VE(_K,'ListSpliceEvent',52);fk(28,1,{28:1,321:1},cB);_.Qb=function dB(a){return fB(this.a,a)};_.b=false;_.c=false;_.d=false;var QA;var di=VE(_K,'MapProperty',28);fk(89,1,{});var si=VE(_J,'ReactiveEventRouter',89);fk(228,89,{},lB);_.Rb=function mB(a,b){Fd(a,44).tb(Fd(b,79))};_.Sb=function nB(a){return new oB(a)};var Yh=VE(_K,'MapProperty/1',228);fk(229,1,hK,oB);_.tb=function pB(a){pC(this.a)};var Xh=VE(_K,'MapProperty/1/0methodref$onValueChange$Type',229);fk(227,1,XJ,qB);_.X=function rB(){RA()};var Zh=VE(_K,'MapProperty/lambda$0$Type',227);fk(230,1,aK,sB);_.ob=function tB(){this.a.d=false};var $h=VE(_K,'MapProperty/lambda$1$Type',230);fk(231,1,aK,uB);_.ob=function vB(){this.a.d=false};var _h=VE(_K,'MapProperty/lambda$2$Type',231);fk(232,1,XJ,wB);_.X=function xB(){$A(this.a,this.b)};var ai=VE(_K,'MapProperty/lambda$3$Type',232);fk(92,91,{92:1},yB);_.Pb=function zB(){return Fd(this.e,40)};var bi=VE(_K,'MapPropertyAddEvent',92);fk(79,91,{79:1},AB);_.Pb=function BB(){return Fd(this.e,28)};var ci=VE(_K,'MapPropertyChangeEvent',79);fk(39,1,{39:1});_.d=0;var ei=VE(_K,'NodeFeature',39);fk(29,39,{39:1,29:1,321:1},JB);_.Qb=function KB(a){return fB(this.a,a)};_.Tb=function LB(a){var b,c,d;c=[];for(b=0;b=0?':'+this.c:'')+')'};_.c=0;var hj=VE(dJ,'StackTraceElement',30);Dd={4:1,111:1,32:1,2:1};var kj=VE(dJ,'String',2);fk(71,85,{111:1},$F,_F,aG);var ij=VE(dJ,'StringBuilder',71);fk(123,86,xJ,bG);var jj=VE(dJ,'StringIndexOutOfBoundsException',123);fk(500,1,{});var cG;fk(338,1,{});_.A=function fG(){var a,b,c;c=new XH('[',']');for(b=this.ac();b.cc();){a=b.dc();WH(c,a===this?'(this Collection)':a==null?yJ:jk(a))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var mj=VE(mL,'AbstractCollection',338);fk(341,1,{110:1});_.u=function jG(a){var b,c,d;if(a===this){return true}if(!Pd(a,78)){return false}d=Fd(a,110);if(this.a.c+this.b.c!=d.a.c+d.b.c){return false}for(c=new yG((new tG(d)).a);c.b;){b=xG(c);if(!gG(this,b)){return false}}return true};_.w=function lG(){return dH(new tG(this))};_.A=function mG(){var a,b,c;c=new XH('{','}');for(b=new yG((new tG(this)).a);b.b;){a=xG(b);WH(c,iG(this,a.ec())+'='+iG(this,a.fc()))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var vj=VE(mL,'AbstractMap',341);fk(280,341,{110:1});var pj=VE(mL,'AbstractHashMap',280);fk(340,338,{319:1});_.u=function qG(a){var b;if(a===this){return true}if(!Pd(a,64)){return false}b=Fd(a,319);if(pG(b.a)!=this.bc()){return false}return eG(this,b)};_.w=function rG(){return dH(this)};var wj=VE(mL,'AbstractSet',340);fk(64,340,{64:1,319:1},tG);_.ac=function uG(){return new yG(this.a)};_.bc=function vG(){return pG(this.a)};var oj=VE(mL,'AbstractHashMap/EntrySet',64);fk(65,1,{},yG);_.dc=function AG(){return xG(this)};_.cc=function zG(){return this.b};_.b=false;var nj=VE(mL,'AbstractHashMap/EntrySetIterator',65);fk(339,338,{318:1});_.u=function BG(a){var b,c,d,e,f;if(a===this){return true}if(!Pd(a,45)){return false}f=Fd(a,318);if(this.bc()!=f.a.length){return false}e=new ZG(f);for(c=new ZG(this);c.a=0;d--){$E((g.a+=i,g),Td(c[d]));i='.'}return g.a} +function ab(a,b){var c,d,e,f,g;if(cb()){Y(b.a)}else{f=(Md(Hl(a.c,De),9).f?(e='vaadinPushSockJS-min.js'):(e='vaadinPushSockJS.js'),'VAADIN/static/push/'+e);ul&&kD($wnd.console,'Loading sockJS '+f);d=Md(Hl(a.c,Df),58);g=Md(Hl(a.c,De),9).b+f;c=new lb(a,f,b);Ko(d,g,c,false,jJ)}} +function cC(a,b){var c,d,e,f,g,h;if(rD(b)==1){c=b;h=ee(uD(c[0]));switch(h){case 0:{g=ee(uD(c[1]));d=(f=g,Md(a.a.get(f),6)).a;return d}case 1:return e=Qd(c[1]),e;case 2:return aC(ee(uD(c[1])),ee(uD(c[2])),Md(Hl(a.c,Fg),32));default:throw dk(new qE(UK+sD(c)));}}else{return b}} +function Kr(a,b){var c,d,e,f,g;ul&&($wnd.console.log('Handling dependencies'),undefined);c=new $wnd.Map;for(e=(QC(),Ad(ud(yi,1),vJ,42,0,[OC,NC,PC])),f=0,g=e.length;fa.a){a.a==0?ul&&kD($wnd.console,'Updating client-to-server id to '+b+' based on server'):Cl('Server expects next client-to-server id to be '+b+' but we were going to use '+a.a+'. Will use '+b+'.');a.a=b}} +function Lo(a,b,c){var d,e,f;f=bq(b);d=new ap(f);if(a.b.has(f)){!!c&&c.F(d);return}if(Po(f,c,a.a)){e=$doc.createElement('link');e.rel=cK;e.type='text/css';e.href=f;if((!ol&&(ol=new ql),ol).a.k||rl()){Yc((Mc(),new To(a,f,d)),10)}else{Qo(e,new ep(a,f),d);(!ol&&(ol=new ql),ol).a.j&&wk(new Vo(a,f,d),5000)}Co(e)}} +function R(a,b){if(!b){debugger;throw dk(new JD)}switch(a.e.c){case 0:a.e=(Db(),Ab);a.b=b;break;case 1:ul&&($wnd.console.log('Closing push connection'),undefined);a.d.close();a.e=(Db(),zb);b.C();break;case 2:case 3:throw dk(new rE('Can not disconnect more than once'));default:throw dk(new rE('Invalid state'));}} +function xx(a,b){var c,d,e,f,g,h;c=a.f;d=b.style;yA(a.a);if(a.c){h=(yA(a.a),Td(a.g));e=false;if(h.indexOf('!important')!=-1){f=fD($doc,b.tagName);g=f.style;g.cssText=c+': '+h+';';if(JE('important',YC(f.style,c))){_C(d,c,ZC(f.style,c),'important');e=true}}e||(d.setProperty(c,h),undefined)}else{d.removeProperty(c)}} +function wq(a){var b,c,d,e;kA((c=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(c,hK)))!=null&&sl('reconnectingText',kA((d=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(d,hK))));kA((e=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(e,iK)))!=null&&sl('offlineText',kA((b=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(b,iK))))} +function BG(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true} +function En(a,b){var c,d,e,f,g;c=Wz(a).children;e=-1;for(f=0;f0){k=$w(a,b);d=!k?null:Wz(k.a).nextSibling}else{d=null}for(g=0;g0){e=i.length;while(e>0&&i[e-1]==''){--e}e=9223372036854775807){return Hd(),Ed}e=false;if(a<0){e=true;a=-a}d=0;if(a>=HJ){d=ee(a/HJ);a-=d*HJ}c=0;if(a>=IJ){c=ee(a/IJ);a-=c*IJ}b=ee(a);f=Cd(b,c,d);e&&(g=~f.l+1&GJ,h=~f.m+(g==0?1:0)&GJ,i=~f.h+(g==0&&h==0?1:0)&1048575,f.l=g,f.m=h,f.h=i,undefined);return f} +function xq(a,b){if(Md(Hl(a.c,Of),12).b!=(Up(),Sp)){ul&&($wnd.console.warn('Trying to reconnect after application has been stopped. Giving up'),undefined);return}if(b){ul&&($wnd.console.log('Re-sending last message to the server...'),undefined);vs(Md(Hl(a.c,pg),18),b)}else{ul&&($wnd.console.log('Trying to re-establish server connection...'),undefined);jr(Md(Hl(a.c,_f),57))}} +function mE(a){var b,c,d,e,f;if(a==null){throw dk(new DE(AJ))}d=a.length;e=d>0&&(SI(0,a.length),a.charCodeAt(0)==45||(SI(0,a.length),a.charCodeAt(0)==43))?1:0;for(b=e;b2147483647){throw dk(new DE(dL+a+'"'))}return f} +function zx(a,b,c,d){var e,f,g,h,i;i=Eu(a,24);for(f=0;f<(yA(i.a),i.c.length);f++){e=Md(i.c[f],6);if(e==b){continue}if(JE((h=Fu(b,0),sD(Rd(iA(hB(h,xK))))),(g=Fu(e,0),sD(Rd(iA(hB(g,xK))))))){Cl('There is already a request to attach element addressed by the '+d+". The existing request's node id='"+e.d+"'. Cannot attach the same element twice.");kv(b.g,a,b.d,e.d,c);return false}}return true} +function qs(a){var b,c,d;d=Md(Hl(a.c,Jg),36);if(d.c.length==0&&a.d!=1){return}c=d.c;d.c=[];d.b=false;d.a=It;if(c.length==0&&a.d!=1){ul&&($wnd.console.warn('All RPCs filtered out, not sending anything to the server'),undefined);return}b={};if(a.d==1){a.d=2;ul&&($wnd.console.log('Resynchronizing from server'),undefined);b[kK]=Object(true)}tl('loading');kt(Md(Hl(a.c,Bg),16));vs(a,ss(a,c,b))} +function td(a,b){var c;switch(vd(a)){case 6:return _d(b);case 7:return Yd(b);case 8:return Xd(b);case 3:return Array.isArray(b)&&(c=vd(b),!(c>=14&&c<=16));case 11:return b!=null&&ae(b);case 12:return b!=null&&(typeof b===dJ||typeof b==fJ);case 0:return Ld(b,a.__elementTypeId$);case 2:return be(b)&&!(b.lc===sk);case 1:return be(b)&&!(b.lc===sk)||Ld(b,a.__elementTypeId$);default:return true;}} +function Sm(b,c){if(document.body.$&&document.body.$.hasOwnProperty&&document.body.$.hasOwnProperty(c)){return document.body.$[c]}else if(b.shadowRoot){return b.shadowRoot.getElementById(c)}else if(b.getElementById){return b.getElementById(c)}else if(c&&c.match('^[a-zA-Z0-9-_]*$')){return b.querySelector('#'+c)}else{return Array.from(b.querySelectorAll('[id]')).find(function(a){return a.id==c})}} +function Aq(a,b,c){var d;if(Md(Hl(a.c,Of),12).b!=(Up(),Sp)){return}tl('reconnecting');if(a.b){if($q(b,a.b)){ul&&lD($wnd.console,'Now reconnecting because of '+b+' failure');a.b=b}}else{a.b=b;ul&&lD($wnd.console,'Reconnecting because of '+b+' failure')}if(a.b!=b){return}++a.a;Bl('Reconnect attempt '+a.a+' for '+b);a.a>=jA((d=Fu(Md(Hl(Md(Hl(a.c,zg),37).a,Zg),10).e,9),hB(d,'reconnectAttempts')),10000)?yq(a):Oq(a,c)} +function Tm(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;j=null;g=Wz(a.a).childNodes;o=new $wnd.Map;e=!b;i=-1;for(m=0;m=f){debugger;throw dk(new JD)}return g.length==0?null:g}else{return a}} +function Jx(a,b,c,d,e){var f,g,h;h=av(e,ee(a));if(!h.c.has(1)){return}if(!Ex(h,b)){debugger;throw dk(new KD('Host element is not a parent of the node whose property has changed. This is an implementation error. Most likely it means that there are several StateTrees on the same page (might be possible with portlets) and the target StateTree should not be passed into the method as an argument but somehow detected from the host element. Another option is that host element is calculated incorrectly.'))}f=Fu(h,1);g=hB(f,c);hA(g,d).V()} +function op(a,b,c,d){var e,f,g,h,i,j;h=$doc;j=h.createElement('div');j.className='v-system-error';if(a!=null){f=h.createElement('div');f.className='caption';f.textContent=a;j.appendChild(f);ul&&jD($wnd.console,a)}if(b!=null){i=h.createElement('div');i.className='message';i.textContent=b;j.appendChild(i);ul&&jD($wnd.console,b)}if(c!=null){g=h.createElement('div');g.className='details';g.textContent=c;j.appendChild(g);ul&&jD($wnd.console,c)}if(d!=null){e=h.querySelector(d);!!e&&bD(Rd(WG($G(e.shadowRoot),e)),j)}else{cD(h.body,j)}return j} +function nq(a,b){var c,d,e;c=vq(b,'serviceUrl');Wk(a,tq(b,'webComponentMode'));if(c==null){Sk(a,bq('.'));Mk(a,bq(vq(b,eK)))}else{a.i=c;Mk(a,bq(c+(''+vq(b,eK))))}Vk(a,uq(b,'v-uiId').a);Ok(a,uq(b,'heartbeatInterval').a);Pk(a,uq(b,'maxMessageSuspendTimeout').a);Tk(a,(d=b.getConfig(fK),d?d.vaadinVersion:null));e=b.getConfig(fK);sq();Uk(a,b.getConfig('sessExpMsg'));Qk(a,!tq(b,'debug'));Rk(a,tq(b,'requestTiming'));Nk(a,b.getConfig('webcomponents'));tq(b,'devToolsEnabled');vq(b,'liveReloadUrl');vq(b,'liveReloadBackend');vq(b,'springBootLiveReloadPort')} +function nd(a,b){var c,d,e,f,g,h,i,j,k;j='';if(b.length==0){return a.T(FJ,DJ,-1,-1)}k=UE(b);JE(k.substr(0,3),'at ')&&(k=k.substr(3));k=k.replace(/\[.*?\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=UE(k.substr(g+1));k=UE(k.substr(0,g))}}else{c=k.indexOf(')',g);j=k.substr(g+1,c-(g+1));k=UE(k.substr(0,g))}g=LE(k,VE(46));g!=-1&&(k=k.substr(g+1));(k.length==0||JE(k,'Anonymous function'))&&(k=DJ);h=NE(j,VE(58));e=OE(j,VE(58),h-1);i=-1;d=-1;f=FJ;if(h!=-1&&e!=-1){f=j.substr(0,e);i=gd(j.substr(e+1,h-(e+1)));d=gd(j.substr(h+1))}return a.T(f,k,i,d)} +function Sl(a,b){this.a=new $wnd.Map;this.b=new $wnd.Map;Kl(this,Ie,a);Kl(this,De,b);Kl(this,Df,new No(this));Kl(this,Pf,new _p(this));Kl(this,af,new km(this));Kl(this,Jf,new tp(this));Ll(this,Of,new Tl);Kl(this,Zg,new ov(this));Kl(this,Bg,new lt(this));Kl(this,ng,new Wr(this));Kl(this,pg,new As(this));Kl(this,Jg,new Nt(this));Kl(this,Fg,new Ft(this));Kl(this,Ug,new ru(this));Ll(this,Qg,new Vl);Ll(this,df,new Xl);Kl(this,ff,new nn(this));Kl(this,_f,new lr(this));Kl(this,Rf,new Tq(this));Kl(this,Pg,new Wt(this));Kl(this,xg,new Us(this));Kl(this,zg,new dt(this));Kl(this,tg,new Ls(this))} +function ob(b){var c=function(a){return typeof a!=sJ};var d=function(a){return a.replace(/\r\n/g,'')};if(c(b.outerHTML))return d(b.outerHTML);c(b.innerHTML)&&b.cloneNode&&$doc.createElement('div').appendChild(b.cloneNode(true)).innerHTML;if(c(b.nodeType)&&b.nodeType==3){return "'"+b.data.replace(/ /g,'\u25AB').replace(/\u00A0/,'\u25AA')+"'"}if(typeof c(b.htmlText)&&b.collapse){var e=b.htmlText;if(e){return 'IETextRange ['+d(e)+']'}else{var f=b.duplicate();f.pasteHTML('|');var g='IETextRange '+d(b.parentElement().outerHTML);f.moveStart('character',-1);f.pasteHTML('');return g}}return b.toString?b.toString():'[JavaScriptObject]'} +function Rn(a,b,c){var d,e,f;f=[];if(a.c.has(1)){if(!Wd(b,41)){debugger;throw dk(new KD('Received an inconsistent NodeFeature for a node that has a ELEMENT_PROPERTIES feature. It should be NodeMap, but it is: '+b))}e=Md(b,41);gB(e,pk(ko.prototype.H,ko,[f,c]));f.push(fB(e,new go(f,c)))}else if(a.c.has(16)){if(!Wd(b,27)){debugger;throw dk(new KD('Received an inconsistent NodeFeature for a node that has a TEMPLATE_MODELLIST feature. It should be NodeList, but it is: '+b))}d=Md(b,27);f.push(TA(d,new _n(c)))}if(f.length==0){debugger;throw dk(new KD('Node should have ELEMENT_PROPERTIES or TEMPLATE_MODELLIST feature'))}f.push(Bu(a,new eo(f)))} +function bb(a){var b,c,d,e;this.e=(Db(),Bb);this.c=a;Kp(Md(Hl(a,Of),12),new Gb(this));this.a={transport:iJ,fallbackTransport:kJ,transports:[iJ,kJ,lJ],reconnectInterval:5000,maxReconnectAttempts:10,timeout:5000};this.a['logLevel']='debug';Rs(Md(Hl(this.c,xg),49)).forEach(pk(Kb.prototype.H,Kb,[this]));rb(this.a);c=Ss(Md(Hl(this.c,xg),49));if(c==null||UE(c).length==0||JE('/',c)){this.g=mJ;d=Md(Hl(a,De),9).i;JE('.',d)||(e='/'.length,JE(d.substr(d.length-e,e),'/')||(d+='/'));this.g=d+(''+this.g)}else{b=Md(Hl(a,De),9).b;e='/'.length;JE(b.substr(b.length-e,e),'/')&&JE(c.substr(0,1),'/')&&(c=c.substr(1));this.g=b+(''+c)+mJ}ab(this,new Mb(this))} +function Ax(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;l=e.e;o=Td(iA(hB(Fu(b,0),'tag')));h=false;if(!a){h=true;ul&&lD($wnd.console,QK+d+" is not found. The requested tag name is '"+o+"'")}else if(!(!!a&&KE(o,a.tagName))){h=true;Cl(QK+d+" has the wrong tag name '"+a.tagName+"', the requested tag name is '"+o+"'")}if(h){kv(l.g,l,b.d,-1,c);return false}if(!l.c.has(20)){return true}k=Fu(l,20);m=Md(iA(hB(k,LK)),6);if(!m){return true}j=Eu(m,2);g=null;for(i=0;i<(yA(j.a),j.c.length);i++){n=Md(j.c[i],6);f=n.a;if(K(f,a)){g=wE(n.d);break}}if(g){ul&&lD($wnd.console,QK+d+" has been already attached previously via the node id='"+g+"'");kv(l.g,l,b.d,g.a,c);return false}return true} +function nu(b,c,d,e){var f,g,h,i,j,k,l,m,n;if(c.length!=d.length+1){debugger;throw dk(new JD)}try{j=new ($wnd.Function.bind.apply($wnd.Function,[null].concat(c)));j.apply(lu(b,e,new xu(b)),d)}catch(a){a=ck(a);if(Wd(a,7)){i=a;wl(new Dl(i));ul&&($wnd.console.error('Exception is thrown during JavaScript execution. Stacktrace will be dumped separately.'),undefined);if(!Md(Hl(b.a,De),9).f){g=new bF('[');h='';for(l=c,m=0,n=l.length;m=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!BG()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype['delete']=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e} +function ax(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;if(!b){debugger;throw dk(new JD)}f=b.b;t=b.e;if(!f){debugger;throw dk(new KD('Cannot handle DOM event for a Node'))}D=a.type;s=Fu(t,4);e=Md(Hl(t.g.c,Qg),59);i=Td(iA(hB(s,D)));if(i==null){debugger;throw dk(new JD)}if(!hu(e,i)){debugger;throw dk(new JD)}j=Rd(gu(e,i));p=(A=xD(j),A);B=new $wnd.Set;p.length==0?(g=null):(g={});for(l=p,m=0,n=l.length;m=0){g=b.substr(f+3);g=QE(g,_K,'$1');this.a=pE(g)}}else if(this.o){g=SE(b,b.indexOf('webkit/')+7);g=QE(g,aL,'$1');this.a=pE(g)}else if(this.n){g=SE(b,b.indexOf(YK)+8);g=QE(g,aL,'$1');this.a=pE(g);this.a>7&&(this.a=7)}else this.c&&(this.a=0)}catch(a){a=ck(a);if(Wd(a,7)){c=a;eF();'Browser engine version parsing failed for: '+b+' '+c.N()}else throw dk(a)}try{if(this.f){if(b.indexOf('msie')!=-1){if(this.n);else{e=SE(b,b.indexOf('msie ')+5);e=DC(e,0,LE(e,VE(59)));AC(e)}}else{f=b.indexOf('rv:');if(f>=0){g=b.substr(f+3);g=QE(g,_K,'$1');AC(g)}}}else if(this.d){d=b.indexOf(' firefox/')+9;AC(DC(b,d,d+5))}else if(this.b){wC(b)}else if(this.k){d=b.indexOf(' version/');if(d>=0){d+=9;AC(DC(b,d,d+5))}}else if(this.j){d=b.indexOf(' version/');d!=-1?(d+=9):(d=b.indexOf('opera/')+6);AC(DC(b,d,d+5))}else if(this.c){d=b.indexOf(' edge/')+6;b.indexOf(' edg/')!=-1?(d=b.indexOf(' edg/')+5):b.indexOf(ZK)!=-1?(d=b.indexOf(ZK)+6):b.indexOf($K)!=-1&&(d=b.indexOf($K)+8);AC(DC(b,d,d+8))}}catch(a){a=ck(a);if(Wd(a,7)){c=a;eF();'Browser version parsing failed for: '+b+' '+c.N()}else throw dk(a)}if(b.indexOf('windows ')!=-1){b.indexOf('windows phone')!=-1}else if(b.indexOf('android')!=-1){tC(b)}else if(b.indexOf('linux')!=-1);else if(b.indexOf('macintosh')!=-1||b.indexOf('mac osx')!=-1||b.indexOf('mac os x')!=-1){this.g=b.indexOf('ipad')!=-1;this.i=b.indexOf('iphone')!=-1;(this.g||this.i)&&xC(b)}else b.indexOf('; cros ')!=-1&&uC(b)} +var dJ='object',eJ='[object Array]',fJ='function',gJ='java.lang',hJ='v-uiId=',iJ='websocket',jJ='text/javascript',kJ='xhr-polling',lJ='xhr-streaming',mJ='VAADIN/push',nJ='transport',oJ='Received push (',pJ='com.github.mcollovati.vertx.vaadin.sockjs.client',qJ='com.vaadin.client',rJ={22:1},sJ='undefined',tJ='com.google.gwt.core.client',uJ='fallbackTransport',vJ={4:1},wJ={97:1},xJ={26:1},yJ='__noinit__',zJ={4:1,7:1,8:1,5:1},AJ='null',BJ='com.google.gwt.core.client.impl',CJ='Working array length changed ',DJ='anonymous',EJ='fnStack',FJ='Unknown',GJ=4194303,HJ=17592186044416,IJ=4194304,JJ='must be non-negative',KJ='must be positive',LJ='com.google.web.bindery.event.shared',MJ={71:1},NJ={30:1},OJ='type',PJ={47:1},QJ={14:1},RJ='constructor',SJ='properties',TJ='value',UJ='com.vaadin.client.flow.reactive',VJ={15:1},WJ='nodeId',XJ='Root node for node ',YJ=' could not be found',ZJ=' is not an Element',$J={69:1},_J={89:1},aK={46:1},bK='script',cK='stylesheet',dK='com.vaadin.flow.shared',eK='contextRootUrl',fK='versionInfo',gK='com.vaadin.client.communication',hK='dialogText',iK='dialogTextGaveUp',jK='syncId',kK='resynchronize',lK='Received message with server id ',mK='clientId',nK='Vaadin-Security-Key',oK='Vaadin-Push-ID',pK='sessionExpired',qK='pushServletMapping',rK='event',sK='node',tK='attachReqId',uK='attachAssignedId',vK='com.vaadin.client.flow',wK='bound',xK='payload',yK='subTemplate',zK={44:1},AK='Node is null',BK='Node is not created for this tree',CK='Node id is not registered with this tree',DK='$server',EK='feat',FK='remove',GK='com.vaadin.client.flow.binding',HK='trailing',IK='intermediate',JK='elemental.util',KK='element',LK='shadowRoot',MK='The HTML node for the StateNode with id=',NK='An error occurred when Flow tried to find a state node matching the element ',OK='hidden',PK='styleDisplay',QK='Element addressed by the ',RK='dom-repeat',SK='dom-change',TK='com.vaadin.client.flow.nodefeature',UK='Unsupported complex type in ',VK='com.vaadin.client.gwt.com.google.web.bindery.event.shared',WK='OS minor',XK=' headlesschrome/',YK='trident/',ZK=' edga/',$K=' edgios/',_K='(\\.[0-9]+).+',aL='([0-9]+\\.[0-9]+).*',bL='com.vaadin.flow.shared.ui',cL='java.io',dL='For input string: "',eL='java.util',fL={45:1},gL='java.util.logging',hL={4:1,327:1},iL='java.util.stream',jL='Index: ',kL=', Size: ',lL='user.agent';var _,lk,gk,bk=-1;$wnd.goog=$wnd.goog||{};$wnd.goog.global=$wnd.goog.global||$wnd;mk();nk(1,null,{},I);_.p=function J(a){return H(this,a)};_.q=function L(){return this.jc};_.r=function N(){return WI(this)};_.s=function P(){var a;return TD(M(this))+'@'+(a=O(this)>>>0,a.toString(16))};_.equals=function(a){return this.p(a)};_.hashCode=function(){return this.r()};_.toString=function(){return this.s()};var Id,Jd,Kd;nk(72,1,{72:1},UD);_.Sb=function VD(a){var b;b=new UD;b.e=4;a>1?(b.c=_D(this,a-1)):(b.c=this);return b};_.Tb=function $D(){SD(this);return this.b};_.Ub=function aE(){return TD(this)};_.Vb=function cE(){SD(this);return this.g};_.Wb=function eE(){return (this.e&4)!=0};_.Xb=function fE(){return (this.e&1)!=0};_.s=function iE(){return ((this.e&2)!=0?'interface ':(this.e&1)!=0?'':'class ')+(SD(this),this.j)};_.e=0;var RD=1;var $i=XD(gJ,'Object',1);var Ni=XD(gJ,'Class',72);nk(108,1,{},bb);_.t=function db(a){this.e=(Db(),Bb);Md(Hl(this.c,Rf),19);ul&&($wnd.console.log('Push connection closed'),undefined)};_.u=function eb(a){this.e=(Db(),zb);zq(Md(Hl(this.c,Rf),19),'Push connection using '+a[nJ]+' failed!')};_.v=function fb(a){var b,c;c=a['data'];b=Zr($r(c));if(!b){Hq(Md(Hl(this.c,Rf),19),this,c)}else{Bl(oJ+this.f+') message: '+c);Md(Hl(this.c,Of),12).b==(Up(),Tp)?Cl(oJ+this.f+') message, but ui is already terminated: '+c):Mr(Md(Hl(this.c,ng),24),b)}};_.w=function gb(a){QH(VH((SD(me),me.j)),'Push connection established using '+this.d.getTransport());Z(this,this.d)};_.A=function hb(a){this.e==(Db(),Cb)&&(this.e=Bb);Kq(Md(Hl(this.c,Rf),19),this)};_.B=function ib(a){QH(VH((SD(me),me.j)),'Push connection re-established using '+this.d.getTransport());Z(this,this.d)};var me=XD(pJ,'SockJSPushConnection',108);nk(252,1,{},jb);_.C=function kb(){Q(this.a)};var ge=XD(pJ,'SockJSPushConnection/0methodref$connect$Type',252);var xf=ZD(qJ,'ResourceLoader/ResourceLoadListener');nk(254,1,rJ,lb);_.D=function mb(a){Lq(Md(Hl(this.a.c,Rf),19),a.a)};_.F=function nb(a){if(cb()){Bl(this.c+' loaded');Y(this.b.a)}else{ul&&($wnd.console.log('SockJS not loaded???????'),undefined);Lq(Md(Hl(this.a.c,Rf),19),a.a)}};var he=XD(pJ,'SockJSPushConnection/1',254);var pe=XD(tJ,'JavaScriptObject$',0);var pb;nk(20,1,{4:1,29:1,20:1});_.p=function vb(a){return this===a};_.r=function wb(){return WI(this)};_.s=function xb(){return this.b!=null?this.b:''+this.c};_.c=0;var Pi=XD(gJ,'Enum',20);nk(52,20,{52:1,4:1,29:1,20:1},Eb);var zb,Ab,Bb,Cb;var ie=YD(pJ,'SockJSPushConnection/State',52,Fb);nk(251,1,wJ,Gb);_.G=function Hb(a){W(this.a,a)};var je=XD(pJ,'SockJSPushConnection/lambda$0$Type',251);var Ke=ZD(qJ,'Command');nk(250,1,xJ,Ib);_.C=function Jb(){};var ke=XD(pJ,'SockJSPushConnection/lambda$1$Type',250);nk(379,$wnd.Function,{},Kb);_.H=function Lb(a,b){X(this.a,Td(a),Td(b))};nk(253,1,xJ,Mb);_.C=function Nb(){Y(this.a)};var le=XD(pJ,'SockJSPushConnection/lambda$3$Type',253);nk(103,1,{},Pb);_.a=0;var ne=XD(tJ,'Duration',103);var Qb=null;nk(5,1,{4:1,5:1});_.J=function $b(a){return new Error(a)};_.K=function ac(){return this.e};_.L=function bc(){var a;return a=Md(oI(qI(mG((this.j==null&&(this.j=wd(fj,vJ,5,0,0,1)),this.j)),new gF),YH(new iI,new gI,new kI,Ad(ud(Qj,1),vJ,48,0,[(bI(),_H)]))),98),aG(a,wd($i,vJ,1,a.a.length,5,1))};_.M=function cc(){return this.f};_.N=function dc(){return this.g};_.O=function ec(){Xb(this,_b(this.J(Yb(this,this.g))));dd(this)};_.s=function gc(){return Yb(this,this.N())};_.e=yJ;_.k=true;var fj=XD(gJ,'Throwable',5);nk(7,5,{4:1,7:1,5:1});var Ri=XD(gJ,'Exception',7);nk(8,7,zJ,jc);var _i=XD(gJ,'RuntimeException',8);nk(55,8,zJ,kc);var Wi=XD(gJ,'JsException',55);nk(129,55,zJ);var re=XD(BJ,'JavaScriptExceptionBase',129);nk(31,129,{31:1,4:1,7:1,8:1,5:1},oc);_.N=function rc(){return nc(this),this.c};_.P=function sc(){return de(this.b)===de(lc)?null:this.b};var lc;var oe=XD(tJ,'JavaScriptException',31);nk(328,1,{});var qe=XD(tJ,'Scheduler',328);var uc=0,vc=false,wc,xc=0,yc=-1;nk(138,328,{});_.e=false;_.j=false;var Lc;var ue=XD(BJ,'SchedulerImpl',138);nk(139,1,{},Zc);_.Q=function $c(){this.a.e=true;Pc(this.a);this.a.e=false;return this.a.j=Qc(this.a)};var se=XD(BJ,'SchedulerImpl/Flusher',139);nk(140,1,{},_c);_.Q=function ad(){this.a.e&&Xc(this.a.f,1);return this.a.j};var te=XD(BJ,'SchedulerImpl/Rescuer',140);var bd;nk(338,1,{});var ye=XD(BJ,'StackTraceCreator/Collector',338);nk(130,338,{},kd);_.R=function ld(a){var b={},j;var c=[];a[EJ]=c;var d=arguments.callee.caller;while(d){var e=(cd(),d.name||(d.name=fd(d.toString())));c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h0){Fo(this.b,this.c);return false}else if(a==0){Eo(this.b,this.c);return true}else if(Ob(this.a)>60000){Eo(this.b,this.c);return false}else{return true}};var sf=XD(qJ,'ResourceLoader/1',196);nk(197,40,{},Vo);_.V=function Wo(){this.a.b.has(this.c)||Eo(this.a,this.b)};var tf=XD(qJ,'ResourceLoader/2',197);nk(201,40,{},Xo);_.V=function Yo(){this.a.b.has(this.c)?Fo(this.a,this.b):Eo(this.a,this.b)};var uf=XD(qJ,'ResourceLoader/3',201);nk(202,1,rJ,Zo);_.D=function $o(a){Eo(this.a,a)};_.F=function _o(a){Fo(this.a,a)};var vf=XD(qJ,'ResourceLoader/4',202);nk(63,1,{},ap);var wf=XD(qJ,'ResourceLoader/ResourceLoadEvent',63);nk(107,1,rJ,bp);_.D=function cp(a){Eo(this.a,a)};_.F=function dp(a){Fo(this.a,a)};var yf=XD(qJ,'ResourceLoader/SimpleLoadListener',107);nk(195,1,rJ,ep);_.D=function fp(a){Eo(this.a,a)};_.F=function gp(a){var b;if((!ol&&(ol=new ql),ol).a.b||(!ol&&(ol=new ql),ol).a.f||(!ol&&(ol=new ql),ol).a.c){b=Ro(this.b);if(b==0){Eo(this.a,a);return}}Fo(this.a,a)};var zf=XD(qJ,'ResourceLoader/StyleSheetLoadListener',195);nk(198,1,NJ,hp);_.lb=function ip(){return this.a.call(null)};var Af=XD(qJ,'ResourceLoader/lambda$0$Type',198);nk(199,1,QJ,jp);_.V=function kp(){this.b.F(this.a)};var Bf=XD(qJ,'ResourceLoader/lambda$1$Type',199);nk(200,1,QJ,lp);_.V=function mp(){this.b.D(this.a)};var Cf=XD(qJ,'ResourceLoader/lambda$2$Type',200);nk(25,1,{25:1},tp);var Jf=XD(qJ,'SystemErrorHandler',25);nk(171,1,{},vp);_.tb=function wp(a,b){var c;c=b;np(c.N())};_.ub=function xp(a){var b;Bl('Received xhr HTTP session resynchronization message: '+a.responseText);Jl(this.a.a);Lp(Md(Hl(this.a.a,Of),12),(Up(),Sp));b=Zr($r(a.responseText));Mr(Md(Hl(this.a.a,ng),24),b);Vk(Md(Hl(this.a.a,De),9),b['uiId']);Gp((Mc(),Lc),new Ap(this))};var Gf=XD(qJ,'SystemErrorHandler/1',171);nk(172,1,{},yp);_.nb=function zp(a){sp(Td(a))};var Ef=XD(qJ,'SystemErrorHandler/1/0methodref$recreateNodes$Type',172);nk(173,1,{},Ap);_.C=function Bp(){pI(mG(Md(Hl(this.a.a.a,De),9).c),new yp)};var Ff=XD(qJ,'SystemErrorHandler/1/lambda$0$Type',173);nk(169,1,{},Cp);_.db=function Dp(a){cq(this.a)};var Hf=XD(qJ,'SystemErrorHandler/lambda$0$Type',169);nk(170,1,{},Ep);_.db=function Fp(a){up(this.a,a)};var If=XD(qJ,'SystemErrorHandler/lambda$1$Type',170);nk(142,138,{},Hp);_.a=0;var Lf=XD(qJ,'TrackingScheduler',142);nk(143,1,{},Ip);_.C=function Jp(){this.a.a--};var Kf=XD(qJ,'TrackingScheduler/lambda$0$Type',143);nk(12,1,{12:1},Mp);var Of=XD(qJ,'UILifecycle',12);nk(177,347,{},Op);_.X=function Pp(a){Md(a,97).G(this)};_.Y=function Qp(){return Np};var Np=null;var Mf=XD(qJ,'UILifecycle/StateChangeEvent',177);nk(61,20,{61:1,4:1,29:1,20:1},Vp);var Rp,Sp,Tp;var Nf=YD(qJ,'UILifecycle/UIState',61,Wp);nk(346,1,vJ);var wi=XD(dK,'VaadinUriResolver',346);nk(50,346,{50:1,4:1},_p);_.vb=function aq(a){return $p(this,a)};var Pf=XD(qJ,'URIResolver',50);var fq=false,gq;nk(123,1,{},qq);_.C=function rq(){mq(this.a)};var Qf=XD('com.vaadin.client.bootstrap','Bootstrapper/lambda$0$Type',123);var Rf=ZD(gK,'ConnectionStateHandler');nk(224,1,{19:1},Tq);_.a=0;_.b=null;var Xf=XD(gK,'DefaultConnectionStateHandler',224);nk(226,40,{},Uq);_.V=function Vq(){this.a.d=null;xq(this.a,this.b)};var Sf=XD(gK,'DefaultConnectionStateHandler/1',226);nk(64,20,{64:1,4:1,29:1,20:1},_q);_.a=0;var Wq,Xq,Yq;var Tf=YD(gK,'DefaultConnectionStateHandler/Type',64,ar);nk(225,1,wJ,br);_.G=function cr(a){Fq(this.a,a)};var Uf=XD(gK,'DefaultConnectionStateHandler/lambda$0$Type',225);nk(227,1,{},dr);_.db=function er(a){yq(this.a)};var Vf=XD(gK,'DefaultConnectionStateHandler/lambda$1$Type',227);nk(228,1,{},fr);_.db=function gr(a){Gq(this.a)};var Wf=XD(gK,'DefaultConnectionStateHandler/lambda$2$Type',228);nk(57,1,{57:1},lr);_.a=-1;var _f=XD(gK,'Heartbeat',57);nk(221,40,{},mr);_.V=function nr(){jr(this.a)};var Yf=XD(gK,'Heartbeat/1',221);nk(223,1,{},or);_.tb=function pr(a,b){!b?Dq(Md(Hl(this.a.b,Rf),19),a):Cq(Md(Hl(this.a.b,Rf),19),b);ir(this.a)};_.ub=function qr(a){Eq(Md(Hl(this.a.b,Rf),19));ir(this.a)};var Zf=XD(gK,'Heartbeat/2',223);nk(222,1,wJ,rr);_.G=function sr(a){hr(this.a,a)};var $f=XD(gK,'Heartbeat/lambda$0$Type',222);nk(179,1,{},wr);_.nb=function xr(a){sl('firstDelay',wE(Md(a,23).a))};var ag=XD(gK,'LoadingIndicatorConfigurator/0methodref$setFirstDelay$Type',179);nk(180,1,{},yr);_.nb=function zr(a){sl('secondDelay',wE(Md(a,23).a))};var bg=XD(gK,'LoadingIndicatorConfigurator/1methodref$setSecondDelay$Type',180);nk(181,1,{},Ar);_.nb=function Br(a){sl('thirdDelay',wE(Md(a,23).a))};var cg=XD(gK,'LoadingIndicatorConfigurator/2methodref$setThirdDelay$Type',181);nk(182,1,aK,Cr);_.rb=function Dr(a){vr(lA(Md(a.e,13)))};var dg=XD(gK,'LoadingIndicatorConfigurator/lambda$3$Type',182);nk(183,1,aK,Er);_.rb=function Fr(a){ur(this.b,this.a,a)};_.a=0;var eg=XD(gK,'LoadingIndicatorConfigurator/lambda$4$Type',183);nk(24,1,{24:1},Wr);_.a=0;_.b='init';_.d=false;_.e=0;_.f=-1;_.i=null;_.o=0;var ng=XD(gK,'MessageHandler',24);nk(188,1,xJ,_r);_.C=function as(){!Vz&&$wnd.Polymer!=null&&JE($wnd.Polymer.version.substr(0,'1.'.length),'1.')&&(Vz=true,ul&&($wnd.console.log('Polymer micro is now loaded, using Polymer DOM API'),undefined),Uz=new Xz,undefined)};var fg=XD(gK,'MessageHandler/0methodref$updateApiImplementation$Type',188);nk(187,40,{},bs);_.V=function cs(){Ir(this.a)};var gg=XD(gK,'MessageHandler/1',187);nk(367,$wnd.Function,{},ds);_.nb=function es(a){Gr(Md(a,6))};nk(62,1,{62:1},fs);var hg=XD(gK,'MessageHandler/PendingUIDLMessage',62);nk(189,1,xJ,gs);_.C=function hs(){Tr(this.a,this.d,this.b,this.c)};_.c=0;var ig=XD(gK,'MessageHandler/lambda$1$Type',189);nk(191,1,VJ,is);_.mb=function js(){SB(new ks(this.a,this.b))};var jg=XD(gK,'MessageHandler/lambda$3$Type',191);nk(190,1,VJ,ks);_.mb=function ls(){Qr(this.a,this.b)};var kg=XD(gK,'MessageHandler/lambda$4$Type',190);nk(193,1,VJ,ms);_.mb=function ns(){Rr(this.a)};var lg=XD(gK,'MessageHandler/lambda$5$Type',193);nk(192,1,{},os);_.C=function ps(){this.a.forEach(pk(ds.prototype.nb,ds,[]))};var mg=XD(gK,'MessageHandler/lambda$6$Type',192);nk(18,1,{18:1},As);_.a=0;_.d=0;var pg=XD(gK,'MessageSender',18);nk(185,1,xJ,Cs);_.C=function Ds(){rs(this.a)};var og=XD(gK,'MessageSender/lambda$0$Type',185);nk(174,1,aK,Gs);_.rb=function Hs(a){Es(this.a,a)};var qg=XD(gK,'PollConfigurator/lambda$0$Type',174);nk(78,1,{78:1},Ls);_.wb=function Ms(){var a;a=Md(Hl(this.b,Zg),10);iv(a,a.e,'ui-poll',null)};_.a=null;var tg=XD(gK,'Poller',78);nk(176,40,{},Ns);_.V=function Os(){var a;a=Md(Hl(this.a.b,Zg),10);iv(a,a.e,'ui-poll',null)};var rg=XD(gK,'Poller/1',176);nk(175,1,wJ,Ps);_.G=function Qs(a){Is(this.a,a)};var sg=XD(gK,'Poller/lambda$0$Type',175);nk(49,1,{49:1},Us);var xg=XD(gK,'PushConfiguration',49);nk(234,1,aK,Xs);_.rb=function Ys(a){Ts(this.a,a)};var ug=XD(gK,'PushConfiguration/0methodref$onPushModeChange$Type',234);nk(235,1,VJ,Zs);_.mb=function $s(){zs(Md(Hl(this.a.a,pg),18),true)};var vg=XD(gK,'PushConfiguration/lambda$1$Type',235);nk(236,1,VJ,_s);_.mb=function at(){zs(Md(Hl(this.a.a,pg),18),false)};var wg=XD(gK,'PushConfiguration/lambda$2$Type',236);nk(373,$wnd.Function,{},bt);_.H=function ct(a,b){Ws(this.a,Md(a,13),Td(b))};nk(37,1,{37:1},dt);var zg=XD(gK,'ReconnectConfiguration',37);nk(178,1,xJ,et);_.C=function ft(){wq(this.a)};var yg=XD(gK,'ReconnectConfiguration/lambda$0$Type',178);nk(16,1,{16:1},lt);_.b=false;var Bg=XD(gK,'RequestResponseTracker',16);nk(186,1,{},mt);_.C=function nt(){jt(this.a)};var Ag=XD(gK,'RequestResponseTracker/lambda$0$Type',186);nk(249,347,{},ot);_.X=function pt(a){fe(a);null.mc()};_.Y=function qt(){return null};var Cg=XD(gK,'RequestStartingEvent',249);nk(233,347,{},st);_.X=function tt(a){Md(a,353).a.b=false};_.Y=function ut(){return rt};var rt;var Dg=XD(gK,'ResponseHandlingEndedEvent',233);nk(289,347,{},vt);_.X=function wt(a){fe(a);null.mc()};_.Y=function xt(){return null};var Eg=XD(gK,'ResponseHandlingStartedEvent',289);nk(32,1,{32:1},Ft);_.xb=function Gt(a,b,c){yt(this,a,b,c)};_.yb=function Ht(a,b,c){var d;d={};d[OJ]='channel';d[sK]=Object(a);d['channel']=Object(b);d['args']=c;Ct(this,d)};var Fg=XD(gK,'ServerConnector',32);nk(36,1,{36:1},Nt);_.b=false;var It;var Jg=XD(gK,'ServerRpcQueue',36);nk(215,1,QJ,Ot);_.V=function Pt(){Lt(this.a)};var Gg=XD(gK,'ServerRpcQueue/0methodref$doFlush$Type',215);nk(214,1,QJ,Qt);_.V=function Rt(){Jt()};var Hg=XD(gK,'ServerRpcQueue/lambda$0$Type',214);nk(216,1,{},St);_.C=function Tt(){this.a.a.V()};var Ig=XD(gK,'ServerRpcQueue/lambda$2$Type',216);nk(76,1,{76:1},Wt);_.b=false;var Pg=XD(gK,'XhrConnection',76);nk(232,40,{},Yt);_.V=function Zt(){Xt(this.b)&&this.a.b&&wk(this,250)};var Kg=XD(gK,'XhrConnection/1',232);nk(229,1,{},_t);_.tb=function au(a,b){var c;c=new fu(a,this.a);if(!b){Rq(Md(Hl(this.c.a,Rf),19),c);return}else{Pq(Md(Hl(this.c.a,Rf),19),c)}};_.ub=function bu(a){var b,c;Bl('Server visit took '+uo(this.b)+'ms');c=a.responseText;b=Zr($r(c));if(!b){Qq(Md(Hl(this.c.a,Rf),19),new fu(a,this.a));return}Sq(Md(Hl(this.c.a,Rf),19));ul&&kD($wnd.console,'Received xhr message: '+c);Mr(Md(Hl(this.c.a,ng),24),b)};_.b=0;var Lg=XD(gK,'XhrConnection/XhrResponseHandler',229);nk(230,1,{},cu);_.db=function du(a){this.a.b=true};var Mg=XD(gK,'XhrConnection/lambda$0$Type',230);nk(231,1,{353:1},eu);var Ng=XD(gK,'XhrConnection/lambda$1$Type',231);nk(111,1,{},fu);var Og=XD(gK,'XhrConnectionError',111);nk(59,1,{59:1},ju);var Qg=XD(vK,'ConstantPool',59);nk(92,1,{92:1},ru);_.zb=function su(){return Md(Hl(this.a,De),9).a};var Ug=XD(vK,'ExecuteJavaScriptProcessor',92);nk(218,1,MJ,tu);_.eb=function uu(a){var b;return SB(new vu(this.a,(b=this.b,b))),ND(),true};var Rg=XD(vK,'ExecuteJavaScriptProcessor/lambda$0$Type',218);nk(217,1,VJ,vu);_.mb=function wu(){mu(this.a,this.b)};var Sg=XD(vK,'ExecuteJavaScriptProcessor/lambda$1$Type',217);nk(219,1,QJ,xu);_.V=function yu(){qu(this.a)};var Tg=XD(vK,'ExecuteJavaScriptProcessor/lambda$2$Type',219);nk(312,1,{},zu);var Vg=XD(vK,'NodeUnregisterEvent',312);nk(6,1,{6:1},Mu);_.Ab=function Nu(){return Du(this)};_.Bb=function Ou(){return this.g};_.d=0;_.j=false;var Yg=XD(vK,'StateNode',6);nk(360,$wnd.Function,{},Qu);_.H=function Ru(a,b){Gu(this.a,this.b,Md(a,33),Od(b))};nk(361,$wnd.Function,{},Su);_.nb=function Tu(a){Pu(this.a,Md(a,114))};var zi=ZD('elemental.events','EventRemover');nk(162,1,zK,Uu);_.Cb=function Vu(){Hu(this.a,this.b)};var Wg=XD(vK,'StateNode/lambda$2$Type',162);nk(362,$wnd.Function,{},Wu);_.nb=function Xu(a){Iu(this.a,Md(a,71))};nk(163,1,zK,Yu);_.Cb=function Zu(){Ju(this.a,this.b)};var Xg=XD(vK,'StateNode/lambda$4$Type',163);nk(10,1,{10:1},ov);_.Db=function pv(){return this.e};_.Eb=function rv(a,b,c,d){var e;if(dv(this,a)){e=Rd(c);Et(Md(Hl(this.c,Fg),32),a,b,e,d)}};_.d=false;_.f=false;var Zg=XD(vK,'StateTree',10);nk(365,$wnd.Function,{},sv);_.nb=function tv(a){Cu(Md(a,6),pk(wv.prototype.H,wv,[]))};nk(366,$wnd.Function,{},uv);_.H=function vv(a,b){var c;fv(this.a,(c=Md(a,6),Od(b),c))};nk(352,$wnd.Function,{},wv);_.H=function xv(a,b){qv(Md(a,33),Od(b))};var Fv,Gv;nk(184,1,{},Lv);var $g=XD(GK,'Binder/BinderContextImpl',184);var _g=ZD(GK,'BindingStrategy');nk(86,1,{86:1},Qv);_.k=0;var Mv;var dh=XD(GK,'Debouncer',86);nk(395,$wnd.Function,{},Uv);_.nb=function Vv(a){Md(a,14).V()};nk(351,1,{});_.c=false;_.d=0;var Di=XD(JK,'Timer',351);nk(317,351,{},$v);var ah=XD(GK,'Debouncer/1',317);nk(318,351,{},aw);var bh=XD(GK,'Debouncer/2',318);nk(396,$wnd.Function,{},cw);_.H=function dw(a,b){var c;bw(this,(c=Sd(a,$wnd.Map),Rd(b),c))};nk(397,$wnd.Function,{},gw);_.nb=function hw(a){ew(this.a,Sd(a,$wnd.Map))};nk(398,$wnd.Function,{},iw);_.nb=function jw(a){fw(this.a,Md(a,86))};nk(394,$wnd.Function,{},kw);_.H=function lw(a,b){Sv(this.a,Md(a,14),Td(b))};nk(309,1,NJ,pw);_.lb=function qw(){return Cw(this.a)};var eh=XD(GK,'ServerEventHandlerBinder/lambda$0$Type',309);nk(310,1,$J,rw);_.ob=function sw(a){ow(this.b,this.a,this.c,a)};_.c=false;var fh=XD(GK,'ServerEventHandlerBinder/lambda$1$Type',310);var tw;nk(255,1,{325:1},Bx);_.Fb=function Cx(a,b,c){Kw(this,a,b,c)};_.Gb=function Fx(a){return Uw(a)};_.Ib=function Kx(a,b){var c,d,e;d=Object.keys(a);e=new rz(d,a,b);c=Md(b.e.get(hh),81);!c?qx(e.b,e.a,e.c):(c.a=e)};_.Jb=function Lx(r,s){var t=this;var u=s._propertiesChanged;u&&(s._propertiesChanged=function(a,b,c){cJ(function(){t.Ib(b,r)})();u.apply(this,arguments)});var v=r.Bb();var w=s.ready;s.ready=function(){w.apply(this,arguments);Dn(s);var q=function(){var o=s.root.querySelector(RK);if(o){s.removeEventListener(SK,q)}else{return}if(!o.constructor.prototype.$propChangedModified){o.constructor.prototype.$propChangedModified=true;var p=o.constructor.prototype._propertiesChanged;o.constructor.prototype._propertiesChanged=function(a,b,c){p.apply(this,arguments);var d=Object.getOwnPropertyNames(b);var e='items.';var f;for(f=0;f0){var i=h.substr(0,g);var j=h.substr(g+1);var k=a.items[i];if(k&&k.nodeId){var l=k.nodeId;var m=k[j];var n=this.__dataHost;while(!n.localName||n.__dataHost){n=n.__dataHost}cJ(function(){Jx(l,n,j,m,v)})()}}}}}}};s.root&&s.root.querySelector(RK)?q():s.addEventListener(SK,q)}};_.Hb=function Mx(a){if(a.c.has(0)){return true}return !!a.g&&K(a,a.g.e)};var Ew,Fw;var Mh=XD(GK,'SimpleElementBindingStrategy',255);nk(384,$wnd.Function,{},$x);_.nb=function _x(a){Md(a,44).Cb()};nk(387,$wnd.Function,{},ay);_.nb=function by(a){Md(a,14).V()};nk(109,1,{},cy);var gh=XD(GK,'SimpleElementBindingStrategy/BindingContext',109);nk(81,1,{81:1},dy);var hh=XD(GK,'SimpleElementBindingStrategy/InitialPropertyUpdate',81);nk(256,1,{},ey);_.Kb=function fy(a){ex(this.a,a)};var ih=XD(GK,'SimpleElementBindingStrategy/lambda$0$Type',256);nk(257,1,{},gy);_.Kb=function hy(a){fx(this.a,a)};var jh=XD(GK,'SimpleElementBindingStrategy/lambda$1$Type',257);nk(380,$wnd.Function,{},iy);_.H=function jy(a,b){var c;Nx(this.b,this.a,(c=Md(a,13),Td(b),c))};nk(266,1,_J,ky);_.qb=function ly(a){Ox(this.b,this.a,a)};var kh=XD(GK,'SimpleElementBindingStrategy/lambda$11$Type',266);nk(267,1,aK,my);_.rb=function ny(a){yx(this.c,this.b,this.a)};var lh=XD(GK,'SimpleElementBindingStrategy/lambda$12$Type',267);nk(268,1,VJ,oy);_.mb=function py(){gx(this.b,this.c,this.a)};var mh=XD(GK,'SimpleElementBindingStrategy/lambda$13$Type',268);nk(269,1,xJ,qy);_.C=function ry(){this.b.Kb(this.a)};var nh=XD(GK,'SimpleElementBindingStrategy/lambda$14$Type',269);nk(270,1,xJ,sy);_.C=function ty(){this.a[this.b]=zn(this.c)};var oh=XD(GK,'SimpleElementBindingStrategy/lambda$15$Type',270);nk(272,1,$J,uy);_.ob=function vy(a){hx(this.a,a)};var ph=XD(GK,'SimpleElementBindingStrategy/lambda$16$Type',272);nk(271,1,VJ,wy);_.mb=function xy(){_w(this.b,this.a)};var qh=XD(GK,'SimpleElementBindingStrategy/lambda$17$Type',271);nk(274,1,$J,yy);_.ob=function zy(a){ix(this.a,a)};var rh=XD(GK,'SimpleElementBindingStrategy/lambda$18$Type',274);nk(273,1,VJ,Ay);_.mb=function By(){jx(this.b,this.a)};var sh=XD(GK,'SimpleElementBindingStrategy/lambda$19$Type',273);nk(258,1,{},Cy);_.Kb=function Dy(a){kx(this.a,a)};var th=XD(GK,'SimpleElementBindingStrategy/lambda$2$Type',258);nk(275,1,QJ,Ey);_.V=function Fy(){bx(this.a,this.b,this.c,false)};var uh=XD(GK,'SimpleElementBindingStrategy/lambda$20$Type',275);nk(276,1,QJ,Gy);_.V=function Hy(){bx(this.a,this.b,this.c,false)};var vh=XD(GK,'SimpleElementBindingStrategy/lambda$21$Type',276);nk(277,1,QJ,Iy);_.V=function Jy(){dx(this.a,this.b,this.c,false)};var wh=XD(GK,'SimpleElementBindingStrategy/lambda$22$Type',277);nk(278,1,NJ,Ky);_.lb=function Ly(){return Px(this.a,this.b)};var xh=XD(GK,'SimpleElementBindingStrategy/lambda$23$Type',278);nk(279,1,NJ,My);_.lb=function Ny(){return Qx(this.a,this.b)};var yh=XD(GK,'SimpleElementBindingStrategy/lambda$24$Type',279);nk(381,$wnd.Function,{},Oy);_.H=function Py(a,b){var c;GB((c=Md(a,79),Td(b),c))};nk(382,$wnd.Function,{},Qy);_.nb=function Ry(a){Rx(this.a,Sd(a,$wnd.Map))};nk(383,$wnd.Function,{},Sy);_.H=function Ty(a,b){var c;(c=Md(a,44),Td(b),c).Cb()};nk(259,1,{114:1},Uy);_.pb=function Vy(a){rx(this.c,this.b,this.a)};var zh=XD(GK,'SimpleElementBindingStrategy/lambda$3$Type',259);nk(385,$wnd.Function,{},Wy);_.H=function Xy(a,b){var c;lx(this.a,(c=Md(a,13),Td(b),c))};nk(280,1,_J,Yy);_.qb=function Zy(a){mx(this.a,a)};var Ah=XD(GK,'SimpleElementBindingStrategy/lambda$31$Type',280);nk(281,1,xJ,$y);_.C=function _y(){nx(this.b,this.a,this.c)};var Bh=XD(GK,'SimpleElementBindingStrategy/lambda$32$Type',281);nk(282,1,{},az);_.db=function bz(a){ox(this.a,a)};var Ch=XD(GK,'SimpleElementBindingStrategy/lambda$33$Type',282);nk(386,$wnd.Function,{},cz);_.nb=function dz(a){px(this.a,this.b,Td(a))};nk(283,1,{},ez);_.nb=function fz(a){Yx(this.b,this.c,this.a,Td(a))};var Dh=XD(GK,'SimpleElementBindingStrategy/lambda$35$Type',283);nk(284,1,$J,gz);_.ob=function hz(a){Sx(this.a,a)};var Eh=XD(GK,'SimpleElementBindingStrategy/lambda$37$Type',284);nk(285,1,NJ,iz);_.lb=function jz(){return this.a.b};var Fh=XD(GK,'SimpleElementBindingStrategy/lambda$38$Type',285);nk(388,$wnd.Function,{},kz);_.nb=function lz(a){this.a.push(Md(a,6))};nk(261,1,VJ,mz);_.mb=function nz(){Tx(this.a)};var Gh=XD(GK,'SimpleElementBindingStrategy/lambda$4$Type',261);nk(260,1,{},oz);_.C=function pz(){Ux(this.a)};var Hh=XD(GK,'SimpleElementBindingStrategy/lambda$5$Type',260);nk(263,1,QJ,rz);_.V=function sz(){qz(this)};var Ih=XD(GK,'SimpleElementBindingStrategy/lambda$6$Type',263);nk(262,1,NJ,tz);_.lb=function uz(){return this.a[this.b]};var Jh=XD(GK,'SimpleElementBindingStrategy/lambda$7$Type',262);nk(265,1,_J,vz);_.qb=function wz(a){RB(new xz(this.a))};var Kh=XD(GK,'SimpleElementBindingStrategy/lambda$8$Type',265);nk(264,1,VJ,xz);_.mb=function yz(){Jw(this.a)};var Lh=XD(GK,'SimpleElementBindingStrategy/lambda$9$Type',264);nk(286,1,{325:1},Dz);_.Fb=function Ez(a,b,c){Bz(a,b)};_.Gb=function Fz(a){return $doc.createTextNode('')};_.Hb=function Gz(a){return a.c.has(7)};var zz;var Ph=XD(GK,'TextBindingStrategy',286);nk(287,1,xJ,Hz);_.C=function Iz(){Az();eD(this.a,Td(iA(this.b)))};var Nh=XD(GK,'TextBindingStrategy/lambda$0$Type',287);nk(288,1,{114:1},Jz);_.pb=function Kz(a){Cz(this.b,this.a)};var Oh=XD(GK,'TextBindingStrategy/lambda$1$Type',288);nk(359,$wnd.Function,{},Oz);_.nb=function Pz(a){this.a.add(a)};nk(363,$wnd.Function,{},Rz);_.H=function Sz(a,b){this.a.push(a)};var Uz,Vz=false;nk(301,1,{},Xz);var Qh=XD('com.vaadin.client.flow.dom','PolymerDomApiImpl',301);nk(82,1,{82:1},Yz);var Rh=XD('com.vaadin.client.flow.model','UpdatableModelProperties',82);nk(393,$wnd.Function,{},Zz);_.nb=function $z(a){this.a.add(Td(a))};nk(94,1,{});_.Lb=function aA(){return this.e};var pi=XD(UJ,'ReactiveValueChangeEvent',94);nk(53,94,{53:1},bA);_.Lb=function cA(){return Md(this.e,27)};_.b=false;_.c=0;var Sh=XD(TK,'ListSpliceEvent',53);nk(13,1,{13:1,326:1},rA);_.Mb=function sA(a){return uA(this.a,a)};_.b=false;_.c=false;_.d=false;var dA;var _h=XD(TK,'MapProperty',13);nk(93,1,{});var oi=XD(UJ,'ReactiveEventRouter',93);nk(242,93,{},AA);_.Nb=function BA(a,b){Md(a,46).rb(Md(b,84))};_.Ob=function CA(a){return new DA(a)};var Uh=XD(TK,'MapProperty/1',242);nk(243,1,aK,DA);_.rb=function EA(a){EB(this.a)};var Th=XD(TK,'MapProperty/1/0methodref$onValueChange$Type',243);nk(241,1,QJ,FA);_.V=function GA(){eA()};var Vh=XD(TK,'MapProperty/lambda$0$Type',241);nk(244,1,VJ,HA);_.mb=function IA(){this.a.d=false};var Wh=XD(TK,'MapProperty/lambda$1$Type',244);nk(245,1,VJ,JA);_.mb=function KA(){this.a.d=false};var Xh=XD(TK,'MapProperty/lambda$2$Type',245);nk(246,1,QJ,LA);_.V=function MA(){nA(this.a,this.b)};var Yh=XD(TK,'MapProperty/lambda$3$Type',246);nk(95,94,{95:1},NA);_.Lb=function OA(){return Md(this.e,41)};var Zh=XD(TK,'MapPropertyAddEvent',95);nk(84,94,{84:1},PA);_.Lb=function QA(){return Md(this.e,13)};var $h=XD(TK,'MapPropertyChangeEvent',84);nk(33,1,{33:1});_.d=0;var ai=XD(TK,'NodeFeature',33);nk(27,33,{33:1,27:1,326:1},YA);_.Mb=function ZA(a){return uA(this.a,a)};_.Pb=function $A(a){var b,c,d;c=[];for(b=0;b=0?':'+this.c:'')+')'};_.c=0;var aj=XD(gJ,'StackTraceElement',28);Kd={4:1,120:1,29:1,2:1};var dj=XD(gJ,'String',2);nk(73,91,{120:1},_E,aF,bF);var bj=XD(gJ,'StringBuilder',73);nk(132,74,zJ,cF);var cj=XD(gJ,'StringIndexOutOfBoundsException',132);nk(502,1,{});var dF;nk(115,1,MJ,gF);_.eb=function hF(a){return fF(a)};var ej=XD(gJ,'Throwable/lambda$0$Type',115);nk(102,8,zJ,iF);var gj=XD(gJ,'UnsupportedOperationException',102);nk(342,1,{87:1});_.Yb=function kF(a){throw dk(new iF('Add not supported on this collection'))};_.s=function lF(){var a,b,c;c=new qH('[',']');for(b=this.Zb();b._b();){a=b.ac();pH(c,a===this?'(this Collection)':a==null?AJ:rk(a))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var hj=XD(eL,'AbstractCollection',342);nk(345,1,{113:1});_.p=function pF(a){var b,c,d;if(a===this){return true}if(!Wd(a,83)){return false}d=Md(a,113);if(this.a.c+this.b.c!=d.a.c+d.b.c){return false}for(c=new EF((new zF(d)).a);c.b;){b=DF(c);if(!mF(this,b)){return false}}return true};_.r=function rF(){return nG(new zF(this))};_.s=function sF(){var a,b,c;c=new qH('{','}');for(b=new EF((new zF(this)).a);b.b;){a=DF(b);pH(c,oF(this,a.cc())+'='+oF(this,a.dc()))}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)};var qj=XD(eL,'AbstractMap',345);nk(292,345,{113:1});var kj=XD(eL,'AbstractHashMap',292);nk(344,342,{87:1,324:1});_.p=function wF(a){var b;if(a===this){return true}if(!Wd(a,65)){return false}b=Md(a,324);if(vF(b.a)!=this.$b()){return false}return jF(this,b)};_.r=function xF(){return nG(this)};var rj=XD(eL,'AbstractSet',344);nk(65,344,{65:1,87:1,324:1},zF);_.Zb=function AF(){return new EF(this.a)};_.$b=function BF(){return vF(this.a)};var jj=XD(eL,'AbstractHashMap/EntrySet',65);nk(66,1,{},EF);_.ac=function GF(){return DF(this)};_._b=function FF(){return this.b};_.b=false;var ij=XD(eL,'AbstractHashMap/EntrySetIterator',66);nk(343,342,{87:1,98:1});_.bc=function HF(a,b){throw dk(new iF('Add not supported on this list'))};_.Yb=function IF(a){this.bc(this.$b(),a);return true};_.p=function JF(a){var b,c,d,e,f;if(a===this){return true}if(!Wd(a,35)){return false}f=Md(a,98);if(this.$b()!=f.a.length){return false}e=new hG(f);for(c=new hG(this);c.a Element[]; -export declare const licenseCheckOk: (data: Product) => void; -export declare const licenseCheckFailed: (data: ProductAndMessage) => void; -export declare const licenseCheckNoKey: (data: ProductAndMessage) => void; -export declare const licenseInit: () => void; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js deleted file mode 100644 index 5f0f6178..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js +++ /dev/null @@ -1,110 +0,0 @@ -const noLicenseFallbackTimeout = 1000; -export const findAll = (element, tags) => { - const lightDom = Array.from(element.querySelectorAll(tags.join(', '))); - const shadowDom = Array.from(element.querySelectorAll('*')) - .filter((e) => e.shadowRoot) - .flatMap((e) => findAll(e.shadowRoot, tags)); - return [...lightDom, ...shadowDom]; -}; -let licenseCheckListener = false; -const showNoLicenseFallback = (element, productAndMessage) => { - if (!licenseCheckListener) { - // When a license check has succeeded, refresh so that all elements are properly shown again - window.addEventListener('message', (e) => { - if (e.data === 'validate-license') { - window.location.reload(); - } - }, false); - licenseCheckListener = true; - } - const overlay = element._overlayElement; - if (overlay) { - if (overlay.shadowRoot) { - const defaultSlot = overlay.shadowRoot.querySelector('slot:not([name])'); - if (defaultSlot && defaultSlot.assignedElements().length > 0) { - showNoLicenseFallback(defaultSlot.assignedElements()[0], productAndMessage); - return; - } - } - showNoLicenseFallback(overlay, productAndMessage); - return; - } - const htmlMessage = productAndMessage.messageHtml - ? productAndMessage.messageHtml - : `${productAndMessage.message}

Component: ${productAndMessage.product.name} ${productAndMessage.product.version}

`.replace(/https:([^ ]*)/g, "
https:$1"); - if (element.isConnected) { - element.outerHTML = `
${htmlMessage}
`; - } -}; -const productTagNames = {}; -const productChecking = {}; -const productMissingLicense = {}; -const productCheckOk = {}; -const key = (product) => { - return `${product.name}_${product.version}`; -}; -const checkLicenseIfNeeded = (cvdlElement) => { - var _a; - const { cvdlName, version } = cvdlElement.constructor; - const product = { name: cvdlName, version }; - const tagName = cvdlElement.tagName.toLowerCase(); - productTagNames[cvdlName] = (_a = productTagNames[cvdlName]) !== null && _a !== void 0 ? _a : []; - productTagNames[cvdlName].push(tagName); - const failedLicenseCheck = productMissingLicense[key(product)]; - if (failedLicenseCheck) { - // Has been checked and the check failed - setTimeout(() => showNoLicenseFallback(cvdlElement, failedLicenseCheck), noLicenseFallbackTimeout); - } - if (productMissingLicense[key(product)] || productCheckOk[key(product)]) { - // Already checked - } - else if (!productChecking[key(product)]) { - // Has not been checked - productChecking[key(product)] = true; - window.Vaadin.devTools.checkLicense(product); - } -}; -export const licenseCheckOk = (data) => { - productCheckOk[key(data)] = true; - // eslint-disable-next-line no-console - console.debug('License check ok for', data); -}; -export const licenseCheckFailed = (data) => { - const productName = data.product.name; - productMissingLicense[key(data.product)] = data; - // eslint-disable-next-line no-console - console.error('License check failed for', productName); - const tags = productTagNames[productName]; - if ((tags === null || tags === void 0 ? void 0 : tags.length) > 0) { - findAll(document, tags).forEach((element) => { - setTimeout(() => showNoLicenseFallback(element, productMissingLicense[key(data.product)]), noLicenseFallbackTimeout); - }); - } -}; -export const licenseCheckNoKey = (data) => { - const keyUrl = data.message; - const productName = data.product.name; - data.messageHtml = `No license found. Go here to start a trial or retrieve your license.`; - productMissingLicense[key(data.product)] = data; - // eslint-disable-next-line no-console - console.error('No license found when checking', productName); - const tags = productTagNames[productName]; - if ((tags === null || tags === void 0 ? void 0 : tags.length) > 0) { - findAll(document, tags).forEach((element) => { - setTimeout(() => showNoLicenseFallback(element, productMissingLicense[key(data.product)]), noLicenseFallbackTimeout); - }); - } -}; -export const licenseInit = () => { - // Process already registered elements - window.Vaadin.devTools.createdCvdlElements.forEach((element) => { - checkLicenseIfNeeded(element); - }); - // Handle new elements directly - window.Vaadin.devTools.createdCvdlElements = { - push: (element) => { - checkLicenseIfNeeded(element); - } - }; -}; -//# sourceMappingURL=License.js.map \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js.map b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js.map deleted file mode 100644 index 49a8674c..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/License.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"License.js","sourceRoot":"","sources":["../../../../src/main/frontend/License.ts"],"names":[],"mappings":"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","sourcesContent":["const noLicenseFallbackTimeout = 1000;\n\nexport interface Product {\n name: string;\n version: string;\n}\n\nexport interface ProductAndMessage {\n message: string;\n messageHtml?: string;\n product: Product;\n}\n\nexport const findAll = (element: Element | ShadowRoot | Document, tags: string[]): Element[] => {\n const lightDom = Array.from(element.querySelectorAll(tags.join(', ')));\n const shadowDom = Array.from(element.querySelectorAll('*'))\n .filter((e) => e.shadowRoot)\n .flatMap((e) => findAll(e.shadowRoot!, tags));\n return [...lightDom, ...shadowDom];\n};\n\nlet licenseCheckListener = false;\n\nconst showNoLicenseFallback = (element: Element, productAndMessage: ProductAndMessage) => {\n if (!licenseCheckListener) {\n // When a license check has succeeded, refresh so that all elements are properly shown again\n window.addEventListener(\n 'message',\n (e) => {\n if (e.data === 'validate-license') {\n window.location.reload();\n }\n },\n false\n );\n licenseCheckListener = true;\n }\n const overlay = (element as any)._overlayElement;\n if (overlay) {\n if (overlay.shadowRoot) {\n const defaultSlot = overlay.shadowRoot.querySelector('slot:not([name])');\n if (defaultSlot && defaultSlot.assignedElements().length > 0) {\n showNoLicenseFallback(defaultSlot.assignedElements()[0], productAndMessage);\n return;\n }\n }\n showNoLicenseFallback(overlay, productAndMessage);\n return;\n }\n\n const htmlMessage = productAndMessage.messageHtml\n ? productAndMessage.messageHtml\n : `${productAndMessage.message}

Component: ${productAndMessage.product.name} ${productAndMessage.product.version}

`.replace(\n /https:([^ ]*)/g,\n \"https:$1\"\n );\n\n if (element.isConnected) {\n element.outerHTML = `
${htmlMessage}
`;\n }\n};\n\nconst productTagNames: Record = {};\nconst productChecking: Record = {};\nconst productMissingLicense: Record = {};\nconst productCheckOk: Record = {};\n\nconst key = (product: Product): string => {\n return `${product.name}_${product.version}`;\n};\n\nconst checkLicenseIfNeeded = (cvdlElement: Element) => {\n const { cvdlName, version } = cvdlElement.constructor as CustomElementConstructor & {\n cvdlName: string;\n version: string;\n };\n const product: Product = { name: cvdlName, version };\n const tagName = cvdlElement.tagName.toLowerCase();\n productTagNames[cvdlName] = productTagNames[cvdlName] ?? [];\n productTagNames[cvdlName].push(tagName);\n\n const failedLicenseCheck = productMissingLicense[key(product)];\n if (failedLicenseCheck) {\n // Has been checked and the check failed\n setTimeout(() => showNoLicenseFallback(cvdlElement, failedLicenseCheck), noLicenseFallbackTimeout);\n }\n\n if (productMissingLicense[key(product)] || productCheckOk[key(product)]) {\n // Already checked\n } else if (!productChecking[key(product)]) {\n // Has not been checked\n productChecking[key(product)] = true;\n (window as any).Vaadin.devTools.checkLicense(product);\n }\n};\n\nexport const licenseCheckOk = (data: Product) => {\n productCheckOk[key(data)] = true;\n\n // eslint-disable-next-line no-console\n console.debug('License check ok for', data);\n};\n\nexport const licenseCheckFailed = (data: ProductAndMessage) => {\n const productName = data.product.name;\n productMissingLicense[key(data.product)] = data;\n // eslint-disable-next-line no-console\n console.error('License check failed for', productName);\n\n const tags = productTagNames[productName];\n if (tags?.length > 0) {\n findAll(document, tags).forEach((element) => {\n setTimeout(\n () => showNoLicenseFallback(element, productMissingLicense[key(data.product)]),\n noLicenseFallbackTimeout\n );\n });\n }\n};\n\nexport const licenseCheckNoKey = (data: ProductAndMessage) => {\n const keyUrl = data.message;\n\n const productName = data.product.name;\n data.messageHtml = `No license found. Go here to start a trial or retrieve your license.`;\n productMissingLicense[key(data.product)] = data;\n // eslint-disable-next-line no-console\n console.error('No license found when checking', productName);\n\n const tags = productTagNames[productName];\n if (tags?.length > 0) {\n findAll(document, tags).forEach((element) => {\n setTimeout(\n () => showNoLicenseFallback(element, productMissingLicense[key(data.product)]),\n noLicenseFallbackTimeout\n );\n });\n }\n};\n\nexport const licenseInit = () => {\n // Process already registered elements\n (window as any).Vaadin.devTools.createdCvdlElements.forEach((element: Element) => {\n checkLicenseIfNeeded(element);\n });\n\n // Handle new elements directly\n (window as any).Vaadin.devTools.createdCvdlElements = {\n push: (element: Element) => {\n checkLicenseIfNeeded(element);\n }\n };\n};\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/copy-to-clipboard.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/copy-to-clipboard.js deleted file mode 100644 index 475842a8..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/copy-to-clipboard.js +++ /dev/null @@ -1,150 +0,0 @@ -"use strict"; - -var deselectCurrent = function () { - var selection = document.getSelection(); - if (!selection.rangeCount) { - return function () {}; - } - var active = document.activeElement; - - var ranges = []; - for (var i = 0; i < selection.rangeCount; i++) { - ranges.push(selection.getRangeAt(i)); - } - - switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML - case 'INPUT': - case 'TEXTAREA': - active.blur(); - break; - - default: - active = null; - break; - } - - selection.removeAllRanges(); - return function () { - selection.type === 'Caret' && - selection.removeAllRanges(); - - if (!selection.rangeCount) { - ranges.forEach(function(range) { - selection.addRange(range); - }); - } - - active && - active.focus(); - }; -}; - - -var clipboardToIE11Formatting = { - "text/plain": "Text", - "text/html": "Url", - "default": "Text" -} - -var defaultMessage = "Copy to clipboard: #{key}, Enter"; - -function format(message) { - var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C"; - return message.replace(/#{\s*key\s*}/g, copyKey); -} - -export function copy(text, options) { - var debug, - message, - reselectPrevious, - range, - selection, - mark, - success = false; - if (!options) { - options = {}; - } - debug = options.debug || false; - try { - reselectPrevious = deselectCurrent(); - - range = document.createRange(); - selection = document.getSelection(); - - mark = document.createElement("span"); - mark.textContent = text; - // reset user styles for span element - mark.style.all = "unset"; - // prevents scrolling to the end of the page - mark.style.position = "fixed"; - mark.style.top = 0; - mark.style.clip = "rect(0, 0, 0, 0)"; - // used to preserve spaces and line breaks - mark.style.whiteSpace = "pre"; - // do not inherit user-select (it may be `none`) - mark.style.webkitUserSelect = "text"; - mark.style.MozUserSelect = "text"; - mark.style.msUserSelect = "text"; - mark.style.userSelect = "text"; - mark.addEventListener("copy", function(e) { - e.stopPropagation(); - if (options.format) { - e.preventDefault(); - if (typeof e.clipboardData === "undefined") { // IE 11 - debug && console.warn("unable to use e.clipboardData"); - debug && console.warn("trying IE specific stuff"); - window.clipboardData.clearData(); - var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"] - window.clipboardData.setData(format, text); - } else { // all other browsers - e.clipboardData.clearData(); - e.clipboardData.setData(options.format, text); - } - } - if (options.onCopy) { - e.preventDefault(); - options.onCopy(e.clipboardData); - } - }); - - document.body.appendChild(mark); - - range.selectNodeContents(mark); - selection.addRange(range); - - var successful = document.execCommand("copy"); - if (!successful) { - throw new Error("copy command was unsuccessful"); - } - success = true; - } catch (err) { - debug && console.error("unable to copy using execCommand: ", err); - debug && console.warn("trying IE specific stuff"); - try { - window.clipboardData.setData(options.format || "text", text); - options.onCopy && options.onCopy(window.clipboardData); - success = true; - } catch (err) { - debug && console.error("unable to copy using clipboardData: ", err); - debug && console.error("falling back to prompt"); - message = format("message" in options ? options.message : defaultMessage); - window.prompt(message, text); - } - } finally { - if (selection) { - if (typeof selection.removeRange == "function") { - selection.removeRange(range); - } else { - selection.removeAllRanges(); - } - } - - if (mark) { - document.body.removeChild(mark); - } - reselectPrevious(); - } - - return success; -} - diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector-es6.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector-es6.js deleted file mode 100644 index 699684da..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector-es6.js +++ /dev/null @@ -1 +0,0 @@ -import './dndConnector.js'; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector.js index 13170ec2..7dcb9751 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector.js +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/dndConnector.js @@ -10,7 +10,7 @@ window.Vaadin.Flow.dndConnector = { event.dataTransfer.dropEffect = effect; } - if (effect && effect !== 'none') { + if (effect !== 'none') { /* #7108: if drag moves on top of drop target's children, first another ondragenter event * is fired and then a ondragleave event. This happens again once the drag * moves on top of another children, or back on top of the drop target element. diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/lumo-includes.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/lumo-includes.ts deleted file mode 100644 index bd4834fe..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/lumo-includes.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { color } from '@vaadin/vaadin-lumo-styles/color.js'; -import { typography } from '@vaadin/vaadin-lumo-styles/typography.js'; - -const tpl = document.createElement('template'); -tpl.innerHTML = ``; -document.head.appendChild(tpl.content); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/tooltip.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/tooltip.ts index e5849ac6..351527ce 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/tooltip.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/tooltip.ts @@ -1,11 +1,23 @@ import { Tooltip } from '@vaadin/tooltip/src/vaadin-tooltip.js'; const _window = window as any; -_window.Vaadin = _window.Vaadin || {}; -_window.Vaadin.Flow = _window.Vaadin.Flow || {}; +_window.Vaadin ||= {}; +_window.Vaadin.Flow ||= {}; +_window.Vaadin.Flow.tooltip ||= {}; -_window.Vaadin.Flow.tooltip = { +Object.assign(_window.Vaadin.Flow.tooltip, { setDefaultHideDelay: (hideDelay: number) => Tooltip.setDefaultHideDelay(hideDelay), setDefaultFocusDelay: (focusDelay: number) => Tooltip.setDefaultFocusDelay(focusDelay), - setDefaultHoverDelay: (hoverDelay: number) => Tooltip.setDefaultHoverDelay(hoverDelay), + setDefaultHoverDelay: (hoverDelay: number) => Tooltip.setDefaultHoverDelay(hoverDelay) +}); + +const { defaultHideDelay, defaultFocusDelay, defaultHoverDelay } = _window.Vaadin.Flow.tooltip; +if (defaultHideDelay) { + Tooltip.setDefaultHideDelay(defaultHideDelay); +} +if (defaultFocusDelay) { + Tooltip.setDefaultFocusDelay(defaultFocusDelay); +} +if (defaultHoverDelay) { + Tooltip.setDefaultHoverDelay(defaultHoverDelay); } diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.d.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.d.ts deleted file mode 100644 index a7583c0c..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { LitElement } from 'lit'; -import { Product } from './License'; -interface Feature { - id: string; - title: string; - moreInfoLink: string; - requiresServerRestart: boolean; - enabled: boolean; -} -declare enum ConnectionStatus { - ACTIVE = "active", - INACTIVE = "inactive", - UNAVAILABLE = "unavailable", - ERROR = "error" -} -export declare class Connection extends Object { - static HEARTBEAT_INTERVAL: number; - status: ConnectionStatus; - webSocket?: WebSocket; - constructor(url?: string); - onHandshake(): void; - onReload(): void; - onConnectionError(_: string): void; - onStatusChange(_: ConnectionStatus): void; - onMessage(message: any): void; - handleMessage(msg: any): void; - handleError(msg: any): void; - setActive(yes: boolean): void; - setStatus(status: ConnectionStatus): void; - private send; - setFeature(featureId: string, enabled: boolean): void; - sendTelemetry(browserData: any): void; - sendLicenseCheck(product: Product): void; -} -declare enum MessageType { - LOG = "log", - INFORMATION = "information", - WARNING = "warning", - ERROR = "error" -} -interface Message { - id: number; - type: MessageType; - message: string; - details?: string; - link?: string; - persistentId?: string; - dontShowAgain: boolean; - deleted: boolean; -} -export declare class VaadinDevTools extends LitElement { - static BLUE_HSL: import("lit").CSSResult; - static GREEN_HSL: import("lit").CSSResult; - static GREY_HSL: import("lit").CSSResult; - static YELLOW_HSL: import("lit").CSSResult; - static RED_HSL: import("lit").CSSResult; - static MAX_LOG_ROWS: number; - static get styles(): import("lit").CSSResult; - static DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE: string; - static ACTIVE_KEY_IN_SESSION_STORAGE: string; - static TRIGGERED_KEY_IN_SESSION_STORAGE: string; - static TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE: string; - static AUTO_DEMOTE_NOTIFICATION_DELAY: number; - static HOTSWAP_AGENT: string; - static JREBEL: string; - static SPRING_BOOT_DEVTOOLS: string; - static BACKEND_DISPLAY_NAME: Record; - static get isActive(): boolean; - static notificationDismissed(persistentId: string): boolean; - url?: string; - liveReloadDisabled?: boolean; - backend?: string; - springBootLiveReloadPort?: number; - expanded: boolean; - messages: Message[]; - splashMessage?: string; - notifications: Message[]; - frontendStatus: ConnectionStatus; - javaStatus: ConnectionStatus; - private tabs; - private activeTab; - private serverInfo; - private features; - private unreadErrors; - private root; - private javaConnection?; - private frontendConnection?; - private nextMessageId; - private disableEventListener?; - private transitionDuration; - elementTelemetry(): void; - openWebSocketConnection(): void; - getDedicatedWebSocketUrl(): string | undefined; - getSpringBootWebSocketUrl(location: any): string; - connectedCallback(): void; - format(o: any): string; - catchErrors(): void; - disconnectedCallback(): void; - toggleExpanded(): void; - showSplashMessage(msg: string | undefined): void; - demoteSplashMessage(): void; - checkLicense(productInfo: Product): void; - log(type: MessageType, message: string, details?: string, link?: string): void; - showNotification(type: MessageType, message: string, details?: string, link?: string, persistentId?: string): void; - dismissNotification(id: number): void; - findNotificationIndex(id: number): number; - toggleDontShowAgain(id: number): void; - setActive(yes: boolean): void; - getStatusColor(status: ConnectionStatus | undefined): import("lit").CSSResult; - renderMessage(messageObject: Message): import("lit-html").TemplateResult<1>; - render(): import("lit-html").TemplateResult<1>; - renderLog(): import("lit-html").TemplateResult<1>; - activateLog(): void; - renderInfo(): import("lit-html").TemplateResult<1>; - private renderFeatures; - copyInfoToClipboard(): void; - toggleFeatureFlag(e: Event, feature: Feature): void; -} -export {}; diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js deleted file mode 100644 index 547fd0da..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js +++ /dev/null @@ -1,1477 +0,0 @@ -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -import { css, html, LitElement, nothing } from 'lit'; -import { property, query, state } from 'lit/decorators.js'; -import { classMap } from 'lit/directives/class-map.js'; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import { copy } from './copy-to-clipboard.js'; -import { licenseCheckFailed, licenseCheckNoKey, licenseCheckOk, licenseInit } from './License'; -var ConnectionStatus; -(function (ConnectionStatus) { - ConnectionStatus["ACTIVE"] = "active"; - ConnectionStatus["INACTIVE"] = "inactive"; - ConnectionStatus["UNAVAILABLE"] = "unavailable"; - ConnectionStatus["ERROR"] = "error"; -})(ConnectionStatus || (ConnectionStatus = {})); -export class Connection extends Object { - constructor(url) { - super(); - this.status = ConnectionStatus.UNAVAILABLE; - if (url) { - this.webSocket = new WebSocket(url); - this.webSocket.onmessage = (msg) => this.handleMessage(msg); - this.webSocket.onerror = (err) => this.handleError(err); - this.webSocket.onclose = (_) => { - if (this.status !== ConnectionStatus.ERROR) { - this.setStatus(ConnectionStatus.UNAVAILABLE); - } - this.webSocket = undefined; - }; - } - setInterval(() => { - if (this.webSocket && self.status !== ConnectionStatus.ERROR && this.status !== ConnectionStatus.UNAVAILABLE) { - this.webSocket.send(''); - } - }, Connection.HEARTBEAT_INTERVAL); - } - onHandshake() { - // Intentionally empty - } - onReload() { - // Intentionally empty - } - onConnectionError(_) { - // Intentionally empty - } - onStatusChange(_) { - // Intentionally empty - } - onMessage(message) { - // eslint-disable-next-line no-console - console.error('Unknown message received from the live reload server:', message); - } - handleMessage(msg) { - let json; - try { - json = JSON.parse(msg.data); - } - catch (e) { - this.handleError(`[${e.name}: ${e.message}`); - return; - } - if (json.command === 'hello') { - this.setStatus(ConnectionStatus.ACTIVE); - this.onHandshake(); - } - else if (json.command === 'reload') { - if (this.status === ConnectionStatus.ACTIVE) { - this.onReload(); - } - } - else if (json.command === 'license-check-ok') { - licenseCheckOk(json.data); - } - else if (json.command === 'license-check-failed') { - licenseCheckFailed(json.data); - } - else if (json.command === 'license-check-nokey') { - licenseCheckNoKey(json.data); - } - else { - this.onMessage(json); - } - } - handleError(msg) { - // eslint-disable-next-line no-console - console.error(msg); - this.setStatus(ConnectionStatus.ERROR); - if (msg instanceof Event && this.webSocket) { - this.onConnectionError(`Error in WebSocket connection to ${this.webSocket.url}`); - } - else { - this.onConnectionError(msg); - } - } - setActive(yes) { - if (!yes && this.status === ConnectionStatus.ACTIVE) { - this.setStatus(ConnectionStatus.INACTIVE); - } - else if (yes && this.status === ConnectionStatus.INACTIVE) { - this.setStatus(ConnectionStatus.ACTIVE); - } - } - setStatus(status) { - if (this.status !== status) { - this.status = status; - this.onStatusChange(status); - } - } - send(command, data) { - const message = JSON.stringify({ command, data }); - if (!this.webSocket) { - // eslint-disable-next-line no-console - console.error(`Unable to send message ${command}. No websocket is available`); - } - else if (this.webSocket.readyState !== WebSocket.OPEN) { - this.webSocket.addEventListener('open', () => this.webSocket.send(message)); - } - else { - this.webSocket.send(message); - } - } - setFeature(featureId, enabled) { - this.send('setFeature', { featureId, enabled }); - } - sendTelemetry(browserData) { - this.send('reportTelemetry', { browserData }); - } - sendLicenseCheck(product) { - this.send('checkLicense', product); - } -} -Connection.HEARTBEAT_INTERVAL = 180000; -var MessageType; -(function (MessageType) { - MessageType["LOG"] = "log"; - MessageType["INFORMATION"] = "information"; - MessageType["WARNING"] = "warning"; - MessageType["ERROR"] = "error"; -})(MessageType || (MessageType = {})); -export class VaadinDevTools extends LitElement { - constructor() { - super(...arguments); - this.expanded = false; - this.messages = []; - this.notifications = []; - this.frontendStatus = ConnectionStatus.UNAVAILABLE; - this.javaStatus = ConnectionStatus.UNAVAILABLE; - this.tabs = [ - { id: 'log', title: 'Log', render: this.renderLog, activate: this.activateLog }, - { id: 'info', title: 'Info', render: this.renderInfo }, - { id: 'features', title: 'Feature Flags', render: this.renderFeatures } - ]; - this.activeTab = 'log'; - this.serverInfo = { - flowVersion: '', - vaadinVersion: '', - javaVersion: '', - osVersion: '', - productName: '' - }; - this.features = []; - this.unreadErrors = false; - this.nextMessageId = 1; - this.transitionDuration = 0; - } - static get styles() { - return css ` - :host { - --dev-tools-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, - 'Helvetica Neue', sans-serif; - --dev-tools-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', - monospace; - - --dev-tools-font-size: 0.8125rem; - --dev-tools-font-size-small: 0.75rem; - - --dev-tools-text-color: rgba(255, 255, 255, 0.8); - --dev-tools-text-color-secondary: rgba(255, 255, 255, 0.65); - --dev-tools-text-color-emphasis: rgba(255, 255, 255, 0.95); - --dev-tools-text-color-active: rgba(255, 255, 255, 1); - - --dev-tools-background-color-inactive: rgba(45, 45, 45, 0.25); - --dev-tools-background-color-active: rgba(45, 45, 45, 0.98); - --dev-tools-background-color-active-blurred: rgba(45, 45, 45, 0.85); - - --dev-tools-border-radius: 0.5rem; - --dev-tools-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05), 0 4px 12px -2px rgba(0, 0, 0, 0.4); - - --dev-tools-blue-hsl: ${this.BLUE_HSL}; - --dev-tools-blue-color: hsl(var(--dev-tools-blue-hsl)); - --dev-tools-green-hsl: ${this.GREEN_HSL}; - --dev-tools-green-color: hsl(var(--dev-tools-green-hsl)); - --dev-tools-grey-hsl: ${this.GREY_HSL}; - --dev-tools-grey-color: hsl(var(--dev-tools-grey-hsl)); - --dev-tools-yellow-hsl: ${this.YELLOW_HSL}; - --dev-tools-yellow-color: hsl(var(--dev-tools-yellow-hsl)); - --dev-tools-red-hsl: ${this.RED_HSL}; - --dev-tools-red-color: hsl(var(--dev-tools-red-hsl)); - - /* Needs to be in ms, used in JavaScript as well */ - --dev-tools-transition-duration: 180ms; - - all: initial; - - direction: ltr; - cursor: default; - font: normal 400 var(--dev-tools-font-size) / 1.125rem var(--dev-tools-font-family); - color: var(--dev-tools-text-color); - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - - position: fixed; - z-index: 20000; - pointer-events: none; - bottom: 0; - right: 0; - width: 100%; - height: 100%; - display: flex; - flex-direction: column-reverse; - align-items: flex-end; - } - - .dev-tools { - pointer-events: auto; - display: flex; - align-items: center; - position: fixed; - z-index: inherit; - right: 0.5rem; - bottom: 0.5rem; - min-width: 1.75rem; - height: 1.75rem; - max-width: 1.75rem; - border-radius: 0.5rem; - padding: 0.375rem; - box-sizing: border-box; - background-color: var(--dev-tools-background-color-inactive); - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05); - color: var(--dev-tools-text-color); - transition: var(--dev-tools-transition-duration); - white-space: nowrap; - line-height: 1rem; - } - - .dev-tools:hover, - .dev-tools.active { - background-color: var(--dev-tools-background-color-active); - box-shadow: var(--dev-tools-box-shadow); - } - - .dev-tools.active { - max-width: calc(100% - 1rem); - } - - .dev-tools .dev-tools-icon { - flex: none; - pointer-events: none; - display: inline-block; - width: 1rem; - height: 1rem; - fill: #fff; - transition: var(--dev-tools-transition-duration); - margin: 0; - } - - .dev-tools.active .dev-tools-icon { - opacity: 0; - position: absolute; - transform: scale(0.5); - } - - .dev-tools .status-blip { - flex: none; - display: block; - width: 6px; - height: 6px; - border-radius: 50%; - z-index: 20001; - background: var(--dev-tools-grey-color); - position: absolute; - top: -1px; - right: -1px; - } - - .dev-tools .status-description { - overflow: hidden; - text-overflow: ellipsis; - padding: 0 0.25rem; - } - - .dev-tools.error { - background-color: hsla(var(--dev-tools-red-hsl), 0.15); - animation: bounce 0.5s; - animation-iteration-count: 2; - } - - .switch { - display: inline-flex; - align-items: center; - } - - .switch input { - opacity: 0; - width: 0; - height: 0; - position: absolute; - } - - .switch .slider { - display: block; - flex: none; - width: 28px; - height: 18px; - border-radius: 9px; - background-color: rgba(255, 255, 255, 0.3); - transition: var(--dev-tools-transition-duration); - margin-right: 0.5rem; - } - - .switch:focus-within .slider, - .switch .slider:hover { - background-color: rgba(255, 255, 255, 0.35); - transition: none; - } - - .switch input:focus-visible ~ .slider { - box-shadow: 0 0 0 2px var(--dev-tools-background-color-active), 0 0 0 4px var(--dev-tools-blue-color); - } - - .switch .slider::before { - content: ''; - display: block; - margin: 2px; - width: 14px; - height: 14px; - background-color: #fff; - transition: var(--dev-tools-transition-duration); - border-radius: 50%; - } - - .switch input:checked + .slider { - background-color: var(--dev-tools-green-color); - } - - .switch input:checked + .slider::before { - transform: translateX(10px); - } - - .switch input:disabled + .slider::before { - background-color: var(--dev-tools-grey-color); - } - - .window.hidden { - opacity: 0; - transform: scale(0); - position: absolute; - } - - .window.visible { - transform: none; - opacity: 1; - pointer-events: auto; - } - - .window.visible ~ .dev-tools { - opacity: 0; - pointer-events: none; - } - - .window.visible ~ .dev-tools .dev-tools-icon, - .window.visible ~ .dev-tools .status-blip { - transition: none; - opacity: 0; - } - - .window { - border-radius: var(--dev-tools-border-radius); - overflow: hidden; - margin: 0.5rem; - width: 30rem; - max-width: calc(100% - 1rem); - max-height: calc(100vh - 1rem); - flex-shrink: 1; - background-color: var(--dev-tools-background-color-active); - color: var(--dev-tools-text-color); - transition: var(--dev-tools-transition-duration); - transform-origin: bottom right; - display: flex; - flex-direction: column; - box-shadow: var(--dev-tools-box-shadow); - outline: none; - } - - .window-toolbar { - display: flex; - flex: none; - align-items: center; - padding: 0.375rem; - white-space: nowrap; - order: 1; - background-color: rgba(0, 0, 0, 0.2); - gap: 0.5rem; - } - - .tab { - color: var(--dev-tools-text-color-secondary); - font: inherit; - font-size: var(--dev-tools-font-size-small); - font-weight: 500; - line-height: 1; - padding: 0.25rem 0.375rem; - background: none; - border: none; - margin: 0; - border-radius: 0.25rem; - transition: var(--dev-tools-transition-duration); - } - - .tab:hover, - .tab.active { - color: var(--dev-tools-text-color-active); - } - - .tab.active { - background-color: rgba(255, 255, 255, 0.12); - } - - .tab.unreadErrors::after { - content: '•'; - color: hsl(var(--dev-tools-red-hsl)); - font-size: 1.5rem; - position: absolute; - transform: translate(0, -50%); - } - - .ahreflike { - font-weight: 500; - color: var(--dev-tools-text-color-secondary); - text-decoration: underline; - cursor: pointer; - } - - .ahreflike:hover { - color: var(--dev-tools-text-color-emphasis); - } - - .button { - all: initial; - font-family: inherit; - font-size: var(--dev-tools-font-size-small); - line-height: 1; - white-space: nowrap; - background-color: rgba(0, 0, 0, 0.2); - color: inherit; - font-weight: 600; - padding: 0.25rem 0.375rem; - border-radius: 0.25rem; - } - - .button:focus, - .button:hover { - color: var(--dev-tools-text-color-emphasis); - } - - .minimize-button { - flex: none; - width: 1rem; - height: 1rem; - color: inherit; - background-color: transparent; - border: 0; - padding: 0; - margin: 0 0 0 auto; - opacity: 0.8; - } - - .minimize-button:hover { - opacity: 1; - } - - .minimize-button svg { - max-width: 100%; - } - - .message.information { - --dev-tools-notification-color: var(--dev-tools-blue-color); - } - - .message.warning { - --dev-tools-notification-color: var(--dev-tools-yellow-color); - } - - .message.error { - --dev-tools-notification-color: var(--dev-tools-red-color); - } - - .message { - display: flex; - padding: 0.1875rem 0.75rem 0.1875rem 2rem; - background-clip: padding-box; - } - - .message.log { - padding-left: 0.75rem; - } - - .message-content { - margin-right: 0.5rem; - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; - } - - .message-heading { - position: relative; - display: flex; - align-items: center; - margin: 0.125rem 0; - } - - .message.log { - color: var(--dev-tools-text-color-secondary); - } - - .message:not(.log) .message-heading { - font-weight: 500; - } - - .message.has-details .message-heading { - color: var(--dev-tools-text-color-emphasis); - font-weight: 600; - } - - .message-heading::before { - position: absolute; - margin-left: -1.5rem; - display: inline-block; - text-align: center; - font-size: 0.875em; - font-weight: 600; - line-height: calc(1.25em - 2px); - width: 14px; - height: 14px; - box-sizing: border-box; - border: 1px solid transparent; - border-radius: 50%; - } - - .message.information .message-heading::before { - content: 'i'; - border-color: currentColor; - color: var(--dev-tools-notification-color); - } - - .message.warning .message-heading::before, - .message.error .message-heading::before { - content: '!'; - color: var(--dev-tools-background-color-active); - background-color: var(--dev-tools-notification-color); - } - - .features-tray { - padding: 0.75rem; - flex: auto; - overflow: auto; - animation: fade-in var(--dev-tools-transition-duration) ease-in; - user-select: text; - } - - .features-tray p { - margin-top: 0; - color: var(--dev-tools-text-color-secondary); - } - - .features-tray .feature { - display: flex; - align-items: center; - gap: 1rem; - padding-bottom: 0.5em; - } - - .message .message-details { - font-weight: 400; - color: var(--dev-tools-text-color-secondary); - margin: 0.25rem 0; - } - - .message .message-details[hidden] { - display: none; - } - - .message .message-details p { - display: inline; - margin: 0; - margin-right: 0.375em; - word-break: break-word; - } - - .message .persist { - color: var(--dev-tools-text-color-secondary); - white-space: nowrap; - margin: 0.375rem 0; - display: flex; - align-items: center; - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - } - - .message .persist::before { - content: ''; - width: 1em; - height: 1em; - border-radius: 0.2em; - margin-right: 0.375em; - background-color: rgba(255, 255, 255, 0.3); - } - - .message .persist:hover::before { - background-color: rgba(255, 255, 255, 0.4); - } - - .message .persist.on::before { - background-color: rgba(255, 255, 255, 0.9); - } - - .message .persist.on::after { - content: ''; - order: -1; - position: absolute; - width: 0.75em; - height: 0.25em; - border: 2px solid var(--dev-tools-background-color-active); - border-width: 0 0 2px 2px; - transform: translate(0.05em, -0.05em) rotate(-45deg) scale(0.8, 0.9); - } - - .message .dismiss-message { - font-weight: 600; - align-self: stretch; - display: flex; - align-items: center; - padding: 0 0.25rem; - margin-left: 0.5rem; - color: var(--dev-tools-text-color-secondary); - } - - .message .dismiss-message:hover { - color: var(--dev-tools-text-color); - } - - .notification-tray { - display: flex; - flex-direction: column-reverse; - align-items: flex-end; - margin: 0.5rem; - flex: none; - } - - .window.hidden + .notification-tray { - margin-bottom: 3rem; - } - - .notification-tray .message { - pointer-events: auto; - background-color: var(--dev-tools-background-color-active); - color: var(--dev-tools-text-color); - max-width: 30rem; - box-sizing: border-box; - border-radius: var(--dev-tools-border-radius); - margin-top: 0.5rem; - transition: var(--dev-tools-transition-duration); - transform-origin: bottom right; - animation: slideIn var(--dev-tools-transition-duration); - box-shadow: var(--dev-tools-box-shadow); - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .notification-tray .message.animate-out { - animation: slideOut forwards var(--dev-tools-transition-duration); - } - - .notification-tray .message .message-details { - max-height: 10em; - overflow: hidden; - } - - .message-tray { - flex: auto; - overflow: auto; - max-height: 20rem; - user-select: text; - } - - .message-tray .message { - animation: fade-in var(--dev-tools-transition-duration) ease-in; - padding-left: 2.25rem; - } - - .message-tray .message.warning { - background-color: hsla(var(--dev-tools-yellow-hsl), 0.09); - } - - .message-tray .message.error { - background-color: hsla(var(--dev-tools-red-hsl), 0.09); - } - - .message-tray .message.error .message-heading { - color: hsl(var(--dev-tools-red-hsl)); - } - - .message-tray .message.warning .message-heading { - color: hsl(var(--dev-tools-yellow-hsl)); - } - - .message-tray .message + .message { - border-top: 1px solid rgba(255, 255, 255, 0.07); - } - - .message-tray .dismiss-message, - .message-tray .persist { - display: none; - } - - .info-tray { - padding: 0.75rem; - position: relative; - flex: auto; - overflow: auto; - animation: fade-in var(--dev-tools-transition-duration) ease-in; - user-select: text; - } - - .info-tray dl { - margin: 0; - display: grid; - grid-template-columns: max-content 1fr; - column-gap: 0.75rem; - position: relative; - } - - .info-tray dt { - grid-column: 1; - color: var(--dev-tools-text-color-emphasis); - } - - .info-tray dt:not(:first-child)::before { - content: ''; - width: 100%; - position: absolute; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - margin-top: -0.375rem; - } - - .info-tray dd { - grid-column: 2; - margin: 0; - } - - .info-tray :is(dt, dd):not(:last-child) { - margin-bottom: 0.75rem; - } - - .info-tray dd + dd { - margin-top: -0.5rem; - } - - .info-tray .live-reload-status::before { - content: '•'; - color: var(--status-color); - width: 0.75rem; - display: inline-block; - font-size: 1rem; - line-height: 0.5rem; - } - - .info-tray .copy { - position: fixed; - z-index: 1; - top: 0.5rem; - right: 0.5rem; - } - - .info-tray .switch { - vertical-align: -4px; - } - - @keyframes slideIn { - from { - transform: translateX(100%); - opacity: 0; - } - to { - transform: translateX(0%); - opacity: 1; - } - } - - @keyframes slideOut { - from { - transform: translateX(0%); - opacity: 1; - } - to { - transform: translateX(100%); - opacity: 0; - } - } - - @keyframes fade-in { - 0% { - opacity: 0; - } - } - - @keyframes bounce { - 0% { - transform: scale(0.8); - } - 50% { - transform: scale(1.5); - background-color: hsla(var(--dev-tools-red-hsl), 1); - } - 100% { - transform: scale(1); - } - } - - @supports (backdrop-filter: blur(1px)) { - .dev-tools, - .window, - .notification-tray .message { - backdrop-filter: blur(8px); - } - .dev-tools:hover, - .dev-tools.active, - .window, - .notification-tray .message { - background-color: var(--dev-tools-background-color-active-blurred); - } - } - `; - } - static get isActive() { - const active = window.sessionStorage.getItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE); - return active === null || active !== 'false'; - } - static notificationDismissed(persistentId) { - const shown = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE); - return shown !== null && shown.includes(persistentId); - } - elementTelemetry() { - let data = {}; - try { - // localstorage data is collected by vaadin-usage-statistics.js - const localStorageStatsString = localStorage.getItem('vaadin.statistics.basket'); - if (!localStorageStatsString) { - // Do not send empty data - return; - } - data = JSON.parse(localStorageStatsString); - } - catch (e) { - // In case of parse errors don't send anything - return; - } - if (this.frontendConnection) { - this.frontendConnection.sendTelemetry(data); - } - } - openWebSocketConnection() { - this.frontendStatus = ConnectionStatus.UNAVAILABLE; - this.javaStatus = ConnectionStatus.UNAVAILABLE; - const onConnectionError = (msg) => this.log(MessageType.ERROR, msg); - const onReload = () => { - if (this.liveReloadDisabled) { - return; - } - this.showSplashMessage('Reloading…'); - const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE); - const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1; - window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString()); - window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE, 'true'); - window.location.reload(); - }; - const frontendConnection = new Connection(this.getDedicatedWebSocketUrl()); - frontendConnection.onHandshake = () => { - this.log(MessageType.LOG, 'Vaadin development mode initialized'); - if (!VaadinDevTools.isActive) { - frontendConnection.setActive(false); - } - this.elementTelemetry(); - }; - frontendConnection.onConnectionError = onConnectionError; - frontendConnection.onReload = onReload; - frontendConnection.onStatusChange = (status) => { - this.frontendStatus = status; - }; - frontendConnection.onMessage = (message) => { - if ((message === null || message === void 0 ? void 0 : message.command) === 'serverInfo') { - this.serverInfo = message.data; - } - else if ((message === null || message === void 0 ? void 0 : message.command) === 'featureFlags') { - this.features = message.data.features; - } - else { - // eslint-disable-next-line no-console - console.error('Unknown message from front-end connection:', JSON.stringify(message)); - } - }; - this.frontendConnection = frontendConnection; - let javaConnection; - if (this.backend === VaadinDevTools.SPRING_BOOT_DEVTOOLS && this.springBootLiveReloadPort) { - javaConnection = new Connection(this.getSpringBootWebSocketUrl(window.location)); - javaConnection.onHandshake = () => { - if (!VaadinDevTools.isActive) { - javaConnection.setActive(false); - } - }; - javaConnection.onReload = onReload; - javaConnection.onConnectionError = onConnectionError; - } - else if (this.backend === VaadinDevTools.JREBEL || this.backend === VaadinDevTools.HOTSWAP_AGENT) { - javaConnection = frontendConnection; - } - else { - javaConnection = new Connection(undefined); - } - const prevOnStatusChange = javaConnection.onStatusChange; - javaConnection.onStatusChange = (status) => { - prevOnStatusChange(status); - this.javaStatus = status; - }; - const prevOnHandshake = javaConnection.onHandshake; - javaConnection.onHandshake = () => { - prevOnHandshake(); - if (this.backend) { - this.log(MessageType.INFORMATION, `Java live reload available: ${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]}`); - } - }; - this.javaConnection = javaConnection; - if (!this.backend) { - this.showNotification(MessageType.WARNING, 'Java live reload unavailable', 'Live reload for Java changes is currently not set up. Find out how to make use of this functionality to boost your workflow.', 'https://vaadin.com/docs/latest/flow/configuration/live-reload', 'liveReloadUnavailable'); - } - } - getDedicatedWebSocketUrl() { - function getAbsoluteUrl(relative) { - // Use innerHTML to obtain an absolute URL - const div = document.createElement('div'); - div.innerHTML = ``; - return div.firstChild.href; - } - if (this.url === undefined) { - return undefined; - } - const connectionBaseUrl = getAbsoluteUrl(this.url); - if (!connectionBaseUrl.startsWith('http://') && !connectionBaseUrl.startsWith('https://')) { - // eslint-disable-next-line no-console - console.error('The protocol of the url should be http or https for live reload to work.'); - return undefined; - } - return `${connectionBaseUrl.replace(/^http/, 'ws')}?v-r=push&debug_window`; - } - getSpringBootWebSocketUrl(location) { - const { hostname } = location; - const wsProtocol = location.protocol === 'https:' ? 'wss' : 'ws'; - if (hostname.endsWith('gitpod.io')) { - // Gitpod uses `port-url` instead of `url:port` - const hostnameWithoutPort = hostname.replace(/.*?-/, ''); - return `${wsProtocol}://${this.springBootLiveReloadPort}-${hostnameWithoutPort}`; - } - else { - return `${wsProtocol}://${hostname}:${this.springBootLiveReloadPort}`; - } - } - connectedCallback() { - super.connectedCallback(); - this.catchErrors(); - // when focus or clicking anywhere, move the splash message to the message tray - this.disableEventListener = (_) => this.demoteSplashMessage(); - document.body.addEventListener('focus', this.disableEventListener); - document.body.addEventListener('click', this.disableEventListener); - this.openWebSocketConnection(); - const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); - if (lastReload) { - const now = new Date(); - const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice(-2)}:${`0${now.getSeconds()}`.slice(-2)}`; - this.showSplashMessage(`Page reloaded at ${reloaded}`); - window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE); - } - this.transitionDuration = parseInt(window.getComputedStyle(this).getPropertyValue('--dev-tools-transition-duration'), 10); - const windowAny = window; - windowAny.Vaadin = windowAny.Vaadin || {}; - windowAny.Vaadin.devTools = Object.assign(this, windowAny.Vaadin.devTools); - licenseInit(); - } - format(o) { - return o.toString(); - } - catchErrors() { - // Process stored messages - const queue = window.Vaadin.ConsoleErrors; - if (queue) { - queue.forEach((args) => { - this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' ')); - }); - } - // Install new handler that immediately processes messages - window.Vaadin.ConsoleErrors = { - push: (args) => { - this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' ')); - } - }; - } - disconnectedCallback() { - if (this.disableEventListener) { - document.body.removeEventListener('focus', this.disableEventListener); - document.body.removeEventListener('click', this.disableEventListener); - } - super.disconnectedCallback(); - } - toggleExpanded() { - this.notifications.slice().forEach((notification) => this.dismissNotification(notification.id)); - this.expanded = !this.expanded; - if (this.expanded) { - this.root.focus(); - } - } - showSplashMessage(msg) { - this.splashMessage = msg; - if (this.splashMessage) { - if (this.expanded) { - this.demoteSplashMessage(); - } - else { - // automatically move notification to message tray after a certain amount of time - setTimeout(() => { - this.demoteSplashMessage(); - }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY); - } - } - } - demoteSplashMessage() { - if (this.splashMessage) { - this.log(MessageType.LOG, this.splashMessage); - } - this.showSplashMessage(undefined); - } - checkLicense(productInfo) { - if (this.frontendConnection) { - this.frontendConnection.sendLicenseCheck(productInfo); - } - else { - licenseCheckFailed({ message: 'Internal error: no connection', product: productInfo }); - } - } - log(type, message, details, link) { - const id = this.nextMessageId; - this.nextMessageId += 1; - this.messages.push({ - id, - type, - message, - details, - link, - dontShowAgain: false, - deleted: false - }); - while (this.messages.length > VaadinDevTools.MAX_LOG_ROWS) { - this.messages.shift(); - } - this.requestUpdate(); - this.updateComplete.then(() => { - // Scroll into view - const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child'); - if (this.expanded && lastMessage) { - setTimeout(() => lastMessage.scrollIntoView({ behavior: 'smooth' }), this.transitionDuration); - this.unreadErrors = false; - } - else if (type === MessageType.ERROR) { - this.unreadErrors = true; - } - }); - } - showNotification(type, message, details, link, persistentId) { - if (persistentId === undefined || !VaadinDevTools.notificationDismissed(persistentId)) { - // Do not open persistent message if another is already visible with the same persistentId - const matchingVisibleNotifications = this.notifications - .filter((notification) => notification.persistentId === persistentId) - .filter((notification) => !notification.deleted); - if (matchingVisibleNotifications.length > 0) { - return; - } - const id = this.nextMessageId; - this.nextMessageId += 1; - this.notifications.push({ - id, - type, - message, - details, - link, - persistentId, - dontShowAgain: false, - deleted: false - }); - // automatically move notification to message tray after a certain amount of time unless it contains a link - if (link === undefined) { - setTimeout(() => { - this.dismissNotification(id); - }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY); - } - this.requestUpdate(); - } - else { - this.log(type, message, details, link); - } - } - dismissNotification(id) { - const index = this.findNotificationIndex(id); - if (index !== -1 && !this.notifications[index].deleted) { - const notification = this.notifications[index]; - // user is explicitly dismissing a notification---after that we won't bug them with it - if (notification.dontShowAgain && - notification.persistentId && - !VaadinDevTools.notificationDismissed(notification.persistentId)) { - let dismissed = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE); - dismissed = dismissed === null ? notification.persistentId : `${dismissed},${notification.persistentId}`; - window.localStorage.setItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE, dismissed); - } - notification.deleted = true; - this.log(notification.type, notification.message, notification.details, notification.link); - // give some time for the animation - setTimeout(() => { - const idx = this.findNotificationIndex(id); - if (idx !== -1) { - this.notifications.splice(idx, 1); - this.requestUpdate(); - } - }, this.transitionDuration); - } - } - findNotificationIndex(id) { - let index = -1; - this.notifications.some((notification, idx) => { - if (notification.id === id) { - index = idx; - return true; - } - else { - return false; - } - }); - return index; - } - toggleDontShowAgain(id) { - const index = this.findNotificationIndex(id); - if (index !== -1 && !this.notifications[index].deleted) { - const notification = this.notifications[index]; - notification.dontShowAgain = !notification.dontShowAgain; - this.requestUpdate(); - } - } - setActive(yes) { - var _a, _b; - (_a = this.frontendConnection) === null || _a === void 0 ? void 0 : _a.setActive(yes); - (_b = this.javaConnection) === null || _b === void 0 ? void 0 : _b.setActive(yes); - window.sessionStorage.setItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE, yes ? 'true' : 'false'); - } - getStatusColor(status) { - if (status === ConnectionStatus.ACTIVE) { - return css `hsl(${VaadinDevTools.GREEN_HSL})`; - } - else if (status === ConnectionStatus.INACTIVE) { - return css `hsl(${VaadinDevTools.GREY_HSL})`; - } - else if (status === ConnectionStatus.UNAVAILABLE) { - return css `hsl(${VaadinDevTools.YELLOW_HSL})`; - } - else if (status === ConnectionStatus.ERROR) { - return css `hsl(${VaadinDevTools.RED_HSL})`; - } - else { - return css `none`; - } - } - /* eslint-disable lit/no-template-arrow */ - renderMessage(messageObject) { - return html ` - - `; - } - /* eslint-disable lit/no-template-map */ - render() { - return html `
e.key === 'Escape' && this.toggleExpanded()} - > -
- ${this.tabs.map((tab) => html ` `)} - -
- ${this.tabs.map((tab) => (this.activeTab === tab.id ? tab.render.call(this) : nothing))} -
- -
${this.notifications.map((msg) => this.renderMessage(msg))}
-
this.toggleExpanded()} - > - ${this.unreadErrors - ? html ` - - - - - - ` - : html ``} - - - ${this.splashMessage ? html `${this.splashMessage}
` : nothing} - `; - } - renderLog() { - return html `
${this.messages.map((msg) => this.renderMessage(msg))}
`; - } - activateLog() { - this.unreadErrors = false; - this.updateComplete.then(() => { - const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child'); - if (lastMessage) { - lastMessage.scrollIntoView(); - } - }); - } - renderInfo() { - return html `
- -
-
${this.serverInfo.productName}
-
${this.serverInfo.vaadinVersion}
-
Flow
-
${this.serverInfo.flowVersion}
-
Java
-
${this.serverInfo.javaVersion}
-
OS
-
${this.serverInfo.osVersion}
-
Browser
-
${navigator.userAgent}
-
- Live reload - -
-
- Java ${this.javaStatus} ${this.backend ? `(${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]})` : ''} -
-
- Front end ${this.frontendStatus} -
-
-
`; - } - renderFeatures() { - return html `
- ${this.features.map((feature) => html `
- - Learn more -
`)} -
`; - } - copyInfoToClipboard() { - const items = this.renderRoot.querySelectorAll('.info-tray dt, .info-tray dd'); - const text = Array.from(items) - .map((message) => (message.localName === 'dd' ? ': ' : '\n') + message.textContent.trim()) - .join('') - .replace(/^\n/, ''); - copy(text); - this.showNotification(MessageType.INFORMATION, 'Environment information copied to clipboard', undefined, undefined, 'versionInfoCopied'); - } - toggleFeatureFlag(e, feature) { - const enabled = e.target.checked; - if (this.frontendConnection) { - this.frontendConnection.setFeature(feature.id, enabled); - this.showNotification(MessageType.INFORMATION, `“${feature.title}” ${enabled ? 'enabled' : 'disabled'}`, feature.requiresServerRestart ? 'This feature requires a server restart' : undefined, undefined, `feature${feature.id}${enabled ? 'Enabled' : 'Disabled'}`); - } - else { - this.log(MessageType.ERROR, `Unable to toggle feature ${feature.title}: No server connection available`); - } - } -} -VaadinDevTools.BLUE_HSL = css `206, 100%, 70%`; -VaadinDevTools.GREEN_HSL = css `145, 80%, 42%`; -VaadinDevTools.GREY_HSL = css `0, 0%, 50%`; -VaadinDevTools.YELLOW_HSL = css `38, 98%, 64%`; -VaadinDevTools.RED_HSL = css `355, 100%, 68%`; -VaadinDevTools.MAX_LOG_ROWS = 1000; -VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE = 'vaadin.live-reload.dismissedNotifications'; -VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.active'; -VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggered'; -VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggeredCount'; -VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY = 5000; -VaadinDevTools.HOTSWAP_AGENT = 'HOTSWAP_AGENT'; -VaadinDevTools.JREBEL = 'JREBEL'; -VaadinDevTools.SPRING_BOOT_DEVTOOLS = 'SPRING_BOOT_DEVTOOLS'; -VaadinDevTools.BACKEND_DISPLAY_NAME = { - HOTSWAP_AGENT: 'HotswapAgent', - JREBEL: 'JRebel', - SPRING_BOOT_DEVTOOLS: 'Spring Boot Devtools' -}; -__decorate([ - property({ type: String }) -], VaadinDevTools.prototype, "url", void 0); -__decorate([ - property({ type: Boolean, attribute: true }) -], VaadinDevTools.prototype, "liveReloadDisabled", void 0); -__decorate([ - property({ type: String }) -], VaadinDevTools.prototype, "backend", void 0); -__decorate([ - property({ type: Number }) -], VaadinDevTools.prototype, "springBootLiveReloadPort", void 0); -__decorate([ - property({ type: Boolean, attribute: false }) -], VaadinDevTools.prototype, "expanded", void 0); -__decorate([ - property({ type: Array, attribute: false }) -], VaadinDevTools.prototype, "messages", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "splashMessage", void 0); -__decorate([ - property({ type: Array, attribute: false }) -], VaadinDevTools.prototype, "notifications", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "frontendStatus", void 0); -__decorate([ - property({ type: String, attribute: false }) -], VaadinDevTools.prototype, "javaStatus", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "tabs", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "activeTab", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "serverInfo", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "features", void 0); -__decorate([ - state() -], VaadinDevTools.prototype, "unreadErrors", void 0); -__decorate([ - query('.window') -], VaadinDevTools.prototype, "root", void 0); -if (customElements.get('vaadin-dev-tools') === undefined) { - customElements.define('vaadin-dev-tools', VaadinDevTools); -} -//# sourceMappingURL=vaadin-dev-tools.js.map \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js.map b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js.map deleted file mode 100644 index 55ba4dd0..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/jar-resources/vaadin-dev-tools.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vaadin-dev-tools.js","sourceRoot":"","sources":["../../../../src/main/frontend/vaadin-dev-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { copy } from './copy-to-clipboard.js';\nimport { licenseCheckFailed, licenseCheckNoKey, licenseCheckOk, Product, licenseInit } from './License';\n\ninterface ServerInfo {\n vaadinVersion: string;\n flowVersion: string;\n javaVersion: string;\n osVersion: string;\n productName: string;\n}\n\ninterface Feature {\n id: string;\n title: string;\n moreInfoLink: string;\n requiresServerRestart: boolean;\n enabled: boolean;\n}\n\ninterface Tab {\n id: 'log' | 'info' | 'features';\n title: string;\n render: () => unknown;\n activate?: () => void;\n}\n\nenum ConnectionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n UNAVAILABLE = 'unavailable',\n ERROR = 'error'\n}\n\nexport class Connection extends Object {\n static HEARTBEAT_INTERVAL = 180000;\n\n status: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n webSocket?: WebSocket;\n\n constructor(url?: string) {\n super();\n\n if (url) {\n this.webSocket = new WebSocket(url);\n this.webSocket.onmessage = (msg) => this.handleMessage(msg);\n this.webSocket.onerror = (err) => this.handleError(err);\n this.webSocket.onclose = (_) => {\n if (this.status !== ConnectionStatus.ERROR) {\n this.setStatus(ConnectionStatus.UNAVAILABLE);\n }\n this.webSocket = undefined;\n };\n }\n\n setInterval(() => {\n if (this.webSocket && self.status !== ConnectionStatus.ERROR && this.status !== ConnectionStatus.UNAVAILABLE) {\n this.webSocket.send('');\n }\n }, Connection.HEARTBEAT_INTERVAL);\n }\n\n onHandshake() {\n // Intentionally empty\n }\n\n onReload() {\n // Intentionally empty\n }\n\n onConnectionError(_: string) {\n // Intentionally empty\n }\n\n onStatusChange(_: ConnectionStatus) {\n // Intentionally empty\n }\n\n onMessage(message: any) {\n // eslint-disable-next-line no-console\n console.error('Unknown message received from the live reload server:', message);\n }\n\n handleMessage(msg: any) {\n let json;\n try {\n json = JSON.parse(msg.data);\n } catch (e: any) {\n this.handleError(`[${e.name}: ${e.message}`);\n return;\n }\n if (json.command === 'hello') {\n this.setStatus(ConnectionStatus.ACTIVE);\n this.onHandshake();\n } else if (json.command === 'reload') {\n if (this.status === ConnectionStatus.ACTIVE) {\n this.onReload();\n }\n } else if (json.command === 'license-check-ok') {\n licenseCheckOk(json.data);\n } else if (json.command === 'license-check-failed') {\n licenseCheckFailed(json.data);\n } else if (json.command === 'license-check-nokey') {\n licenseCheckNoKey(json.data);\n } else {\n this.onMessage(json);\n }\n }\n\n handleError(msg: any) {\n // eslint-disable-next-line no-console\n console.error(msg);\n this.setStatus(ConnectionStatus.ERROR);\n if (msg instanceof Event && this.webSocket) {\n this.onConnectionError(`Error in WebSocket connection to ${this.webSocket.url}`);\n } else {\n this.onConnectionError(msg);\n }\n }\n\n setActive(yes: boolean) {\n if (!yes && this.status === ConnectionStatus.ACTIVE) {\n this.setStatus(ConnectionStatus.INACTIVE);\n } else if (yes && this.status === ConnectionStatus.INACTIVE) {\n this.setStatus(ConnectionStatus.ACTIVE);\n }\n }\n\n setStatus(status: ConnectionStatus) {\n if (this.status !== status) {\n this.status = status;\n this.onStatusChange(status);\n }\n }\n\n private send(command: string, data: any) {\n const message = JSON.stringify({ command, data });\n if (!this.webSocket) {\n // eslint-disable-next-line no-console\n console.error(`Unable to send message ${command}. No websocket is available`);\n } else if (this.webSocket.readyState !== WebSocket.OPEN) {\n this.webSocket.addEventListener('open', () => this.webSocket!.send(message));\n } else {\n this.webSocket.send(message);\n }\n }\n\n setFeature(featureId: string, enabled: boolean) {\n this.send('setFeature', { featureId, enabled });\n }\n sendTelemetry(browserData: any) {\n this.send('reportTelemetry', { browserData });\n }\n sendLicenseCheck(product: Product) {\n this.send('checkLicense', product);\n }\n}\n\nenum MessageType {\n LOG = 'log',\n INFORMATION = 'information',\n WARNING = 'warning',\n ERROR = 'error'\n}\n\ninterface Message {\n id: number;\n type: MessageType;\n message: string;\n details?: string;\n link?: string;\n persistentId?: string;\n dontShowAgain: boolean;\n deleted: boolean;\n}\n\nexport class VaadinDevTools extends LitElement {\n static BLUE_HSL = css`206, 100%, 70%`;\n static GREEN_HSL = css`145, 80%, 42%`;\n static GREY_HSL = css`0, 0%, 50%`;\n static YELLOW_HSL = css`38, 98%, 64%`;\n static RED_HSL = css`355, 100%, 68%`;\n static MAX_LOG_ROWS = 1000;\n\n static get styles() {\n return css`\n :host {\n --dev-tools-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,\n 'Helvetica Neue', sans-serif;\n --dev-tools-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',\n monospace;\n\n --dev-tools-font-size: 0.8125rem;\n --dev-tools-font-size-small: 0.75rem;\n\n --dev-tools-text-color: rgba(255, 255, 255, 0.8);\n --dev-tools-text-color-secondary: rgba(255, 255, 255, 0.65);\n --dev-tools-text-color-emphasis: rgba(255, 255, 255, 0.95);\n --dev-tools-text-color-active: rgba(255, 255, 255, 1);\n\n --dev-tools-background-color-inactive: rgba(45, 45, 45, 0.25);\n --dev-tools-background-color-active: rgba(45, 45, 45, 0.98);\n --dev-tools-background-color-active-blurred: rgba(45, 45, 45, 0.85);\n\n --dev-tools-border-radius: 0.5rem;\n --dev-tools-box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05), 0 4px 12px -2px rgba(0, 0, 0, 0.4);\n\n --dev-tools-blue-hsl: ${this.BLUE_HSL};\n --dev-tools-blue-color: hsl(var(--dev-tools-blue-hsl));\n --dev-tools-green-hsl: ${this.GREEN_HSL};\n --dev-tools-green-color: hsl(var(--dev-tools-green-hsl));\n --dev-tools-grey-hsl: ${this.GREY_HSL};\n --dev-tools-grey-color: hsl(var(--dev-tools-grey-hsl));\n --dev-tools-yellow-hsl: ${this.YELLOW_HSL};\n --dev-tools-yellow-color: hsl(var(--dev-tools-yellow-hsl));\n --dev-tools-red-hsl: ${this.RED_HSL};\n --dev-tools-red-color: hsl(var(--dev-tools-red-hsl));\n\n /* Needs to be in ms, used in JavaScript as well */\n --dev-tools-transition-duration: 180ms;\n\n all: initial;\n\n direction: ltr;\n cursor: default;\n font: normal 400 var(--dev-tools-font-size) / 1.125rem var(--dev-tools-font-family);\n color: var(--dev-tools-text-color);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n position: fixed;\n z-index: 20000;\n pointer-events: none;\n bottom: 0;\n right: 0;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-end;\n }\n\n .dev-tools {\n pointer-events: auto;\n display: flex;\n align-items: center;\n position: fixed;\n z-index: inherit;\n right: 0.5rem;\n bottom: 0.5rem;\n min-width: 1.75rem;\n height: 1.75rem;\n max-width: 1.75rem;\n border-radius: 0.5rem;\n padding: 0.375rem;\n box-sizing: border-box;\n background-color: var(--dev-tools-background-color-inactive);\n box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05);\n color: var(--dev-tools-text-color);\n transition: var(--dev-tools-transition-duration);\n white-space: nowrap;\n line-height: 1rem;\n }\n\n .dev-tools:hover,\n .dev-tools.active {\n background-color: var(--dev-tools-background-color-active);\n box-shadow: var(--dev-tools-box-shadow);\n }\n\n .dev-tools.active {\n max-width: calc(100% - 1rem);\n }\n\n .dev-tools .dev-tools-icon {\n flex: none;\n pointer-events: none;\n display: inline-block;\n width: 1rem;\n height: 1rem;\n fill: #fff;\n transition: var(--dev-tools-transition-duration);\n margin: 0;\n }\n\n .dev-tools.active .dev-tools-icon {\n opacity: 0;\n position: absolute;\n transform: scale(0.5);\n }\n\n .dev-tools .status-blip {\n flex: none;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n z-index: 20001;\n background: var(--dev-tools-grey-color);\n position: absolute;\n top: -1px;\n right: -1px;\n }\n\n .dev-tools .status-description {\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0 0.25rem;\n }\n\n .dev-tools.error {\n background-color: hsla(var(--dev-tools-red-hsl), 0.15);\n animation: bounce 0.5s;\n animation-iteration-count: 2;\n }\n\n .switch {\n display: inline-flex;\n align-items: center;\n }\n\n .switch input {\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n }\n\n .switch .slider {\n display: block;\n flex: none;\n width: 28px;\n height: 18px;\n border-radius: 9px;\n background-color: rgba(255, 255, 255, 0.3);\n transition: var(--dev-tools-transition-duration);\n margin-right: 0.5rem;\n }\n\n .switch:focus-within .slider,\n .switch .slider:hover {\n background-color: rgba(255, 255, 255, 0.35);\n transition: none;\n }\n\n .switch input:focus-visible ~ .slider {\n box-shadow: 0 0 0 2px var(--dev-tools-background-color-active), 0 0 0 4px var(--dev-tools-blue-color);\n }\n\n .switch .slider::before {\n content: '';\n display: block;\n margin: 2px;\n width: 14px;\n height: 14px;\n background-color: #fff;\n transition: var(--dev-tools-transition-duration);\n border-radius: 50%;\n }\n\n .switch input:checked + .slider {\n background-color: var(--dev-tools-green-color);\n }\n\n .switch input:checked + .slider::before {\n transform: translateX(10px);\n }\n\n .switch input:disabled + .slider::before {\n background-color: var(--dev-tools-grey-color);\n }\n\n .window.hidden {\n opacity: 0;\n transform: scale(0);\n position: absolute;\n }\n\n .window.visible {\n transform: none;\n opacity: 1;\n pointer-events: auto;\n }\n\n .window.visible ~ .dev-tools {\n opacity: 0;\n pointer-events: none;\n }\n\n .window.visible ~ .dev-tools .dev-tools-icon,\n .window.visible ~ .dev-tools .status-blip {\n transition: none;\n opacity: 0;\n }\n\n .window {\n border-radius: var(--dev-tools-border-radius);\n overflow: hidden;\n margin: 0.5rem;\n width: 30rem;\n max-width: calc(100% - 1rem);\n max-height: calc(100vh - 1rem);\n flex-shrink: 1;\n background-color: var(--dev-tools-background-color-active);\n color: var(--dev-tools-text-color);\n transition: var(--dev-tools-transition-duration);\n transform-origin: bottom right;\n display: flex;\n flex-direction: column;\n box-shadow: var(--dev-tools-box-shadow);\n outline: none;\n }\n\n .window-toolbar {\n display: flex;\n flex: none;\n align-items: center;\n padding: 0.375rem;\n white-space: nowrap;\n order: 1;\n background-color: rgba(0, 0, 0, 0.2);\n gap: 0.5rem;\n }\n\n .tab {\n color: var(--dev-tools-text-color-secondary);\n font: inherit;\n font-size: var(--dev-tools-font-size-small);\n font-weight: 500;\n line-height: 1;\n padding: 0.25rem 0.375rem;\n background: none;\n border: none;\n margin: 0;\n border-radius: 0.25rem;\n transition: var(--dev-tools-transition-duration);\n }\n\n .tab:hover,\n .tab.active {\n color: var(--dev-tools-text-color-active);\n }\n\n .tab.active {\n background-color: rgba(255, 255, 255, 0.12);\n }\n\n .tab.unreadErrors::after {\n content: '•';\n color: hsl(var(--dev-tools-red-hsl));\n font-size: 1.5rem;\n position: absolute;\n transform: translate(0, -50%);\n }\n\n .ahreflike {\n font-weight: 500;\n color: var(--dev-tools-text-color-secondary);\n text-decoration: underline;\n cursor: pointer;\n }\n\n .ahreflike:hover {\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .button {\n all: initial;\n font-family: inherit;\n font-size: var(--dev-tools-font-size-small);\n line-height: 1;\n white-space: nowrap;\n background-color: rgba(0, 0, 0, 0.2);\n color: inherit;\n font-weight: 600;\n padding: 0.25rem 0.375rem;\n border-radius: 0.25rem;\n }\n\n .button:focus,\n .button:hover {\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .minimize-button {\n flex: none;\n width: 1rem;\n height: 1rem;\n color: inherit;\n background-color: transparent;\n border: 0;\n padding: 0;\n margin: 0 0 0 auto;\n opacity: 0.8;\n }\n\n .minimize-button:hover {\n opacity: 1;\n }\n\n .minimize-button svg {\n max-width: 100%;\n }\n\n .message.information {\n --dev-tools-notification-color: var(--dev-tools-blue-color);\n }\n\n .message.warning {\n --dev-tools-notification-color: var(--dev-tools-yellow-color);\n }\n\n .message.error {\n --dev-tools-notification-color: var(--dev-tools-red-color);\n }\n\n .message {\n display: flex;\n padding: 0.1875rem 0.75rem 0.1875rem 2rem;\n background-clip: padding-box;\n }\n\n .message.log {\n padding-left: 0.75rem;\n }\n\n .message-content {\n margin-right: 0.5rem;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n }\n\n .message-heading {\n position: relative;\n display: flex;\n align-items: center;\n margin: 0.125rem 0;\n }\n\n .message.log {\n color: var(--dev-tools-text-color-secondary);\n }\n\n .message:not(.log) .message-heading {\n font-weight: 500;\n }\n\n .message.has-details .message-heading {\n color: var(--dev-tools-text-color-emphasis);\n font-weight: 600;\n }\n\n .message-heading::before {\n position: absolute;\n margin-left: -1.5rem;\n display: inline-block;\n text-align: center;\n font-size: 0.875em;\n font-weight: 600;\n line-height: calc(1.25em - 2px);\n width: 14px;\n height: 14px;\n box-sizing: border-box;\n border: 1px solid transparent;\n border-radius: 50%;\n }\n\n .message.information .message-heading::before {\n content: 'i';\n border-color: currentColor;\n color: var(--dev-tools-notification-color);\n }\n\n .message.warning .message-heading::before,\n .message.error .message-heading::before {\n content: '!';\n color: var(--dev-tools-background-color-active);\n background-color: var(--dev-tools-notification-color);\n }\n\n .features-tray {\n padding: 0.75rem;\n flex: auto;\n overflow: auto;\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n user-select: text;\n }\n\n .features-tray p {\n margin-top: 0;\n color: var(--dev-tools-text-color-secondary);\n }\n\n .features-tray .feature {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding-bottom: 0.5em;\n }\n\n .message .message-details {\n font-weight: 400;\n color: var(--dev-tools-text-color-secondary);\n margin: 0.25rem 0;\n }\n\n .message .message-details[hidden] {\n display: none;\n }\n\n .message .message-details p {\n display: inline;\n margin: 0;\n margin-right: 0.375em;\n word-break: break-word;\n }\n\n .message .persist {\n color: var(--dev-tools-text-color-secondary);\n white-space: nowrap;\n margin: 0.375rem 0;\n display: flex;\n align-items: center;\n position: relative;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n\n .message .persist::before {\n content: '';\n width: 1em;\n height: 1em;\n border-radius: 0.2em;\n margin-right: 0.375em;\n background-color: rgba(255, 255, 255, 0.3);\n }\n\n .message .persist:hover::before {\n background-color: rgba(255, 255, 255, 0.4);\n }\n\n .message .persist.on::before {\n background-color: rgba(255, 255, 255, 0.9);\n }\n\n .message .persist.on::after {\n content: '';\n order: -1;\n position: absolute;\n width: 0.75em;\n height: 0.25em;\n border: 2px solid var(--dev-tools-background-color-active);\n border-width: 0 0 2px 2px;\n transform: translate(0.05em, -0.05em) rotate(-45deg) scale(0.8, 0.9);\n }\n\n .message .dismiss-message {\n font-weight: 600;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: 0 0.25rem;\n margin-left: 0.5rem;\n color: var(--dev-tools-text-color-secondary);\n }\n\n .message .dismiss-message:hover {\n color: var(--dev-tools-text-color);\n }\n\n .notification-tray {\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-end;\n margin: 0.5rem;\n flex: none;\n }\n\n .window.hidden + .notification-tray {\n margin-bottom: 3rem;\n }\n\n .notification-tray .message {\n pointer-events: auto;\n background-color: var(--dev-tools-background-color-active);\n color: var(--dev-tools-text-color);\n max-width: 30rem;\n box-sizing: border-box;\n border-radius: var(--dev-tools-border-radius);\n margin-top: 0.5rem;\n transition: var(--dev-tools-transition-duration);\n transform-origin: bottom right;\n animation: slideIn var(--dev-tools-transition-duration);\n box-shadow: var(--dev-tools-box-shadow);\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n }\n\n .notification-tray .message.animate-out {\n animation: slideOut forwards var(--dev-tools-transition-duration);\n }\n\n .notification-tray .message .message-details {\n max-height: 10em;\n overflow: hidden;\n }\n\n .message-tray {\n flex: auto;\n overflow: auto;\n max-height: 20rem;\n user-select: text;\n }\n\n .message-tray .message {\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n padding-left: 2.25rem;\n }\n\n .message-tray .message.warning {\n background-color: hsla(var(--dev-tools-yellow-hsl), 0.09);\n }\n\n .message-tray .message.error {\n background-color: hsla(var(--dev-tools-red-hsl), 0.09);\n }\n\n .message-tray .message.error .message-heading {\n color: hsl(var(--dev-tools-red-hsl));\n }\n\n .message-tray .message.warning .message-heading {\n color: hsl(var(--dev-tools-yellow-hsl));\n }\n\n .message-tray .message + .message {\n border-top: 1px solid rgba(255, 255, 255, 0.07);\n }\n\n .message-tray .dismiss-message,\n .message-tray .persist {\n display: none;\n }\n\n .info-tray {\n padding: 0.75rem;\n position: relative;\n flex: auto;\n overflow: auto;\n animation: fade-in var(--dev-tools-transition-duration) ease-in;\n user-select: text;\n }\n\n .info-tray dl {\n margin: 0;\n display: grid;\n grid-template-columns: max-content 1fr;\n column-gap: 0.75rem;\n position: relative;\n }\n\n .info-tray dt {\n grid-column: 1;\n color: var(--dev-tools-text-color-emphasis);\n }\n\n .info-tray dt:not(:first-child)::before {\n content: '';\n width: 100%;\n position: absolute;\n height: 1px;\n background-color: rgba(255, 255, 255, 0.1);\n margin-top: -0.375rem;\n }\n\n .info-tray dd {\n grid-column: 2;\n margin: 0;\n }\n\n .info-tray :is(dt, dd):not(:last-child) {\n margin-bottom: 0.75rem;\n }\n\n .info-tray dd + dd {\n margin-top: -0.5rem;\n }\n\n .info-tray .live-reload-status::before {\n content: '•';\n color: var(--status-color);\n width: 0.75rem;\n display: inline-block;\n font-size: 1rem;\n line-height: 0.5rem;\n }\n\n .info-tray .copy {\n position: fixed;\n z-index: 1;\n top: 0.5rem;\n right: 0.5rem;\n }\n\n .info-tray .switch {\n vertical-align: -4px;\n }\n\n @keyframes slideIn {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0%);\n opacity: 1;\n }\n }\n\n @keyframes slideOut {\n from {\n transform: translateX(0%);\n opacity: 1;\n }\n to {\n transform: translateX(100%);\n opacity: 0;\n }\n }\n\n @keyframes fade-in {\n 0% {\n opacity: 0;\n }\n }\n\n @keyframes bounce {\n 0% {\n transform: scale(0.8);\n }\n 50% {\n transform: scale(1.5);\n background-color: hsla(var(--dev-tools-red-hsl), 1);\n }\n 100% {\n transform: scale(1);\n }\n }\n\n @supports (backdrop-filter: blur(1px)) {\n .dev-tools,\n .window,\n .notification-tray .message {\n backdrop-filter: blur(8px);\n }\n .dev-tools:hover,\n .dev-tools.active,\n .window,\n .notification-tray .message {\n background-color: var(--dev-tools-background-color-active-blurred);\n }\n }\n `;\n }\n\n static DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE = 'vaadin.live-reload.dismissedNotifications';\n static ACTIVE_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.active';\n static TRIGGERED_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggered';\n static TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE = 'vaadin.live-reload.triggeredCount';\n\n static AUTO_DEMOTE_NOTIFICATION_DELAY = 5000;\n\n static HOTSWAP_AGENT = 'HOTSWAP_AGENT';\n static JREBEL = 'JREBEL';\n static SPRING_BOOT_DEVTOOLS = 'SPRING_BOOT_DEVTOOLS';\n static BACKEND_DISPLAY_NAME: Record = {\n HOTSWAP_AGENT: 'HotswapAgent',\n JREBEL: 'JRebel',\n SPRING_BOOT_DEVTOOLS: 'Spring Boot Devtools'\n };\n\n static get isActive() {\n const active = window.sessionStorage.getItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE);\n return active === null || active !== 'false';\n }\n\n static notificationDismissed(persistentId: string) {\n const shown = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE);\n return shown !== null && shown.includes(persistentId);\n }\n\n @property({ type: String })\n url?: string;\n\n @property({ type: Boolean, attribute: true })\n liveReloadDisabled?: boolean;\n\n @property({ type: String })\n backend?: string;\n\n @property({ type: Number })\n springBootLiveReloadPort?: number;\n\n @property({ type: Boolean, attribute: false })\n expanded: boolean = false;\n\n @property({ type: Array, attribute: false })\n messages: Message[] = [];\n\n @property({ type: String, attribute: false })\n splashMessage?: string;\n\n @property({ type: Array, attribute: false })\n notifications: Message[] = [];\n\n @property({ type: String, attribute: false })\n frontendStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n\n @property({ type: String, attribute: false })\n javaStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE;\n\n @state()\n private tabs: readonly Tab[] = [\n { id: 'log', title: 'Log', render: this.renderLog, activate: this.activateLog },\n { id: 'info', title: 'Info', render: this.renderInfo },\n { id: 'features', title: 'Feature Flags', render: this.renderFeatures }\n ];\n\n @state()\n private activeTab: string = 'log';\n\n @state()\n private serverInfo: ServerInfo = {\n flowVersion: '',\n vaadinVersion: '',\n javaVersion: '',\n osVersion: '',\n productName: ''\n };\n\n @state()\n private features: Feature[] = [];\n\n @state()\n private unreadErrors = false;\n\n @query('.window')\n private root!: HTMLElement;\n\n private javaConnection?: Connection;\n private frontendConnection?: Connection;\n\n private nextMessageId: number = 1;\n\n private disableEventListener?: EventListener;\n\n private transitionDuration: number = 0;\n\n elementTelemetry() {\n let data = {};\n try {\n // localstorage data is collected by vaadin-usage-statistics.js\n const localStorageStatsString = localStorage.getItem('vaadin.statistics.basket');\n if (!localStorageStatsString) {\n // Do not send empty data\n return;\n }\n data = JSON.parse(localStorageStatsString);\n } catch (e) {\n // In case of parse errors don't send anything\n return;\n }\n\n if (this.frontendConnection) {\n this.frontendConnection.sendTelemetry(data);\n }\n }\n\n openWebSocketConnection() {\n this.frontendStatus = ConnectionStatus.UNAVAILABLE;\n this.javaStatus = ConnectionStatus.UNAVAILABLE;\n\n const onConnectionError = (msg: string) => this.log(MessageType.ERROR, msg);\n const onReload = () => {\n if (this.liveReloadDisabled) {\n return;\n }\n this.showSplashMessage('Reloading…');\n const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE);\n const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1;\n window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString());\n window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE, 'true');\n window.location.reload();\n };\n\n const frontendConnection = new Connection(this.getDedicatedWebSocketUrl());\n frontendConnection.onHandshake = () => {\n this.log(MessageType.LOG, 'Vaadin development mode initialized');\n if (!VaadinDevTools.isActive) {\n frontendConnection.setActive(false);\n }\n this.elementTelemetry();\n };\n frontendConnection.onConnectionError = onConnectionError;\n frontendConnection.onReload = onReload;\n frontendConnection.onStatusChange = (status: ConnectionStatus) => {\n this.frontendStatus = status;\n };\n frontendConnection.onMessage = (message: any) => {\n if (message?.command === 'serverInfo') {\n this.serverInfo = message.data as ServerInfo;\n } else if (message?.command === 'featureFlags') {\n this.features = message.data.features as Feature[];\n } else {\n // eslint-disable-next-line no-console\n console.error('Unknown message from front-end connection:', JSON.stringify(message));\n }\n };\n this.frontendConnection = frontendConnection;\n\n let javaConnection: Connection;\n if (this.backend === VaadinDevTools.SPRING_BOOT_DEVTOOLS && this.springBootLiveReloadPort) {\n javaConnection = new Connection(this.getSpringBootWebSocketUrl(window.location));\n javaConnection.onHandshake = () => {\n if (!VaadinDevTools.isActive) {\n javaConnection.setActive(false);\n }\n };\n javaConnection.onReload = onReload;\n javaConnection.onConnectionError = onConnectionError;\n } else if (this.backend === VaadinDevTools.JREBEL || this.backend === VaadinDevTools.HOTSWAP_AGENT) {\n javaConnection = frontendConnection;\n } else {\n javaConnection = new Connection(undefined);\n }\n const prevOnStatusChange = javaConnection.onStatusChange;\n javaConnection.onStatusChange = (status) => {\n prevOnStatusChange(status);\n this.javaStatus = status;\n };\n const prevOnHandshake = javaConnection.onHandshake;\n javaConnection.onHandshake = () => {\n prevOnHandshake();\n if (this.backend) {\n this.log(\n MessageType.INFORMATION,\n `Java live reload available: ${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]}`\n );\n }\n };\n this.javaConnection = javaConnection;\n\n if (!this.backend) {\n this.showNotification(\n MessageType.WARNING,\n 'Java live reload unavailable',\n 'Live reload for Java changes is currently not set up. Find out how to make use of this functionality to boost your workflow.',\n 'https://vaadin.com/docs/latest/flow/configuration/live-reload',\n 'liveReloadUnavailable'\n );\n }\n }\n\n getDedicatedWebSocketUrl(): string | undefined {\n function getAbsoluteUrl(relative: string) {\n // Use innerHTML to obtain an absolute URL\n const div = document.createElement('div');\n div.innerHTML = ``;\n return (div.firstChild as HTMLLinkElement).href;\n }\n if (this.url === undefined) {\n return undefined;\n }\n const connectionBaseUrl = getAbsoluteUrl(this.url!);\n\n if (!connectionBaseUrl.startsWith('http://') && !connectionBaseUrl.startsWith('https://')) {\n // eslint-disable-next-line no-console\n console.error('The protocol of the url should be http or https for live reload to work.');\n return undefined;\n }\n return `${connectionBaseUrl.replace(/^http/, 'ws')}?v-r=push&debug_window`;\n }\n\n getSpringBootWebSocketUrl(location: any) {\n const { hostname } = location;\n const wsProtocol = location.protocol === 'https:' ? 'wss' : 'ws';\n if (hostname.endsWith('gitpod.io')) {\n // Gitpod uses `port-url` instead of `url:port`\n const hostnameWithoutPort = hostname.replace(/.*?-/, '');\n return `${wsProtocol}://${this.springBootLiveReloadPort}-${hostnameWithoutPort}`;\n } else {\n return `${wsProtocol}://${hostname}:${this.springBootLiveReloadPort}`;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.catchErrors();\n\n // when focus or clicking anywhere, move the splash message to the message tray\n this.disableEventListener = (_: any) => this.demoteSplashMessage();\n document.body.addEventListener('focus', this.disableEventListener);\n document.body.addEventListener('click', this.disableEventListener);\n this.openWebSocketConnection();\n\n const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);\n if (lastReload) {\n const now = new Date();\n const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice(\n -2\n )}:${`0${now.getSeconds()}`.slice(-2)}`;\n this.showSplashMessage(`Page reloaded at ${reloaded}`);\n window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);\n }\n\n this.transitionDuration = parseInt(\n window.getComputedStyle(this).getPropertyValue('--dev-tools-transition-duration'),\n 10\n );\n\n const windowAny = window as any;\n windowAny.Vaadin = windowAny.Vaadin || {};\n windowAny.Vaadin.devTools = Object.assign(this, windowAny.Vaadin.devTools);\n\n licenseInit();\n }\n format(o: any): string {\n return o.toString();\n }\n catchErrors() {\n // Process stored messages\n const queue = (window as any).Vaadin.ConsoleErrors as any[];\n if (queue) {\n queue.forEach((args: any[]) => {\n this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' '));\n });\n }\n // Install new handler that immediately processes messages\n (window as any).Vaadin.ConsoleErrors = {\n push: (args: any[]) => {\n this.log(MessageType.ERROR, args.map((o) => this.format(o)).join(' '));\n }\n };\n }\n\n disconnectedCallback() {\n if (this.disableEventListener) {\n document.body.removeEventListener('focus', this.disableEventListener!);\n document.body.removeEventListener('click', this.disableEventListener!);\n }\n super.disconnectedCallback();\n }\n\n toggleExpanded() {\n this.notifications.slice().forEach((notification) => this.dismissNotification(notification.id));\n this.expanded = !this.expanded;\n if (this.expanded) {\n this.root.focus();\n }\n }\n\n showSplashMessage(msg: string | undefined) {\n this.splashMessage = msg;\n if (this.splashMessage) {\n if (this.expanded) {\n this.demoteSplashMessage();\n } else {\n // automatically move notification to message tray after a certain amount of time\n setTimeout(() => {\n this.demoteSplashMessage();\n }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY);\n }\n }\n }\n\n demoteSplashMessage() {\n if (this.splashMessage) {\n this.log(MessageType.LOG, this.splashMessage);\n }\n this.showSplashMessage(undefined);\n }\n\n checkLicense(productInfo: Product) {\n if (this.frontendConnection) {\n this.frontendConnection.sendLicenseCheck(productInfo);\n } else {\n licenseCheckFailed({ message: 'Internal error: no connection', product: productInfo });\n }\n }\n\n log(type: MessageType, message: string, details?: string, link?: string) {\n const id = this.nextMessageId;\n this.nextMessageId += 1;\n this.messages.push({\n id,\n type,\n message,\n details,\n link,\n dontShowAgain: false,\n deleted: false\n });\n while (this.messages.length > VaadinDevTools.MAX_LOG_ROWS) {\n this.messages.shift();\n }\n this.requestUpdate();\n this.updateComplete.then(() => {\n // Scroll into view\n const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child');\n if (this.expanded && lastMessage) {\n setTimeout(() => lastMessage.scrollIntoView({ behavior: 'smooth' }), this.transitionDuration);\n this.unreadErrors = false;\n } else if (type === MessageType.ERROR) {\n this.unreadErrors = true;\n }\n });\n }\n\n showNotification(type: MessageType, message: string, details?: string, link?: string, persistentId?: string) {\n if (persistentId === undefined || !VaadinDevTools.notificationDismissed(persistentId!)) {\n // Do not open persistent message if another is already visible with the same persistentId\n const matchingVisibleNotifications = this.notifications\n .filter((notification) => notification.persistentId === persistentId)\n .filter((notification) => !notification.deleted);\n if (matchingVisibleNotifications.length > 0) {\n return;\n }\n const id = this.nextMessageId;\n this.nextMessageId += 1;\n this.notifications.push({\n id,\n type,\n message,\n details,\n link,\n persistentId,\n dontShowAgain: false,\n deleted: false\n });\n // automatically move notification to message tray after a certain amount of time unless it contains a link\n if (link === undefined) {\n setTimeout(() => {\n this.dismissNotification(id);\n }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY);\n }\n this.requestUpdate();\n } else {\n this.log(type, message, details, link);\n }\n }\n\n dismissNotification(id: number) {\n const index = this.findNotificationIndex(id);\n if (index !== -1 && !this.notifications[index].deleted) {\n const notification = this.notifications[index];\n\n // user is explicitly dismissing a notification---after that we won't bug them with it\n if (\n notification.dontShowAgain &&\n notification.persistentId &&\n !VaadinDevTools.notificationDismissed(notification.persistentId)\n ) {\n let dismissed = window.localStorage.getItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE);\n dismissed = dismissed === null ? notification.persistentId : `${dismissed},${notification.persistentId}`;\n window.localStorage.setItem(VaadinDevTools.DISMISSED_NOTIFICATIONS_IN_LOCAL_STORAGE, dismissed);\n }\n\n notification.deleted = true;\n this.log(notification.type, notification.message, notification.details, notification.link);\n\n // give some time for the animation\n setTimeout(() => {\n const idx = this.findNotificationIndex(id);\n if (idx !== -1) {\n this.notifications.splice(idx, 1);\n this.requestUpdate();\n }\n }, this.transitionDuration);\n }\n }\n\n findNotificationIndex(id: number): number {\n let index = -1;\n this.notifications.some((notification, idx) => {\n if (notification.id === id) {\n index = idx;\n return true;\n } else {\n return false;\n }\n });\n return index;\n }\n\n toggleDontShowAgain(id: number) {\n const index = this.findNotificationIndex(id);\n if (index !== -1 && !this.notifications[index].deleted) {\n const notification = this.notifications[index];\n notification.dontShowAgain = !notification.dontShowAgain;\n this.requestUpdate();\n }\n }\n\n setActive(yes: boolean) {\n this.frontendConnection?.setActive(yes);\n this.javaConnection?.setActive(yes);\n window.sessionStorage.setItem(VaadinDevTools.ACTIVE_KEY_IN_SESSION_STORAGE, yes ? 'true' : 'false');\n }\n\n getStatusColor(status: ConnectionStatus | undefined) {\n if (status === ConnectionStatus.ACTIVE) {\n return css`hsl(${VaadinDevTools.GREEN_HSL})`;\n } else if (status === ConnectionStatus.INACTIVE) {\n return css`hsl(${VaadinDevTools.GREY_HSL})`;\n } else if (status === ConnectionStatus.UNAVAILABLE) {\n return css`hsl(${VaadinDevTools.YELLOW_HSL})`;\n } else if (status === ConnectionStatus.ERROR) {\n return css`hsl(${VaadinDevTools.RED_HSL})`;\n } else {\n return css`none`;\n }\n }\n\n /* eslint-disable lit/no-template-arrow */\n renderMessage(messageObject: Message) {\n return html`\n \n
\n
${messageObject.message}
\n
\n ${messageObject.persistentId\n ? html` this.toggleDontShowAgain(messageObject.id)}\n >\n Don’t show again\n
`\n : ''}\n \n
this.dismissNotification(messageObject.id)}>Dismiss
\n \n `;\n }\n\n /* eslint-disable lit/no-template-map */\n render() {\n return html` e.key === 'Escape' && this.toggleExpanded()}\n >\n
\n ${this.tabs.map(\n (tab) =>\n html` {\n this.activeTab = tab.id;\n if (tab.activate) tab.activate.call(this);\n }}\n >\n ${tab.title}\n `\n )}\n \n
\n ${this.tabs.map((tab) => (this.activeTab === tab.id ? tab.render.call(this) : nothing))}\n \n\n
${this.notifications.map((msg) => this.renderMessage(msg))}
\n this.toggleExpanded()}\n >\n ${this.unreadErrors\n ? html`\n \n \n \n \n \n `\n : html`\n \n \n \n \n `}\n\n \n ${this.splashMessage ? html`${this.splashMessage}` : nothing}\n `;\n }\n\n renderLog() {\n return html`
${this.messages.map((msg) => this.renderMessage(msg))}
`;\n }\n activateLog() {\n this.unreadErrors = false;\n this.updateComplete.then(() => {\n const lastMessage = this.renderRoot.querySelector('.message-tray .message:last-child');\n if (lastMessage) {\n lastMessage.scrollIntoView();\n }\n });\n }\n\n renderInfo() {\n return html`
\n \n
\n
${this.serverInfo.productName}
\n
${this.serverInfo.vaadinVersion}
\n
Flow
\n
${this.serverInfo.flowVersion}
\n
Java
\n
${this.serverInfo.javaVersion}
\n
OS
\n
${this.serverInfo.osVersion}
\n
Browser
\n
${navigator.userAgent}
\n
\n Live reload\n \n
\n
\n Java ${this.javaStatus} ${this.backend ? `(${VaadinDevTools.BACKEND_DISPLAY_NAME[this.backend]})` : ''}\n
\n
\n Front end ${this.frontendStatus}\n
\n
\n
`;\n }\n\n private renderFeatures() {\n return html`
\n ${this.features.map(\n (feature) => html`
\n \n Learn more\n
`\n )}\n
`;\n }\n\n copyInfoToClipboard() {\n const items = this.renderRoot.querySelectorAll('.info-tray dt, .info-tray dd');\n const text = Array.from(items)\n .map((message) => (message.localName === 'dd' ? ': ' : '\\n') + message.textContent!.trim())\n .join('')\n .replace(/^\\n/, '');\n copy(text);\n this.showNotification(\n MessageType.INFORMATION,\n 'Environment information copied to clipboard',\n undefined,\n undefined,\n 'versionInfoCopied'\n );\n }\n\n toggleFeatureFlag(e: Event, feature: Feature) {\n const enabled = (e.target! as HTMLInputElement).checked;\n if (this.frontendConnection) {\n this.frontendConnection.setFeature(feature.id, enabled);\n this.showNotification(\n MessageType.INFORMATION,\n `“${feature.title}” ${enabled ? 'enabled' : 'disabled'}`,\n feature.requiresServerRestart ? 'This feature requires a server restart' : undefined,\n undefined,\n `feature${feature.id}${enabled ? 'Enabled' : 'Disabled'}`\n );\n } else {\n this.log(MessageType.ERROR, `Unable to toggle feature ${feature.title}: No server connection available`);\n }\n }\n}\n\nif (customElements.get('vaadin-dev-tools') === undefined) {\n customElements.define('vaadin-dev-tools', VaadinDevTools);\n}\n"]} \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/theme-reusable-theme.generated.js b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/theme-reusable-theme.generated.js deleted file mode 100644 index 8455c8ec..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/theme-reusable-theme.generated.js +++ /dev/null @@ -1,114 +0,0 @@ -import 'construct-style-sheets-polyfill'; -import stripCssComments from 'strip-css-comments'; - -const createLinkReferences = (css, target) => { - // Unresolved urls are written as '@import url(text);' or '@import "text";' to the css - // media query can be present on @media tag or on @import directive after url - // Note that with Vite production build there is no space between @import and "text" - // [0] is the full match - // [1] matches the media query - // [2] matches the url - // [3] matches the quote char surrounding in '@import "..."' - // [4] matches the url in '@import "..."' - // [5] matches media query on @import statement - const importMatcher = /(?:@media\s(.+?))?(?:\s{)?\@import\s*(?:url\(\s*['"]?(.+?)['"]?\s*\)|(["'])((?:\\.|[^\\])*?)\3)([^;]*);(?:})?/g - - // Only cleanup if comment exist - if(/\/\*(.|[\r\n])*?\*\//gm.exec(css) != null) { - // clean up comments - css = stripCssComments(css); - } - - var match; - var styleCss = css; - - // For each external url import add a link reference - while((match = importMatcher.exec(css)) !== null) { - styleCss = styleCss.replace(match[0], ""); - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = match[2] || match[4]; - const media = match[1] || match[5]; - if (media) { - link.media = media; - } - // For target document append to head else append to target - if (target === document) { - document.head.appendChild(link); - } else { - target.appendChild(link); - } - }; - return styleCss; -}; - -// target: Document | ShadowRoot -export const injectGlobalCss = (css, target, first) => { - if(target === document) { - const hash = getHash(css); - if (window.Vaadin.theme.injectedGlobalCss.indexOf(hash) !== -1) { - return; - } - window.Vaadin.theme.injectedGlobalCss.push(hash); - } - const sheet = new CSSStyleSheet(); - sheet.replaceSync(createLinkReferences(css,target)); - if (first) { - target.adoptedStyleSheets = [sheet, ...target.adoptedStyleSheets]; - } else { - target.adoptedStyleSheets = [...target.adoptedStyleSheets, sheet]; - } -}; -import stylesCss from 'themes/reusable-theme/styles.css?inline'; -import { color } from '@vaadin/vaadin-lumo-styles/color.js'; -import { typography } from '@vaadin/vaadin-lumo-styles/typography.js'; - -window.Vaadin = window.Vaadin || {}; -window.Vaadin.theme = window.Vaadin.theme || {}; -window.Vaadin.theme.injectedGlobalCss = []; - -/** - * Calculate a 32 bit FNV-1a hash - * Found here: https://gist.github.com/vaiorabbit/5657561 - * Ref.: http://isthe.com/chongo/tech/comp/fnv/ - * - * @param {string} str the input value - * @returns {string} 32 bit (as 8 byte hex string) - */ -function hashFnv32a(str) { - /*jshint bitwise:false */ - let i, l, hval = 0x811c9dc5; - - for (i = 0, l = str.length; i < l; i++) { - hval ^= str.charCodeAt(i); - hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24); - } - - // Convert to 8 digit hex string - return ("0000000" + (hval >>> 0).toString(16)).substr(-8); -} - -/** - * Calculate a 64 bit hash for the given input. - * Double hash is used to significantly lower the collision probability. - * - * @param {string} input value to get hash for - * @returns {string} 64 bit (as 16 byte hex string) - */ -function getHash(input) { - let h1 = hashFnv32a(input); // returns 32 bit (as 8 byte hex string) - return h1 + hashFnv32a(h1 + input); -} -export const applyTheme = (target) => { - - injectGlobalCss(stylesCss.toString(), target); - - - if (!document['_vaadintheme_reusable-theme_componentCss']) { - - document['_vaadintheme_reusable-theme_componentCss'] = true; - } - injectGlobalCss(color.cssText, target, true); -injectGlobalCss(typography.cssText, target, true); - -} diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin-featureflags.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin-featureflags.ts deleted file mode 100644 index d3399438..00000000 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin-featureflags.ts +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-nocheck -window.Vaadin = window.Vaadin || {}; -window.Vaadin.featureFlags = window.Vaadin.featureFlags || {}; -window.Vaadin.featureFlags.exampleFeatureFlag = false; -window.Vaadin.featureFlags.hillaPush = false; -window.Vaadin.featureFlags.hillaEngine = false; -window.Vaadin.featureFlags.oldLicenseChecker = false; -window.Vaadin.featureFlags.collaborationEngineBackend = false; -window.Vaadin.featureFlags.webpackForFrontendBuild = false; -window.Vaadin.featureFlags.enforceFieldValidation = false; -export {}; \ No newline at end of file diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin.ts b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin.ts index 20c80ff7..b1725bb6 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin.ts +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/frontend/generated/vaadin.ts @@ -1,6 +1,7 @@ -import './vaadin-featureflags.ts'; +import './vaadin-featureflags.js'; import './index'; +import './theme-reusable-theme.global.generated.js'; import { applyTheme } from './theme.js'; applyTheme(document); diff --git a/vertx-vaadin-quarkus-extension/integration-tests/production/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/production/pom.xml index 1a363956..29511ef5 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/production/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/production/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-production-tests @@ -117,51 +117,4 @@ - - - java11 - - [9,) - - - 8 - - --add-opens java.base/java.lang=ALL-UNNAMED - - - - - - maven-surefire-plugin - - - maven-failsafe-plugin - - - javax.xml.bind - jaxb-api - 2.2.11 - - - com.sun.xml.bind - jaxb-core - 2.2.11 - - - com.sun.xml.bind - jaxb-impl - 2.2.11 - - - com.sun.activation - javax.activation - 1.2.0 - - - - - - - - diff --git a/vertx-vaadin-quarkus-extension/integration-tests/reusable-theme/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/reusable-theme/pom.xml index 1019cf1c..e2298df2 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/reusable-theme/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/reusable-theme/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT 4.0.0 diff --git a/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-with-jandex/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-with-jandex/pom.xml index ef44620c..3125706e 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-with-jandex/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-with-jandex/pom.xml @@ -7,7 +7,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../../pom.xml diff --git a/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-without-jandex/pom.xml b/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-without-jandex/pom.xml index df2b7ceb..7f2cee77 100644 --- a/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-without-jandex/pom.xml +++ b/vertx-vaadin-quarkus-extension/integration-tests/test-addons/addon-without-jandex/pom.xml @@ -7,7 +7,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-integration-tests - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../../pom.xml diff --git a/vertx-vaadin-quarkus-extension/pom.xml b/vertx-vaadin-quarkus-extension/pom.xml index b029ca4f..c37610f3 100644 --- a/vertx-vaadin-quarkus-extension/pom.xml +++ b/vertx-vaadin-quarkus-extension/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml @@ -25,7 +25,7 @@ 11 UTF-8 UTF-8 - 2.16.9.Final + 3.6.4 3.1.2 ${surefire-plugin.version} diff --git a/vertx-vaadin-quarkus-extension/runtime/pom.xml b/vertx-vaadin-quarkus-extension/runtime/pom.xml index 12b8a794..43489291 100644 --- a/vertx-vaadin-quarkus-extension/runtime/pom.xml +++ b/vertx-vaadin-quarkus-extension/runtime/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-quarkus-extension-parent - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vertx-vaadin-quarkus-extension Vertx Vaadin Extension - Runtime @@ -39,6 +39,11 @@ vertx-vaadin-flow ${project.version} + + com.github.mcollovati.vertx + vaadin-flow-sockjs + ${project.version} + com.vaadin flow-jandex diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/AnyLiteral.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/AnyLiteral.java index f02fa2cd..4a632b85 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/AnyLiteral.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/AnyLiteral.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.quarkus; -import javax.enterprise.inject.Any; -import javax.enterprise.util.AnnotationLiteral; +import jakarta.enterprise.inject.Any; +import jakarta.enterprise.util.AnnotationLiteral; /** * Literal for the {@link Any} annotation. @@ -31,5 +31,6 @@ * @author Vaadin Ltd * @since 1.0 * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class AnyLiteral extends AnnotationLiteral implements Any {} diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/BeanLookup.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/BeanLookup.java index c1aaf331..53d9e31e 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/BeanLookup.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/BeanLookup.java @@ -26,11 +26,11 @@ import java.util.Set; import java.util.function.Consumer; import java.util.function.Supplier; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.AmbiguousResolutionException; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.util.AnnotationLiteral; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.AmbiguousResolutionException; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.util.AnnotationLiteral; import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceEnabled; @@ -38,10 +38,12 @@ * Utility class for Quarkus CDI lookup, and instantiation. *

* Dependent beans are instantiated without any warning, but do not get - * destroyed properly. {@link javax.annotation.PreDestroy} won't run. + * destroyed properly. {@link jakarta.annotation.PreDestroy} won't run. * * @param * Bean Type + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ class BeanLookup { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiator.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiator.java index 9bbb17c4..e1571f99 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiator.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiator.java @@ -22,58 +22,42 @@ */ package com.github.mcollovati.vertx.quarkus; +import jakarta.enterprise.inject.spi.BeanManager; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.spi.BeanManager; -import javax.inject.Inject; import com.vaadin.flow.component.Component; import com.vaadin.flow.di.DefaultInstantiator; import com.vaadin.flow.di.Instantiator; +import com.vaadin.flow.di.InstantiatorFactory; import com.vaadin.flow.i18n.I18NProvider; -import com.vaadin.flow.server.VaadinService; import com.vaadin.flow.server.VaadinServiceInitListener; -import io.quarkus.arc.Unremovable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceEnabled; - /** - * Instantiator implementation based on Quarkus DI feature. + * Instantiator implementation for Quarkus. * - * Quarkus DI solution (also called ArC) is based on the Contexts and Dependency - * Injection for Java 2.0 specification, but it is not a full CDI - * implementation. Only a subset of the CDI features is implemented. + * New instances are created by default by QuarkusInstantiatorFactory. * - * See Quarkus CDI - * Reference for further details. + * @see InstantiatorFactory * - * @see Instantiator + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ -@VaadinServiceEnabled -@Unremovable -@ApplicationScoped public class QuarkusInstantiator implements Instantiator { private static final String CANNOT_USE_CDI_BEANS_FOR_I18N = "Cannot use CDI beans for I18N, falling back to the default behavior."; private static final String FALLING_BACK_TO_DEFAULT_INSTANTIATION = "Falling back to default instantiation."; - private AtomicBoolean i18NLoggingEnabled = new AtomicBoolean(true); - private DefaultInstantiator delegate; + private final AtomicBoolean i18NLoggingEnabled = new AtomicBoolean(true); + private final DefaultInstantiator delegate; - @Inject - BeanManager beanManager; + private final BeanManager beanManager; - /** - * Gets the service class that this instantiator is supposed to work with. - * - * @return the service class this instantiator is supposed to work with. - */ - public Class getServiceClass() { - return QuarkusVertxVaadinService.class; + public QuarkusInstantiator(DefaultInstantiator delegate, BeanManager beanManager) { + this.delegate = delegate; + this.beanManager = beanManager; } /** @@ -85,12 +69,6 @@ public BeanManager getBeanManager() { return this.beanManager; } - @Override - public boolean init(final VaadinService service) { - delegate = new DefaultInstantiator(service); - return delegate.init(service) && getServiceClass().isAssignableFrom(service.getClass()); - } - @Override public T getOrCreate(Class type) { return new BeanLookup<>(getBeanManager(), type) @@ -131,7 +109,8 @@ private static Logger getLogger() { @Override public Stream getServiceInitListeners() { - return Stream.concat(delegate.getServiceInitListeners(), Stream.of(getBeanManager()::fireEvent)); + return Stream.concat( + delegate.getServiceInitListeners(), Stream.of(getBeanManager().getEvent()::fire)); } @Override diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiatorFactory.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiatorFactory.java new file mode 100644 index 00000000..48a85226 --- /dev/null +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusInstantiatorFactory.java @@ -0,0 +1,55 @@ +package com.github.mcollovati.vertx.quarkus; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.inject.Inject; + +import com.vaadin.flow.di.DefaultInstantiator; +import com.vaadin.flow.di.Instantiator; +import com.vaadin.flow.di.InstantiatorFactory; +import com.vaadin.flow.server.VaadinService; +import io.quarkus.arc.Unremovable; + +import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceEnabled; + +/** + * Instantiator factory implementation based on Quarkus DI feature. + * + * Quarkus DI solution (also called ArC) is based on the Contexts and Dependency + * Injection for Java 2.0 specification, but it is not a full CDI + * implementation. Only a subset of the CDI features is implemented. + * + * See Quarkus CDI + * Reference for further details. + * + * @see InstantiatorFactory + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ +@VaadinServiceEnabled +@Unremovable +@ApplicationScoped +public class QuarkusInstantiatorFactory implements InstantiatorFactory { + + @Inject + BeanManager beanManager; + + @Override + public Instantiator createInstantitor(VaadinService vaadinService) { + if (!getServiceClass().isAssignableFrom(vaadinService.getClass())) { + return null; + } + return new QuarkusInstantiator(new DefaultInstantiator(vaadinService), beanManager); + } + + /** + * Gets the service class that this instantiator factory is supposed to work + * with. + * + * @return the service class this instantiator factory is supposed to work + * with. + */ + public Class getServiceClass() { + return QuarkusVertxVaadinService.class; + } +} diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusResourceProvider.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusResourceProvider.java index ee5ef158..66d44129 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusResourceProvider.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusResourceProvider.java @@ -38,6 +38,8 @@ /** * A {@link ResourceProvider} implementation that delegates resource loading to * current thread context ClassLoader. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class QuarkusResourceProvider implements ResourceProvider { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVaadinVerticle.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVaadinVerticle.java index 313c94f5..d3d95e1d 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVaadinVerticle.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVaadinVerticle.java @@ -22,8 +22,8 @@ */ package com.github.mcollovati.vertx.quarkus; -import javax.enterprise.inject.spi.BeanManager; -import javax.inject.Inject; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.inject.Inject; import com.github.mcollovati.vertx.support.StartupContext; import com.github.mcollovati.vertx.vaadin.VaadinVerticle; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadin.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadin.java index 1aa902c0..86f51c5a 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadin.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadin.java @@ -22,7 +22,7 @@ */ package com.github.mcollovati.vertx.quarkus; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.BeanManager; import io.vertx.core.Vertx; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadinService.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadinService.java index 9e0539b8..922a3372 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadinService.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/QuarkusVertxVaadinService.java @@ -24,17 +24,18 @@ import java.util.Optional; import java.util.Set; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.spi.Context; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.AmbiguousResolutionException; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.spi.Context; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.AmbiguousResolutionException; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import com.vaadin.flow.component.ComponentEventListener; import com.vaadin.flow.component.PollEvent; import com.vaadin.flow.component.UI; import com.vaadin.flow.di.Instantiator; +import com.vaadin.flow.di.InstantiatorFactory; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.router.AfterNavigationEvent; import com.vaadin.flow.router.AfterNavigationListener; @@ -83,38 +84,44 @@ public void fireUIInitListeners(UI ui) { @Override public Optional loadInstantiators() throws ServiceException { - final Set> beans = beanManager.getBeans(Instantiator.class, BeanLookup.SERVICE); + final Set> beans = beanManager.getBeans(InstantiatorFactory.class, + BeanLookup.SERVICE); if (beans == null || beans.isEmpty()) { - throw new ServiceException("Cannot init VaadinService " + "because no CDI instantiator bean found."); + throw new ServiceException("Cannot init VaadinService " + + "because no CDI instantiator factory bean found."); } - final Bean bean; + final Bean bean; try { // noinspection unchecked - bean = (Bean) beanManager.resolve(beans); + bean = (Bean) beanManager.resolve(beans); } catch (final AmbiguousResolutionException e) { throw new ServiceException( - "There are multiple eligible CDI " + Instantiator.class.getSimpleName() + " beans.", e); + "There are multiple eligible CDI " + + InstantiatorFactory.class.getSimpleName() + " beans.", + e); } // Return the contextual instance (rather than CDI proxy) as it will be // stored inside VaadinService. Not relying on the proxy allows // accessing VaadinService::getInstantiator even when // VaadinServiceScopedContext is not active - final CreationalContext creationalContext = beanManager.createCreationalContext(bean); + final CreationalContext creationalContext = beanManager + .createCreationalContext(bean); final Context context = beanManager.getContext(ApplicationScoped.class); // VaadinServiceScoped - final Instantiator instantiator = context.get(bean, creationalContext); + final InstantiatorFactory instantiatorFactory = context.get(bean, + creationalContext); - if (!instantiator.init(this)) { + Instantiator instantiator = instantiatorFactory.createInstantitor(this); + if (instantiator == null) { throw new ServiceException("Cannot init VaadinService because " - + instantiator.getClass().getName() + " CDI bean init()" - + " returned false."); + + Instantiator.class.getSimpleName() + " is null"); } return Optional.of(instantiator); } private void addEventListeners() { addServiceDestroyListener(this::fireCdiDestroyEvent); - addUIInitListener(getBeanManager()::fireEvent); + addUIInitListener(getBeanManager().getEvent()::fire); addSessionInitListener(this::sessionInit); addSessionDestroyListener(this::sessionDestroy); } @@ -122,16 +129,16 @@ private void addEventListeners() { private void sessionInit(SessionInitEvent sessionInitEvent) throws ServiceException { VaadinSession session = sessionInitEvent.getSession(); lookup(ErrorHandler.class).ifPresent(session::setErrorHandler); - getBeanManager().fireEvent(sessionInitEvent); + getBeanManager().getEvent().fire(sessionInitEvent); } private void sessionDestroy(SessionDestroyEvent sessionDestroyEvent) { - getBeanManager().fireEvent(sessionDestroyEvent); + getBeanManager().getEvent().fire(sessionDestroyEvent); } private void fireCdiDestroyEvent(ServiceDestroyEvent event) { try { - beanManager.fireEvent(event); + beanManager.getEvent().fire(event); } catch (Exception e) { // During application shutdown on TomEE 7, // beans are lost at this point. @@ -193,22 +200,22 @@ private static class UIEventListener @Override public void afterNavigation(AfterNavigationEvent event) { - getBeanManager().fireEvent(event); + getBeanManager().getEvent().fire(event); } @Override public void beforeEnter(BeforeEnterEvent event) { - getBeanManager().fireEvent(event); + getBeanManager().getEvent().fire(event); } @Override public void beforeLeave(BeforeLeaveEvent event) { - getBeanManager().fireEvent(event); + getBeanManager().getEvent().fire(event); } @Override public void onComponentEvent(PollEvent event) { - getBeanManager().fireEvent(event); + getBeanManager().getEvent().fire(event); } private BeanManager getBeanManager() { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalRouteScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalRouteScoped.java index e952cc25..eeae0389 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalRouteScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalRouteScoped.java @@ -25,7 +25,7 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; -import javax.enterprise.context.NormalScope; +import jakarta.enterprise.context.NormalScope; import com.vaadin.flow.router.HasErrorParameter; import com.vaadin.flow.router.Route; @@ -55,6 +55,8 @@ * The sister annotation to this is the {@link RouteScoped}. Both annotations * reference the same underlying scope, so it is possible to get both a proxy * and a direct reference to the same object by using different annotations. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @NormalScope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalUIScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalUIScoped.java index 89e2b834..ed21e793 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalUIScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/NormalUIScoped.java @@ -26,7 +26,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.enterprise.context.NormalScope; +import jakarta.enterprise.context.NormalScope; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; @@ -52,6 +52,8 @@ * The sister annotation to this is the {@link UIScoped}. Both annotations * reference the same underlying scope, so it is possible to get both a proxy * and a direct reference to the same object by using different annotations. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @NormalScope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScopeOwner.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScopeOwner.java index bb67ed41..045a7640 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScopeOwner.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScopeOwner.java @@ -24,7 +24,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; import com.vaadin.flow.component.HasElement; import com.vaadin.flow.router.HasErrorParameter; @@ -42,6 +42,8 @@ *

* Owner is a router component. A {@link Route @Route}, or a * {@link RouterLayout}, or a {@link HasErrorParameter}. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScoped.java index 67c46b42..589b21bd 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/RouteScoped.java @@ -25,7 +25,7 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; -import javax.inject.Scope; +import jakarta.inject.Scope; import com.vaadin.flow.router.HasErrorParameter; import com.vaadin.flow.router.Route; @@ -69,6 +69,8 @@ * annotations reference the same underlying scope, so it is possible to get * both a proxy and a direct reference to the same object by using different * annotations. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Scope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/UIScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/UIScoped.java index bf55f185..090e77e1 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/UIScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/UIScoped.java @@ -26,7 +26,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.inject.Scope; +import jakarta.inject.Scope; import com.vaadin.flow.component.UI; @@ -52,6 +52,8 @@ * The sister annotation to this is the {@link NormalUIScoped}. Both annotations * reference the same underlying scope, so it is possible to get both a proxy * and a direct reference to the same object by using different annotations. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Scope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceEnabled.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceEnabled.java index f25ceefb..a532a05c 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceEnabled.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceEnabled.java @@ -24,7 +24,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; @@ -37,6 +37,8 @@ * * Qualified CDI beans implementing {@link com.vaadin.flow.i18n.I18NProvider}, * and {@link com.vaadin.flow.di.Instantiator} interfaces are loaded. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceScoped.java index 2035ccd4..eede105b 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinServiceScoped.java @@ -26,7 +26,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.enterprise.context.NormalScope; +import jakarta.enterprise.context.NormalScope; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; @@ -40,6 +40,8 @@ *

* Injecting with this annotation will create a proxy for the contextual * instance rather than provide the contextual instance itself. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @NormalScope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinSessionScoped.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinSessionScoped.java index 2740cf68..099f05af 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinSessionScoped.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/annotation/VaadinSessionScoped.java @@ -25,7 +25,7 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; -import javax.enterprise.context.NormalScope; +import jakarta.enterprise.context.NormalScope; import com.vaadin.flow.server.VaadinSession; @@ -44,10 +44,12 @@ * instance rather than provide the contextual instance itself. *

* Contextual instances stored in {@link VaadinSession}, so indirectly stored in - * HTTP session. {@link javax.annotation.PreDestroy} called after + * HTTP session. {@link jakarta.annotation.PreDestroy} called after * {@link com.vaadin.flow.server.SessionDestroyEvent} fired. * * @since 1.0 + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @NormalScope @Inherited diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContext.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContext.java index 35787619..8b4bd7c2 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContext.java @@ -27,10 +27,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.enterprise.context.ContextNotActiveException; -import javax.enterprise.context.spi.AlterableContext; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.context.ContextNotActiveException; +import jakarta.enterprise.context.spi.AlterableContext; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.context.spi.CreationalContext; import io.quarkus.arc.InjectableBean; import io.quarkus.arc.InjectableContext; @@ -42,6 +42,8 @@ * implementing Context needs to implement the missing methods from the * {@link AlterableContext} interface and * {@link #getContextualStorage(Contextual, boolean)}. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public abstract class AbstractContext implements InjectableContext { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextualStorageManager.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextualStorageManager.java index 528bf62c..399c7b3d 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextualStorageManager.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextualStorageManager.java @@ -29,13 +29,15 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import javax.annotation.PreDestroy; +import jakarta.annotation.PreDestroy; /** * Base class for manage and store ContextualStorages. * * This class is responsible for - creating, and providing the ContextualStorage * for a context key - destroying ContextualStorages + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @SuppressWarnings("CdiManagedBeanInconsistencyInspection") abstract class AbstractContextualStorageManager implements Serializable { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/BeanProvider.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/BeanProvider.java index a1ba1404..8090a4f7 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/BeanProvider.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/BeanProvider.java @@ -22,6 +22,14 @@ */ package com.github.mcollovati.vertx.quarkus.context; +import jakarta.enterprise.context.Dependent; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.Typed; +import jakarta.enterprise.inject.spi.AnnotatedType; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.CDI; +import jakarta.enterprise.inject.spi.InjectionTarget; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; @@ -30,14 +38,6 @@ import java.util.List; import java.util.Set; import java.util.logging.Logger; -import javax.enterprise.context.Dependent; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.Typed; -import javax.enterprise.inject.spi.AnnotatedType; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.CDI; -import javax.enterprise.inject.spi.InjectionTarget; import com.github.mcollovati.vertx.quarkus.AnyLiteral; @@ -56,6 +56,7 @@ * BeanManager during CDI container boot time. *

* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Typed() public final class BeanProvider { @@ -80,7 +81,7 @@ private BeanProvider() { * (because @Dependent is not @NormalScoped) and thus will not be * automatically destroyed at the end of the lifecycle. You need to manually * destroy this contextual instance via - * {@link javax.enterprise.context.spi.Contextual#destroy(Object, CreationalContext)}. + * {@link jakarta.enterprise.context.spi.Contextual#destroy(Object, CreationalContext)}. * Thus you also need to manually store the CreationalContext and the Bean * you used to create the contextual instance. *

@@ -495,7 +496,8 @@ public static T injectFields(T instance) { CreationalContext creationalContext = beanManager.createCreationalContext(null); AnnotatedType annotatedType = beanManager.createAnnotatedType((Class) instance.getClass()); - InjectionTarget injectionTarget = beanManager.createInjectionTarget(annotatedType); + InjectionTarget injectionTarget = + beanManager.getInjectionTargetFactory(annotatedType).createInjectionTarget(null); injectionTarget.inject(instance, creationalContext); return instance; } diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextUtils.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextUtils.java index d2f14b46..383d0a91 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextUtils.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextUtils.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.ContextNotActiveException; -import javax.enterprise.inject.Typed; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.ContextNotActiveException; +import jakarta.enterprise.inject.Typed; +import jakarta.enterprise.inject.spi.BeanManager; import io.quarkus.arc.Arc; @@ -33,6 +33,8 @@ * A modified copy of org.apache.deltaspike.core.util.ContextUtils. * * A set of utility methods for working with contexts. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ @Typed() public abstract class ContextUtils { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualInstanceInfo.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualInstanceInfo.java index 14d6eb47..69be0413 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualInstanceInfo.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualInstanceInfo.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.quarkus.context; import java.io.Serializable; -import javax.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.context.spi.CreationalContext; /** * A copy of org.apache.deltaspike.core.util.context.ContextualInstanceInfo. @@ -31,6 +31,8 @@ * * This data holder contains all necessary data you need to store a Contextual * Instance in a CDI Context. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class ContextualInstanceInfo implements Serializable { @@ -42,7 +44,7 @@ public class ContextualInstanceInfo implements Serializable { /** * We need to store the CreationalContext as we need it for properly * destroying the contextual instance via - * {@link javax.enterprise.context.spi.Contextual#destroy(Object, CreationalContext)} + * {@link jakarta.enterprise.context.spi.Contextual#destroy(Object, CreationalContext)} */ private CreationalContext creationalContext; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualStorage.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualStorage.java index 85b8ddd0..b2dae16f 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualStorage.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/ContextualStorage.java @@ -27,14 +27,16 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.context.spi.CreationalContext; /** * This Storage holds all information needed for storing Contextual Instances in * a Context. * * It also addresses Serialisation in case of passivating scopes. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class ContextualStorage implements Serializable { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapper.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapper.java index a26203b6..7ec8e4b3 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapper.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapper.java @@ -23,8 +23,8 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.context.spi.CreationalContext; import io.quarkus.arc.Arc; import io.quarkus.arc.InjectableContext; @@ -37,6 +37,7 @@ * all context-related operations to it's underlying instance, apart from * getting the scope of the context. * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class RouteContextWrapper implements InjectableContext { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteScopedContext.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteScopedContext.java index 1ba60f74..53e022cf 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteScopedContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/RouteScopedContext.java @@ -29,10 +29,10 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.event.Observes; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.event.Observes; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import com.vaadin.flow.component.ComponentUtil; import com.vaadin.flow.component.UI; @@ -49,14 +49,17 @@ import com.github.mcollovati.vertx.quarkus.annotation.RouteScopeOwner; import com.github.mcollovati.vertx.quarkus.annotation.VaadinSessionScoped; -import static javax.enterprise.event.Reception.IF_EXISTS; +import static jakarta.enterprise.event.Reception.IF_EXISTS; /** * Context for {@link NormalRouteScoped NormalRouteScoped} beans. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class RouteScopedContext extends AbstractContext { - public abstract static class ContextualStorageManager extends AbstractContextualStorageManager { + public abstract static class ContextualStorageManager + extends AbstractContextualStorageManager { public ContextualStorageManager() { // Session lock checked in VaadinSessionScopedContext while @@ -66,21 +69,36 @@ public ContextualStorageManager() { @Override protected ContextualStorage newContextualStorage(RouteStorageKey key) { - UI.getCurrent().addDetachListener(event -> handleUIDetach(event.getUI(), key)); + UI.getCurrent().addDetachListener( + event -> handleUIDetach(event.getUI(), key)); return super.newContextualStorage(key); } - void onAfterNavigation(@Observes(notifyObserver = IF_EXISTS) AfterNavigationEvent event) { - Set> activeChain = - event.getActiveChain().stream().map(Object::getClass).collect(Collectors.toSet()); - destroyDescopedBeans(event.getLocationChangeEvent().getUI(), activeChain); + /** + * ... + * ... + *

+ * Removed conditional observer method because it is not supported 1.2 CDI spec. + *

+ * Beans with scope @Dependent may not have conditional observer methods. + * If a bean with scope @Dependent has an observer method declared receive=IF_EXISTS, + * the container automatically detects the problem and treats it as a definition error. + */ + private void onAfterNavigation( + @Observes AfterNavigationEvent event) { + Set> activeChain = event.getActiveChain().stream() + .map(Object::getClass).collect(Collectors.toSet()); + + destroyDescopedBeans(event.getLocationChangeEvent().getUI(), + activeChain); + } - void onBeforeEnter(@Observes BeforeEnterEvent event) { + private void onBeforeEnter(@Observes BeforeEnterEvent event) { UI ui = event.getUI(); - ComponentUtil.setData( - ui, NavigationData.class, new NavigationData(event.getNavigationTarget(), event.getLayouts())); + ComponentUtil.setData(ui, NavigationData.class, new NavigationData( + event.getNavigationTarget(), event.getLayouts())); Set> activeChain = new HashSet<>(); activeChain.add(event.getNavigationTarget()); @@ -89,7 +107,8 @@ void onBeforeEnter(@Observes BeforeEnterEvent event) { destroyDescopedBeans(ui, activeChain); } - private void destroyDescopedBeans(UI ui, Set> navigationChain) { + private void destroyDescopedBeans(UI ui, + Set> navigationChain) { String uiStoreId = getUIStoreId(ui); Set missingKeys = getKeySet().stream() @@ -105,7 +124,8 @@ private void handleUIDetach(UI ui, RouteStorageKey key) { if (uiAfterRefresh == null) { destroy(key); } else { - uiAfterRefresh.addDetachListener(event -> handleUIDetach(event.getUI(), key)); + uiAfterRefresh.addDetachListener( + event -> handleUIDetach(event.getUI(), key)); } } @@ -113,7 +133,8 @@ private UI findPreservingUI(UI ui) { VaadinSession session = ui.getSession(); String windowName = getWindowName(ui); for (UI sessionUi : session.getUIs()) { - if (sessionUi != ui && windowName != null && windowName.equals(getWindowName(sessionUi))) { + if (sessionUi != ui && windowName != null + && windowName.equals(getWindowName(sessionUi))) { return sessionUi; } } @@ -121,7 +142,8 @@ private UI findPreservingUI(UI ui) { } private static String getWindowName(UI ui) { - ExtendedClientDetails details = ui.getInternals().getExtendedClientDetails(); + ExtendedClientDetails details = ui.getInternals() + .getExtendedClientDetails(); if (details == null) { return null; } @@ -129,20 +151,24 @@ private static String getWindowName(UI ui) { } private RouteStorageKey getKey(UI ui, Class owner) { - ExtendedClientDetails details = ui.getInternals().getExtendedClientDetails(); + ExtendedClientDetails details = ui.getInternals() + .getExtendedClientDetails(); RouteStorageKey key = new RouteStorageKey(owner, getUIStoreId(ui)); if (details == null) { - ui.getPage().retrieveExtendedClientDetails(det -> relocate(ui, key)); + ui.getPage().retrieveExtendedClientDetails( + det -> relocate(ui, key)); } return key; } private void relocate(UI ui, RouteStorageKey key) { - relocate(key, new RouteStorageKey(key.getOwner(), getUIStoreId(ui))); + relocate(key, + new RouteStorageKey(key.getOwner(), getUIStoreId(ui))); } private String getUIStoreId(UI ui) { - ExtendedClientDetails details = ui.getInternals().getExtendedClientDetails(); + ExtendedClientDetails details = ui.getInternals() + .getExtendedClientDetails(); if (details == null) { return "uid-" + ui.getUIId(); } else { @@ -151,16 +177,20 @@ private String getUIStoreId(UI ui) { } private List getActiveContextualStorages() { - return getKeySet().stream() - .filter(key -> key.getUIId().equals(getUIStoreId(UI.getCurrent()))) + return getKeySet().stream().filter( + key -> key.getUIId().equals(getUIStoreId(UI.getCurrent()))) .map(key -> getContextualStorage(key, false)) .collect(Collectors.toList()); } + } @VaadinSessionScoped @Unremovable - static class RouteContextualStorageManager extends ContextualStorageManager {} + private static class RouteContextualStorageManager + extends ContextualStorageManager { + + } static class RouteStorageKey implements Serializable { private final Class owner; @@ -200,13 +230,15 @@ Class getOwner() { String getUIId() { return uiId; } + } static class NavigationData { private final Class navigationTarget; private final List> layouts; - NavigationData(Class navigationTarget, List> layouts) { + NavigationData(Class navigationTarget, + List> layouts) { this.navigationTarget = navigationTarget; this.layouts = layouts; } @@ -231,11 +263,14 @@ public Class getScope() { @Override public boolean isActive() { - return Arc.container().getActiveContext(NormalUIScoped.class).isActive(); + return Arc.container().getActiveContext(NormalUIScoped.class) + .isActive(); + } @Override - protected ContextualStorage getContextualStorage(Contextual contextual, boolean createIfNotExist) { + protected ContextualStorage getContextualStorage(Contextual contextual, + boolean createIfNotExist) { RouteStorageKey key = convertToKey(contextual); return getStorageManager().getContextualStorage(key, createIfNotExist); } @@ -285,14 +320,16 @@ private boolean navigationChainHasOwner(UI ui, Class owner) { if (owner.equals(data.getNavigationTarget())) { return true; } - return data.getLayouts().stream().anyMatch(clazz -> clazz.equals(owner)); + return data.getLayouts().stream() + .anyMatch(clazz -> clazz.equals(owner)); } @SuppressWarnings("unchecked") private Class getOwner(UI ui, Bean bean) { return bean.getQualifiers().stream() .filter(annotation -> annotation instanceof RouteScopeOwner) - .map(annotation -> (Class) (((RouteScopeOwner) annotation).value())) + .map(annotation -> (Class) (((RouteScopeOwner) annotation) + .value())) .findFirst() .orElseGet(() -> getCurrentNavigationTarget(ui, bean)); } @@ -310,15 +347,17 @@ private Class getCurrentNavigationTarget(UI ui, Bean bean) { } private ContextualStorageManager getStorageManager() { - return BeanProvider.getContextualReference(getBeanManager(), getContextualStorageManagerClass(), false); + return BeanProvider.getContextualReference(getBeanManager(), + getContextualStorageManagerClass(), false); } private Bean getBean(Contextual contextual) { if (contextual instanceof Bean) { return (Bean) contextual; } else { - throw new IllegalArgumentException( - contextual.getClass().getName() + " is not of type " + Bean.class.getName()); + throw new IllegalArgumentException(contextual.getClass().getName() + + " is not of type " + Bean.class.getName()); } + } } diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIContextWrapper.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIContextWrapper.java index af2db5e3..2d98a939 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIContextWrapper.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIContextWrapper.java @@ -23,8 +23,8 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.context.spi.CreationalContext; import io.quarkus.arc.Arc; import io.quarkus.arc.InjectableContext; @@ -36,6 +36,8 @@ * Used to bind multiple scope annotations to a single context. Will delegate * all context-related operations to it's underlying instance, apart from * getting the scope of the context. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class UIContextWrapper implements InjectableContext { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIScopedContext.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIScopedContext.java index 13b4be4b..c0673d75 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIScopedContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/UIScopedContext.java @@ -23,8 +23,8 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.inject.spi.BeanManager; import com.vaadin.flow.component.DetachEvent; import com.vaadin.flow.component.UI; @@ -38,6 +38,8 @@ /** * UIScopedContext is the context for {@link NormalUIScoped @NormalUIScoped} * beans. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class UIScopedContext extends AbstractContext { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinServiceScopedContext.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinServiceScopedContext.java index f9165dd4..942903fe 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinServiceScopedContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinServiceScopedContext.java @@ -23,9 +23,9 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.spi.Contextual; -import javax.enterprise.event.Observes; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.spi.Contextual; +import jakarta.enterprise.event.Observes; import com.vaadin.flow.server.ServiceDestroyEvent; import com.vaadin.flow.server.VaadinService; @@ -36,10 +36,12 @@ import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceScoped; import com.github.mcollovati.vertx.vaadin.VertxVaadinService; -import static javax.enterprise.event.Reception.IF_EXISTS; +import static jakarta.enterprise.event.Reception.IF_EXISTS; /** * Context for {@link VaadinServiceScoped @VaadinServiceScoped} beans. + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class VaadinServiceScopedContext extends AbstractContext { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinSessionScopedContext.java b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinSessionScopedContext.java index 2388d74e..611b04cc 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinSessionScopedContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/main/java/com/github/mcollovati/vertx/quarkus/context/VaadinSessionScopedContext.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.annotation.Annotation; -import javax.enterprise.context.spi.Contextual; +import jakarta.enterprise.context.spi.Contextual; import com.vaadin.flow.server.SessionDestroyEvent; import com.vaadin.flow.server.SessionDestroyListener; @@ -41,6 +41,8 @@ * stored in the corresponding {@link VaadinSessionScoped} context. * * @since 1.0 + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public class VaadinSessionScopedContext extends AbstractContext { private static final String ATTRIBUTE_NAME = VaadinSessionScopedContext.class.getName(); diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/NoOpVaadinVerticle.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/NoOpVaadinVerticle.java index c6be8c98..97bd1ba2 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/NoOpVaadinVerticle.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/NoOpVaadinVerticle.java @@ -22,13 +22,17 @@ */ package com.github.mcollovati.vertx.quarkus; -import javax.enterprise.context.Dependent; +import jakarta.enterprise.context.Dependent; import io.quarkus.arc.DefaultBean; import io.vertx.core.Promise; import com.github.mcollovati.vertx.vaadin.VaadinVerticle; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @Dependent @DefaultBean public class NoOpVaadinVerticle extends VaadinVerticle { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/ResourceProviderTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/ResourceProviderTest.java index 75d96e23..4e9980d3 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/ResourceProviderTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/ResourceProviderTest.java @@ -35,6 +35,10 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class ResourceProviderTest { @Test diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/TestQuarkusVertxVaadinServletService.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/TestQuarkusVertxVaadinServletService.java index 70492104..d025d643 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/TestQuarkusVertxVaadinServletService.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/TestQuarkusVertxVaadinServletService.java @@ -22,14 +22,17 @@ */ package com.github.mcollovati.vertx.quarkus; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.servlet.ServletContext; import java.util.Properties; -import javax.enterprise.inject.spi.BeanManager; -import javax.servlet.ServletContext; +import com.vaadin.flow.di.Lookup; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.server.VaadinRequest; import com.vaadin.flow.server.VaadinSession; +import com.vaadin.flow.server.startup.ApplicationConfiguration; import io.vertx.core.Vertx; +import org.mockito.Mockito; import com.github.mcollovati.vertx.vaadin.VertxVaadin; import com.github.mcollovati.vertx.vaadin.VertxVaadinContext; @@ -51,6 +54,9 @@ public TestQuarkusVertxVaadinServletService(BeanManager beanManager, String serv vertx = new BeanLookup<>(beanManager, Vertx.class).lookup(); vaadinContext = new VertxVaadinContext(vertx); + vaadinContext.setAttribute(Lookup.class, Mockito.mock(Lookup.class)); + vaadinContext.setAttribute(ApplicationConfiguration.class, Mockito.mock(ApplicationConfiguration.class)); + DeploymentConfiguration config = getDeploymentConfiguration(); Properties properties = new Properties(); when(config.getInitParameters()).thenReturn(properties); diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextTest.java index 0c732068..bb08af77 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/AbstractContextTest.java @@ -31,6 +31,8 @@ * * @param * a context type + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public abstract class AbstractContextTest extends InjectableContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/BeanManagerProxy.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/BeanManagerProxy.java index e1f2e00b..af81bb87 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/BeanManagerProxy.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/BeanManagerProxy.java @@ -29,13 +29,16 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import com.vaadin.flow.server.VaadinSession; import org.mockito.Mockito; +/** + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ class BeanManagerProxy implements InvocationHandler { private BeanManager delegate; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/InjectableContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/InjectableContextTest.java index f5dfab71..34ccedec 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/InjectableContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/InjectableContextTest.java @@ -22,13 +22,13 @@ */ package com.github.mcollovati.vertx.quarkus.context; +import jakarta.enterprise.context.ContextNotActiveException; +import jakarta.enterprise.context.spi.CreationalContext; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import javax.enterprise.context.ContextNotActiveException; -import javax.enterprise.context.spi.CreationalContext; import com.vaadin.flow.internal.ReflectTools; import io.quarkus.arc.InjectableBean; @@ -50,6 +50,8 @@ * * @param * a context type + * + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. */ public abstract class InjectableContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextTest.java index c2e409e7..9465ed2e 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextTest.java @@ -25,6 +25,9 @@ import io.quarkus.test.junit.QuarkusTest; import org.junit.jupiter.api.Test; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ @QuarkusTest public class RouteContextTest extends AbstractContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWithinDifferentUITest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWithinDifferentUITest.java index dcb60346..fce7afdd 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWithinDifferentUITest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWithinDifferentUITest.java @@ -29,6 +29,10 @@ import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.NavigationData; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class RouteContextWithinDifferentUITest extends AbstractContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperTest.java index 723cdad2..e1d96ac0 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperTest.java @@ -25,6 +25,10 @@ import io.quarkus.test.junit.QuarkusTest; import org.junit.jupiter.api.Test; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class RouteContextWrapperTest extends InjectableContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperWithinDifferentUITest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperWithinDifferentUITest.java index b7468611..ac1d4ed1 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperWithinDifferentUITest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextWrapperWithinDifferentUITest.java @@ -31,6 +31,10 @@ import com.github.mcollovati.vertx.quarkus.context.RouteContextWrapperWithinDifferentUITest.TestRouteContextWrapper; import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.NavigationData; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class RouteContextWrapperWithinDifferentUITest extends InjectableContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextualStorageManagerTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextualStorageManagerTest.java index e83cd35c..811c3dd4 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextualStorageManagerTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteContextualStorageManagerTest.java @@ -27,9 +27,9 @@ import java.util.HashSet; import java.util.Set; import java.util.function.Supplier; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.event.Event; -import javax.inject.Inject; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.event.Event; +import jakarta.inject.Inject; import com.vaadin.flow.component.Component; import com.vaadin.flow.component.ComponentUtil; @@ -52,6 +52,10 @@ import com.github.mcollovati.vertx.quarkus.annotation.RouteScopeOwner; import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.NavigationData; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest @SuppressWarnings({"rawtypes", "unchecked"}) public class RouteContextualStorageManagerTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteUnderTestContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteUnderTestContext.java index 9bd7aafd..e2f00361 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteUnderTestContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/RouteUnderTestContext.java @@ -39,6 +39,10 @@ import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.NavigationData; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class RouteUnderTestContext implements UnderTestContext { private static UIUnderTestContext uiContextUnderTest; @@ -88,8 +92,8 @@ public void destroy() { // context via calling API methods"); List newNavigation = Collections.singletonList(new TestHasElement()); Arc.container() - .beanManager() - .fireEvent(new AfterNavigationEvent(new LocationChangeEvent( + .beanManager().getEvent() + .fire(new AfterNavigationEvent(new LocationChangeEvent( Mockito.mock(Router.class), ui, NavigationTrigger.PROGRAMMATIC, diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceContextTest.java index 15700e41..1de3d613 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceContextTest.java @@ -22,13 +22,17 @@ */ package com.github.mcollovati.vertx.quarkus.context; -import javax.enterprise.inject.spi.BeanManager; -import javax.inject.Inject; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.inject.Inject; import io.quarkus.test.junit.QuarkusTest; import com.github.mcollovati.vertx.quarkus.annotation.VaadinServiceScoped; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class ServiceContextTest extends AbstractContextTest { @Inject diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceUnderTestContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceUnderTestContext.java index 39baa0ae..526e26a5 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceUnderTestContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/ServiceUnderTestContext.java @@ -22,12 +22,12 @@ */ package com.github.mcollovati.vertx.quarkus.context; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.spi.AlterableContext; +import jakarta.enterprise.context.spi.Context; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import java.util.Set; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.context.spi.AlterableContext; -import javax.enterprise.context.spi.Context; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; import com.vaadin.flow.server.ServiceDestroyEvent; import com.vaadin.flow.server.VaadinService; @@ -36,6 +36,10 @@ import com.github.mcollovati.vertx.quarkus.TestQuarkusVertxVaadinServletService; import com.github.mcollovati.vertx.quarkus.context.VaadinServiceScopedContext.ContextualStorageManager; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class ServiceUnderTestContext implements UnderTestContext { private QuarkusVertxVaadinService service; private static int NDX; @@ -63,7 +67,7 @@ public void tearDownAll() { @Override public void destroy() { if (service != null) { - beanManager.fireEvent(new ServiceDestroyEvent(service)); + beanManager.getEvent().fire(new ServiceDestroyEvent(service)); } } diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionContextTest.java index 4161a668..15a8380f 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionContextTest.java @@ -24,6 +24,10 @@ import io.quarkus.test.junit.QuarkusTest; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class SessionContextTest extends AbstractContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionUnderTestContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionUnderTestContext.java index 81633909..76d54a26 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionUnderTestContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/SessionUnderTestContext.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.quarkus.context; import java.util.Properties; -import javax.enterprise.inject.spi.CDI; +import jakarta.enterprise.inject.spi.CDI; import com.vaadin.flow.function.DeploymentConfiguration; import com.vaadin.flow.server.Command; @@ -34,6 +34,10 @@ import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.when; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class SessionUnderTestContext implements UnderTestContext { private VaadinSession session; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestBean.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestBean.java index 932dab89..e128b74b 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestBean.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestBean.java @@ -22,6 +22,9 @@ */ package com.github.mcollovati.vertx.quarkus.context; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ public class TestBean { private String state = ""; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestContextualStorageManager.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestContextualStorageManager.java index cb1c903e..853b7128 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestContextualStorageManager.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestContextualStorageManager.java @@ -23,7 +23,7 @@ package com.github.mcollovati.vertx.quarkus.context; import java.util.Set; -import javax.enterprise.context.Dependent; +import jakarta.enterprise.context.Dependent; import com.vaadin.flow.server.VaadinSession; import io.quarkus.arc.Unremovable; @@ -31,6 +31,10 @@ import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.ContextualStorageManager; import com.github.mcollovati.vertx.quarkus.context.RouteScopedContext.RouteStorageKey; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + /** * * Quarkus will use newly created instance of ContextualStorageManager to fire diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestHasElement.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestHasElement.java index b885e3f8..2a926259 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestHasElement.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestHasElement.java @@ -26,5 +26,9 @@ import com.vaadin.flow.component.HasElement; import com.vaadin.flow.component.Tag; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @Tag(Tag.BUTTON) class TestHasElement extends Component implements HasElement {} diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestNavigationTarget.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestNavigationTarget.java index f6c30954..d558bdef 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestNavigationTarget.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestNavigationTarget.java @@ -25,5 +25,9 @@ import com.vaadin.flow.component.Component; import com.vaadin.flow.component.Tag; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @Tag(Tag.A) public class TestNavigationTarget extends Component {} diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestRouteScopedContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestRouteScopedContext.java index 40bd25cc..76209c84 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestRouteScopedContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/TestRouteScopedContext.java @@ -23,11 +23,15 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.reflect.Proxy; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.BeanManager; import com.vaadin.flow.component.UI; import com.vaadin.flow.server.VaadinSession; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class TestRouteScopedContext extends RouteScopedContext { @Override diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UIUnderTestContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UIUnderTestContext.java index 47e3d63b..bc702cea 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UIUnderTestContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UIUnderTestContext.java @@ -26,6 +26,10 @@ import com.vaadin.flow.component.UI; import com.vaadin.flow.server.VaadinSession; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public class UIUnderTestContext implements UnderTestContext { private VaadinSession session; diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiContextTest.java index 57459b73..c5b5b5d5 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiContextTest.java @@ -23,14 +23,20 @@ package com.github.mcollovati.vertx.quarkus.context; import java.lang.reflect.Proxy; -import javax.enterprise.context.Dependent; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.annotation.Priority; +import jakarta.enterprise.context.Dependent; +import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.spi.BeanManager; import io.quarkus.arc.Unremovable; import io.quarkus.test.junit.QuarkusTest; import com.github.mcollovati.vertx.quarkus.context.UiContextTest.TestUIScopedContext; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class UiContextTest extends AbstractContextTest { @@ -59,5 +65,7 @@ BeanManager getBeanManager() { @Dependent @Unremovable + @Alternative + @Priority(1) public static class TestContextualStorageManager extends UIScopedContext.ContextualStorageManager {} } diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiPseudoScopeContextTest.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiPseudoScopeContextTest.java index 840ddf76..ad1fa078 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiPseudoScopeContextTest.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UiPseudoScopeContextTest.java @@ -27,6 +27,10 @@ import com.github.mcollovati.vertx.quarkus.context.UiPseudoScopeContextTest.TestUIContextWrapper; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + @QuarkusTest public class UiPseudoScopeContextTest extends InjectableContextTest { diff --git a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UnderTestContext.java b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UnderTestContext.java index 8bf7d0c5..bfbf391e 100644 --- a/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UnderTestContext.java +++ b/vertx-vaadin-quarkus-extension/runtime/src/test/java/com/github/mcollovati/vertx/quarkus/context/UnderTestContext.java @@ -22,6 +22,10 @@ */ package com.github.mcollovati.vertx.quarkus.context; +/* + * NOTE: this code has been copy/pasted and adapted from vaadin-quarkus extension, credit goes to Vaadin Ltd. + */ + public interface UnderTestContext { void activate(); diff --git a/vertx-vaadin-tests/pom.xml b/vertx-vaadin-tests/pom.xml index 2cbe6887..4ae84c3e 100644 --- a/vertx-vaadin-tests/pom.xml +++ b/vertx-vaadin-tests/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx vertx-vaadin-root - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml com.github.mcollovati.vertx.tests diff --git a/vertx-vaadin-tests/test-common/pom.xml b/vertx-vaadin-tests/test-common/pom.xml index e3a289ba..c9c6fd76 100644 --- a/vertx-vaadin-tests/test-common/pom.xml +++ b/vertx-vaadin-tests/test-common/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml vertx-vaadin-test-common diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeTimingDataViewTestServlet.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeTimingDataViewTestServlet.java index 6ed45b59..6ee5be28 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeTimingDataViewTestServlet.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeTimingDataViewTestServlet.java @@ -22,8 +22,8 @@ */ package com.vaadin.flow.uitest.vertx; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.annotation.WebInitParam; +import jakarta.servlet.annotation.WebServlet; @WebServlet( asyncSupported = true, diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeViewTestServlet.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeViewTestServlet.java index 96beeef3..fafd41f9 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeViewTestServlet.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ProductionModeViewTestServlet.java @@ -22,8 +22,8 @@ */ package com.vaadin.flow.uitest.vertx; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.annotation.WebInitParam; +import jakarta.servlet.annotation.WebServlet; @WebServlet( asyncSupported = true, diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/RouterTestServlet.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/RouterTestServlet.java index c208697d..027d7f5e 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/RouterTestServlet.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/RouterTestServlet.java @@ -23,7 +23,7 @@ package com.vaadin.flow.uitest.vertx; import java.util.stream.Stream; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.annotation.WebServlet; import com.vaadin.flow.component.Component; import com.vaadin.flow.component.html.Div; diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java index 033ec0ab..74cdfbf3 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java @@ -24,11 +24,12 @@ import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; import com.vaadin.flow.internal.DevModeHandler; import com.vaadin.flow.internal.DevModeHandlerManager; @@ -88,6 +89,7 @@ public static Process runNpmCommand(List command, File workingDirectory) @Override protected void serviceInitialized(VertxVaadinService service, Router router) { + LOGGER.info("======================================== INIT check start"); String mountPoint = service.getVaadinOptions().mountPoint(); config().getJsonArray("mountAliases", new JsonArray()).stream() .map(String.class::cast) @@ -104,36 +106,47 @@ protected void serviceInitialized(VertxVaadinService service, Router router) { response.setStatusCode(404); if (devModeHandler != null) { LOGGER.trace("======================== check start. dev mod 1"); - try { - Method isRunningMethod = findIsRunningMethod(devModeHandler.getClass()); - boolean isRunning = (boolean) isRunningMethod.invoke(devModeHandler); - if (isRunning) { - LOGGER.info("DevModeHandler ready"); - response.setStatusCode(200); - } - } catch (NoSuchFieldException | IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); - LOGGER.trace("======================== check start. dev mod err "); + if (isReady(devModeHandler)) { + LOGGER.info("DevModeHandler ready"); + response.setStatusCode(200); } } else if (service.getDeploymentConfiguration().isProductionMode()) { response.setStatusCode(200); } - LOGGER.trace("======================== check start -> " + response.getStatusCode()); + LOGGER.trace("======================== check start -> {}", response.getStatusCode()); response.end(); }); } - private Method findIsRunningMethod(Class clazz) throws NoSuchFieldException { + private boolean isReady(DevModeHandler devModeHandler) { + Class clazz = devModeHandler.getClass(); + Field startFutureField = findStartFuture(clazz, "devServerStartFuture"); + if (startFutureField == null) { + startFutureField = findStartFuture(clazz, "buildCompletedFuture"); + } + if (startFutureField != null) { + boolean wasAccessible = startFutureField.canAccess(devModeHandler); + try { + startFutureField.setAccessible(true); + CompletableFuture startFuture = (CompletableFuture) startFutureField.get(devModeHandler); + return startFuture.isDone() && !startFuture.isCancelled() && !startFuture.isCompletedExceptionally(); + } catch (Exception ex) { + startFutureField.setAccessible(wasAccessible); + LOGGER.trace("Error getting start future from {}", devModeHandler.getClass(), ex); + } + } + return false; + } + + private Field findStartFuture(Class clazz, String fieldName) { do { try { - Method method = clazz.getDeclaredMethod("isRunning"); - method.setAccessible(true); - return method; - } catch (NoSuchMethodException e) { + return clazz.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { clazz = clazz.getSuperclass(); } } while (clazz != Object.class); - throw new NoSuchFieldException("Cannot find devServerStartFuture"); + return null; } public static ViewClassLocator getViewLocator(VaadinService vaadinService) { diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ViewTestServlet.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ViewTestServlet.java index a33fd4bc..1d319397 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ViewTestServlet.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/ViewTestServlet.java @@ -22,10 +22,10 @@ */ package com.vaadin.flow.uitest.vertx; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebInitParam; +import jakarta.servlet.annotation.WebServlet; import com.vaadin.flow.server.VaadinServlet; diff --git a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/WebJarsServlet.java b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/WebJarsServlet.java index ad07953c..02009e2a 100644 --- a/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/WebJarsServlet.java +++ b/vertx-vaadin-tests/test-common/src/main/java/com/vaadin/flow/uitest/vertx/WebJarsServlet.java @@ -23,10 +23,10 @@ package com.vaadin.flow.uitest.vertx; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.server.VaadinServlet; diff --git a/vertx-vaadin-tests/test-frontend/addon-with-templates/pom.xml b/vertx-vaadin-tests/test-frontend/addon-with-templates/pom.xml index a93dbb69..0af5012b 100644 --- a/vertx-vaadin-tests/test-frontend/addon-with-templates/pom.xml +++ b/vertx-vaadin-tests/test-frontend/addon-with-templates/pom.xml @@ -7,7 +7,7 @@ com.github.mcollovati.vertx.tests test-frontend - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT addon-with-templates diff --git a/vertx-vaadin-tests/test-frontend/pom.xml b/vertx-vaadin-tests/test-frontend/pom.xml index f8e37478..00c88bd0 100644 --- a/vertx-vaadin-tests/test-frontend/pom.xml +++ b/vertx-vaadin-tests/test-frontend/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT test-frontend Frontend build (npm + Webpack + Vite) diff --git a/vertx-vaadin-tests/test-frontend/test-npm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java b/vertx-vaadin-tests/test-frontend/test-npm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java index febbca10..561530ed 100644 --- a/vertx-vaadin-tests/test-frontend/test-npm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java +++ b/vertx-vaadin-tests/test-frontend/test-npm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java @@ -15,7 +15,7 @@ */ package com.vaadin.flow.mixedtest.ui; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.annotation.WebServlet; import com.vaadin.flow.component.Tag; import com.vaadin.flow.component.dependency.JsModule; diff --git a/vertx-vaadin-tests/test-frontend/test-pnpm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java b/vertx-vaadin-tests/test-frontend/test-pnpm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java index febbca10..561530ed 100644 --- a/vertx-vaadin-tests/test-frontend/test-pnpm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java +++ b/vertx-vaadin-tests/test-frontend/test-pnpm/src/main/java/com/vaadin/flow/mixedtest/ui/IdTestView.java @@ -15,7 +15,7 @@ */ package com.vaadin.flow.mixedtest.ui; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.annotation.WebServlet; import com.vaadin.flow.component.Tag; import com.vaadin.flow.component.dependency.JsModule; diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/frontend/themes/vite-basics/styles.css b/vertx-vaadin-tests/test-frontend/vite-basics/frontend/themes/vite-basics/styles.css index c3d59ffb..8d9977c5 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/frontend/themes/vite-basics/styles.css +++ b/vertx-vaadin-tests/test-frontend/vite-basics/frontend/themes/vite-basics/styles.css @@ -2,6 +2,7 @@ h2 { color: blue; + font-family: "Itim"; } p { diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/package.json b/vertx-vaadin-tests/test-frontend/vite-basics/package.json index c3cc47d6..0c5eb021 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/package.json +++ b/vertx-vaadin-tests/test-frontend/vite-basics/package.json @@ -10,33 +10,35 @@ "@testscope/button": "../vite-test-assets/packages/@testscope/button", "@testscope/map": "../vite-test-assets/packages/@testscope/map", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles", - "@vaadin/common-frontend": "0.0.18", - "@vaadin/polymer-legacy-adapter": "23.3.0-alpha2", + "@vaadin/common-frontend": "0.0.19", + "@vaadin/polymer-legacy-adapter": "24.3.2", "@vaadin/router": "1.7.5", - "@vaadin/vaadin-lumo-styles": "23.3.0-alpha2", - "@vaadin/vaadin-text-field": "23.3.0-alpha2", - "@vaadin/vaadin-themable-mixin": "23.3.0-alpha2", + "@vaadin/text-field": "24.3.2", + "@vaadin/vaadin-lumo-styles": "24.3.2", + "@vaadin/vaadin-themable-mixin": "24.3.2", "construct-style-sheets-polyfill": "3.1.0", "copy-to-clipboard": "^3.3.1", - "lit": "2.6.1", - "package-outside-npm": "file:package-outside-npm", - "package2-outside-npm": "./package2-outside-npm" + "lit": "3.1.0", + "package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm", + "package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm" }, "devDependencies": { - "@rollup/plugin-replace": "3.1.0", - "@rollup/pluginutils": "4.1.0", - "async": "3.2.2", - "glob": "7.2.3", - "mkdirp": "1.0.4", + "@rollup/plugin-replace": "5.0.4", + "@rollup/pluginutils": "5.0.5", + "@vitejs/plugin-react": "4.2.0", + "@vitejs/plugin-react-swc": "3.5.0", + "async": "3.2.4", + "glob": "10.3.3", "rollup-plugin-brotli": "3.1.0", + "rollup-plugin-visualizer": "5.9.2", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "4.9.5", - "vite": "3.2.7", - "vite-plugin-checker": "0.5.4", - "workbox-build": "6.5.4", - "workbox-core": "6.5.4", - "workbox-precaching": "6.5.4" + "typescript": "5.3.3", + "vite": "5.0.6", + "vite-plugin-checker": "0.6.2", + "workbox-build": "7.0.0", + "workbox-core": "7.0.0", + "workbox-precaching": "7.0.0" }, "overrides": { "@testscope/all": "$@testscope/all", @@ -56,38 +58,40 @@ "@vaadin/router": "$@vaadin/router", "@polymer/polymer": "$@polymer/polymer", "@vaadin/polymer-legacy-adapter": "$@vaadin/polymer-legacy-adapter", - "@vaadin/vaadin-text-field": "$@vaadin/vaadin-text-field", "@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin", - "@vaadin/vaadin-lumo-styles": "$@vaadin/vaadin-lumo-styles" + "@vaadin/vaadin-lumo-styles": "$@vaadin/vaadin-lumo-styles", + "@vaadin/text-field": "$@vaadin/text-field" }, "vaadin": { "dependencies": { "@polymer/polymer": "3.5.1", - "@vaadin/common-frontend": "0.0.18", - "@vaadin/polymer-legacy-adapter": "23.3.0-alpha2", + "@vaadin/common-frontend": "0.0.19", + "@vaadin/polymer-legacy-adapter": "24.3.2", "@vaadin/router": "1.7.5", - "@vaadin/vaadin-lumo-styles": "23.3.0-alpha2", - "@vaadin/vaadin-text-field": "23.3.0-alpha2", - "@vaadin/vaadin-themable-mixin": "23.3.0-alpha2", + "@vaadin/text-field": "24.3.2", + "@vaadin/vaadin-lumo-styles": "24.3.2", + "@vaadin/vaadin-themable-mixin": "24.3.2", "construct-style-sheets-polyfill": "3.1.0", - "lit": "2.6.1" + "lit": "3.1.0" }, "devDependencies": { - "@rollup/plugin-replace": "3.1.0", - "@rollup/pluginutils": "4.1.0", - "async": "3.2.2", - "glob": "7.2.3", - "mkdirp": "1.0.4", + "@rollup/plugin-replace": "5.0.4", + "@rollup/pluginutils": "5.0.5", + "@vitejs/plugin-react": "4.2.0", + "@vitejs/plugin-react-swc": "3.5.0", + "async": "3.2.4", + "glob": "10.3.3", "rollup-plugin-brotli": "3.1.0", + "rollup-plugin-visualizer": "5.9.2", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "4.9.5", - "vite": "3.2.7", - "vite-plugin-checker": "0.5.4", - "workbox-build": "6.5.4", - "workbox-core": "6.5.4", - "workbox-precaching": "6.5.4" + "typescript": "5.3.3", + "vite": "5.0.6", + "vite-plugin-checker": "0.6.2", + "workbox-build": "7.0.0", + "workbox-core": "7.0.0", + "workbox-precaching": "7.0.0" }, - "hash": "bd375585790019b58df8162c21564efadce8a4c5a555cec17a3882c64818d975" + "hash": "18874f8100abf21e2ac7778cc31363d48b1be72e1b5c77c5adbf6c3b532d893e" } } diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/pom.xml b/vertx-vaadin-tests/test-frontend/vite-basics/pom.xml index 6dcdefd8..3d1f77c5 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/pom.xml +++ b/vertx-vaadin-tests/test-frontend/vite-basics/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx.tests test-frontend - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vite-basics Vite dev mode functionality @@ -46,6 +46,9 @@ com.vaadin vaadin-maven-plugin + + true + org.apache.maven.plugins diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/vertx-vaadin-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java index fffcf57d..96b39f38 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java +++ b/vertx-vaadin-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java @@ -77,12 +77,6 @@ public MainView() { setSizeFull(); getStyle().set("text-align", "center"); - final Paragraph viteStatus = new Paragraph("Vite feature is " - + !FeatureFlags.get(UI.getCurrent().getSession().getService().getContext()) - .isEnabled(FeatureFlags.WEBPACK)); - viteStatus.setId("status"); - add(viteStatus); - NativeButton checkOutsideJs = new NativeButton("Check outside JS", e -> { getElement() .executeJs(OUTSIDE_RESULT diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java index 5278b370..87f536a5 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java +++ b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java @@ -22,7 +22,6 @@ */ package com.vaadin.viteapp; -import com.vaadin.flow.component.html.testbench.ParagraphElement; import com.vaadin.flow.testutil.DevToolsElement; import com.vaadin.testbench.TestBenchElement; import com.vaadin.viteapp.views.empty.MainView; @@ -44,7 +43,7 @@ public void noTypescriptErrors() throws Exception { Thread.sleep(2000); // Checking is async so it sometimes needs some time Assert.assertFalse( "There should be no error overlay", - $("vite-plugin-checker-error-overlay").exists()); + $("vite-plugin-checker-error-overlay").first().$("main").exists()); } @Test @@ -58,12 +57,6 @@ public void imageFromThemeShown() { }); } - @Test - public void applicationUsesVite() { - TestBenchElement viteStatus = $(ParagraphElement.class).id("status"); - Assert.assertEquals("Vite feature is true", viteStatus.getText()); - } - @Test public void debugWindowShown() { DevToolsElement devTools = $(DevToolsElement.class).waitForFirst(); diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/FileAccessIT.java b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/FileAccessIT.java index ef90a1ef..1024cfff 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/FileAccessIT.java +++ b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/FileAccessIT.java @@ -38,7 +38,6 @@ public void expectedFoldersAccessible() throws Exception { * This just tests a few sample folders to see that there is not a * fundamental problem */ - assertAllowed("target/frontend/generated-flow-imports.js"); assertAllowed("frontend/jsonloader.js"); } diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/ThemeIT.java b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/ThemeIT.java index 554e2ffc..1dc16578 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/ThemeIT.java +++ b/vertx-vaadin-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/ThemeIT.java @@ -23,12 +23,9 @@ package com.vaadin.viteapp; import java.util.List; -import java.util.stream.Collectors; import org.junit.Assert; import org.junit.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; public class ThemeIT extends ViteDevModeIT { @@ -44,10 +41,9 @@ public void themeStylesShouldNotBeAddedToHead() { styleFromTheme); Assert.assertEquals( - "Theme rule should have been added once using adoptedStyleSheets", + "Theme rule should have been added once in total", 1, - adoptedStyleSheetsWithString.size()); - Assert.assertEquals("Theme rule should not have been added to ", 0, styleTagsWithString.size()); + adoptedStyleSheetsWithString.size() + styleTagsWithString.size()); } @Test @@ -64,16 +60,16 @@ public void cssImportAnnotationForComponent() { } @Test - public void documentCssImport_externalAddedToHeadAsLink() { - checkLogsForErrors(); - - final WebElement documentHead = getDriver().findElement(By.tagName("head")); - final List links = documentHead.findElements(By.tagName("link")); - - List linkUrls = - links.stream().map(link -> link.getAttribute("href")).collect(Collectors.toList()); + public void autoInjectComponentsIsFalse_cssNotImported() { + String fieldBorder = (String) + executeScript( + "return getComputedStyle(document.querySelector('#themedfield').shadowRoot.querySelector('[part=input-field]')).border"); + Assert.assertNotEquals("10px solid rgb(255, 0, 0)", fieldBorder); + } - Assert.assertTrue( - "Missing link for external url", linkUrls.contains("https://fonts.googleapis.com/css?family=Itim")); + @Test + public void documentCssImport_externalUrlLoaded() { + checkLogsForErrors(); + waitForFont("10px Itim"); } } diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/tsconfig.json b/vertx-vaadin-tests/test-frontend/vite-basics/tsconfig.json index 37f32e77..1d3096d9 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/tsconfig.json +++ b/vertx-vaadin-tests/test-frontend/vite-basics/tsconfig.json @@ -4,14 +4,14 @@ // You might want to change the configurations to fit your preferences // For more information about the configurations, please refer to http://www.typescriptlang.org/docs/handbook/tsconfig-json.html { - "flow_version": "23.3.4", + "_version": "9", "compilerOptions": { "sourceMap": true, "jsx": "react-jsx", "inlineSources": true, "module": "esNext", "target": "es2020", - "moduleResolution": "node", + "moduleResolution": "bundler", "strict": true, "skipLibCheck": true, "noFallthroughCasesInSwitch": true, diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/vite.config.ts b/vertx-vaadin-tests/test-frontend/vite-basics/vite.config.ts index 0e17c473..cbcf8527 100644 --- a/vertx-vaadin-tests/test-frontend/vite-basics/vite.config.ts +++ b/vertx-vaadin-tests/test-frontend/vite-basics/vite.config.ts @@ -27,7 +27,7 @@ function dumpOptimizeDepsPlugin(): PluginOption { } } -const customConfig: UserConfigFn = (env) => ({ +const customConfig: UserConfigFn = () => ({ // Here you can add custom Vite parameters // https://vitejs.dev/config/ plugins: [ diff --git a/vertx-vaadin-tests/test-frontend/vite-production/frontend/lit-invalid-imports.ts b/vertx-vaadin-tests/test-frontend/vite-production/frontend/lit-invalid-imports.ts deleted file mode 100644 index 135d4e46..00000000 --- a/vertx-vaadin-tests/test-frontend/vite-production/frontend/lit-invalid-imports.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { customElement } from 'lit/decorators'; -import { customElement as ce2, property } from 'lit/decorators'; -import { state, customElement as ce3, property as p2 } from 'lit/decorators'; -import { unsafeHTML } from 'lit-html/directives/unsafe-html'; -import { classMap } from 'lit-html/directives/class-map'; - -console.log(customElement, ce2, ce3, property, p2, state, unsafeHTML, classMap); diff --git a/vertx-vaadin-tests/test-frontend/vite-production/package-lock.json b/vertx-vaadin-tests/test-frontend/vite-production/package-lock.json index 40b0292c..be85fec0 100644 --- a/vertx-vaadin-tests/test-frontend/vite-production/package-lock.json +++ b/vertx-vaadin-tests/test-frontend/vite-production/package-lock.json @@ -12,30 +12,34 @@ "@testscope/button": "../vite-test-assets/packages/@testscope/button", "@testscope/map": "../vite-test-assets/packages/@testscope/map", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles", - "@vaadin/common-frontend": "0.0.18", - "@vaadin/polymer-legacy-adapter": "23.1.1", + "@vaadin/common-frontend": "0.0.19", + "@vaadin/polymer-legacy-adapter": "24.3.2", "@vaadin/router": "1.7.5", - "@vaadin/vaadin-lumo-styles": "23.1.1", - "@vaadin/vaadin-text-field": "23.1.1", - "@vaadin/vaadin-themable-mixin": "23.1.1", + "@vaadin/text-field": "24.3.2", + "@vaadin/vaadin-lumo-styles": "24.3.2", + "@vaadin/vaadin-themable-mixin": "24.3.2", "construct-style-sheets-polyfill": "3.1.0", - "lit": "2.6.1" + "lit": "3.1.0", + "package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm", + "package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm" }, "devDependencies": { - "@rollup/plugin-replace": "3.1.0", - "@rollup/pluginutils": "4.1.0", - "async": "3.2.2", - "glob": "7.2.3", - "mkdirp": "1.0.4", + "@rollup/plugin-replace": "5.0.4", + "@rollup/pluginutils": "5.0.5", + "@vitejs/plugin-react": "4.2.0", + "@vitejs/plugin-react-swc": "3.5.0", + "async": "3.2.4", + "glob": "10.3.3", "rollup-plugin-brotli": "3.1.0", + "rollup-plugin-visualizer": "5.9.2", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "4.9.5", - "vite": "3.2.7", - "vite-plugin-checker": "0.5.4", - "workbox-build": "6.5.4", - "workbox-core": "6.5.4", - "workbox-precaching": "6.5.4" + "typescript": "5.3.3", + "vite": "5.0.6", + "vite-plugin-checker": "0.6.2", + "workbox-build": "7.0.0", + "workbox-core": "7.0.0", + "workbox-precaching": "7.0.0" } }, "../vite-test-assets/packages/@testscope/all": { @@ -54,6 +58,8 @@ "version": "1.0.0", "license": "Apache-2.0" }, + "../vite-test-assets/packages/package-outside-npm": {}, + "../vite-test-assets/packages/package2-outside-npm": {}, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -1527,6 +1533,36 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", @@ -1881,10 +1917,26 @@ "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", "cpu": [ "arm" ], @@ -1897,178 +1949,517 @@ "node": ">=12" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "optional": true, "os": [ - "linux" + "android" ], "engines": { "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", - "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" - }, - "node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@open-wc/dedupe-mixin": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", - "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==" - }, - "node_modules/@polymer/iron-flex-layout": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@polymer/iron-flex-layout/-/iron-flex-layout-3.0.1.tgz", - "integrity": "sha512-7gB869czArF+HZcPTVSgvA7tXYFze9EKckvM95NB7SqYF+NnsQyhoXgKnpFwGyo95lUjUW9TFDLUwDXnCYFtkw==", - "dependencies": { - "@polymer/polymer": "^3.0.0" + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@polymer/iron-icon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@polymer/iron-icon/-/iron-icon-3.0.1.tgz", - "integrity": "sha512-QLPwirk+UPZNaLnMew9VludXA4CWUCenRewgEcGYwdzVgDPCDbXxy6vRJjmweZobMQv/oVLppT2JZtJFnPxX6g==", - "dependencies": { - "@polymer/iron-flex-layout": "^3.0.0-pre.26", - "@polymer/iron-meta": "^3.0.0-pre.26", - "@polymer/polymer": "^3.0.0" + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@polymer/iron-iconset-svg": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@polymer/iron-iconset-svg/-/iron-iconset-svg-3.0.1.tgz", - "integrity": "sha512-XNwURbNHRw6u2fJe05O5fMYye6GSgDlDqCO+q6K1zAnKIrpgZwf2vTkBd5uCcZwsN0FyCB3mvNZx4jkh85dRDw==", - "dependencies": { - "@polymer/iron-meta": "^3.0.0-pre.26", - "@polymer/polymer": "^3.0.0" + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@polymer/iron-meta": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@polymer/iron-meta/-/iron-meta-3.0.1.tgz", - "integrity": "sha512-pWguPugiLYmWFV9UWxLWzZ6gm4wBwQdDy4VULKwdHCqR7OP7u98h+XDdGZsSlDPv6qoryV/e3tGHlTIT0mbzJA==", - "dependencies": { - "@polymer/polymer": "^3.0.0" + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@polymer/polymer": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.5.1.tgz", - "integrity": "sha512-JlAHuy+1qIC6hL1ojEUfIVD58fzTpJAoCxFwV5yr0mYTXV1H8bz5zy0+rC963Cgr9iNXQ4T9ncSjC2fkF9BQfw==", - "dependencies": { - "@webcomponents/shadycss": "^1.9.1" + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-wc/dedupe-mixin": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz", + "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polymer/polymer": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.5.1.tgz", + "integrity": "sha512-JlAHuy+1qIC6hL1ojEUfIVD58fzTpJAoCxFwV5yr0mYTXV1H8bz5zy0+rC963Cgr9iNXQ4T9ncSjC2fkF9BQfw==", + "dependencies": { + "@webcomponents/shadycss": "^1.9.1" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, @@ -2156,70 +2547,458 @@ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, - "node_modules/@rollup/plugin-replace": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.1.0.tgz", - "integrity": "sha512-pA3XRUrSKybVYqmH5TqWNZpGxF+VV+1GrYchKgCNIj2vsSOX7CVm2RCtx8p2nrC7xvkziYyK+lSi74T93MU3YA==", + "node_modules/@rollup/plugin-replace": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz", + "integrity": "sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.30.6", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.6.tgz", + "integrity": "sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@swc/core": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.107.tgz", + "integrity": "sha512-zKhqDyFcTsyLIYK1iEmavljZnf4CCor5pF52UzLAz4B6Nu/4GLU+2LQVAf+oRHjusG39PTPjd2AlRT3f3QWfsQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.107", + "@swc/core-darwin-x64": "1.3.107", + "@swc/core-linux-arm-gnueabihf": "1.3.107", + "@swc/core-linux-arm64-gnu": "1.3.107", + "@swc/core-linux-arm64-musl": "1.3.107", + "@swc/core-linux-x64-gnu": "1.3.107", + "@swc/core-linux-x64-musl": "1.3.107", + "@swc/core-win32-arm64-msvc": "1.3.107", + "@swc/core-win32-ia32-msvc": "1.3.107", + "@swc/core-win32-x64-msvc": "1.3.107" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.107.tgz", + "integrity": "sha512-47tD/5vSXWxPd0j/ZllyQUg4bqalbQTsmqSw0J4dDdS82MWqCAwUErUrAZPRjBkjNQ6Kmrf5rpCWaGTtPw+ngw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.107.tgz", + "integrity": "sha512-hwiLJ2ulNkBGAh1m1eTfeY1417OAYbRGcb/iGsJ+LuVLvKAhU/itzsl535CvcwAlt2LayeCFfcI8gdeOLeZa9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.107.tgz", + "integrity": "sha512-I2wzcC0KXqh0OwymCmYwNRgZ9nxX7DWnOOStJXV3pS0uB83TXAkmqd7wvMBuIl9qu4Hfomi9aDM7IlEEn9tumQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.107.tgz", + "integrity": "sha512-HWgnn7JORYlOYnGsdunpSF8A+BCZKPLzLtEUA27/M/ZuANcMZabKL9Zurt7XQXq888uJFAt98Gy+59PU90aHKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.107.tgz", + "integrity": "sha512-vfPF74cWfAm8hyhS8yvYI94ucMHIo8xIYU+oFOW9uvDlGQRgnUf/6DEVbLyt/3yfX5723Ln57U8uiMALbX5Pyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.107.tgz", + "integrity": "sha512-uBVNhIg0ip8rH9OnOsCARUFZ3Mq3tbPHxtmWk9uAa5u8jQwGWeBx5+nTHpDOVd3YxKb6+5xDEI/edeeLpha/9g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.107.tgz", + "integrity": "sha512-mvACkUvzSIB12q1H5JtabWATbk3AG+pQgXEN95AmEX2ZA5gbP9+B+mijsg7Sd/3tboHr7ZHLz/q3SHTvdFJrEw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.107.tgz", + "integrity": "sha512-J3P14Ngy/1qtapzbguEH41kY109t6DFxfbK4Ntz9dOWNuVY3o9/RTB841ctnJk0ZHEG+BjfCJjsD2n8H5HcaOA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=10" } }, - "node_modules/@rollup/plugin-replace/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@rollup/pluginutils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz", - "integrity": "sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==", + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.107.tgz", + "integrity": "sha512-ZBUtgyjTHlz8TPJh7kfwwwFma+ktr6OccB1oXC8fMSopD0AxVnQasgun3l3099wIsAB9eEsJDQ/3lDkOLs1gBA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=10" } }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.107", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.107.tgz", + "integrity": "sha512-Eyzo2XRqWOxqhE1gk9h7LWmUf4Bp4Xn2Ttb0ayAXFp6YSTxQIThXcT9kipXZqcpxcmDwoq8iWbbf2P8XL743EA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, "node_modules/@testscope/all": { "resolved": "../vite-test-assets/packages/@testscope/all", "link": true @@ -2232,6 +3011,47 @@ "resolved": "../vite-test-assets/packages/@testscope/map", "link": true }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -2261,179 +3081,150 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, - "node_modules/@vaadin/bundles": { - "resolved": "../vite-test-assets/packages/@vaadin/bundles", - "link": true - }, - "node_modules/@vaadin/button": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/button/-/button-23.3.29.tgz", - "integrity": "sha512-ZeYbVM52ly29q/WNrcfNIgVdK9I/NZUF11vR1TDa59v0SeI8ZdUaHAWHL2eQi41w+4zgDxPKNIh7KmfiBW+VUg==", + "node_modules/@vaadin/a11y-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.5.tgz", + "integrity": "sha512-WM4hfkYwEGokAMR/VktZKS14SqwJU7UCTUXV8DktWqm5+yixIShPr0KWjtPTBjsuzVkz5BmfYB+BIxouOwZUJg==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" - } - }, - "node_modules/@vaadin/common-frontend": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vaadin/common-frontend/-/common-frontend-0.0.18.tgz", - "integrity": "sha512-RurZlTh30U17LB/LGUOZFtGbPK4uTOZhA9V50cRy0QikcEiwTIbSYSpbEOVcIF+UJ4dLpREs8f1v66dvufPFwA==", - "dependencies": { - "tslib": "^2.3.1" - }, - "peerDependencies": { - "lit": "^2.0.0" + "@vaadin/component-base": "~24.3.5", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/component-base": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-23.3.29.tgz", - "integrity": "sha512-GCjb5cblZlkB+UfYR5J5vPQSweU2yNyjyiXe8+u3dXS+CzoSdAMFtVDHl7zJSvQxPNFks7AN3qGQRjdh1aiDxg==", + "node_modules/@vaadin/a11y-base/node_modules/@vaadin/component-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.5.tgz", + "integrity": "sha512-NbQmm8+1Qu6Ia7L+k4jq4jtLgwsoxlgEXsJ8iB4T03+Wq6i2as9m6Rkf/Id54j0k529fzQ6yOUKZZ3De50tQSw==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", "@vaadin/vaadin-development-mode-detector": "^2.0.0", "@vaadin/vaadin-usage-statistics": "^2.1.0", - "lit": "^2.0.0" + "lit": "^3.0.0" } }, - "node_modules/@vaadin/email-field": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/email-field/-/email-field-23.3.29.tgz", - "integrity": "sha512-BhNc6Sp2EEfbtLcjSgirtAWDRjkIR4xhMu88zBxDkLal5RHqd/a5/7q4cR5jDNoySd5Jm18TEos0SP4o+uNvZQ==", - "dependencies": { - "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/text-field": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" - } + "node_modules/@vaadin/bundles": { + "resolved": "../vite-test-assets/packages/@vaadin/bundles", + "link": true }, - "node_modules/@vaadin/field-base": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-23.3.29.tgz", - "integrity": "sha512-j3UKnjysvve2l40xH5jTUs8qj/lLurc9didPSMupLvgkPsObEIfmInZaDWfp+kZT3DAYr0xB19Jexis48hVuYw==", + "node_modules/@vaadin/common-frontend": { + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@vaadin/common-frontend/-/common-frontend-0.0.19.tgz", + "integrity": "sha512-e6KOPTr1Zj9prX0HvV89+HehsB5x8aPT35JS8r9EktG8ZvVuCv1IM4PZJ7bpttZj0jiRbb9d8iYq+eFDjQWyEQ==", "dependencies": { - "@open-wc/dedupe-mixin": "^1.3.0", - "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "lit": "^2.0.0" + "tslib": "^2.3.1" + }, + "peerDependencies": { + "lit": "^3.0.0" } }, "node_modules/@vaadin/icon": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-23.3.29.tgz", - "integrity": "sha512-MfugMu3NgMV4I6Q/leTNCfzQofeIpI1ZNIuYohbQoyTH55LGH28PDH73WgNKLrapD1r1CutqBxzspyjux8SaNA==", + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.5.tgz", + "integrity": "sha512-90LecIYz7WNoIOGcAhoIzByUgx+5C5HX0BzYui6EhffCKsypc8qOobQjn33kdhgN7QnRSGvr/3YCjQfNuWnrMw==", "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29", - "lit": "^2.0.0" + "@vaadin/component-base": "~24.3.5", + "@vaadin/vaadin-lumo-styles": "~24.3.5", + "@vaadin/vaadin-themable-mixin": "~24.3.5", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/input-container": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-23.3.29.tgz", - "integrity": "sha512-IbxE1+YT5NUh+jeOf6OlT7GiBgNzAgZyzRxb3AwcNfWFEcFFWrSYY3LT21a+1dawIjpvjd2l0sv3HWX+WIm0cw==", + "node_modules/@vaadin/icon/node_modules/@vaadin/component-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.5.tgz", + "integrity": "sha512-NbQmm8+1Qu6Ia7L+k4jq4jtLgwsoxlgEXsJ8iB4T03+Wq6i2as9m6Rkf/Id54j0k529fzQ6yOUKZZ3De50tQSw==", "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/integer-field": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/integer-field/-/integer-field-23.3.29.tgz", - "integrity": "sha512-I+kZHq2J0MdX/SlLuPs0Sr32TtybIkjGYE0caLunu/gku+7xW57SR0qtosm17o4tCfmPiMAxOl9/vuSqMhP/oA==", + "node_modules/@vaadin/polymer-legacy-adapter": { + "version": "24.3.2", + "resolved": "https://registry.npmjs.org/@vaadin/polymer-legacy-adapter/-/polymer-legacy-adapter-24.3.2.tgz", + "integrity": "sha512-sttOb0G6YNf0izX94z4uUbyydjsweiT9zL+K4F0HXoL9NZ18l++1aYOlUmnuAfNisaFeE5R/LFTwgUdGEMB2rg==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/number-field": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29" + "@vaadin/vaadin-themable-mixin": "~24.3.2", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/number-field": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/number-field/-/number-field-23.3.29.tgz", - "integrity": "sha512-j1uF9wH0dnBk40PETA8cAiZzOyKvdi+i08vWcU5GKEDMIEAwC3loZGScA+ZxRS4Y+xf0GC4UcHyn4cxNCF/tOg==", + "node_modules/@vaadin/router": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@vaadin/router/-/router-1.7.5.tgz", + "integrity": "sha512-uRN3vd1ihgd596bF/NMZqpgxau0nlvIc0/JDd1EwStFNbZID/xIVse5LXdQhIyUKLmSl4T0GeCQK505xerWX0w==", "dependencies": { - "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/field-base": "~23.3.29", - "@vaadin/input-container": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "path-to-regexp": "2.4.0" } }, - "node_modules/@vaadin/password-field": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/password-field/-/password-field-23.3.29.tgz", - "integrity": "sha512-YwQJ8xRurQs2eELGmCyEtZ5VpgnMoTFWnbieycoprw8Q8TZ3oaXCnleULsMpP4viiaiA4LGT+QzGQxQLNp5vcQ==", + "node_modules/@vaadin/text-field": { + "version": "24.3.2", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.2.tgz", + "integrity": "sha512-v+faXP3eyH6bESjgc9E01Rm1+PMgwVDjpIOZbClqeaehjtr6SqGPqeinXwTHslOV4m1UnyJ4PCFFdkpvlSWnZA==", "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/button": "~23.3.29", - "@vaadin/component-base": "~23.3.29", - "@vaadin/text-field": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/a11y-base": "~24.3.2", + "@vaadin/component-base": "~24.3.2", + "@vaadin/field-base": "~24.3.2", + "@vaadin/input-container": "~24.3.2", + "@vaadin/vaadin-lumo-styles": "~24.3.2", + "@vaadin/vaadin-material-styles": "~24.3.2", + "@vaadin/vaadin-themable-mixin": "~24.3.2", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/polymer-legacy-adapter": { - "version": "23.1.1", - "resolved": "https://registry.npmjs.org/@vaadin/polymer-legacy-adapter/-/polymer-legacy-adapter-23.1.1.tgz", - "integrity": "sha512-ezZZkfk8LGDC5rgTBlpmVmpF9gVqfN744u6h3I8xhRyTTS4R6GUx37ZAKyG2/YF83XqXTAo28jKin677AYqO5g==", + "node_modules/@vaadin/text-field/node_modules/@vaadin/component-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.5.tgz", + "integrity": "sha512-NbQmm8+1Qu6Ia7L+k4jq4jtLgwsoxlgEXsJ8iB4T03+Wq6i2as9m6Rkf/Id54j0k529fzQ6yOUKZZ3De50tQSw==", "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/vaadin-themable-mixin": "^23.1.1", - "lit": "^2.0.0" + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/router": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@vaadin/router/-/router-1.7.5.tgz", - "integrity": "sha512-uRN3vd1ihgd596bF/NMZqpgxau0nlvIc0/JDd1EwStFNbZID/xIVse5LXdQhIyUKLmSl4T0GeCQK505xerWX0w==", + "node_modules/@vaadin/text-field/node_modules/@vaadin/field-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.5.tgz", + "integrity": "sha512-jJxk2c5aTP49ERTrhhmH47uppy8WXBIaO4oyRva+0QX9gW/K1f6sUvU8r/6yXRt7/Zhuz7PHjNOyMJ9SDTX23A==", "dependencies": { - "@vaadin/vaadin-usage-statistics": "^2.1.0", - "path-to-regexp": "2.4.0" + "@open-wc/dedupe-mixin": "^1.3.0", + "@polymer/polymer": "^3.0.0", + "@vaadin/a11y-base": "~24.3.5", + "@vaadin/component-base": "~24.3.5", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/text-area": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/text-area/-/text-area-23.3.29.tgz", - "integrity": "sha512-d3WAlmZmeW4lZ3f/87Woh4FM3p4eNGv3YFn2IvzkQJo62Tlwpb5ORx4op1S2kXqCgMHg9qNvhcuXwvbjNb3v+g==", + "node_modules/@vaadin/text-field/node_modules/@vaadin/input-container": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.5.tgz", + "integrity": "sha512-PC/ZG7ZwB3RhNbhSBs3NUYmn9O6l4RnziAW85KA1xfzFDjQ5+bbQJVU2Az5cPZ/l5mE+W1ocmOLSYVaA3qMQ+Q==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/field-base": "~23.3.29", - "@vaadin/input-container": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/component-base": "~24.3.5", + "@vaadin/vaadin-lumo-styles": "~24.3.5", + "@vaadin/vaadin-material-styles": "~24.3.5", + "@vaadin/vaadin-themable-mixin": "~24.3.5", + "lit": "^3.0.0" } }, - "node_modules/@vaadin/text-field": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-23.3.29.tgz", - "integrity": "sha512-5FtkLNJF01WWX7epV+76DV83jWDVTttHo5sH6HwsTVj/EEauBqlCOA4rm5b0VcQohqkac2eQsnLuZzeayKvFDw==", + "node_modules/@vaadin/text-field/node_modules/@vaadin/vaadin-material-styles": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.5.tgz", + "integrity": "sha512-iqjb6dAU4bc5WToH3wYyLvfvr8o/ZY8AOe5WYDwvspkK8tdnEcl6EZKmt1qXH2ycsNoPc/v17yRqfGkOQLaNKw==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~23.3.29", - "@vaadin/field-base": "~23.3.29", - "@vaadin/input-container": "~23.3.29", - "@vaadin/vaadin-lumo-styles": "~23.3.29", - "@vaadin/vaadin-material-styles": "~23.3.29", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/component-base": "~24.3.5", + "@vaadin/vaadin-themable-mixin": "~24.3.5" } }, "node_modules/@vaadin/vaadin-development-mode-detector": { @@ -2442,47 +3233,35 @@ "integrity": "sha512-N6a5nLT/ytEUlpPo+nvdCKIGoyNjPsj3rzPGvGYK8x9Ceg76OTe1xI/GtN71mRW9e2HUScR0kCNOkl1Z63YDjw==" }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "23.1.1", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-23.1.1.tgz", - "integrity": "sha512-c1J7JOGfeiov2afVtONnLarR59JGwioa6tJ4a2ItPsNuRZt8r1WHzWvjgGjZtoVgzU6F/FnPenXiNgNzW0uzuw==", - "dependencies": { - "@polymer/iron-icon": "^3.0.0", - "@polymer/iron-iconset-svg": "^3.0.0", - "@polymer/polymer": "^3.0.0", - "@vaadin/icon": "^23.1.1", - "@vaadin/vaadin-themable-mixin": "^23.1.1" - } - }, - "node_modules/@vaadin/vaadin-material-styles": { - "version": "23.3.29", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-23.3.29.tgz", - "integrity": "sha512-rLjRNVNHiVPgwZDba42HeRb9JjgZQ2m1bUP8tEOwMrc0n8cDSQn31dRFgKMLSbwPEaRiM2BscaaRaaX2KKgUcQ==", + "version": "24.3.2", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.2.tgz", + "integrity": "sha512-aAJfTXeAgzy9cUgF8X9lq6e1fCoSzChtJ/EblRf9ehSk14kFeOJyniIPnG4SUJX8A6+9cS3c6CIqxJJ8VE1Ukw==", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/vaadin-themable-mixin": "~23.3.29" + "@vaadin/component-base": "~24.3.2", + "@vaadin/icon": "~24.3.2", + "@vaadin/vaadin-themable-mixin": "~24.3.2" } }, - "node_modules/@vaadin/vaadin-text-field": { - "version": "23.1.1", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-text-field/-/vaadin-text-field-23.1.1.tgz", - "integrity": "sha512-wujYBP13zkcUi7iS3ECcNyWDnxeOnvv8WynLyWl0Xm2n6/e/agFnfuRvdEGKM82ydFWCRMW0wOWV29+f+S2wcA==", + "node_modules/@vaadin/vaadin-lumo-styles/node_modules/@vaadin/component-base": { + "version": "24.3.5", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.5.tgz", + "integrity": "sha512-NbQmm8+1Qu6Ia7L+k4jq4jtLgwsoxlgEXsJ8iB4T03+Wq6i2as9m6Rkf/Id54j0k529fzQ6yOUKZZ3De50tQSw==", "dependencies": { + "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/email-field": "^23.1.1", - "@vaadin/integer-field": "^23.1.1", - "@vaadin/number-field": "^23.1.1", - "@vaadin/password-field": "^23.1.1", - "@vaadin/text-area": "^23.1.1", - "@vaadin/text-field": "^23.1.1" + "@vaadin/vaadin-development-mode-detector": "^2.0.0", + "@vaadin/vaadin-usage-statistics": "^2.1.0", + "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "23.1.1", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-23.1.1.tgz", - "integrity": "sha512-uqmlRVMcHbvkR+iFtKNF3mSaam6hvGtEEJV0g/E/baZ6V4RkV0wqyfSGhshGFcHPeMdRwr/eKJfVMJQVjFMnAQ==", + "version": "24.3.2", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.2.tgz", + "integrity": "sha512-CduHHfdqoV6IHxNaRpnF4auUqmGhNsfdXKn48QK81qGKhMBm9zqopnCXL9x/TnhzDysi75NQ6TaBJlOAhAPvJA==", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", - "lit": "^2.0.0" + "lit": "^3.0.0" } }, "node_modules/@vaadin/vaadin-usage-statistics": { @@ -2497,6 +3276,37 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.0.tgz", + "integrity": "sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.4", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.5.0.tgz", + "integrity": "sha512-1PrOvAaDpqlCV+Up8RkAh9qaiUjoDUcjtttyhXDKw53XA6Ve16SOp6cCOpRs8Dj8DqUQs6eTW5YkLcLJjrXAig==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.96" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, "node_modules/@webcomponents/shadycss": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.11.2.tgz", @@ -2631,9 +3441,9 @@ } }, "node_modules/async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, "node_modules/at-least-node": { @@ -2875,6 +3685,111 @@ "fsevents": "~2.3.2" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2938,6 +3853,20 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -2990,7 +3919,16 @@ "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/define-properties": { @@ -3010,6 +3948,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", @@ -3031,6 +3975,12 @@ "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", "dev": true }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/es-abstract": { "version": "1.22.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", @@ -3102,374 +4052,55 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" } }, "node_modules/escalade": { @@ -3593,6 +4224,22 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -3673,6 +4320,15 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", @@ -3711,20 +4367,22 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3742,6 +4400,30 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -4029,6 +4711,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4038,6 +4735,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4210,12 +4916,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -4418,29 +5160,29 @@ } }, "node_modules/lit": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.6.1.tgz", - "integrity": "sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.0.tgz", + "integrity": "sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==", "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.2.0", - "lit-html": "^2.6.0" + "@lit/reactive-element": "^2.0.0", + "lit-element": "^4.0.0", + "lit-html": "^3.1.0" } }, "node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz", + "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==", "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" } }, "node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz", + "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -4539,16 +5281,13 @@ "node": "*" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" } }, "node_modules/ms": { @@ -4672,6 +5411,31 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-outside-npm": { + "resolved": "../vite-test-assets/packages/package-outside-npm", + "link": true + }, + "node_modules/package2-outside-npm": { + "resolved": "../vite-test-assets/packages/package2-outside-npm", + "link": true + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4696,6 +5460,31 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", @@ -4812,6 +5601,15 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4912,6 +5710,15 @@ "jsesc": "bin/jsesc" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -4988,6 +5795,41 @@ "rollup": "^2.0.0" } }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz", + "integrity": "sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==", + "dev": true, + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5116,6 +5958,27 @@ "node": ">= 0.4" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -5130,6 +5993,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5167,13 +6042,99 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", @@ -5274,6 +6235,28 @@ "node": ">=0.10.0" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", @@ -5537,16 +6520,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { @@ -5681,28 +6664,31 @@ } }, "node_modules/vite": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", - "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", + "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", "dev": true, "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -5715,6 +6701,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, @@ -5730,9 +6719,9 @@ } }, "node_modules/vite-plugin-checker": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.5.4.tgz", - "integrity": "sha512-T6y+OHXqwOjGrCErbhzg5x79NQZV46cgLwYTxuMQnDzAfA6skh2i8PIHcKks8ZlxopzbkvMb5vwc2DpNXiHJdg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.2.tgz", + "integrity": "sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -5741,9 +6730,11 @@ "chokidar": "^3.5.1", "commander": "^8.0.0", "fast-glob": "^3.2.7", + "fs-extra": "^11.1.0", "lodash.debounce": "^4.0.8", "lodash.pick": "^4.4.0", "npm-run-path": "^4.0.1", + "semver": "^7.5.0", "strip-ansi": "^6.0.0", "tiny-invariant": "^1.1.0", "vscode-languageclient": "^7.0.0", @@ -5763,7 +6754,7 @@ "vite": ">=2.0.0", "vls": "*", "vti": "*", - "vue-tsc": "*" + "vue-tsc": ">=1.3.9" }, "peerDependenciesMeta": { "eslint": { @@ -5850,6 +6841,20 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/vite-plugin-checker/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/vite-plugin-checker/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5883,6 +6888,44 @@ "node": ">=8" } }, + "node_modules/vite/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/vite/node_modules/rollup": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", + "fsevents": "~2.3.2" + } + }, "node_modules/vscode-jsonrpc": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", @@ -5963,6 +7006,21 @@ "webidl-conversions": "^4.0.2" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -5999,28 +7057,28 @@ } }, "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz", + "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==", "dev": true, "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz", + "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz", + "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==", "dev": true, "dependencies": { "@apideck/better-ajv-errors": "^0.3.1", @@ -6045,24 +7103,24 @@ "strip-comments": "^2.0.1", "tempy": "^0.6.0", "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "engines": { - "node": ">=10.0.0" + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { @@ -6101,6 +7159,26 @@ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, + "node_modules/workbox-build/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/workbox-build/node_modules/source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -6114,127 +7192,275 @@ } }, "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz", + "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz", + "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==", "dev": true }, "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz", + "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==", "dev": true, "dependencies": { "idb": "^7.0.1", - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", + "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", "dev": true, "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz", + "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz", + "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==", "dev": true, "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz", + "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz", + "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==", "dev": true, "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" } }, "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz", + "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz", + "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==", "dev": true, "dependencies": { - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" } }, "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz", + "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==", "dev": true, "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" } }, "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz", + "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==", "dev": true }, "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz", + "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==", "dev": true, "dependencies": { "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" + "workbox-core": "7.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -6252,11 +7478,88 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } } } } diff --git a/vertx-vaadin-tests/test-frontend/vite-production/package.json b/vertx-vaadin-tests/test-frontend/vite-production/package.json index 74beb146..088c715c 100644 --- a/vertx-vaadin-tests/test-frontend/vite-production/package.json +++ b/vertx-vaadin-tests/test-frontend/vite-production/package.json @@ -7,60 +7,66 @@ "@testscope/button": "../vite-test-assets/packages/@testscope/button", "@testscope/map": "../vite-test-assets/packages/@testscope/map", "@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles", - "@vaadin/common-frontend": "0.0.18", - "@vaadin/polymer-legacy-adapter": "23.1.1", + "@vaadin/common-frontend": "0.0.19", + "@vaadin/polymer-legacy-adapter": "24.3.2", "@vaadin/router": "1.7.5", - "@vaadin/vaadin-lumo-styles": "23.1.1", - "@vaadin/vaadin-text-field": "23.1.1", - "@vaadin/vaadin-themable-mixin": "23.1.1", + "@vaadin/text-field": "24.3.2", + "@vaadin/vaadin-lumo-styles": "24.3.2", + "@vaadin/vaadin-themable-mixin": "24.3.2", "construct-style-sheets-polyfill": "3.1.0", - "lit": "2.6.1" + "lit": "3.1.0", + "package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm", + "package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm" }, "devDependencies": { - "@rollup/plugin-replace": "3.1.0", - "@rollup/pluginutils": "4.1.0", - "async": "3.2.2", - "glob": "7.2.3", - "mkdirp": "1.0.4", + "@rollup/plugin-replace": "5.0.4", + "@rollup/pluginutils": "5.0.5", + "@vitejs/plugin-react": "4.2.0", + "@vitejs/plugin-react-swc": "3.5.0", + "async": "3.2.4", + "glob": "10.3.3", "rollup-plugin-brotli": "3.1.0", + "rollup-plugin-visualizer": "5.9.2", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "4.9.5", - "vite": "3.2.7", - "vite-plugin-checker": "0.5.4", - "workbox-build": "6.5.4", - "workbox-core": "6.5.4", - "workbox-precaching": "6.5.4" + "typescript": "5.3.3", + "vite": "5.0.6", + "vite-plugin-checker": "0.6.2", + "workbox-build": "7.0.0", + "workbox-core": "7.0.0", + "workbox-precaching": "7.0.0" }, "vaadin": { "dependencies": { "@polymer/polymer": "3.5.1", - "@vaadin/common-frontend": "0.0.18", - "@vaadin/polymer-legacy-adapter": "23.1.1", + "@vaadin/common-frontend": "0.0.19", + "@vaadin/polymer-legacy-adapter": "24.3.2", "@vaadin/router": "1.7.5", - "@vaadin/vaadin-lumo-styles": "23.1.1", - "@vaadin/vaadin-text-field": "23.1.1", - "@vaadin/vaadin-themable-mixin": "23.1.1", + "@vaadin/text-field": "24.3.2", + "@vaadin/vaadin-lumo-styles": "24.3.2", + "@vaadin/vaadin-themable-mixin": "24.3.2", "construct-style-sheets-polyfill": "3.1.0", - "lit": "2.6.1" + "lit": "3.1.0" }, "devDependencies": { - "@rollup/plugin-replace": "3.1.0", - "@rollup/pluginutils": "4.1.0", - "async": "3.2.2", - "glob": "7.2.3", - "mkdirp": "1.0.4", + "@rollup/plugin-replace": "5.0.4", + "@rollup/pluginutils": "5.0.5", + "@vitejs/plugin-react": "4.2.0", + "@vitejs/plugin-react-swc": "3.5.0", + "async": "3.2.4", + "glob": "10.3.3", "rollup-plugin-brotli": "3.1.0", + "rollup-plugin-visualizer": "5.9.2", "strip-css-comments": "5.0.0", "transform-ast": "2.4.4", - "typescript": "4.9.5", - "vite": "3.2.7", - "vite-plugin-checker": "0.5.4", - "workbox-build": "6.5.4", - "workbox-core": "6.5.4", - "workbox-precaching": "6.5.4" + "typescript": "5.3.3", + "vite": "5.0.6", + "vite-plugin-checker": "0.6.2", + "workbox-build": "7.0.0", + "workbox-core": "7.0.0", + "workbox-precaching": "7.0.0" }, - "hash": "f0295fae0556e8f8974d8ddfcc8c843a86187d8081f16cbec54bd4023a527d2c" + "hash": "330d9cb9d3f748bc2f8c192b0fabf2922da718b563b0c500c97924eddc4a5012" }, "overrides": { "@polymer/polymer": "$@polymer/polymer", @@ -68,9 +74,9 @@ "@vaadin/polymer-legacy-adapter": "$@vaadin/polymer-legacy-adapter", "@vaadin/router": "$@vaadin/router", "@vaadin/vaadin-lumo-styles": "$@vaadin/vaadin-lumo-styles", - "@vaadin/vaadin-text-field": "$@vaadin/vaadin-text-field", "@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin", "construct-style-sheets-polyfill": "$construct-style-sheets-polyfill", - "lit": "$lit" + "lit": "$lit", + "@vaadin/text-field": "$@vaadin/text-field" } } diff --git a/vertx-vaadin-tests/test-frontend/vite-production/pom.xml b/vertx-vaadin-tests/test-frontend/vite-production/pom.xml index 0f10108d..fe28efaa 100644 --- a/vertx-vaadin-tests/test-frontend/vite-production/pom.xml +++ b/vertx-vaadin-tests/test-frontend/vite-production/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx.tests test-frontend - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT vite-production Vite production mode functionality @@ -55,9 +55,6 @@ - - true - io.reactiverse diff --git a/vertx-vaadin-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/vertx-vaadin-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java index d35492db..5e56fa2d 100644 --- a/vertx-vaadin-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java +++ b/vertx-vaadin-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java @@ -35,13 +35,17 @@ @Route("") @JsModule("@testscope/button") @JsModule("@testscope/map") -@JsModule("./lit-invalid-imports.ts") +@JsModule("package-outside-npm/index.js") +@JsModule("package2-outside-npm/index.js") @CssImport("./image.css") public class MainView extends Div { public static final String PLANT = "plant"; public static final String HIDEPLANT = "hideplant"; + public static final String OUTSIDE = "outsideButton"; + public static final String OUTSIDE_RESULT = "outsideResult"; + public MainView() { Image img = new Image("themes/vite-production/images/plant.png", "placeholder plant"); img.setId(PLANT); @@ -59,6 +63,17 @@ public MainView() { setSizeFull(); getStyle().set("text-align", "center"); + NativeButton checkOutsideJs = new NativeButton("Check outside JS", e -> { + getElement() + .executeJs(OUTSIDE_RESULT + + ".innerText = window.packageOutsideNpm() + ' - ' + window.package2OutsideNpm();"); + }); + checkOutsideJs.setId(OUTSIDE); + add(checkOutsideJs); + Paragraph outsideStatus = new Paragraph(); + outsideStatus.setId(OUTSIDE_RESULT); + add(outsideStatus); + add(new HtmlComponent("testscope-button")); add(new HtmlComponent("testscope-map")); } diff --git a/vertx-vaadin-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ExternalPackageIT.java b/vertx-vaadin-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ExternalPackageIT.java new file mode 100644 index 00000000..ce3bc600 --- /dev/null +++ b/vertx-vaadin-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ExternalPackageIT.java @@ -0,0 +1,20 @@ +package com.vaadin.viteapp; + +import com.vaadin.flow.component.html.testbench.NativeButtonElement; +import com.vaadin.flow.component.html.testbench.ParagraphElement; +import com.vaadin.flow.testutil.ChromeBrowserTest; +import com.vaadin.viteapp.views.empty.MainView; +import org.junit.Assert; +import org.junit.Test; + +public class ExternalPackageIT extends ChromeBrowserTest { + + @Test + public void packageOutsideNpmWorks() { + getDriver().get(getRootURL()); + waitForDevServer(); + $(NativeButtonElement.class).id(MainView.OUTSIDE).click(); + Assert.assertEquals("It works - It works", $(ParagraphElement.class) + .id(MainView.OUTSIDE_RESULT).getText()); + } +} diff --git a/vertx-vaadin-tests/test-frontend/vite-production/tsconfig.json b/vertx-vaadin-tests/test-frontend/vite-production/tsconfig.json index 37f32e77..1d3096d9 100644 --- a/vertx-vaadin-tests/test-frontend/vite-production/tsconfig.json +++ b/vertx-vaadin-tests/test-frontend/vite-production/tsconfig.json @@ -4,14 +4,14 @@ // You might want to change the configurations to fit your preferences // For more information about the configurations, please refer to http://www.typescriptlang.org/docs/handbook/tsconfig-json.html { - "flow_version": "23.3.4", + "_version": "9", "compilerOptions": { "sourceMap": true, "jsx": "react-jsx", "inlineSources": true, "module": "esNext", "target": "es2020", - "moduleResolution": "node", + "moduleResolution": "bundler", "strict": true, "skipLibCheck": true, "noFallthroughCasesInSwitch": true, diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/package-outside-npm/index.js b/vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package-outside-npm/index.js similarity index 100% rename from vertx-vaadin-tests/test-frontend/vite-basics/package-outside-npm/index.js rename to vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package-outside-npm/index.js diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/package-outside-npm/package.json b/vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package-outside-npm/package.json similarity index 100% rename from vertx-vaadin-tests/test-frontend/vite-basics/package-outside-npm/package.json rename to vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package-outside-npm/package.json diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/package2-outside-npm/index.js b/vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package2-outside-npm/index.js similarity index 100% rename from vertx-vaadin-tests/test-frontend/vite-basics/package2-outside-npm/index.js rename to vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package2-outside-npm/index.js diff --git a/vertx-vaadin-tests/test-frontend/vite-basics/package2-outside-npm/package.json b/vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package2-outside-npm/package.json similarity index 100% rename from vertx-vaadin-tests/test-frontend/vite-basics/package2-outside-npm/package.json rename to vertx-vaadin-tests/test-frontend/vite-test-assets/packages/package2-outside-npm/package.json diff --git a/vertx-vaadin-tests/test-frontend/vite-test-assets/pom.xml b/vertx-vaadin-tests/test-frontend/vite-test-assets/pom.xml index e86eb00f..724be035 100644 --- a/vertx-vaadin-tests/test-frontend/vite-test-assets/pom.xml +++ b/vertx-vaadin-tests/test-frontend/vite-test-assets/pom.xml @@ -21,7 +21,7 @@ com.github.mcollovati.vertx.tests test-frontend - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT 4.0.0 diff --git a/vertx-vaadin-tests/test-frontend/vite-test-assets/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java b/vertx-vaadin-tests/test-frontend/vite-test-assets/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java index 32301ca4..ad1f6783 100644 --- a/vertx-vaadin-tests/test-frontend/vite-test-assets/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java +++ b/vertx-vaadin-tests/test-frontend/vite-test-assets/src/main/java/com/vaadin/flow/uitest/vertx/TestBootVerticle.java @@ -24,9 +24,9 @@ import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import java.lang.reflect.Field; import java.util.List; +import java.util.concurrent.CompletableFuture; import com.vaadin.flow.internal.DevModeHandler; import com.vaadin.flow.internal.DevModeHandlerManager; @@ -98,16 +98,9 @@ protected void serviceInitialized(VertxVaadinService service, Router router) { response.setStatusCode(404); if (devModeHandler != null) { LOGGER.trace("======================== check start. dev mod 1"); - try { - Method isRunningMethod = findIsRunningMethod(devModeHandler.getClass()); - boolean isRunning = (boolean) isRunningMethod.invoke(devModeHandler); - if (isRunning) { - LOGGER.info("DevModeHandler ready"); - response.setStatusCode(200); - } - } catch (NoSuchFieldException | IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); - LOGGER.trace("======================== check start. dev mod err "); + if (isReady(devModeHandler)) { + LOGGER.info("DevModeHandler ready"); + response.setStatusCode(200); } } else if (service.getDeploymentConfiguration().isProductionMode()) { response.setStatusCode(200); @@ -117,16 +110,34 @@ protected void serviceInitialized(VertxVaadinService service, Router router) { }); } - private Method findIsRunningMethod(Class clazz) throws NoSuchFieldException { + private boolean isReady(DevModeHandler devModeHandler) { + Class clazz = devModeHandler.getClass(); + Field startFutureField = findStartFuture(clazz, "devServerStartFuture"); + if (startFutureField == null) { + startFutureField = findStartFuture(clazz, "buildCompletedFuture"); + } + if (startFutureField != null) { + boolean wasAccessible = startFutureField.canAccess(devModeHandler); + try { + startFutureField.setAccessible(true); + CompletableFuture startFuture = (CompletableFuture) startFutureField.get(devModeHandler); + return startFuture.isDone() && !startFuture.isCancelled() && !startFuture.isCompletedExceptionally(); + } catch (Exception ex) { + startFutureField.setAccessible(wasAccessible); + LOGGER.trace("Error getting start future from {}", devModeHandler.getClass(), ex); + } + } + return false; + } + + private Field findStartFuture(Class clazz, String fieldName) { do { try { - Method method = clazz.getDeclaredMethod("isRunning"); - method.setAccessible(true); - return method; - } catch (NoSuchMethodException e) { + return clazz.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { clazz = clazz.getSuperclass(); } } while (clazz != Object.class); - throw new NoSuchFieldException("Cannot find devServerStartFuture"); + return null; } } diff --git a/vertx-vaadin-tests/test-frontend/vite-test-assets/src/test/java/com/vaadin/viteapp/TemplateIT.java b/vertx-vaadin-tests/test-frontend/vite-test-assets/src/test/java/com/vaadin/viteapp/TemplateIT.java index d4589dfc..14ba46c2 100644 --- a/vertx-vaadin-tests/test-frontend/vite-test-assets/src/test/java/com/vaadin/viteapp/TemplateIT.java +++ b/vertx-vaadin-tests/test-frontend/vite-test-assets/src/test/java/com/vaadin/viteapp/TemplateIT.java @@ -28,7 +28,6 @@ import com.vaadin.flow.testutil.ChromeBrowserTest; import com.vaadin.viteapp.views.template.LitComponent; import com.vaadin.viteapp.views.template.PolymerComponent; -import com.vaadin.viteapp.views.template.ReflectivelyReferencedComponent; import com.vaadin.viteapp.views.template.TemplateView; import org.junit.Assert; import org.junit.Before; @@ -66,13 +65,4 @@ public void testElementIdMapping() { Assert.assertEquals(newLabel, polymerSpan.getText()); Assert.assertEquals(newLabel, addonLitSpan.getText()); } - - @Test - public void testElementReferencedByReflection() { - SpanElement span = $(ReflectivelyReferencedComponent.TAG) - .first() - .$(SpanElement.class) - .first(); - Assert.assertEquals("ReflectivelyReferencedComponent contents", span.getText()); - } } diff --git a/vertx-vaadin-tests/test-lumo/pom.xml b/vertx-vaadin-tests/test-lumo/pom.xml index ae6c2f68..fbc0fabb 100644 --- a/vertx-vaadin-tests/test-lumo/pom.xml +++ b/vertx-vaadin-tests/test-lumo/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT flow-test-lumo Lumo class for use in test modules requiring LUMO diff --git a/vertx-vaadin-tests/test-lumo/src/main/java/com/vaadin/flow/theme/lumo/Lumo.java b/vertx-vaadin-tests/test-lumo/src/main/java/com/vaadin/flow/theme/lumo/Lumo.java index 51a4cd54..23adef4d 100644 --- a/vertx-vaadin-tests/test-lumo/src/main/java/com/vaadin/flow/theme/lumo/Lumo.java +++ b/vertx-vaadin-tests/test-lumo/src/main/java/com/vaadin/flow/theme/lumo/Lumo.java @@ -48,7 +48,7 @@ @JsModule("@vaadin/vaadin-lumo-styles/spacing.js") @JsModule("@vaadin/vaadin-lumo-styles/style.js") @JsModule("@vaadin/vaadin-lumo-styles/vaadin-iconset.js") -@JsModule("./lumo-includes.ts") +//@JsModule("./lumo-includes.ts") public class Lumo implements AbstractTheme { public static final String LIGHT = "light"; diff --git a/vertx-vaadin-tests/test-resources/pom.xml b/vertx-vaadin-tests/test-resources/pom.xml index 37037444..373eba33 100644 --- a/vertx-vaadin-tests/test-resources/pom.xml +++ b/vertx-vaadin-tests/test-resources/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml vertx-vaadin-test-resources diff --git a/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java b/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java index 5633ec17..10636bb5 100644 --- a/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java +++ b/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java @@ -23,6 +23,6 @@ package com.vaadin.flow.uitest.ui.dependencies; public class TestVersion { - public static final String VAADIN = "23.1.1"; + public static final String VAADIN = "24.3.2"; public static final String FONTAWESOME = "5.15.1"; } diff --git a/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/ThemableTextField.java b/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/ThemableTextField.java index 8da2de9c..add3bb1a 100644 --- a/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/ThemableTextField.java +++ b/vertx-vaadin-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/ThemableTextField.java @@ -30,9 +30,9 @@ /** * Custom vaadin text field for testing component theming. */ -@JsModule("@vaadin/vaadin-text-field/vaadin-text-field.js") +@JsModule("@vaadin/text-field/vaadin-text-field.js") @Tag("vaadin-text-field") -@NpmPackage(value = "@vaadin/vaadin-text-field", version = TestVersion.VAADIN) +@NpmPackage(value = "@vaadin/text-field", version = TestVersion.VAADIN) public class ThemableTextField extends Component { /** diff --git a/vertx-vaadin-tests/test-root-context/frontend/index.ts b/vertx-vaadin-tests/test-root-context/frontend/index.ts index 624f46d9..b928e283 100644 --- a/vertx-vaadin-tests/test-root-context/frontend/index.ts +++ b/vertx-vaadin-tests/test-root-context/frontend/index.ts @@ -18,7 +18,7 @@ import {Router} from '@vaadin/router'; import {Flow} from '@vaadin/flow-frontend/Flow'; const {serverSideRoutes} = new Flow({ - imports: () => import('../target/frontend/generated-flow-imports') + imports: () => import('Frontend/generated/flow/generated-flow-imports.js') }); const routes = [ diff --git a/vertx-vaadin-tests/test-root-context/pom.xml b/vertx-vaadin-tests/test-root-context/pom.xml index 6e076504..96a74d9b 100644 --- a/vertx-vaadin-tests/test-root-context/pom.xml +++ b/vertx-vaadin-tests/test-root-context/pom.xml @@ -6,7 +6,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml vertx-vaadin-test-root-context diff --git a/vertx-vaadin-tests/test-root-context/src/main/java/com/vaadin/flow/uitest/ui/routing/PushRouteNotFoundView.java b/vertx-vaadin-tests/test-root-context/src/main/java/com/vaadin/flow/uitest/ui/routing/PushRouteNotFoundView.java index 653d2c41..c950269b 100644 --- a/vertx-vaadin-tests/test-root-context/src/main/java/com/vaadin/flow/uitest/ui/routing/PushRouteNotFoundView.java +++ b/vertx-vaadin-tests/test-root-context/src/main/java/com/vaadin/flow/uitest/ui/routing/PushRouteNotFoundView.java @@ -22,7 +22,7 @@ */ package com.vaadin.flow.uitest.ui.routing; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.dom.Element; diff --git a/vertx-vaadin-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/NavigationTriggerIT.java b/vertx-vaadin-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/NavigationTriggerIT.java index 85797d2b..4c1e58f7 100644 --- a/vertx-vaadin-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/NavigationTriggerIT.java +++ b/vertx-vaadin-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/NavigationTriggerIT.java @@ -40,54 +40,39 @@ public void testNavigationTriggers() { assertMessageCount(1); - assertLastMessage( - "/abc", isClientRouter() ? NavigationTrigger.CLIENT_SIDE : NavigationTrigger.PAGE_LOAD, "abc"); - Assert.assertEquals( - "The trailing '/' from the URL should be removed.", + assertLastMessage("/abc", NavigationTrigger.PAGE_LOAD, "abc"); + Assert.assertEquals("The trailing '/' from the URL should be removed.", url.substring(0, url.length() - 1), getDriver().getCurrentUrl()); findElement(By.id("routerlink")).click(); assertMessageCount(2); - assertLastMessage( - "/routerlink", - isClientRouter() ? NavigationTrigger.CLIENT_SIDE : NavigationTrigger.ROUTER_LINK, + assertLastMessage("/routerlink", NavigationTrigger.ROUTER_LINK, "routerlink"); findElement(By.id("navigate")).click(); assertMessageCount(3); - assertLastMessage("/navigate", NavigationTrigger.UI_NAVIGATE, "navigate"); - } - - @Test - @Ignore("Ignored because of fusion issue https://github.com/vaadin/flow/issues/10513") - public void testNavigationTriggers_back_forward() { - String url = getTestURL() + "/abc/"; - getDriver().get(url); - - findElement(By.id("routerlink")).click(); - - findElement(By.id("navigate")).click(); + assertLastMessage("/navigate", NavigationTrigger.UI_NAVIGATE, + "navigate"); getDriver().navigate().back(); assertMessageCount(4); - assertLastMessage( - "/routerlink", - isClientRouter() ? NavigationTrigger.CLIENT_SIDE : NavigationTrigger.HISTORY, + assertLastMessage("/routerlink", NavigationTrigger.HISTORY, "routerlink"); getDriver().navigate().forward(); assertMessageCount(5); - assertLastMessage( - "/navigate", isClientRouter() ? NavigationTrigger.CLIENT_SIDE : NavigationTrigger.HISTORY, "navigate"); + assertLastMessage("/navigate", NavigationTrigger.HISTORY, "navigate"); findElement(By.id("forwardButton")).click(); assertMessageCount(6); - assertLastMessage("/forwarded", NavigationTrigger.PROGRAMMATIC, "forwarded"); + assertLastMessage("/forwarded", NavigationTrigger.PROGRAMMATIC, + "forwarded"); findElement(By.id("rerouteButton")).click(); assertMessageCount(7); - assertLastMessage("/", NavigationTrigger.PROGRAMMATIC, "rerouted"); + assertLastMessage("/rerouted", NavigationTrigger.PROGRAMMATIC, + "rerouted"); } private void assertLastMessage(String path, NavigationTrigger trigger, String parameter) { diff --git a/vertx-vaadin-tests/test-scalability/pom.xml b/vertx-vaadin-tests/test-scalability/pom.xml index 3cee0e7b..8620914f 100644 --- a/vertx-vaadin-tests/test-scalability/pom.xml +++ b/vertx-vaadin-tests/test-scalability/pom.xml @@ -5,7 +5,7 @@ com.github.mcollovati.vertx.tests vertx-vaadin-test - 23.4.0-SNAPSHOT + 24.3-SNAPSHOT ../pom.xml vertx-vaadin-test-scalability