From 611b530533e8a1a861649bfba42a4395d0a787f8 Mon Sep 17 00:00:00 2001 From: Sebastien DUMETZ Date: Fri, 5 Jan 2024 13:03:48 +0100 Subject: [PATCH] split code base for UI from dpo-voyager --- source/ui/Logo.ts | 61 --- source/ui/MainView.ts | 27 +- source/ui/assets/favicon.png | Bin 0 -> 7881 bytes source/ui/assets/images/defaultSprite.svg | 5 + source/ui/assets/images/logo-full.svg | 30 ++ source/ui/assets/images/logo-sm.svg | 10 + source/ui/assets/images/sketch_ethesaurus.png | Bin 0 -> 81640 bytes source/ui/assets/images/spinner.svg | 27 ++ source/ui/composants/Button.ts | 168 +++++++ source/ui/composants/DocView.ts | 7 +- source/ui/composants/Icon.ts | 87 +++- source/ui/composants/Modal.ts | 4 +- source/ui/composants/Notification.ts | 65 +++ source/ui/composants/SceneCard.ts | 21 +- source/ui/composants/Spinner.ts | 89 ++++ source/ui/composants/UserLogin.ts | 4 +- source/ui/composants/navbar/ChangeLocale.ts | 11 +- source/ui/composants/navbar/Navbar.ts | 3 +- source/ui/composants/navbar/styles.scss | 3 +- source/ui/corpus.hbs | 2 +- source/ui/global.d.ts | 18 + source/ui/package-lock.json | 30 ++ source/ui/package.json | 4 + source/ui/screens/Admin/AdminHome.ts | 2 +- source/ui/screens/Admin/AdminStats.ts | 8 +- source/ui/screens/Admin/UsersList.ts | 18 +- source/ui/screens/Admin/index.ts | 14 +- source/ui/screens/FileHistory.ts | 10 +- source/ui/screens/Home.ts | 6 +- source/ui/screens/LandingPage.ts | 5 +- source/ui/screens/List.ts | 8 +- source/ui/screens/SceneHistory.ts | 28 +- source/ui/screens/UserSettings.ts | 4 +- source/ui/state/withScenes.ts | 2 +- source/ui/styles.scss | 416 ------------------ source/ui/styles/buttons.scss | 79 ++++ source/ui/styles/common.scss | 17 + source/ui/styles/forms.scss | 144 ++++++ source/ui/{ => styles}/globals.scss | 0 source/ui/styles/layout.scss | 161 +++++++ source/ui/styles/main.scss | 6 + source/ui/styles/normalize.scss | 182 ++++++++ source/ui/styles/tables.scss | 37 ++ source/ui/{ => styles}/variables.scss | 5 + source/ui/tsconfig.json | 11 +- source/ui/webpack.config.js | 106 ++--- 46 files changed, 1279 insertions(+), 666 deletions(-) delete mode 100644 source/ui/Logo.ts create mode 100644 source/ui/assets/favicon.png create mode 100644 source/ui/assets/images/defaultSprite.svg create mode 100644 source/ui/assets/images/logo-full.svg create mode 100644 source/ui/assets/images/logo-sm.svg create mode 100644 source/ui/assets/images/sketch_ethesaurus.png create mode 100644 source/ui/assets/images/spinner.svg create mode 100644 source/ui/composants/Button.ts create mode 100644 source/ui/composants/Notification.ts create mode 100644 source/ui/composants/Spinner.ts delete mode 100644 source/ui/styles.scss create mode 100644 source/ui/styles/buttons.scss create mode 100644 source/ui/styles/common.scss create mode 100644 source/ui/styles/forms.scss rename source/ui/{ => styles}/globals.scss (100%) create mode 100644 source/ui/styles/layout.scss create mode 100644 source/ui/styles/main.scss create mode 100644 source/ui/styles/normalize.scss create mode 100644 source/ui/styles/tables.scss rename source/ui/{ => styles}/variables.scss (70%) diff --git a/source/ui/Logo.ts b/source/ui/Logo.ts deleted file mode 100644 index af35805f..00000000 --- a/source/ui/Logo.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * 3D Foundation Project - * Copyright 2019 Smithsonian Institution - * - * Licensed 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. - */ - -import CustomElement, { customElement, html } from "@ff/ui/CustomElement"; - -//////////////////////////////////////////////////////////////////////////////// - -@customElement("sv-logo") -export default class Logo extends CustomElement -{ - protected static readonly h = html`
- - -
`; - protected static readonly text = html`
- - - - - - - - - - -
`; - - protected firstConnected() - { - super.firstConnected(); - this.classList.add("sv-logo"); - } - - protected render() - { - return html`
${Logo.h}
${Logo.h}${Logo.text}
`; - } -} \ No newline at end of file diff --git a/source/ui/MainView.ts b/source/ui/MainView.ts index dfabc4f0..b6030832 100644 --- a/source/ui/MainView.ts +++ b/source/ui/MainView.ts @@ -1,10 +1,10 @@ import { LitElement, html, customElement } from 'lit-element'; -import Notification from "@ff/ui/Notification"; -import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!./styles.scss'; +import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!./styles/main.scss'; + +import "./styles/globals.scss"; -import "./globals.scss"; import "./composants/UploadButton"; import "./composants/navbar/NavLink"; @@ -19,28 +19,13 @@ import "./screens/UserSettings"; import "./screens/Home" import "./composants/Modal"; +import Notification from "./composants/Notification"; + import { updateLogin, withUser } from './state/auth'; import Modal from './composants/Modal'; import i18n from './state/translate'; import { route, router } from './state/router'; -/** - * Simplified from path-to-regex for our simple use-case - * @see https://github.com/pillarjs/path-to-regexp - */ -function toRegex(path:string|RegExp){ - if(path instanceof RegExp) return path; - const matcher = `[^\/#\?]+` - let parts = path.split("/") - .filter(p=>p) - .map( p =>{ - let param = /:(\w+)/.exec(p); - if(!param) return p; - return `(?<${param[1]}>${matcher})`; - }) - return new RegExp(`^/${parts.join("/")}\/?$`,"i") -} - @customElement("ecorpus-main") export default class MainView extends router(i18n(withUser(LitElement))){ @@ -57,7 +42,7 @@ export default class MainView extends router(i18n(withUser(LitElement))){ connectedCallback(): void { super.connectedCallback(); - Notification.shadowRootNode = this.shadowRoot; + // FIXME : configure notifications updateLogin().catch(e => { Modal.show({header: "Error", body: e.message}); }); diff --git a/source/ui/assets/favicon.png b/source/ui/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7816513e9979949792ab513094b160426e9156 GIT binary patch literal 7881 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 literal 0 HcmV?d00001 diff --git a/source/ui/assets/images/defaultSprite.svg b/source/ui/assets/images/defaultSprite.svg new file mode 100644 index 00000000..933235e5 --- /dev/null +++ b/source/ui/assets/images/defaultSprite.svg @@ -0,0 +1,5 @@ + + Cube + + + \ No newline at end of file diff --git a/source/ui/assets/images/logo-full.svg b/source/ui/assets/images/logo-full.svg new file mode 100644 index 00000000..eea97313 --- /dev/null +++ b/source/ui/assets/images/logo-full.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + diff --git a/source/ui/assets/images/logo-sm.svg b/source/ui/assets/images/logo-sm.svg new file mode 100644 index 00000000..b7b94ba4 --- /dev/null +++ b/source/ui/assets/images/logo-sm.svg @@ -0,0 +1,10 @@ + + + diff --git a/source/ui/assets/images/sketch_ethesaurus.png b/source/ui/assets/images/sketch_ethesaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..fcfcf8542e82971f1bf6e0293353a7da8e5d4f9f GIT binary patch literal 81640 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�dP?ik?W-hZC1DkleE3TxxlQB2(C2Ay?rPa~V83bwR0 z%#�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 I|A|Zg19OR-kpKVy literal 0 HcmV?d00001 diff --git a/source/ui/assets/images/spinner.svg b/source/ui/assets/images/spinner.svg new file mode 100644 index 00000000..ccf98dc0 --- /dev/null +++ b/source/ui/assets/images/spinner.svg @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/source/ui/composants/Button.ts b/source/ui/composants/Button.ts new file mode 100644 index 00000000..97eea62f --- /dev/null +++ b/source/ui/composants/Button.ts @@ -0,0 +1,168 @@ +/** + * FF Typescript Foundation Library + * Copyright 2019 Ralph Wiedemeier, Frame Factory GmbH + * + * License: MIT + */ + +import "./Icon"; + +import { customElement, property, html, PropertyValues, LitElement } from "lit-element"; + +//////////////////////////////////////////////////////////////////////////////// + +/** + * Emitted by [[Button]] if clicked. + * @event + */ +export interface IButtonClickEvent extends MouseEvent +{ + type: "click"; + target: Button; +} + +export interface IButtonKeyboardEvent extends KeyboardEvent +{ + type: "click"; + target: Button; +} + +/** + * Custom element displaying a button with a text and/or an icon. + * The button emits a [[IButtonClickEvent]] if clicked. + * Classes assigned: "ff-button", "ff-control". + */ +@customElement("ui-button") +export default class Button extends LitElement +{ + /** Optional name to identify the button. */ + @property({ type: String }) + name = ""; + + /** Optional index to identify the button. */ + @property({ type: Number }) + index = 0; + + @property({ type: Number }) + selectedIndex = -1; + + @property({ type: Number }) + tabbingIndex = 0; + + /** If true, adds "ui-selected" class to element. */ + @property({ type: Boolean, reflect: true }) + selected = false; + + /** If true, toggles selected state every time the button is clicked. */ + @property({ type: Boolean }) + selectable = false; + + @property({ type: Boolean }) + disabled = false; + + /** Optional text to be displayed on the button. */ + @property() + text: string; + + /** Optional name of the icon to be displayed on the button. */ + @property() + icon = ""; + + /** Optional role - defaults to 'button'. */ + @property() + role = "button"; + + /** If true, displays a downward facing triangle at the right side. */ + @property({ type: Boolean }) + caret = false; + + @property({ type: Boolean }) + inline = false; + + @property({ type: Boolean }) + transparent = false; + + constructor() + { + super(); + + this.addEventListener("click", (e) => this.onClick(e)); + this.addEventListener("keydown", (e) => this.onKeyDown(e)); + } + + protected firstConnected() + { + this.tabIndex = this.tabbingIndex; + this.setAttribute("role", this.role); + this.classList.add("ff-button"); + } + + protected shouldUpdate(changedProperties: PropertyValues) + { + if (changedProperties.has("selectedIndex") || changedProperties.has("index")) { + if (this.selectedIndex >= 0) { + this.selected = this.index === this.selectedIndex; + } + } + + if (changedProperties.has("disabled")) { + this.classList.toggle("ff-disabled"); + } + + return true; + } + + protected update(changedProperties: PropertyValues) + { + this.classList.remove("ff-inline", "ff-transparent", "ff-control"); + + if (this.inline) { + this.classList.add("ff-inline"); + } + else if (this.transparent) { + this.classList.add("ff-transparent"); + } + else { + this.classList.add("ff-control"); + } + + super.update(changedProperties); + } + + protected render() + { + return html`${this.renderIcon()}${this.renderText()}${this.renderCaret()}`; + } + + protected renderIcon() + { + return this.icon ? html`` : null; + } + + protected renderText() + { + return this.text ? html`
${this.text}
` : null; + } + + protected renderCaret() + { + return this.caret ? html`
` : null; + } + + protected onClick(event: MouseEvent) + { + if (this.selectable) { + this.selected = !this.selected; + } + } + + protected onKeyDown(event: KeyboardEvent) + { + const activeElement = document.activeElement.shadowRoot ? document.activeElement.shadowRoot.activeElement : document.activeElement; + + if (activeElement === this && (event.code === "Space" || event.code === "Enter")) { + event.preventDefault(); + this.dispatchEvent(new MouseEvent("click", { bubbles: true })); + } + } +} diff --git a/source/ui/composants/DocView.ts b/source/ui/composants/DocView.ts index 945779b8..9486137a 100644 --- a/source/ui/composants/DocView.ts +++ b/source/ui/composants/DocView.ts @@ -2,13 +2,12 @@ import { customElement, property, html, TemplateResult, LitElement, css } from "lit-element"; import {unsafeHTML} from 'lit-html/directives/unsafe-html.js'; -import "@ff/ui/Button"; -import "client/ui/Spinner"; +import "./Spinner"; import i18n from "../state/translate"; import { Language } from "../state/strings"; -import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles.scss'; +import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles/common.scss'; /** * Main UI view for the Voyager Explorer application. @@ -91,7 +90,7 @@ import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../s if(this.error){ return html`

Error

${this.error.message}
`; }else if(!this.content || this.content =="loading..."){ - return html`
Loading...
` + return html`
Loading...
` } return html`${unsafeHTML(this.content)}`; } diff --git a/source/ui/composants/Icon.ts b/source/ui/composants/Icon.ts index 18418c78..d288efcf 100644 --- a/source/ui/composants/Icon.ts +++ b/source/ui/composants/Icon.ts @@ -1,7 +1,88 @@ -import {html} from "lit-element"; -import Icon from "@ff/ui/Icon" +import {LitElement, customElement, property, html, TemplateResult} from "lit-element"; +/** + * Imported from + * FF Typescript Foundation Library + * Copyright 2019 Ralph Wiedemeier, Frame Factory GmbH + * + * License: MIT + */ +@customElement("ui-icon") +export default class Icon extends LitElement +{ + protected static templates = {}; + createRenderRoot() { + return this; + } + + static add(name: string, template: TemplateResult) + { + if (Icon.templates[name]) { + throw new Error(`icon already registered: '${name}'`); + } + Icon.templates[name] = template; + } + + static getTemplateNames() + { + return Object.keys(Icon.templates); + } + + @property({ attribute: false }) + template: TemplateResult = null; + + @property({ type: String }) + name: string; + + constructor(name?: string) + { + super(); + this.name = name || ""; + } + + protected firstConnected() + { + this.classList.add("ui-icon"); + } + + protected render() + { + if (this.name) { + const template = (this.constructor as typeof Icon).templates[this.name]; + if (!template) { + console.warn(`icon not found: '${this.name}'`); + } + return template; + } + if (this.template) { + return this.template; + } + + return html`[icon undefined]`; + } +} + + + +Icon.add("empty", html``); + +Icon.add("check", html``); +Icon.add("close", html``); +Icon.add("grip", html``); +Icon.add("up", html``); +Icon.add("down", html``); + +Icon.add("caret-up", html``); +Icon.add("caret-down", html``); + +Icon.add("folder", html``); +Icon.add("file", html``); + +Icon.add("info", html``); +Icon.add("warning", html``); +Icon.add("error", html``); +Icon.add("prompt", html``); Icon.add("trash", html``); Icon.add("plus", html``) @@ -29,5 +110,3 @@ Icon.add("comment", html``); Icon.add("audio", html``); Icon.add("eye", html``); - -export default Icon; diff --git a/source/ui/composants/Modal.ts b/source/ui/composants/Modal.ts index 486bf4f6..c8926a60 100644 --- a/source/ui/composants/Modal.ts +++ b/source/ui/composants/Modal.ts @@ -3,7 +3,7 @@ import { css, LitElement,customElement, property, html, TemplateResult, query } import "./Icon" -import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles.scss'; +import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles/common.scss'; interface ModalOptions{ header :TemplateResult|string; @@ -82,7 +82,7 @@ interface ModalOptions{
${this.body}
${this.buttons}
`; } diff --git a/source/ui/composants/Notification.ts b/source/ui/composants/Notification.ts new file mode 100644 index 00000000..3fa65e20 --- /dev/null +++ b/source/ui/composants/Notification.ts @@ -0,0 +1,65 @@ +import { LitElement, customElement, property } from "lit-element"; + + +type NotificationLevel = "info" | "success" | "warning" | "error"; + +const _levelClasses = { + "info": "notification-info", + "success": "notification-success", + "warning": "notification-warning", + "error": "notification-error" +} as const; + +const _levelIcons = { + "info": "info", + "success": "check", + "warning": "warning", + "error": "error" +}; + +const _levelTimeouts = { + "info": 2000, + "success": 2000, + "warning": 5000, + "error": 0 +} as const; + + +@customElement("notification-line") +class Notification extends LitElement{ + @property({ type: String }) + message: string; + + @property({ type: String }) + level: NotificationLevel; + + @property({ type: Number }) + timeout: number; + + + createRenderRoot() { + return this; + } + + constructor(message?: string, level?: NotificationLevel, timeout?: number) + { + super(); + this.message = message || ""; + this.level = level || "info"; + this.timeout = timeout !== undefined ? timeout : _levelTimeouts[this.level]; + } + +} + + +@customElement("notification-stack") +export default class Notifications extends LitElement{ + static container: HTMLElement = null; + static show(message: string, level?: NotificationLevel, timeout?: number){ + let line = new Notification(message, level, timeout); + if(!Notifications.container){ + return console.error("Notification stack not configured. Please mount in your DOM before calling Notification.show"); + } + } + +} \ No newline at end of file diff --git a/source/ui/composants/SceneCard.ts b/source/ui/composants/SceneCard.ts index d637ba62..c39e5a39 100644 --- a/source/ui/composants/SceneCard.ts +++ b/source/ui/composants/SceneCard.ts @@ -1,5 +1,7 @@ import { LitElement, customElement, property, html, TemplateResult, css } from "lit-element"; -import WebDAVProvider from "@ff/scene/assets/WebDAVProvider"; + +import defaultSprite from "../assets/images/defaultSprite.svg"; + import i18n from "../state/translate"; import { AccessType, AccessTypes, Scene } from "../state/withScenes"; @@ -13,7 +15,6 @@ import { AccessType, AccessTypes, Scene } from "../state/withScenes"; @customElement("scene-card") export default class SceneCard extends i18n(LitElement) { - static _assets = new WebDAVProvider(); @property() thumb :string; @@ -52,13 +53,7 @@ import { AccessType, AccessTypes, Scene } from "../state/withScenes"; if(this.cardStyle == "grid") this.classList.add("card-grid"); if(!this.thumb ){ - SceneCard._assets.get(this.path, false).then(p=>{ - let thumbProps = p.find(f=> f.name.endsWith(`-image-thumb.jpg`)); - if(!thumbProps) return console.log("No thumbnail for", this.name); - this.thumb = thumbProps.url; - }, (e)=>{ - console.warn("Failed to PROPFIND %s :", this.path, e); - }); + console.warn("Failed to PROPFIND %s :", this.path); } } @@ -72,7 +67,7 @@ import { AccessType, AccessTypes, Scene } from "../state/withScenes";
${(this.onChange? html` diff --git a/source/ui/composants/Spinner.ts b/source/ui/composants/Spinner.ts new file mode 100644 index 00000000..86514923 --- /dev/null +++ b/source/ui/composants/Spinner.ts @@ -0,0 +1,89 @@ +import { LitElement, property, customElement, html, css } from "lit-element"; + + +@customElement("spin-loader") +export default class Spinner extends LitElement{ + + @property({type: Boolean}) + overlay :boolean = false; + @property({type: Boolean}) + visible :boolean = false; + + + + render(){ + return html`
+ + +
`; + } + static readonly styles = [css` + .spin-loader{ + position:relative; + } + + .loading-overlay{ + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.6); + transition: opacity 0.5s ease-out; + pointer-events: auto; + z-index: 10; + } + + :host:not([visible]) .loading-overlay{ + pointer-events: none; + opacity: 0; + } + + + .loader { + top: calc(50% - 48px); + left: calc(50% - 48px); + width: 96px; + height: 96px; + border: 6px solid #FFF; + border-radius: 50%; + display: inline-block; + position: relative; + box-sizing: border-box; + animation: rotation 1s linear infinite; + transition: transform 0.5s ease-out; + } + + .loader::after { + content: ''; + box-sizing: border-box; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 80px; + height: 80px; + border-radius: 50%; + border: 6px solid; + border-color: var(--color-primary) transparent; + } + + .load-text{ + position: absolute; + bottom:10px; + left:0; + right:0; + text-align: center; + font-size: 2rem; + } + .load-text:empty{ + display: none; + } + + @keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + `]; +} \ No newline at end of file diff --git a/source/ui/composants/UserLogin.ts b/source/ui/composants/UserLogin.ts index 97b9cf0f..6f0b3c93 100644 --- a/source/ui/composants/UserLogin.ts +++ b/source/ui/composants/UserLogin.ts @@ -5,8 +5,8 @@ import { css, LitElement,customElement, property, html, TemplateResult } from "l import { doLogin } from "../state/auth"; import i18n from "../state/translate"; -import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles.scss'; -import Notification from "@ff/ui/Notification"; +import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!../styles/common.scss'; +import Notification from "./Notification"; /** * Main UI view for the Voyager Explorer application. diff --git a/source/ui/composants/navbar/ChangeLocale.ts b/source/ui/composants/navbar/ChangeLocale.ts index 94904502..85b7ebdf 100644 --- a/source/ui/composants/navbar/ChangeLocale.ts +++ b/source/ui/composants/navbar/ChangeLocale.ts @@ -1,11 +1,12 @@ import { LitElement, html, customElement, property, css, TemplateResult } from 'lit-element'; -import Button from "@ff/ui/Button"; + import i18n, {Localization} from '../../state/translate'; @customElement("change-locale") -export default class ChangeLocale extends i18n(Button){ +export default class ChangeLocale extends i18n(LitElement){ constructor(){ super(); + this.addEventListener("click", (e) => this.onClick()); } onclick = (ev :MouseEvent)=>{ ev.preventDefault(); @@ -15,12 +16,12 @@ export default class ChangeLocale extends i18n(Button){ protected createRenderRoot(): Element | ShadowRoot { return this; } + onClick = ()=>{ Localization.Instance.setLanguage(this.language == "fr"? "en": "fr"); } + protected render(): TemplateResult { - this.text = this.language; - console.log("lang render : ", Localization.Instance); - return super.render(); + return html`
${this.language}
`; } } \ No newline at end of file diff --git a/source/ui/composants/navbar/Navbar.ts b/source/ui/composants/navbar/Navbar.ts index 68e1c4bd..77fb9c32 100644 --- a/source/ui/composants/navbar/Navbar.ts +++ b/source/ui/composants/navbar/Navbar.ts @@ -3,6 +3,7 @@ import { css, customElement, html, LitElement, TemplateResult } from "lit-elemen import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!./styles.scss'; +import favicon from "../../assets/favicon.png"; /** * Main UI view for the Voyager Explorer application. @@ -20,7 +21,7 @@ import styles from '!lit-css-loader?{"specifier":"lit-element"}!sass-loader!./st return html`
- ${this.thumb? html``: html``} + ${this.thumb? html``: html``}

${this.name}

@@ -80,9 +75,9 @@ import { AccessType, AccessTypes, Scene } from "../state/withScenes";
- ${this.t("ui.view")} - ${this.can("write")? html`${this.t("ui.edit")}`:null} - ${this.can("admin")? html`${this.t("ui.admin")}`:null} + ${this.t("ui.view")} + ${this.can("write")? html`${this.t("ui.edit")}`:null} + ${this.can("admin")? html`${this.t("ui.admin")}`:null}