<!-- Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. -->
<template>
  <router-view />
</template>
<script lang="ts" setup>
  import { useRoute } from "vue-router";
  const route = useRoute();

  setTimeout(() => {
    if (route.name === "ViewWidget") {
      (document.querySelector("#app") as any).style.minWidth = "120px";
    } else {
      (document.querySelector("#app") as any).style.minWidth = "1024px";
    }
  }, 500);
</script>
<style>
  #app {
    color: #2c3e50;
    height: 100%;
    overflow: hidden;
  }
</style>
