From 3e7be09dcf2a595e3009c5675b07f954a3e78a2d Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 2 Feb 2025 15:54:35 +0800 Subject: [PATCH] VTT view --- src/main.ts | 39 +++++++++++- src/styles.scss | 1 + src/styles/vtt.scss | 79 ++++++++++++++++++++++++ src/view/vtt/app/board.ts | 33 ++++++++++ src/view/vtt/app/card.ts | 37 +++++++++++ src/view/vtt/app/context.ts | 33 ++++++++++ src/view/vtt/app/deck.ts | 35 +++++++++++ src/view/vtt/app/dice.ts | 3 + src/view/vtt/app/dnd.ts | 118 ++++++++++++++++++++++++++++++++++++ src/view/vtt/app/index.ts | 1 + src/view/vtt/app/main.ts | 64 +++++++++++++++++++ src/view/vtt/app/types.ts | 33 ++++++++++ src/view/vtt/app/utils.ts | 11 ++++ src/view/vtt/index.ts | 1 + src/view/vtt/view.ts | 73 ++++++++++++++++++++++ 15 files changed, 560 insertions(+), 1 deletion(-) create mode 100644 src/styles/vtt.scss create mode 100644 src/view/vtt/app/board.ts create mode 100644 src/view/vtt/app/card.ts create mode 100644 src/view/vtt/app/context.ts create mode 100644 src/view/vtt/app/deck.ts create mode 100644 src/view/vtt/app/dice.ts create mode 100644 src/view/vtt/app/dnd.ts create mode 100644 src/view/vtt/app/index.ts create mode 100644 src/view/vtt/app/main.ts create mode 100644 src/view/vtt/app/types.ts create mode 100644 src/view/vtt/app/utils.ts create mode 100644 src/view/vtt/index.ts create mode 100644 src/view/vtt/view.ts diff --git a/src/main.ts b/src/main.ts index 27b4434..22e3728 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { Plugin, WorkspaceLeaf } from "obsidian"; +import { Plugin, TFile, TFolder, WorkspaceLeaf } from "obsidian"; import { registerIcons, unregisterIcons } from "./icons"; import { SoloToolkitSettingTab, @@ -6,6 +6,7 @@ import { DEFAULT_SETTINGS, } from "./settings"; import { SoloToolkitView, VIEW_TYPE } from "./view"; +import { VttView, VTT_VIEW_TYPE, VTT_EXT } from "./view/vtt"; import { soloToolkitExtension } from "./extension"; import { soloToolkitPostprocessor } from "./postprocessor"; import { exportDeck } from "./utils/deck"; @@ -31,6 +32,9 @@ export default class SoloToolkitPlugin extends Plugin { this.registerMarkdownPostProcessor(soloToolkitPostprocessor(this)); this.registerEditorExtension(soloToolkitExtension(this)); + this.registerView(VTT_VIEW_TYPE, (leaf) => new VttView(leaf, this)); + this.registerExtensions([VTT_EXT], VTT_VIEW_TYPE); + this.addRibbonIcon("srt-ribbon", "Solo RPG Toolkit", () => this.openView()); this.addCommand({ @@ -39,6 +43,12 @@ export default class SoloToolkitPlugin extends Plugin { callback: () => this.openView(), }); + this.addCommand({ + id: "create-new-vtt", + name: "Create new VTT", + callback: () => this.createVttFile(), + }); + this.addSettingTab(new SoloToolkitSettingTab(this.app, this)); } @@ -66,6 +76,33 @@ export default class SoloToolkitPlugin extends Plugin { } } + async createVttFile(folder?: TFolder) { + const targetFolder = folder + ? folder + : this.app.fileManager.getNewFileParent( + this.app.workspace.getActiveFile()?.path || "" + ); + + try { + const file: TFile = await (this.app.fileManager as any).createNewFile( + targetFolder, + `Untitled.${VTT_EXT}` + ); + + const leaf = this.app.workspace.getLeaf("tab"); + await leaf.openFile(file, { active: true }); + await leaf.setViewState({ + type: VTT_VIEW_TYPE, + state: leaf.view.getState(), + }); + this.app.workspace.revealLeaf( + this.app.workspace.getLeavesOfType(VTT_VIEW_TYPE)[0] + ); + } catch (e) { + console.error("Error creating vtt:", e); + } + } + async loadSettings() { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); } diff --git a/src/styles.scss b/src/styles.scss index 1a25c76..f4aea7a 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -6,3 +6,4 @@ @import "./styles/oracle"; @import "./styles/plugin"; @import "./styles/editor"; +@import "./styles/vtt"; diff --git a/src/styles/vtt.scss b/src/styles/vtt.scss new file mode 100644 index 0000000..d6ee6c0 --- /dev/null +++ b/src/styles/vtt.scss @@ -0,0 +1,79 @@ +.srt-vtt-root { + position: absolute; + width: 100%; + max-width: 100%; + height: 100%; + max-height: 100%; + padding: 12px 12px 32px; + background: #111; + overflow: hidden !important; +} + +.srt-vtt-board { + position: absolute; + inset: 0; +} + +.srt-vtt-deck { + position: absolute; + top: 0; + left: 0; + border-radius: 8px; + + &:hover { + .srt-vtt-deck-border { + border-color: #fa0; + } + } + + .srt-vtt-deck-fg { + position: relative; + background-color: #fafafa; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + width: 96px; + height: 136px; + } + + .srt-vtt-deck-bg { + position: absolute; + top: 8px; + left: 0; + right: 0; + width: 96px; + height: 136px; + background: #444; + } + + .srt-vtt-deck-border { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: -8px; + border: 3px solid #444; + border-radius: 8px; + transition: border-color 0.3s; + pointer-events: none; + } +} + +.srt-vtt-card { + position: absolute; + top: 0; + left: 0; + background-color: #fafafa; + background-repeat: no-repeat; + background-size: cover; + background-position: center; + border: 3px solid #444; + border-radius: 8px; + width: 96px; + height: 136px; + transition: border-color 0.3s; + + &:hover { + border-color: #fa0; + } +} diff --git a/src/view/vtt/app/board.ts b/src/view/vtt/app/board.ts new file mode 100644 index 0000000..1ab400e --- /dev/null +++ b/src/view/vtt/app/board.ts @@ -0,0 +1,33 @@ +import { Dnd } from "./dnd"; +import { Parent, Vec2 } from "./types"; +import { newVec2 } from "./utils"; + +export class Board { + dnd: Dnd; + position: Vec2 = newVec2(); + zoom: number = 1; + el: HTMLElement; + + constructor(private parent: Parent) { + this.dnd = this.parent.dnd; + this.el = this.parent.el.createDiv("srt-vtt-board"); + parent.dnd.makeDraggable(this, { + startDragOnParent: true, + rightBtn: true, + onMove: () => { + this.parent.el.style.backgroundPosition = `${this.position.x}px ${this.position.y}px`; + }, + }); + this.el.parentElement?.addEventListener( + "mousewheel", + this.handleScroll.bind(this) + ); + } + + handleScroll(event: WheelEvent) { + this.position.x -= event.deltaX; + this.position.y -= event.deltaY; + this.parent.el.style.backgroundPosition = `${this.position.x}px ${this.position.y}px`; + this.el.style.transform = `translate(${this.position.x}px, ${this.position.y}px)`; + } +} diff --git a/src/view/vtt/app/card.ts b/src/view/vtt/app/card.ts new file mode 100644 index 0000000..8996ec4 --- /dev/null +++ b/src/view/vtt/app/card.ts @@ -0,0 +1,37 @@ +import { CardId, Parent, Vec2 } from "./types"; +import { newVec2 } from "./utils"; + +export class Card { + id: CardId; + position: Vec2 = newVec2(); + image: string; + el: HTMLElement; + drawn: boolean = false; + + constructor(private parent: Parent, params?: Partial) { + this.el = this.parent.el.createDiv("srt-vtt-card"); + this.parent.dnd.makeDraggable(this, { + onClick: this.hide.bind(this), + }); + if (params) Object.assign(this, params); + + this.el.style.display = "none"; + this.el.style.backgroundImage = `url(${this.image})`; + this.el.style.transform = `translate(${this.position.x}px, ${this.position.y}px)`; + } + + draw(at: Vec2) { + this.drawn = true; + this.position = at; + this.el.style.display = ""; + this.el.style.transform = `translate(${this.position.x}px, ${this.position.y}px)`; + this.parent.dnd.moveToTop(this.el); + } + + hide(event: MouseEvent) { + if (event.shiftKey) { + this.drawn = false; + this.el.style.display = "none"; + } + } +} diff --git a/src/view/vtt/app/context.ts b/src/view/vtt/app/context.ts new file mode 100644 index 0000000..37a0d5e --- /dev/null +++ b/src/view/vtt/app/context.ts @@ -0,0 +1,33 @@ +import { Card } from "./card"; +import { Deck } from "./deck"; +import { generateId } from "./utils"; + +export class Context { + decks: Deck[] = []; + cards: Card[] = []; + + constructor() { + // this.decks.push({ + // id: generateId("d"), + // x: 300, + // y: 100, + // image: + // "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=", + // cards: [], + // }); + // this.cards.push({ + // id: generateId("c"), + // x: 20, + // y: 20, + // image: + // "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wBDAAkGBggGBQkIBwgKCQkKDRYODQwMDRoTFBAWHxwhIB8cHh4jJzIqIyUvJR4eKzssLzM1ODg4ISo9QTw2QTI3ODX/2wBDAQkKCg0LDRkODhk1JB4kNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTX/wAARCAGkASwDASIAAhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAUGAQQHAgMI/8QAXBAAAQMDAgIFBA0IBgcECAcAAQACAwQFERIhBjEHE0FRYRQicbMXIzI3QnSBg5GTobHSCBUWOFXB0eEkJjNSVGQlNkNicpSkRHOSshgoRWOFoqXxNVOChJXC8P/EABsBAQACAwEBAAAAAAAAAAAAAAADBAECBQYH/8QALxEAAgIBBAEDAwMEAgMAAAAAAAECAxEEEiExEzJBUQUUYSJScQYjQoEzoZGxwf/aAAwDAQACEQMRAD8A7iiIgCLQu98oLDR+UXKpZBGTgZ3Lj3ADcrXsfFVq4jD/AM2VTZXx7uYQWuA78HsWu5ZxnklVNjh5FF7fnHBLoiLYiCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiALCyiA5pxbTtvnSxarXV5fSMiDzH2HOon6cAL5X630/CnSZY57TG2nZWODJImbN3dpO3iCPlC6VIyGMuqHtjaWt3kIGQB4rm9rkk496Shc2NP5stW0RI90Ry+Unf0AKnZBJ/ls9DpNTKyHPFcINP4becf7b/9HTkRFcPPBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREAREQBERAEREBROlK8zwW2ls1ET5Rc36Dg76M4x8pIH0qycM2KDhqxwUMOC5ozI/te88yuf8fXWO2dJ9uq6mN80NHCx/Vtxk7uPb44+haV54zi4r4rsb6SGopmwTta4PcPOy8dx8FS8sY2Sb76R6VaG23SVVw4i05Sf55x/wBL/s7IiIrp5o4P0ldKXFPDnSFcrZbK+KKkg6vq2OpmOIzG1x3IzzJUBH0vdIErA6Op1NduCLewg/8AyrY49o4rh+UJNTVDQ+KWenD2nkR1LDj7F0yNoY0NaNIAwAOwKeEFJEVlmw5eOlfpFcMtleR3i3N/Cseyx0iZx1rs935uZ+FdSGeXYgGxGftW/iRF538HLfZZ6Qx/tnf/AMcz8KwelvpCHOdw/wDh7PwrqobjtyVgtPMbJ40PO/g5V7LvSD/if/p7PwoOlzpBJwKgk935vZ+FdTI235+hGHbuTxIx9w/g5aelzpCHOcj/AOHs/Csey90gf4n/AKBn8F1MgOyTzys6QRyBPoTxIz538HK/Zd6QcZ8o/wDp7P4LHsvdIH+J/wCgZ+FdTDRhfTQ3sA+hPGh538HLGdLHSJKcRyvdtna3MP8A/VZb0q9Iz3aWyvJ7hbmZ/wDKrvduIX2epYx9BO9ssgiiex7QHk926+Z4kmjuTKJ1sqfKnNMgYHtzpHjla7Im3lfwUh3S70gMdpfU6SOw0DP4LA6X+Pzyqh/yDP4LqMHt1OySWExSPG7HkEj0r3oaPgj6Fnxo187+DlY6XukD/E/9Az+Cey90gf4n/oGfwXVA1udhusOjAGXAE9gws+NDzv4OV+zBx8P+1D/kGfwT2YOPv8UP+QZ/BdTLGjbS3H/CF66toOQ1v/hCx40PuPwcq9mHj7/Fj/kGfwWfZf4/PKpH/IM/gup6W9gH0BYAaewfQs+ND7j8HLfZe6QO2p/6Bn4Vn2XukD/E/wDQM/guo6RjcArIAbyA+hY8aHn/AAcnf01cbxu0vuMTXdxo4wfuXc+jO913EfR9brndJWzVc/Wa3tYGA4kc0bDbkAuT9LNshfw/BXBjWzQztZqAwS1wO30jK6V0L+9NaPnvXPUU0kWIS3LJd0RFGbBERAEREAWFlVfjnjJnCdBH1UbZqyoyImOOwA5uPgtZSUFuZNRRZqLFVWstlldEx5y5jXHvIysCCMHIjZkf7oXKuHulquN0jivUcDqaVwaZImaTHnt57hTnHfSLJYKttvtTI5KrSHySPGWxg8gB2ntUK1Fbi55OlP6NrYXx07jy+V8F9Rc74H6Sprzcm228MibNL/YzRjSHH+6R39y6H2KSuyNkd0Sjq9Hdo7PFcsM/PHGH6x7/AIxB6lq6M33IK5zxh+se74xT+paujtALN/sV6vo5d/aPQIKyMEcljBAOCsM5KQrnoEA5KyeS8EZWQfNWTBgEBeCRlejzwtSe5UdI1xnqoItIydcgWM4Mxi30bgIwmQFBniu3tdkGZ0AxmdsTiwHuypOlrqavg62kqI525xlhyAtVOMuEzaUJR5aNjAyvfgvnnG5QklbGpTeMLtRVNZbI4Z2yGmrQ6YNBOgDnlYqrvRv6QaasbOHU0dM5jpWtJaDvtyVve+OLSHujaXuw3IAJJ7PFestHwQPDC1xk3yIJ4qmnZLC4PY9uWkdy9rGo6cdiO5eK2NDIODlYfkryDnmcehQdRxjRMldHTxVFU5h0udE0aR8p5rWU4xWWzeFc7HiCyToxyWR7rIUJScW22cOEj30z2e7ZOwg/SNlLU9VDUxh9PPDK1wyOreDt47rCsi+mZlTZD1LB9cLGN9u1YDtQyCD6FkcjlbkRh2xwnMLHPcAlegMAkdvehkp3SuAeCc8sVUXy+6V96F/emtHz3rnqgdKzv6mDxqox/wCZX/oX96a0fPeueq9pcp9Jd0RFCTBERAEREAXG+mASDiunL86DSjR3e6OV2RU3pN4adfOH/KaZmqqocvaAN3s+E39/yKvqYOdTSOv9F1ENNrYTn11/5OJYyCO9feurJLhWyVM3u5MZ37gB+5fBFwsvGD6tsi5KeOSR4cEh4mtohz1nlUenH/F/Bfo3sXJOibhp1Xcn3moYRDTZZBn4TzzPyD7Sut9i7Gig415fufOP6l1MLtWoQ/xWH/J+eeLxq/KRcP8AMQepaujAaeRXOeLzj8pFx/zEHqWro4GwC60PSeOv9SM7nkvIO+69A8wo67Xels1OJayTZ7tLWNblzj4BS5S5ZCk3wjeBwdWRjvOyhq7i2io5jTxtkq5eRbAMhvpdyVLv15rKyocDUyRte7EpY8hkTDyZ4nvXxMhljbS0sgpYI2Zkedn4P8VQs1ePQdXT6BS5sZt3Piasus08bnClp4durZIcu78lvNQxqpwIzBFTRwyuw10kXuh3774W3LVQxdTDHA5lLuRpbvOR2d6jxUisrnTTaG6TpYxzSdA9AVPySnyy+qYVLbElaC8Vbp+oLJK1pkJGn3LWd4HcrDZphQcQwxxHEde1wfH2a28iFVYq9lIRM2nD5zJgSmQl/hlo7PBWe1TMfxhE6UYHkx6gHlqz532LFTcbk+ka3pSolF84LXWV1NbqR09XMyKJoGXOOygbpxpSQRwtts8E8ksgY4vLmtYO8qP4w4ioKq3uoIHmeRszNQDDpwDvg9qg6Nsrq6aiqWRyUzsytc7kB2K9fqNiwihpNGrP1SNe4XW432v11EmzJdNP1eWta7vHoCkXcWXkywdRPDN1YIe4M0tfjbUclfFlvkbIyF4Y2CQOcYx8B2+HNd9q2G2lsdG0ubHJMYhodnZxwexUHq2nnJ01ooy4cTebxtcKR7qeenp6h7cAynUwR5/vK0Ul9t1VUNp4auN8j8YaARk43AyFQ7hS9TSurI2B9U0BrwPcB3f44W9w8BR3ahkuEhMZa7248utd2eCtU6pt4ZT1GhjDLRd7i1zrbUtj2cYnAEd+CueMr2UVpgZDtM+JpjZo1aydvtVw4puJorQYoD/SKv2qEenmfkCoF2J0QUtE10zqZo1BoILcdqxq8Tkomfpu6uucz1LNXUrOukfLrBImax7XjHPYdhHJeuvjrC3yaoaZBu9k0bQXejZRcYZJWMjeySFjn5JcCXEHnvjdSdSaeeJ8EDmVDg3zPai1wPiRsFV90XoS3ReT6UF9rbHc5YA9tPG7GGvj8wHGRkdnpCt9r4yoawRwVjxFVn3ekHqx3EO8VSI+uhiMr2mspzgSskHnsIGFiiiikqtVvL3tA1aDklnfkcirEL5QKlukVi6wzrjXagCORGRjtTfuVKs3EgoKgR1bSykeNnA6mxnw7QD3HkrlHPHPA2ZsjXREZDmnbC6NVqsXByLqHTLDKb0s7cHs+NM+5y6B0L+9NaPnvXPVB6W8fobGRvmqjwfkcr90L+9NaPnvXPWlhLV6S7oiKElCIiAIiIAsEZG6yiA4t0lcIfmO5/nCjZihq3HIA2ik7R6DzHyqu8N2Co4kvUVDT5aHedLJj+zYOZ/h4rv14tUF7tM9DVN1RTt0nvB7CPEHdQfAXCP6LWmQVAa6tneTK9u/mg4aB8m/yrnz0iduV0ew0/8AUMq9A65f8i4X8fP+ifttugtNvho6RgjhhaGtaP8A/c1tIiv4weQk3Jtvs/PHF/6yLvjEHqWro++Oey5vxgcflIOP+Yg9S1dIHcrdfRTu9SMtBdyC5nxFc2XfiF8hZO6mpXdTCI9i5+d8FXbia5PtPD888RLZXYYwgZwT2/QubRtpnVEkk1RLTQMGS1pBcXHmB4n7FX1NnG1FjS1rdvfsezDNVQtqHR00NPC4tjie7AJHwv8AeOUjr4GZjdSNNU5rXSSVD8ADwC+B8s0td5OdTtmMAy5jPAdme9S1JwveKiEywUr4hOQXGd7CdvSMqiqpS9jpvUVxXZD1VZUMq/KPKKabA9rb/d9AXwjinrKh0lQGvmmaHADDcN78qbqODr3HVa3RCrc1uW6gCwFQskr62QR1Yc58RILSRG0eHfhbOqcV0YV1c+2e3U7qGlxM6COVrAWdSdTy7PMkKcop/wA5UsL45tNVTuDmSgYGruGeeRzUXJbKwUzqyjopGwe5k6tvm48M7n0r40jaGoe9z6d8YYAWtbNjP0qOdcsZZJC2DbS6NyJ5ttydLXtEfVlx6p2+A4EgjxWKLUaKoqjHJLCA17iG6vOOdW3dyXx8tMVvnpeoMjXP1PnDw8tBGzcn6FI2Sploj5HLFLI9/thkaMtcCOR9CjnlJs3qxKSSfBmmulOyid1FQ8ztOY4ZGbEn4I8FJSXfye6Mgm6uOExB2t45uzuB6FpVtBDHSda2Nwkie1zDrxp33AHoWzcKemqTGKh0TYmSiQiT4XPYKu1GTykXUpxypPlGlS1MVfejinlnZuQ+STAwNsgL6Xa69VV+SdSyWhfHpLhu4nw7iFuHyG00jpHDRpGlri7JPaACoGOop6ilnpZssllc5+wyA47gDHat4JN7kuCOxYjhvln0ZWExMlqKmSSqfG1sWtpcGdg0/Io+WjqaVkUmmeOpm9zMZdOT3Y+RbFvrqx1HHHCDimI1TCPOgb9nP5QvDtVTOXTvbE6PBY2ocdDs5yRnkp1uzyVXJbUkfGlriKgdeXCsG3WPkLdzzAWz1VVWNqJYXObVRYLnRu1a2+nlnwX0oYJ5zqpo3TVELtMIcC7XkYyNvvUlQcPXdkDaUW2UOc45e6YsZtzJHj4KXxyfKRAr4LiTItlVUUcsdUQKqJ59tezme7Lewha9VM6nqustdQImvBflmzge1pVgh4bvNKwyx0LY9G8sYeD1oz8Ed48VrSxEVoZbmPlNU4CSJsWHsI9IWnjmpdEj1Fc4cSNA1MtRRPkibOap2BOS4acY5gDtVi4b4hpLb1VNJIfJntDHMOCGu5Bw8D2rUo+DbpPLUTRMjo35BjMo0nH/AAjYrFbwlcix73UTnnqx1haWAgg/7MDn8qnhCyMspFSdldkWm+SR6Wx/U5meflUf3OV/6F/emtHz3rnrmvSGal3RpRGuaW1HXRawefJ3PxwuldC/vTWj571z1cn0VKuIl3REURIEREAREQBERAEREAREQH544uGfykXD/MQepauj6dxg4yuccX7flIu+MU/qWro7NxurNfRUu9SKFen3C98Yugp6eaSCiw1rN2sJ73HuW+7gIVc7qi4VzzI94kc2FgaAe4HuVwwM5xv2rzga8/cnii5ZZq7JbcI1LdbKa2xmKmj06t3Ozlzj3knmtsNwNysgHOANu9esbbqVJLoibz2eNGrdfM0kD36nQxk95YCV9u9ZGMckCyuj5GLLC04LSMYI7O5VqXgKkfK4w1c0MRdqEWhrg30E7gK0AZPNZ8cLVxUuzaM5Q5RzDibhuptBqqmAsFJra9skhBe53LThaT3CWWDVI0MY5omdDGQBnkOe+V02tsNDcDK6qpRKZGaS5xJwPAdhVJvvCFzoGiroZ3V4hLQIgzDtI9yf94qldp8+k6Om1KSxNkbJWw3GibRyTeSdTI5wdLnUTyatYVBuUkkFZWh0VOQ1hc3BlGfQvrVXGqlqAyWJ1KXbMa+PS3GNyS4b/uWaTq2UzXTOEHXRl3tMOHOxzGonbPoVFw2Lk6js3vMXk+NX5VcKtxAnfCD7U1zMNcRyw3ZfAwyS1cT6ETPnlGGMawDDxz+RSFPUz3W7xxUbZaiUS5jLne4jI3BPZjvVzsXDM1HXx1VS6OJsDHMghiJfpzzc5x5kqequUmuOCpffGOVnkjo+jprqaPXcJY3hoDi1oyD2gFSts4LtdFofJG6rmZ8Oodq+zkFYC3OwzhAzSr8aox9jlO2b7ZhsYAw3YYxgDGyyBgYWTzxnC84OfSpSIEYGwyezZAM74wfABegPHksDCwYY0gclgEZI32XoY0+K87gnxWfYyildLoI4Oj+Nx/c5X3oX96a0fPeueqD0t5/Q1mf8XH9zlfuhf3prR89656hsLdXpLuiIoSUIiIAiIgCIiAIiIAiIgPzxxccflIuP+Yg9S1dJYctXNuL/ANZF3xin9S1dMGOxWa+ipf2jGkdncsaMDIK9bDwWM+cN9lJkhwGg79iFxPMIXhoySAM4yStQ3aibJodXUwcOzrBlNyG022kYdssgZBXyiqoJYy9k0bm94eCF9GnYgH6FjJlJoNZntXotBCNGGrJ9ygPk9zmxu6v3eDpHjhcni4n4khrJZ2Vskr2Ocx8AGQ3He3uXWzhuO/sXN+KbfVcK8UNvtENUEsmp4xsCfdNPgVpLPsbw/JPVrzxFwA+qq6J3X9QXhjxgteOZH3qr2fh6W8XfyaeeQxaHB8jG+4aMYHcAQcq/Ud7obpZH1sEgMRYctxktOORAUF0avMliqJHuLnmoIcSd8AABaSjGTTZLCyUU0iAqrjcrXcJqKz0QtMEL9Lper5tHwnOPMdqvHC12mvNghqaktdKS5hc0YDsHGVBcZXZ9ymFhtWZaiYjr3AZDG9ys1ltbbPZ4aKM6uqGCe8nmVulgjfK5N8nDea1q240tvhL6yeOFve92M+jvVY47v1Va208NNkMla502jngEAZPYOapT6iOtuLnMcZo49Olrpdh38/FRzu2PGCenT+SOcl+dx7aHPeIzNI1nN4aAPtOSpW2XqgvDc0NUyQ9rOTh8hXJTSxFtSY9eGlzg/UNO3YsQw1VMGTUshEga3S1mQRnkQe1ax1C9ySeiljK5O1jllG7FRHD1+iu9DG15EdUwBr43OGSe8d6mMYaCp1JSWUUZRcXhmMrw7l3br1tqXl/ue9ZNUUrpb/1Njz/i4/ucr90L+9NaPnvXPVA6Wjng2PP+Lj+5yv8A0L+9NZ/nvXPUVhcq9Jd0RFCShERAEREAREQBERAEREB+eOL/ANZF3xin9S1dKbkBc04w2/KQf8Yg9S1dJbkBWYdFW71I9E5OFp3W4xWm3TVVQfMhbqxndx7AFsk4VA48rZ5bgKSTWaY4GnViMEg7uPYc9iSltWSOKyyu3S+XfiOrneHytjjbr6hjtIa3xWpS0kRFHJJrn8p1NdGw40OzhuXclIxStfpkkzUSyxiGSljywuY0ZBz2rNPDcqjNHSUs0VJUuyImt1DOMjzjy78qhKyT5LkYeyPNPC+jpoofKY4Jad7o3xMj1FwJ3cDycQrhwPJUzT1bZJ5KmGB2hkpfhvZgae/Cjqfhj9HLS+rqKVtdWueGtBbrbHnsI8TzPYrTw1DGKSeeOJkLamXrGsZyAxj9yzp57p9mL63CPJMb4XrOoLGkY5o3AK6JSHN3oXxniiqI3xVDWPieMOa4ZBC+hOSQPsULxfUSU3CVwkgJa8Rgah2ZICewXZR6tjbbfnR8GTVEk2D18TRmIN3zutPhe5zsYLa+4vt1NUSEl7I863ciNXYrtwRboKPg5s0Y9tqmPfI7G/bgKu2ihgrOjGudKNLoZXyMf/dIxhRbfcmyXq02Sks9MY6WPDnbvldu957yVv5I5KC4IrJq3hSlfOS5zcs1HtAKngAQpEQPOSJvHD8N3inLpJWOmh6lzWEYcAdQ5+KqMVpo75UMEtG+mqJAxrHU0JcxzmjD9fy810LGDjffuVZo7jHw3JJS1sMtOySplkjlIyxwJBAGN8qpq8qGY9l3StOWJFPuXC1Vb6mqY2jqZGxPLopo2gsczxHeomGSqhqWBz3BsEnuX7tae3I54XaC4TwEte5rZG5Dhsdxz38FAu4Os9S0ytYZC5mOt6wkuP8AeJ7TlcyGqT4sR0XTKLzBlS4Wl63iGmdHpZGyYnzThh/4SdyV08knwVK4R4cmorlI6Wr1eSyOa+neDzI8149IV0aMjc7eK7NGNuUcjUTlKX6uz1jbPavJbsUI2wN1kkKfggRR+lk/1PZ8aj+5y6B0L+9NaPnvXPVA6WwBwczH+KZ9zlf+hf3prR89656gsLlXpLuiIoSUIiIAiIgCIiAIiIAiIgPzxxd+sk74xB6lq6Q3lhc34u/WSd8Yg9S1dGAIGVar6Kt3qR6IHaqJ0i0bqdsNVThsccr/AGx4OXOf6D4K9jJPf6FC8SNtMtCY7u+MgefGzV7YXY+CBv4LM1mJpB4Zzm02iW+3htPBOWANJMuMEMG2F0q0UlPY4YrbFNI5/Vl4DiTkDYkd3PkqvwLLb7ZDI6qqI6arqX6WRS5YQ0HbchS3G730tjFZDI5k8MrTFM124yd/SvPamUpW+P2O1TtUdxLXK801sMTZ8umlcBFE3nIc49C+1njkitrI54zG5rnYaSNhkkDZRVijudxpLfWXJ1I9jQZm6GuDySMDPZ4qxLp6PTupZl2c/V3eSWF0ZDiByKatI2GVjOAteorIKRmqeZkTe97tI+1X3hdlHn2Ptk6SRsStevo23G3T0cp8yeMsJ7s9q0/0htuMtqesz2xxvcPsC8t4ntL36TXNj3+G1zPtIC0VkOsm+2XwVnhe9GyvqrBdHCJ8Jd1MjzgO2zj94KgrXXVFbw6eH7fA+SeonL3u7GNyCFZuMTRXynoqWjdST1FTPo8oa4OdE0AnO3oUf0eyvttXHC9sboK+N8jZAMOaWHBBPdtla+5Inx0Xaz2yO1WiCjYSRC3BPee0rfOw2Ki5L/a4ZCx9fTh/9wP1E/IF9PzvSFmvyhjW97wWj7Qtt8V7ke2T9jeBy05UXxFQx1dpJfOynfA4SxTPdgMcD39x5LM99o6e31FW2oiligaS4xuDt+7Zc4q+KKu6XIy1ryabJxTE+Y0YONu8bLWc0kb1wbeTd4g4ju9a8UvXFgqHYa2KMsa9p2BBPnEeK6LDDHQ00UAcwdTE3IyNgABk/Kuf0Fqp7oOtutwqG1TGtldWRu1iNoaPNxzwMjcb5OMKRntFnsgkq7lcprjMx0kDzKdGHsaCAI85eMnG+AFy7dN5FxwdGu5wNm/VNPVTMqaStdQMicGS14kwwjnpa3nIR4bDvWxw3xZBcqqSimqTNI1x6iV8egzN7yOwqOq7VBxXQVNWyahkrGxBxFPIGin0jzYw3lh2+T3qGtfAd5qYxPIwUTYt9Uhw8Y3y1o3KkovrrW3PRFZB2PJ08E5WHDIyoGxXl8lW621EnWvjjEkExBBljPaQe1Tudl04zU0pROfKLi8MpXSyf6nM3/7Uz7nLoPQv701o+e9c9c96WP8AVBnxuP7nLoXQv701o+e9c9R2lml5iXdERQkwREQBERAEREAREQBERAfnji79ZF3xiD1LV0YHOy5zxd+si74xB6lq6RgdnNWq+irf2jUuVYbZa6mqDS4wRl+M8yqVZ6a+TulrTJRMdUN163MEkju7HaO5Wbi8vHCVwLCB7XvntGVQLHSCruEcArpKJxAadGQ9+o7NHf6Sk3hkcIuUSQkuN4pZjT3+2itgl82NnVN84+Dhy27F9KSJtbFNRWuoeYnty+13FjsN/wCF3wfkUtQWCqFumqRc6q2GN+mOOtIcCQcZdnv7ML62y6TG5y266wCCujGWnslb3hRpQsfJvJTr5RXaCi4h4frjPRU9RHSwtD5IJZg4OaOYb3+C6Jb7hBc6GKqpnZilaHNzzHeCtcYA5AqDt0n6O8Ruo3nFvuLtcJPKOTtb6Cptm3ohVm/stnfnkufV8FZR36ohqnyyTzEy088IGotzyyWkjHgugZPcqvx3AWU1JXNc9nUS6JHRHDtD9jhQaiO6DwTUvEuSPpBWyVbWVlZXMjkcGlz6p+oD/wAQ+5XG42ps1riYKyta2mjOnRMSX7fC23VLt0tEyaFjmOfTNc0O1tjcceOGk/blWXjOvfBaHspo2vgMRMntYc0NxtkZBA7cheXuU5WxUTrRxtZSoW3S6U5utJFShltmc8OO0j8N85ucDIxnmoy3eUC0NuQoIp6KlDoD1hLsF7slxaCM88K008D6DowZoJBlDXyYOPNe8Z+xRtgpW1d1fQOy2CqFTFNG3YNDXeaT6F6WNe2GDnb8vJYuEqZzTK+Gdwe6HMcfkwpmgntHiPQvldDdLTpjkuRdLKchhnmlfj0Nxt8i+fDlQ6kurhXvDZKMeTyhkRJccYa4uxyIx27La41ZHJWRtdK2QOaD1ZkjBb6A4Z+1eelvV+19F9YcMlXuD62uq4qR9HDUVNSCxuWubI4/3gXNB+0hfJ1oprJS1TZKiiq61sXnxueQ6mPI6dsOdutOK+1tDduuopNB/so3PGogZxsSTj5FucVWGsF+idFA6R1a1rsxnW3rD7oBw/eug8waUnhEPtkl6K01VwpZnQyujpOoYGYxEKl0Y2cf7rc4Pid1G8S2Gpe+3upaB88lSwudNE7rOteeYJPd3nmpG50B4Z4Bmtldcw2rqniSOKMEgAbFoPce0qAtt9r4rFJSCj8opIdTzIHODoicaSCDyBWkJ2TbsTysksnDG1o80hltFpqvKInBksgp6hm7X4xnTvsN+3mte01Mf53ifX+UPiB3MTiZBnkQe8bKw0Gqmtcdc4CpbCwuqpqg6oS5/wAEj4b+WwUjBwtSWappZ6evljnqqczCSWmBY0OIaG6Oe5PPKninJPKNJYTWGQtNW10XG8VRcJZKhsEvk3WPAadJG2wXSRucHbK5peKOqpeKprZVFnlMczHRsp2nS47d/IYXS+YwGkYV/TZUdrKF65yUrpZAHCDMHP8AS4/ucug9C/vTWj571z1z7pb34RYf81H9zl0HoX96a0fPeuetrSSj0F3REUJMEREAREQBERAEREAREQH544u/WRd8Yg9S1dGwMLnPF36yTvjFP6lq6N8D5FaqfBVu7RB8bS9XwhWbnLw1mcZ5lcurCGV0bmsLCGDAGrn37/uXS+Oz/VKoGBlz2NbnvyuX1glZUxB4jD9POM6u30laTMVlp4evV9vVbBQuroerx7W2rYCyRzeTCe9SvGJusc1FWXGkZRVVM4mJ8btUUw7W6vgnwPNV6GQRXGa3TyQdVWaHRzxnAjeRlsre7uKvls46oX08tr4ihbLNE5sIfG3rI59tiO4qFPDyWsZXJ4tN2hvNCyppzgO90zO7D2gr58Q2/wDOVknibtM0a4nDmHDcYVTtdxhsPFda2nimbbZZdHtjS3q87jP3K8088dQwSwvbKw7hzDkFXYSUlg5soOEsnrh25/nexU9Q7aTTpkB7HjYrPEFPHVWCtik5OicflAyFW6W7xcLcQV9LMyU01QBPG2NuotceYx4rbquKX1NPPCKE0+AWSvqnDQ3I5be6JHYFDOcYJ7ieMZSeUVS2XGcWwxNozMY9DMzl2kauWwIAW5xVJVuY+nmpwJaZscEroBqjDD3HmDnbG63bbwtPPbJaitPWu0gU8Ezixugci8DfbsHYq9JHOyaGWnmjdUPmAibFG/TI7OziXbHC48ds7Mx9jpOMox5LZHxLS1FrdQS0fmdX1JaZmtcNscjjHevrwbQwW107pqhz62U+4mGghuezvzzOFUpY79w310tZbmzMnfqc+eIShx7d1YOHuIOH622vhuHV0koaQ6N7iGc+be75FandZW8tEEaoSXDHFknkHFL52NikZLTDrgW6gw5wD6fSvF2rGV1G2qgk0kwBsQlLozLgYOGkFpC+VbVmCSSKhqo6+humnMojMkkWg+G57Oa2mWOruFqzRXGoJh1sjgqafq2gO5hvcqdslOe98FiuEktqKMad0FO7rnujcOUeg4ce3fsIVw4TvtLZ7CKiprqgGKrOaSMDz8t8eztWtco5qyGKgqafRV1c7OsyNDYXAFobjmcjB1dq+d4tEotAit1CJoI5MTzxRnIe0YPjgrayUbUoyEINZZZL1DQ1tvnr7xUtuMHmy0zIhpfCw/Bdjs5bKBr7AGW+apsxIjuEsUHk7z7gO3H0nCcBRUZqas187oY3NjjYHjzXknluoy8UdTabzL1stQ9kj2yMfpLC4ZyNIPwh4KOqtqzYnwjeUoePGOS81PDz46SC1tn67ydzGvYThrqh+M6R2BrAfpUpeoBPe6WsGDRmpp6eJ4ds8NJLvtA+hS1vtzZKykrBHqgFLq655w98rgAXOb36RjKj+MKkNjdHDpEdsp31L9IwGvILYx9pK6eCrnBCWKkNwv1zv9S0OdUzObTk74YDjI+hWI4IWnaKdtLZaSEDdkTQfoyVuNZnCuwWEUJNtlI6WcfoaznnyuPH0OXQOhf3prR89656oHS43Twgz43H9zlf+hf3prR89656htLNHoLuiIoSYIiIAiIgCIiAIiIAiIgPzxxdt+Uk74xB6lq6I2TYBc64wH/rIO+MU/qWrozQds4Vqvoq3dorHH7nCy07ctDX1DQS44A+VUauLqKtoqmR8T9Ls4YWOBAPLzR96uvSJ/8AgtPq9x5S3JOdvoXP7q5/VQsdRvpQHOILiTrHfuo5mYcFjdZ6iLimNlHDT1ELYnVULJMaXwnzi39wUlVXKjm4fimg4ZpoxWv6mKRxbpa87dm+y0+G6kXWjt7IKzye7Ur3xU7nMy2SPGrS7w7F9Z6OTVUUVXSXGh14kkpqaProZX5zmM/APioSwmbFytlRw5YhPNTVEVQxzInVDawSxlxPN0ZGcL7MorPw/S1MVVc6m6CoaJS2ixG2N55DI5Fx7FHR8QXGhYWStqxRxuxJDdY+sBHIDUAtt9c680L6OWzup4MiVnkUBY7WOTsuwPpW0U30YbXuerXYaC7cS0tPPd3Pqi1/XRslLnsaBswOxjI7Svrw1aqKN1XcHBpAqXxw9Y7zWBu2d/hHvVcoqOutl5e6hdVitcHMk9p86Nrxs4kbc1YLFwFLFO2S81vlMLSXimBOjUdySor6J3RwmbV3QreSXrOI6Cjjd7f5TI0EmODz3Y+TsVdt4iuPGFDPUwRRRSgyRRxyanBwbkah2egLbFPTRWfiK5UcEUMM2KOEMbgEAgE/SVmpmdS3WzyS1Eb+oqGx4FSx+Glun3IGR8pXN06hVbtRPbY5wyy54a5mgtaW55EZC06qyW2tx5RQU0mOWYx+5bg85g2wPBZwRsTkdi9BjPZyCg8ScN0fD2m52108LnTNj6iNxA37iN1M8OXKBr5qWoqh5RkERySPLuX++NluXhvl17s9AMO9vdUSY7Gs5Z+UqK4kpoau735sjooz1MLmvexxOsA4xp3BXD1koO3xfg6emk4x3GxxzbW1dglqc6JqYa43dpGeWVWobddIrC6elq6oTMrGwQMa84kHJw9OrGy2Kq2O/N9quMIrKqkMQdPTeUEjUBkHzuTcjdfZ9+eOFnWakpJJOsBfI8Reex5dqlc12cHbYYVmmnxwxLkStVjyifrOjZl211flRpZZ4GufTkktbMRvnflnCkrlZLbLYmWWauLZrZ1c5lf7pmSS0ZPIE8lR6HiGpv0dVarZSvbNUVZrWyuectZGBpbgdpAA+Vfe+XCsuLLk19VSR3Osij8ooGxuDomx741nbI5lbuyCeDXD7Ldw5x1NcKWBtdS4ldJFA6RpwMv1edju83C+F9raK8Xx9ot2HATCa5SNGQ7R7lue30LlkENQyOJ9RUy04nc3S3UQS0H3WOwDJ3XW7Xb6S30bGUUUbGOAJe3cv8Se1T1pT6IbZOPBtjkANh3L1uMgLLR9izjmrRUKN0t5PBzM/wCLj+5yv/Qv701o+e9c9UHpc/1Nj+Nx/c5X7oX96a0fPeueobC3V6S7oiKElCIiAIiIAiIgCIiAIiID88cX/rIu+MU/qWroudlznjAgflIOJ/xEHqWrozfchWa+itcssq/SA5zbHEAGuBnb5p7Vzq4xiMxjEhc7JcHNAwfDBOV0HpDk02yiZlo1VGTqI7B47Lntyc32sMLXB2T5rm8/Q0LSQj0SXDNLdBLFNbaoUheXYe842aMk79nZ6SrCOLuKrKIjWspaqN7A8sBbq0950nKiadzZKOWlY4iNscFMAO578v8AtUpeIIZrtdHNjaGwRPbF2YEYawY8MlQ8lhcI2OIOKLvc+HqykqbDPTxSR6zKXOwzBBzuFP2yY1FpppDkl0TDv6At/itr5OCriwHc0hPp2Ci7K8S2Sie3kYG/cp9O8toq6pvCZ87NtxpdyDj2qH5VvcRVz6O3iKmAdV1bupgb3udtn5OajKFobx/UgOI6yhaSPEFbVVT1Vt4j/O/VOromx6BGD59OO1zB2rW9yjCThyzWrDktxm7W+KgslnsUPnOlqYw7Hwg3znH6VA8QeWVAq2w09UwRydY1oaNOWnI5MGflKlJuIrc/jF9TVVkdPFQ0obB1gILnv3JwqxNeay5173U1C2re95JcIS4OJPicBcDT1Wb8tcnTnKCj2dEtdY24WynqojlsrA4+Hf8AatrOTt6FXuCoblR22WmudI6na2QuiJIOzjnGynZWSOikZC8Mkc0ta49hxzXpE+OTlyXPBGWL/SPENyug/s4gKODx07uP0qOqNMlzv1TJoLGTwxEOBOcN7POHf3ras1yPDFDFbrnTuhiYTpq2efG8k7knsPpUQ66sLrxTUeuepqK4uxFEXkNAAyDyXmLIXT1E5OJ1YSgq0kza4a0VfCtXQyHPUuliPg07j7FTOGaw0fEVO54bK6RhZG8gOEJIIDgDtkY5K48PW260d3NVM3qoJ2aZWzvDnvI5HA2GFXOvoGm4TzvibG6scxn9EErh2k5OwGy7Fr/tLKKtWN7wb1dVUxpKqls1K2iqHhumekOX1AJ84Ox7gduM7KEkFLZHRvqHRXCta33O7mMPc/8AvFYN6hYyBhdK90cpMscRDIntB5DG/wApKkm2KiulPcK+kgkp2w+3Ma+QaGgt1AEHnvkBUorxrEui5lNfpISG89ZAG1DMTxlz2TMAJe47Yfnm3GwxyV54Bu0lTaxRVGoSQjMWvbWzPZ34KrTYbZ7bVVjYi57Yp2tDtIc3OHMAHI4wVNSTC31MTqeMx01BOJIBjDjBIdLmnwB3Vqq5QliK4K91bay2XhrxjxXoZyQd18YH9aPcOaR/e7Qvq0nUQuoznFJ6XWn9D2H/ADUf3OV96F/emtHz3rnqh9Lrs8GsH+bj+5yvnQv701o+e9c9QWdFyr0l3REURIEREAREQBERAEREAREQH534xGfyj3/GIPUtXR8gDA5hc44w/WQd8Yg9S1dGx296sw6Kt3qRSOkqOSqZbqaFhke97nYAz2dyorqGeiqIm1EToS5wI1DGRlXjpKeyJ1tLuWp+Tkjs8FTy2KquFI2B8Zy4AadXf25WkzMC22m1arNBWzhr/LLjAInDmWh5zkK9ceUdO3h2qqOqZ1vVmPWBg4LgoGgZG6w8LwMLTmsj1BpzuNRKsXHxxwy5mrSZJY2Dxy8KEsmbnGyewVUWoFvk72k57mqqcHS9bwrR55saWH5CpjhyF0/A7nPG0rZ8knfdzlXeAQRw+9pPuJ3AKfT8Mq6n0khTAs6QmkjIfQbfI5WXG/LdVvV/XyhwMF1JICVZgMBTLhldcpGtJb6WebrpaaF8n95zAT9K2GsYxuGtDR3AYQ7NQPBGO5Y4NuQB8ncsgbhZyXDBPLks5DRzBQHykjZJG5j2Nex2xa4ZBXmKmipQ4RRMjB56W4yvrzC8u2WMGTXrpRBRTTH/AGcbnfQCuRW2GS9abe3DW6pKjWQck6SS37F0riyZwsjoGv0PqnCIO7hzd9gXOpjJBwnQObJGwuqJCzqziQAj4Xh3KnqZdJFihds2q23ll0t1R+bmw0QbC58rBlrwQMud2Ardv0M8LJ6Z8DozI2N5ja4eaI3ubnA7wQpCQ1NRwhG1rmOgNta4MAOdTSf4Kq2a6TsufXOjdUvmb1b8EknJz9Oy5kHKfPwdJxUMRXueq+eKfh23sdmOeFz43gRbHtBLu/GF9rw/XZKOen63S7LHPJJ5d/hle+KqSQXClkjZK9r2FpGCdRbsflwQvo6922ktNVbo6WSVs4PVyh+zAdxt3g5UyfCcURt7N0WdD4crvzjw/RzZJcYwHZ7xsVJZB3b8qqnAjvJqWaidIZBhlRG/va4b/QQrZsH7csLrwalHJy5xaZR+ls54NZ8bj+5yv3Qv701o+e9c9ULpcA/Q1mP8XH9zlfehf3prR89656jsLNXpLuiIoiQIiIAiIgCIiAIiIAiIgPzvxh+sg74xB6lq6Ntjdc54v/WQd8Yg9S1dGxqABVmHRVu7KL0lMYZ7aHEaTrBzyHiqdAGw3KiET86XgnBB7fBXPpBbG650AmLer6qQbkc/lVJbSGnmpG6wNR900jv7MfvWk+zMC/cBvM9VZYHbiOrqZvoAx96tvSO/qeF2yHdsdTE53oyoLoxt0TKeluEk46zE0McRx5xLgSR44CnukhrTwTVF5A0ubg+OoKEsn24Xg0cA0gdzMBcflJP71TeBdP5klxv/AEqTOfSrjwzVxP4KgjEjXSRUoL2g7t2OMqm8Bb2SYjkal+FPT6itqPSbcxLOP7YT7l1NKB6VaMqq3gug4nscwwG9c6LV6RyVqacqb3K0eEYAIG6yMZPJC7szuVjTnmsMzkYB3ysrIA0nG3oRDJgjcLGV6B3wVkkNcMjI+9Mg570k3A+VUlHEQC0GRw8TsFF8P1zbhXW+2y22Gqig6waRs6QkH3RPdzWxWClrrvBc658kTpql4eTh0cbWZAbjnnt7t1pWihms9bb7zXvdT0VS52meLzndudlzL5Rk2vcv1RcY5Jax3qjq/JrY9z6d0NPLDl7wI3kk4+Xlha9HbqOgs8VxpBUCuhhZUHP9mdLiHD0kZUDa7XJdLrG0RSmmfLqdLjAawOyTnlnClJrsbdbvJqSTXI0zQTQytJaxmo4I8SCqUq9ssQ/2W4zysyPjaLvJPxnTzGSeCOaoLQNWerD+wZXxvVgqYOKqu3UsZlcHlzGtIyWnf0Lf/NrLlQUlyZJN17ItHmxjSHx8snx2WnUX6mr6unm8jFI+JrgXxyFx1HcHfx+9Sxb3ZgRyi0k5e5v8K1QstypXVAMMhe6GVrnZyx3uSPQV08bjvVB8io77UW0UcJdPTuBqGGJvVNHM5cOeewK/N27MLoaVuUG5FHUbVPEeikdLZ/qaz43H9zlfuhf3prR89656oXS5pHB0eOZq4/ucr70L+9NaPnvXPUlhvV6S7oiKIlCIiAIiIAiIgCIiAIiID88cX/rIu+MQepauigDGTz7Fzri84/KRd8Yg9S1dE78q1X0VbvUij8fyarvQxxuiic2JxL5JCzt5AhVGON0tRQRuDjmUt84bZ1dh7Va+N3Pj4rodLqga4SB5OAXnflvsq1DHpfb5id3VRG8mXe6HNvIH0KOZmBe+j9ofWWmEgYphVOHgQ4DP2q6cWBn6NVpkY2RohecObkZAKpvRw3/SdIeeqKrOe4dY1W3jTP6H3HT2QuUJZIPgyARRXdoJAbS0zcePUqC4CP8AoGUZyRUP5elWnhxnt9+mbjqz1UeO7TEM/eqzwOwM4fcdgHzvP24U1HqK2o9J9uKDhtvkGxZWx4VqznPpVT4wb/oiF4/2dVE7PhqVracgHvCn/wAmVl6THIr2Dsscgsj0rBgwNys6u/msDYnPbyQoboDcnzuXYs8tzzXlowVnOSc7oCAuvDfXV77nbJRTVQicHtEIc2XI7Qe1U66N1cKUcQt9dFNAW+UzTMd1Q58hnx7F1ENB5O271H3ujNdZaymD8GSFwB7iBkfcq1tEZvf7olhdKPBQI4q+i4efQUsdc2tM2WsbE/DonAHUByByPoWgyyTVFvnfXU9YyvcQ+Bxhc5sw5Oa7A2I5rsVgq/zhYKGpByXwNB9IGD9ykM4HnOO3NefescJNY9zqKG5cs5PwzPdrbR1dE209a2KZkkkbiA5u24APaRhe7f0fyVtU6qqtdJTmYvED2+c5mcgeCneFKo1k13q9ZIlrnYPfgbKwY1DxK71FEMeT3Zzbbpp7fZHinp4qaFsVPEyGNp81jGhoC+5O33rzpxjJKye5WiBclI6XD/U+Mf5qP7nK/wDQv701o+e9c9UHpc/1Qj+NR/c5X7oX96a0fPeueobOi3V6S7oiKIlCIiAIiIAiIgCIiAIiID878YHH5SD/AIxB6lq6K0jHPdc64wz/AOkg7Az/AEin9S1dGOdOw5q1X0Vb+0UriwF3FULCX6X0jt2OwRuVV2upYbbbH079WmpzIHNwQ7t37QrJxjMIOKqMnTp6gt39Kq8sR/MdG1nWOf17/de52/uqOZmBfOj5wZU0RYBkQ1jPoe0hWO510l36M6irmaGPmpXuc1vLIJH7lUOjyQudSPG7jHVgAd+GlW91N1fRg+Jzw4toHec0bEnJUJZIq33U23g29Vwi6z+mESDPJha1ufkyqtb530vCFofG7AkrG6z3guKlpagRdG/ETW+662M+gPawqEiIPR9bXf3Khh9HnlTVcMr39IsHFozwxV55s0v+hwVlpHl1LC476o2kn5FW+LCf0WrfFg+8KwW/a3U+T/smfcppdlSPpPud852XhpyfNO4XshO1DKHwh3BeQ/JK0r3cXWyzVNZHGZHQsJaOzPLfwUBRX65QRCpn6u50rt9VMNLmd4A7QFHKyEHiTJYwbXBbQd161Z7VqUtwp62jiqoX+1TDzHO83fux3r6PqIo3tY+VjXO9yC4Au9C3yjTDPvkBvYV5fgxu1YDQ0kn5Extt8mFrCspqiaSk8pjM2CHx6vOHyI2ZR9uCgRwfQZGMsJHo1Fbt2qhR2irm2zHC92/oKjuDXvispt82BLb5XQbHmz3TT8oKkbvQfnO0VNE12g1Ebo9XdkLx98VG9p/J24PMUUjgGTq7TPRyt01EMup7e3zgCCrW04VOkbUUdDTcS07CXtd5NcYWjzToOkOA+QK0UddBX0jKimkbJG/kR9y9Nprozhj4OTfW1Js2y7UeQHoXotyF88kL2HebuVayQlH6Wh/U6Pf/ALWz7nLoHQv701o+e9c9c/6W8fofEQc/0tn3OXQOhf3prP8APeueorC3T6S7oiKElCIiAIiIAiIgCIiAIiID88cXnT+Ui48/6RB6lq6MCSPFc44v/WQf8Yg9S1dFaSBk7+KtV9FW5ZaKVxixj+JreHjOuFzQNWk5yoCip/KILdAzGoyS5HW6s7Hs7FP8aOey+UD2l39jJ7nmR8ihbFgXWyhrX+2F4y4txyI2xv8ASo5mYEl0bF8V6FOHYHk00gJOMamY/cugWt/lPRvGZWkE0LmkHtwCM/vVC6Oow6/ykjLWUU0ZBHaP/ur/AMMnrej+iDiTmjI+whQlkpjW9bwVfIy8OzbqSpJI7cY/cFEw7dHNDnfM8frFINJPCFwYXBrn2aAgeDZHArQjGroxgcPgOY/0YkUtXZXv9if4qY+XharZF5z8DAHbuFPUDwaCnJ7Y25HyKv8AE0rmcLVkkWdXVg5HpXizcW0TLNSsqRO17YgHEQuI9OQp5tJlWCbRa8k5wtWvuNPbKR9RVyhkbCAT4+HeoCt48tsUDhQF1VOdgzSWgf8AETyCg4a24cWwvgqnPZSl2Pa2NDARy3O59KgtujWs5JoVtvk279xZHdLNUQwxy00FQHRxVDtutI3LccxnvWt5TeIbZDDSW0RNdHpGDqLfT3EqThsVDA1muMzuaRh0zi4gju7l9qq60dK/TPVRMkHwScn6AuRZqfI+EW417eisWialLWW+/wA80RDerp3YyyEk75H97xXzrqAWqrkp6l87pqZ3tdSXFzcE5afDKmq2pprxCYI6CeuYcZc1mgA+BKjq63VrYD5LbaxkbXAmJ1Tu4jkRz5KZajdw+CSD2POMkjRXi5X6in6uu8lla/q3Na1ujlzB55K17kyjtFG4MMgrHkSsmOS9zwd91BvpJXRxiMVNPVB7pXB8LiWnPa4cx8ik6S4V9RNG+obTVjoXHS6N4a9gIwfNJG/JaylJyynlEeI/Bd+GaqN3F1z6l4ljqqaGoBacjIy0q2NJwdlzHo68qpOKTDVAgSUsnV507ND89h8V0ieripI3yVErIom+6c84AXL1q3XZRbp9GGQlkj8l4jvNvHnRF7aqNuMgaxv9oUFxTUng++x19LAX0dftNAzbDx2t8VpXS8TR8YNv1A2R9A10cJ30dcdxsDzGe1SNfPJUSmuu8bXaPNgp4/OazO3yuKnq30zVifY2KyOGTcVXDNRMqTK1kL2B+pxxgHvUfQ8UUNfcfI4TJqLixjy3zJCOYaVUrhc4qazVdv6xszKKpYYo3f7RvMtPoysz3ajrBTR0LH+Xg9ZC2maDpeOw+B7V25ajG3Huc7w4ybnS75vCUA7DVt+4roXQv701o+e9c9c46U+tdwTRmoaGzGeMyNHIO0nI+ldH6F/emtHz3rnqWfRtUsRwXdERREoREQBERAEREAREQBERAfnHj2p8j/KDnn0h3VzQHBcGg+0t7TyVin4lq5maYDQUmSPbJKpr9I9HIqtdIcDarp+qYXkhr5YASOf9ixTMnDFIQNL5h9B+8KC+/wAWFk1cFLkhuI6iQ3KB8la6tcyFztTmtGM8sYHJaljrooKizP1w9ZDUkOY1uH4PaT2pxBB+bboWvZLPF1AYHO8wN/8ACtS2QNkp5nFoMbHNdnDs58CFNVJyhns0lwX3o/ooYrm2r1OcZqapkcM7Nw8N+5WThmQxdHLZc40U8xafDLsKtcIEww0cgOOstVW/PYBrVkoh5P0UsB7ba4/S0lZJSsVNK2C2tjcPNm4cBx3nVn96iYGkdFgBGPa9vHz1ZuIISKG2Ywx01iljaSORDWuwq6Ro6LGHOQIQSf8A9Smq9yvd7Fhr6YVPD80Dvh0+P/lVU4fo5rjbaUzTzyUmktcxs2gRkdmBufpVzhxLSMzydGPuVFsFtqqqlqY6S4y0joalzS1oy3GVDreIZyaaftomqbheghcZHh8wJyGSe5+jt+VbVVcqG2RhksjIyMYjYMkD0DkF4ba6lzdNRdKlwAwerDWZ+Vfent1JSEiKBuXe6c7znO9JPNcKUs+p5LvRrw3N9ZPooad0sJPnTv8ANYPRncrZhoKeBznR08bNRzqDQST27rZIGnGwRoAOCcqPK/xMmCcj5MBZGSCCsYw4nBxhG7jJPJYMmHEOBj3w4YPioyr4boqmlZE4PbocS1wOp30nsUscdqwBk+cdltGco9GCr2+lnsnFkToa2KnkEOmJ7oMh+rYjA2z6VP11nq6mZkj6sVU2TqnqwXBm3wGDzfpUZe6YMr4a+aKd9NBE4SdQ/S9u+QfQjOK6m6ObT2S31BLiB10rc6G9+OX0q1iUkmiauUUsM1LzCbTVQSXCTyp4kErXueS4NZz83kApSS7yTWuHQ2Py6uH9HhbvgHkT3YCqPFMdTT3zq6kzySRNI66fBEm/MN5AYVu4CooZWTXGQOkmd5jZZXed6A3kApZKKipMRsWWkanDtDT1NlgyZOsjc7WQ4jLs7nxXussD6iQmOoiJznEkIGPQ5uCvrZoPIbndKE5Jjn1t9DhlTDXEDsGO1V5WyjLKZC0UTjplfBw1FBUzySwNnbp1PDt8Hwz9K7D0L+9NaPnvXPXKukjB4ZZ3+Ut+4rqvQv701o+e9c9dSibnUmzTCXRd0RFKAiIgCIiAIiIAiIgCIiA/OHH8hi/KBqHiN8hbNAdMbcuPtLeQVjFylAybbcdv8uVX+OITUflESxCSSIumgAfGcOb7S3cFXkcPOP8A7YuffvMP4Ln6xw3Ld8EsIZKpfxV3e1Opqe3V4e57SC6E77quMEVHTvo6qSSkrIyeta+N3nHG24XTzw7qy7863Fp7mzY/cqdX8ITXXjzyNssskRjbNLNM7LtPI79qzpLUnsRpZUyao2ChsdqJyA6x1Bf47gq72igjn4RoqOqZqjfRsjkZ4Foyq9X0VLVV08DJBDSW21up3HsYX8gT4AZU7wZdheuGKWfADo29S/xc3bPyjBV7JhGjxPSxNuViiA0xHrqcDngGLA+5c4qeH3UfDVrrIJppo6mRzZqZ8mI3AZ28OS6ZxoA02ebB8y4xgkdgcCFWK611TOD6SjkgdrpquTVjsZ5/nHw3RSaEoqXZq2biu31cEEc8jKWc4aYSSQ3u39AUXYZaimqriYaCqqYZagubJCzIK1aegpLh+b2VAOmeojgc5mxAEYV0h4QpqeARQ3C5MY3ZobUYAVfWaiO1QkaU6dJtka2uquyz3DH/AHX80NZWatrNcfqx/FSn6KRkZFzuefjBWRwnC4edX3N3/wC5K5O+st+JkYKytd/7Hr8j/cH8Vg1Fe5+Raa/ljdjf4qUdwpTcjWXIjxqnLLeD6Rwz5VcPlqnLG+seMi3S3Iuy20VnhktH71jr7iOVkq89uXt/ipN3CNHq0dfWuJ76l2yDhC3Mdu+rJ+MuKz5Kh4iL666FocLJPjxkbusCe6uOPzLN9a1Sv6IW3O/lRHjUO/ijeDLSDgMnI+MO/itvJUjHjfwQlULvUUs0LrLKGyRubnrm9y9cAwk0xnfJrLY9BHWPOg55EHbs7FLScJ2iCN0kjJWtY0u1GodsB28144QgLOEKYe4MjXuB7dycLdzj42kIw/VkgeK6SWu4yZBHCagGhI0BwacEncErd4Dqa6oppoqt5dFCdEeociDjGeW3goGK210nFdRT3FktfWNiPVDrMNweRJ7AFfLJRNs1lgpJXjWwFzjy3O5wpLJKMFEQi9zZX7i2S2cXuZR076g10HWlusA6htzPYthr7r22eYD/AL1pyvtxhb4Ku2srfNc6icH41Y6xh5tytiDhq0vhjlbTSx62h2DM7t7OaicoYzIw4vJSOkN9WeH2NqKCSmYKhvnueDk4O2y630L+9NaPnvXPXL+k+zUdv4ailpmOa41LWnMjnbYPeuodC/vTWj571z11NM06lgjksMu6ZRQfF3EsPDFikqn4dM7zIIyfdv8A4DmVNKSisszVVO6argstkhTXWlq7hVUcModPSFolaPg6hkLcX594b4qqrJxP+dJXulEzj5UO2RpOT8o5hd8o6qGupI6mmkEkMrQ9jhyIKgovVyZ0/qn0uz6dOKfKa7/Puj7IiKwcgIiIAiIgCIiA/PHFwz+Uk74xB6lq6U0O7eQ2XNuLf1kz8Yg9S1dLaTjAXJ+ovE1/BZp6I6+3R9ntT6mKISvBawajhrcnGT4LRfY7xGKi4m4RS1bqV0cTGs0tYSc7H957VN1FLFW00lPO3XFI0teFB1vBVJUwtbFVVcBaQQ/rnO27sHZV9NfXX6jacXLo+QkbR8IXaiqaCWghji1STzPD3TyObuc9u60+H+Jm8N8NxU9JcLZK2UB7I5S4yRPcBkEAb7qYZw5HLOyS5VtXcDHgsjmcNAI/3RzXyquBrFVmUmj6p0m+qNxBBV776rOCLxSPpd+LbU6gFquEtRdpogHST0keA2QbggjuVOm4n4glrBRwVMwjkaWQ9ZENbgc7nxwphvBNwpcsorhCYh7kSREO+UhZPBFbVxf0q4QNwdhFDkj5Sj1cMcMtKqlRzl5I62cPXmS60Us0Ijjp3NJbKAxuw54G5K6FjA715gi6qFkeov0NDdR5nAX0Iye5cu292vkwkkeRjllesYWAML0VD2ZMFuV6zssacjJ7F6LcuWGgfIHMhJCyWAHPNetIAOF57CsLIG2Dvgdqh6viS3003VRSvq584MdMwyEHxxsvvfrdNdLNLTU83UyOxuScHfkcd6hCziO3U8MFstFDFCzOsRyA6/p3Ct1RjJckcm0+DYq5ZrlNDFdZIaGileAKfXqklPMNceQHgpCsudLQU4EemRwBDIYSMu08w3xHcqezh+/1Uk/XUkftzS2R8k4G/NjtvhN71v0HBdxDGmqujYQJeu008e4fjGQSp5Qgu2apyNSuqq+q4vjnsMkTnVlF7XrIHm9voIW6zhO53F4ku100nYlsLckHGDv4qWtHClBaZ2TxdbJMxpa10r84B549KmeQHPZRT1GMKBmMfkhKbg62QSRud19QWY2mlLmkjtIU0dPIADCzgfCOM7ZUTbLnE+sq45ZoWvfOerZ1gJI2x/8AZR5lYss24RW+l3bhOAd9W37iuhdDHvTWj571z1z7pdA/RKDvFW3/AMrl0HoY96a0fPeueu1o/wDgRWs9RdJpmQQvllcGMY0uc48gBzK4DxlxNLxRfX1GSKWPLKdnc3v9J5/QumdK1zkoOEeoiJa6slETiP7uCT92FxVVNba8+NHtv6X0Edr1cu+l/wDQujdFPFjqaq/MdY/2mYl1M4/Bd2t9B5jxXOexe4Zn08zJonFskbg9rh2EHIVKqx1TUken+oaKGt08qpf6/DP02FlaVmrvznZaOsIwZ4WyEdxI3W6vQJ5WT4/KLi3F+wREWTAREQBERAfnni39ZM/GIPUtXSmk6TtuFzXi39ZQ7Z/pEG3zLV0lpLBsN1x/qXrj/BZp6DX6M7Hdeg4FuDsvAJJO6+jRluCuUTgt2TBA3WTho5IQdIJWcgEHGByWD3r0AXNGOwrznSfQgMkHs28U2zv9KwXYHcs/B9CzgA8sgrAJzvjCNAIz2LLf7TfknQPXYcckaSTuvAO2e1Z58kzkGSea8Y3wvWMBeQfElZSwD1pGF8zyPjzXp2eYWME5JQGMN7PpWMaWL0XY2C8k7rfdlGMGMkckzlMHOcEjwTGVrgyad2mqYoMU9KJ2OBD3F+ks27u1UqwNYymo6iopJJmxkuDmte/BycH3WnKn7vSTTXh7qOiqJ5hEGlxlaIt+zDs5KrNioaiugfBA2JlSx79n4LQQee7cfar9Kiq3yQyeZYN3pakDuEoMAguqmHf/AISuh9C/vTWj571z1zzpWDxwVTCXSZW1MeotGBnScrofQv701o+e9c9dHSY8KwQ2eo2+kiwz33hZwpGGSopniZjBzcBkEDxwVw5kb3zCJrHOkJ0hgHnE92O9fp1aottG2qNS2kgE/wD+aIm6vpxlaX6VWy3Zwd76X9dn9PpdTjuXa/Bx/iPgastXBlsrOqc6WIPNWxoyY9Z1A/JyKqdst1ReK+KjoozLNKcAN3x4nuAX6ULQ5pBAIOxBXwprdSUb3OpqWCBz/dGOMNJ9OAtZ6KMpJp8FjTf1LbTTKEo5k8tP+TFsom22101Gw5bTxNjB78DGVtIiurg8s25NthERZMBERAEREB+eeLR/6yZ+M0/qWrpYAJK4/wBKtfNbOmu4VtPtLTyU8jM94iYrJR9L9olpgaunqoJSPOa1geM9uDnkufrqLLHGUVknqkkuS9jd2MZXpuxVIHS3w+D7ms+p/mnst8Ph2QKz6n+a5v2l37SZTj8l5wOfasjdvNUUdLdh7qzf/wBz/NY9lyxNPmtq/qf5rH2d37Rvj8l5EnNeXncnfdUk9LdgJJLaz6n+aO6WrB2eWfU/zRaS5/4sb4/JdxhzdwsE5KpXst8P8h5YfHqP5rHstcP91Z9T/Nbfa3ftG+PyXYcsZ2WT7rYqi+yzYf8AOfU/zXpvS1YBvisz/wBz/NY+1u/axvj8l45fQmcZwqQeluwY2FZ4+0/zT2WuH/7tZ9T/ADWFpLv2sb4/JdiSQN+awfdelUo9LdgIxpq8D/3P81kdLXD7jh3lg8ep/mtvtbv2jfH5LqdzjOybY5ql+yvw6T7qs/5c/wAV4PSzw+CceWEdh6nH70+1u/aY3x+S6ehZ3zsqV7LNgLuVYPmf5r2Oljh7UDrq9v8ALn+Kfa3ftM+SPyXE7nGcBZA8VTHdLHDwGQasnu6j+a8+y1w+fg1g+Z/mt/trf2mN8fkuYJ1Y1Y7ceKiOG6WWkts0UzNBbUSOGfhAnOVB+ytw8W86vP8A3H81g9KvDzo+dWDjl1H81stPak1tMb4mv0sysfwqxrc6m1bAc8jseS6J0L+9NaPnvXPXC+OeNm8UNgpaOCSGjgdrHWY1OdjHZyGMrunQv701o+e9c9dbTVuupRZXm05cF3VY484oqeFLVT1NHDDM6WbqyJc4AwT2HwVnULxRwvS8VUEVNVyzRNik6wGIjOcEdoPet7FJxe3sm0kqo3RdyzH3KTVdInFtDSGpq+H4YIBj2x7Hhu/LfK6BYLhLdbBR1s7GskqIWyOazOAT3ZVL6VasMtFBYqY656qVuG9uluw+kkfQr1a6MW+1U1I3lBE2P6BhRV7t7TeUi/rFS9LXZGtRcm+s9L+fybSIisHHCIiAIiIAiIgKzd+jfha/XWa4XO0RVNXPjrJXSPBdgADYOxyAC0/Yg4K/YEH1sn4lckTIKb7EHBX7Ag+tk/EnsQcFfsCD62T8SuSLOWCm+xBwV+wYPrZPxJ7EHBX7Bg+tk/ErkiZYKb7EHBX7Bg+tk/EnsQcFfsGD62T8SuSJlgpvsQcFfsCD62T8SexBwV+wIPrZPxK5ImWCm+xBwV+wYPrZPxJ7EHBX7Bg+tk/ErkiZYKb7EHBX7Bg+tk/EnsQcFfsGD62T8SuSJlgpvsQcFfsGD62T8SexBwV+wYPrJPxK5ImWCm+xBwV+wYPrZPxJ7EHBX7Ag+tk/ErkiZYKb7EHBX7Ag+tk/EnsQcFfsCD62T8SuSJlgpvsQcFfsCD62T8SexBwV+wIPrZPxK5IsZBTfYg4K/YEH1sn4k9iDgr9gQfWyfiVyRZywU32IOCv2BB9bJ+JWWz2ahsFrit9rp201JDnq4mkkNySTzJPMkrdRYAWpdblBaLXPW1TtMMDC5x7/AAHiVtqidME0kfB8TGEhslS0P9ADiPtAWlktkHIs6Olai+FT6bNDga21HFPEU/Fd2adIeW0kZ5DG2R4N5enK6SFVrrdP0S6PYqm3RxO6iGJsbX50nOO76VM8PV8t14eoq2oa1stRC17g0YGT3KOrEf0+/ZZ1zsv/AL+MQT2pfGPYkURFOc0IiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAoriWww8SWKe3zO0dZgseBnQ4cipVFhpNYZvCcq5KcXho5X+gnFtwgp7Pcq+EWmncCHNeCcDlgYz6M8l06jpY6KjipoW6YoWBjB3ADAX2RaQqjDos6nW26lJTwkvZLHL7f8hERSFMIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiIAiIgCIiAIiID/9k=\n", + // }); + // this.cards.push({ + // id: generateId("c"), + // x: 80, + // y: 80, + // image: + // "data:image/png;base64,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\n", + // }); + } +} diff --git a/src/view/vtt/app/deck.ts b/src/view/vtt/app/deck.ts new file mode 100644 index 0000000..af3e779 --- /dev/null +++ b/src/view/vtt/app/deck.ts @@ -0,0 +1,35 @@ +import { DeckId, Parent, Vec2 } from "./types"; +import { Card } from "./card"; +import { newVec2 } from "./utils"; + +export class Deck { + id: DeckId; + position: Vec2 = newVec2(); + image: string; + cards: Card[] = []; + el: HTMLElement; + + constructor(private parent: Parent, params?: Partial) { + this.el = this.parent.el.createDiv("srt-vtt-deck"); + this.el.createDiv("srt-vtt-deck-bg"); + this.el.createDiv("srt-vtt-deck-fg"); + this.el.createDiv("srt-vtt-deck-border"); + this.parent.dnd.makeDraggable(this, { + onClick: this.draw.bind(this), + }); + if (params) Object.assign(this, params); + + this.el.style.backgroundImage = `url(${this.image})`; + this.el.style.transform = `translate(${this.position.x}px, ${this.position.y}px)`; + } + + draw() { + const card = this.cards.find((card) => !card.drawn); + if (card) { + card.draw({ + x: this.position.x + 120, + y: this.position.y, + }); + } + } +} diff --git a/src/view/vtt/app/dice.ts b/src/view/vtt/app/dice.ts new file mode 100644 index 0000000..7e88d62 --- /dev/null +++ b/src/view/vtt/app/dice.ts @@ -0,0 +1,3 @@ +export class Dice { + +} diff --git a/src/view/vtt/app/dnd.ts b/src/view/vtt/app/dnd.ts new file mode 100644 index 0000000..6885f9c --- /dev/null +++ b/src/view/vtt/app/dnd.ts @@ -0,0 +1,118 @@ +import { Draggable, DragOptions, Vec2 } from "./types"; +import { identity, newVec2 } from "./utils"; + +const DRAG_START_DISTANCE = 6; +const CLICK_TIME_DELTA = 600; + +export class Dnd { + private dragging: Draggable | null = null; + private dragOptions: DragOptions | null = null; + + private dragStartPosition: Vec2 = newVec2(); + private dragStartAt: number = 0; + private isDragging: boolean = false; + + private mouseMoveHandler: (event: MouseEvent) => void; + private mouseUpHandler: (event: MouseEvent) => void; + + constructor() { + this.mouseMoveHandler = this.handleMouseMove.bind(this); + this.mouseUpHandler = this.handleMouseUp.bind(this); + document.addEventListener("mousemove", this.mouseMoveHandler); + document.addEventListener("mouseup", this.mouseUpHandler); + } + + cleanup() { + document.removeEventListener("mousemove", this.mouseMoveHandler); + document.removeEventListener("mouseup", this.mouseUpHandler); + } + + makeDraggable(draggable: Draggable, options?: DragOptions) { + const handleMouseDown = (event: MouseEvent) => { + if ( + (options?.rightBtn && event.button !== 2) || + (!options?.rightBtn && event.button !== 0) + ) { + return; + } + + event.stopPropagation(); + this.dragging = draggable; + this.dragOptions = options || null; + this.isDragging = false; + this.dragStartPosition = { + x: event.clientX, + y: event.clientY, + }; + this.dragStartAt = Date.now(); + + if (options?.onDrag) { + options.onDrag(); + } + }; + + const el = options?.startDragOnParent + ? draggable.el.parentElement + : draggable.el; + if (el) { + el.addEventListener("mousedown", handleMouseDown); + } + } + + handleMouseMove(event: MouseEvent) { + if (this.dragging) { + if (this.isDragging) { + const mov = (this.dragOptions?.modifyMovement || identity)({ + x: event.movementX, + y: event.movementY, + }); + this.dragging.position = (this.dragOptions?.modifyPosition || identity)( + { + x: this.dragging.position.x + mov.x, + y: this.dragging.position.y + mov.y, + } + ); + this.dragging.el.style.transform = ( + this.dragOptions?.modifyTransform || identity + )( + `translate(${this.dragging.position.x}px, ${this.dragging.position.y}px)` + ); + + if (this.dragOptions?.onMove) { + this.dragOptions.onMove(); + } + } else { + const distance = Math.sqrt( + (event.clientX - this.dragStartPosition.x) ** 2 + + (event.clientY - this.dragStartPosition.y) ** 2 + ); + if (distance >= DRAG_START_DISTANCE) { + this.isDragging = true; + this.moveToTop(this.dragging.el); + } + } + } + } + + handleMouseUp(event: MouseEvent) { + if (this.isDragging) { + if (this.dragOptions?.onDrop) { + this.dragOptions.onDrop(); + } + } else { + if (Date.now() - this.dragStartAt <= CLICK_TIME_DELTA) { + if (this.dragOptions?.onClick) { + this.dragOptions.onClick(event); + } + } + } + + this.dragging = null; + this.dragOptions = null; + this.isDragging = false; + } + + moveToTop(el: HTMLElement) { + el.parentElement?.appendChild(el); + } +} diff --git a/src/view/vtt/app/index.ts b/src/view/vtt/app/index.ts new file mode 100644 index 0000000..d66d2cd --- /dev/null +++ b/src/view/vtt/app/index.ts @@ -0,0 +1 @@ +export * from "./main"; diff --git a/src/view/vtt/app/main.ts b/src/view/vtt/app/main.ts new file mode 100644 index 0000000..57b2fe8 --- /dev/null +++ b/src/view/vtt/app/main.ts @@ -0,0 +1,64 @@ +import { Board } from "./board"; +import { Card } from "./card"; +import { Context } from "./context"; +import { Deck } from "./deck"; +import { Dnd } from "./dnd"; +import { generateId } from "./utils"; + +export class VttApp { + ctx: Context; + dnd: Dnd; + el: HTMLElement; + + constructor(el: Element, private fileData: string) { + this.dnd = new Dnd(); + this.ctx = new Context(); + this.el = el as HTMLElement; + + this.el.style.backgroundImage = + "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAHFJREFUWIXt0bEJxDAUBNG1OBC/GPXf2KJEwTlyZnAwgRTsq2BgrjHGv6pkW7Z1mlZVkqTe++aUd8221lqac+5uefU7de2j7Q74kkAqgVQCqQRSCaQSSCWQSiCVQCqBVAKpBFIJpBJIJZBKIJVA6vjAG8fRFkLBinVjAAAAAElFTkSuQmCC)"; + } + + update(fileData: string) { + this.fileData = fileData; + } + + render() { + const board = new Board(this); + const deck = new Deck(board, { + id: generateId("d"), + position: { + x: 300, + y: 100, + }, + image: + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=", + }); + deck.cards.push( + new Card(board, { + id: generateId("c"), + position: { + x: 20, + y: 20, + }, + image: + "data:image/png;base64,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\n", + }) + ); + deck.cards.push( + new Card(board, { + id: generateId("c"), + position: { + x: 80, + y: 80, + }, + image: + "data:image/png;base64,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\n", + }) + ); + } + + unrender() { + this.dnd.cleanup(); + } +} diff --git a/src/view/vtt/app/types.ts b/src/view/vtt/app/types.ts new file mode 100644 index 0000000..df49239 --- /dev/null +++ b/src/view/vtt/app/types.ts @@ -0,0 +1,33 @@ +import { Dnd } from "./dnd"; + +export type Vec2 = { + x: number; + y: number; +}; + +export interface Draggable { + position: Vec2; + el: HTMLElement; +} + +export interface DragOptions { + modifyMovement?: (nextPosition: Vec2) => Vec2; + modifyPosition?: (nextPosition: Vec2) => Vec2; + modifyTransform?: (nextTransform: string) => string; + onDrag?: () => void; + onMove?: () => void; + onDrop?: () => void; + onClick?: (event?: MouseEvent) => void; + startDragOnParent?: boolean; + rightBtn?: boolean; +} + +export interface Parent { + dnd: Dnd; + el: HTMLElement; +} + +export type CardId = `c${string}`; +export type DeckId = `d${string}`; +export type DiceId = `r${string}`; +export type IdType = CardId | DeckId | DiceId; diff --git a/src/view/vtt/app/utils.ts b/src/view/vtt/app/utils.ts new file mode 100644 index 0000000..7bc64de --- /dev/null +++ b/src/view/vtt/app/utils.ts @@ -0,0 +1,11 @@ +import { IdType, Vec2 } from "./types"; + +const generateString = () => Math.random().toString(36).substring(2, 8); +export const generateId = (type: Id): `${Id}${string}` => + `${type}${generateString()}${generateString()}`; + +export const identity = (value: T): T => value; + +export const newVec2 = (x: number = 0, y: number = 0): Vec2 => { + return { x, y }; +}; diff --git a/src/view/vtt/index.ts b/src/view/vtt/index.ts new file mode 100644 index 0000000..ddac274 --- /dev/null +++ b/src/view/vtt/index.ts @@ -0,0 +1 @@ +export { VttView, VTT_VIEW_TYPE, VTT_EXT } from "./view"; diff --git a/src/view/vtt/view.ts b/src/view/vtt/view.ts new file mode 100644 index 0000000..38f0937 --- /dev/null +++ b/src/view/vtt/view.ts @@ -0,0 +1,73 @@ +import { TextFileView, TFile, WorkspaceLeaf } from "obsidian"; +import VttPlugin from "src/main"; +import { VttApp } from "./app"; + +export const VTT_VIEW_TYPE = "vtt"; +export const VTT_EXT = "vtt"; + +export class VttView extends TextFileView { + plugin: VttPlugin; + root: VttApp; + + constructor(leaf: WorkspaceLeaf, plugin: VttPlugin) { + super(leaf); + this.plugin = plugin; + } + + async onLoadFile(file: TFile) { + this.file = file; + this.render(file); + } + + async onUnloadFile(_file: TFile) { + this.clear(); + } + + onunload() { + this.clear(); + } + + getViewData() { + return this.data; + } + + setViewData(data: string, clear?: boolean) { + this.data = data; + if (clear) { + this.clear(); + } + } + + async onClose() { + this.clear(); + } + + getViewType() { + return VTT_VIEW_TYPE; + } + + clear() { + this.setViewData(""); + this.root?.unrender(); + } + + getContainer() { + return this.containerEl.children[1]; + } + + async render(file: TFile) { + const fileData = await this.app.vault.read(file); + this.setViewData(fileData); + + const container = this.getContainer(); + container.classList.add("srt-vtt-root"); + + if (this.root) { + this.root.update(fileData); + } else { + this.root = new VttApp(container, fileData); + } + + this.root.render(); + } +}