{"version":3,"file":"mobile-improvements.js","sources":["../src/module/preloadTemplates.ts","../src/module/settings.ts","../src/module/windowManager.ts","../src/module/windowMenu.ts","../src/module/about.ts","../src/module/mobileMenu.ts","../src/module/MobileUi.ts","../src/module/touchInput.ts","../src/module/chatEffects.ts","../src/mobile-improvements.ts"],"sourcesContent":["export const preloadTemplates = async function (): Promise<unknown> {\r\n  const templatePaths = [\r\n    \"modules/mobile-improvements/templates/window-selector.hbs\",\r\n    \"modules/mobile-improvements/templates/navigation.hbs\",\r\n    \"modules/mobile-improvements/templates/menu.hbs\",\r\n  ];\r\n  //@ts-expect-error\r\n  return foundry.applications.handlebars.loadTemplates(templatePaths);\r\n};\r\n","const MODULE_NAME = \"mobile-improvements\"; // TODO: Better handling\n\nexport enum settings {\n  // In config\n  SIDEBAR_PAUSES_RENDER = \"sideBarPausesRender\",\n  SHOW_MOBILE_TOGGLE = \"showMobileToggle\",\n  SHOW_CHAT_ON_ROLL = \"showChatOnRoll\",\n  SHOW_ROLL_BUBBLES = \"showRollBubbles\",\n\n  // Not in config\n  SHOW_PLAYER_LIST = \"showPlayerList\",\n  PIN_MOBILE_MODE = \"pinMobileMode\",\n  WINDOWS_ZOOM_VALUES = \"windowZoomValues\",\n}\n\ninterface Callbacks {\n  [setting: string]: (value) => void;\n}\n\nconst moduleSettings = [\n  {\n    setting: settings.SIDEBAR_PAUSES_RENDER,\n    name: \"MOBILEIMPROVEMENTS.SettingsPauseRendering\",\n    hint: \"MOBILEIMPROVEMENTS.SettingsPauseRenderingHint\",\n    type: Boolean,\n    default: false,\n  },\n  {\n    setting: settings.SHOW_MOBILE_TOGGLE,\n    name: \"MOBILEIMPROVEMENTS.SettingsShowToggle\",\n    hint: \"MOBILEIMPROVEMENTS.SettingsShowToggleHint\",\n    type: Boolean,\n    default: false,\n    scope: \"world\",\n  },\n  {\n    setting: settings.SHOW_CHAT_ON_ROLL,\n    name: \"MOBILEIMPROVEMENTS.SettingsShowChatOnRoll\",\n    hint: \"MOBILEIMPROVEMENTS.SettingsShowChatOnRollHint\",\n    type: Boolean,\n    default: false,\n    scope: \"world\",\n  },\n  {\n    setting: settings.SHOW_ROLL_BUBBLES,\n    name: \"MOBILEIMPROVEMENTS.SettingsShowRollBubbles\",\n    hint: \"MOBILEIMPROVEMENTS.SettingsShowRollBubblesHint\",\n    type: Boolean,\n    default: true,\n    scope: \"client\",\n  },\n  {\n    setting: settings.SHOW_PLAYER_LIST,\n    type: Boolean,\n    default: false,\n    config: false,\n  },\n  {\n    setting: settings.PIN_MOBILE_MODE,\n    type: Boolean,\n    default: false,\n    config: false,\n  },\n  {\n    setting: settings.WINDOWS_ZOOM_VALUES,\n    type: Object,\n    default: {},\n    config: false,\n  },\n];\n\nfunction registerSetting(callbacks: Callbacks, { setting, ...options }): void {\n  game.settings.register(MODULE_NAME, setting, {\n    config: true,\n    scope: \"client\",\n    ...options,\n    onChange: callbacks[setting] || undefined,\n  });\n}\n\nexport function registerSettings(callbacks: Callbacks = {}): void {\n  moduleSettings.forEach((item) => {\n    registerSetting(callbacks, item);\n  });\n}\n\nexport function getSetting(setting: settings): any {\n  return game.settings.get(MODULE_NAME, setting as string);\n}\n\nexport function setSetting(setting: settings, value: unknown): Promise<any> {\n  return game.settings.set(MODULE_NAME, setting as string, value);\n}\n","// WindowManager is a singleton that allows management of application windows\nexport function activate(): void {\n  if (!window.WindowManager) {\n    window.WindowManager = new WindowManager();\n  }\n}\n\nexport function getManager(): WindowManager {\n  if (!window.WindowManager) {\n    activate();\n  }\n  return window.WindowManager;\n}\n\nexport class Window {\n  readonly app: Application;\n  constructor(app: Application) {\n    this.app = app;\n  }\n\n  get title(): string {\n    return this.app.title;\n  }\n  get id(): number {\n    return this.app.appId;\n  }\n\n  get minimized(): boolean {\n    // @ts-ignore\n    return this.app._minimized;\n  }\n\n  show(): void {\n    if (this.minimized) {\n      this.app.maximize();\n    }\n    this.app.bringToTop();\n  }\n  minimize(): void {\n    this.app.minimize();\n  }\n  close(): void {\n    this.app.close();\n  }\n}\n\nfunction v2AppId(app: ApplicationV2): string {\n  return \"v2_\" + app.id;\n}\n\nexport class WindowV2 {\n  readonly app: ApplicationV2;\n  #id: string;\n\n  constructor(app: ApplicationV2) {\n    this.app = app;\n    this.#id = v2AppId(app);\n  }\n\n  get title(): string {\n    return this.app.title;\n  }\n  get id(): string {\n    return this.#id;\n  }\n\n  get minimized(): boolean {\n    return this.app.minimized;\n  }\n\n  show(): void {\n    if (this.minimized) {\n      this.app.maximize();\n    }\n    this.app.bringToFront();\n  }\n  minimize(): void {\n    this.app.minimize();\n  }\n  close(): void {\n    this.app.close();\n  }\n}\n\nexport class WindowManager {\n  // All windows\n  windows: { [id: string]: Window | WindowV2 } = {};\n  version = \"1.0\";\n  windowChangeHandler: ProxyHandler<any> = {\n    set: (target, property: string, value) => {\n      target[property] = value;\n      this.windowAdded(parseInt(property as string));\n      // Hook for new window being rendered\n      Hooks.once(\"render\" + value.constructor.name, (app) =>\n        this.newWindowRendered(app.appId)\n      );\n      return true;\n    },\n    deleteProperty: (target, property) => {\n      const res = delete target[property];\n      setTimeout(() => {\n        this.windowRemoved(parseInt(property as string));\n      }, 1);\n      return res;\n    },\n  };\n  constructor() {\n    this.augmentAppV1();\n    this.augmentAppV2();\n    console.info(\"Window Manager | Initiated\");\n    Hooks.call(\"WindowManager:Init\");\n  }\n\n  augmentAppV1() {\n    ui.windows = new Proxy(ui.windows, this.windowChangeHandler);\n\n    const WM = this;\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"Application.prototype.bringToTop\",\n      function () {\n        WM.windowBroughtToTop(this.appId);\n      },\n      \"LISTENER\"\n    );\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"Application.prototype.minimize\",\n      function () {\n        WM.windowMinimized(this.appId);\n      },\n      \"LISTENER\"\n    );\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"Application.prototype.maximize\",\n      function () {\n        WM.windowMaximized(this.appId);\n      },\n      \"LISTENER\"\n    );\n  }\n\n  augmentAppV2() {\n    //@ts-ignore\n    if (!globalThis.foundry?.applications?.api?.ApplicationV2) {\n      return;\n    }\n    Hooks.on(\"renderApplicationV2\", (app: ApplicationV2) => {\n      if (\n        app.options?.window?.frame === false ||\n        app.options?.window?.minimizable === false\n      ) {\n        return;\n      }\n      const newWindow = this.windowV2Added(app);\n      app.element?.classList.add(\"wm-managed\");\n      newWindow && this.newWindowRendered(newWindow.id);\n    });\n\n    const WM = this;\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"foundry.applications.api.ApplicationV2.prototype.bringToFront\",\n      function () {\n        WM.windowBroughtToTop(v2AppId(this));\n      },\n      \"LISTENER\"\n    );\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"foundry.applications.api.ApplicationV2.prototype.minimize\",\n      function () {\n        WM.windowMinimized(v2AppId(this));\n      },\n      \"LISTENER\"\n    );\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"foundry.applications.api.ApplicationV2.prototype.maximize\",\n      function () {\n        WM.windowMaximized(v2AppId(this));\n      },\n      \"LISTENER\"\n    );\n\n    window.libWrapper.register(\n      \"mobile-improvements\",\n      \"foundry.applications.api.ApplicationV2.prototype.close\",\n      function () {\n        WM.windowRemoved(v2AppId(this));\n      },\n      \"LISTENER\"\n    );\n  }\n\n  newWindowRendered(appId: number | string): void {\n    Hooks.call(\"WindowManager:WindowRendered\", appId);\n  }\n  windowAdded(appId: number): void {\n    if (\n      this.windows[appId] ||\n      ui.windows[appId].constructor.name\n        .toLowerCase()\n        .includes(\"windowcontrols\")\n    )\n      return;\n    this.windows[appId] = new Window(ui.windows[appId]);\n    Hooks.call(\"WindowManager:Added\", appId);\n  }\n\n  windowV2Added(app: ApplicationV2) {\n    const appId = v2AppId(app);\n    if (this.windows[appId]?.app === app) return;\n    const previous = this.windows[appId];\n    this.windows[appId] = new WindowV2(app);\n    if (previous) {\n      Hooks.call(\"WindowManager:Removed\", appId);\n    }\n    Hooks.call(\"WindowManager:Added\", appId);\n    return this.windows[appId];\n  }\n\n  windowRemoved(appId: number | string): void {\n    delete this.windows[appId];\n    Hooks.call(\"WindowManager:Removed\", appId);\n    this.checkEmpty();\n  }\n  windowBroughtToTop(appId: number | string): void {\n    Hooks.call(\"WindowManager:BroughtToTop\", appId);\n  }\n\n  windowMinimized(appId: number | string): void {\n    Hooks.call(\"WindowManager:Minimized\", appId);\n    this.checkEmpty();\n  }\n  windowMaximized(appId: number | string): void {\n    Hooks.call(\"WindowManager:Maximized\", appId);\n  }\n\n  checkEmpty(): void {\n    const windows = Object.values(this.windows);\n    if (windows.length === 0 || windows.every((w) => w.minimized)) {\n      Hooks.call(\"WindowManager:NoneVisible\");\n    }\n  }\n\n  minimizeAll(): boolean {\n    return Object.values(this.windows).reduce((didMinimize, window) => {\n      didMinimize = didMinimize || !window.minimized;\n      window.minimize();\n      return didMinimize;\n    }, false);\n  }\n\n  closeAll(): boolean {\n    const closed = Object.keys(this.windows).length != 0;\n    Object.values(this.windows).forEach((window) => {\n      window.close();\n    });\n    return closed;\n  }\n}\n","import { Window, WindowV2 } from \"./windowManager\";\r\nimport type { MobileUI } from \"./MobileUi.js\";\r\n\r\nconst icons = {\r\n  \"\": \"\",\r\n  combat: \"fa-fist-raised\",\r\n  scenes: \"fa-map\",\r\n  scene: \"fa-map\",\r\n  actors: \"fa-users\",\r\n  actor: \"fa-users\",\r\n  items: \"fa-suitcase\",\r\n  item: \"fa-suitcase\",\r\n  weapon: \"fa-suitcase\",\r\n  journal: \"fa-book-open\",\r\n  tables: \"fa-th-list\",\r\n  playlists: \"fa-music\",\r\n  compendium: \"fa-atlas\",\r\n  settings: \"fa-cogs\",\r\n  npc: \"fa-skull\",\r\n  character: \"fa-user\",\r\n  spell: \"fa-magic\",\r\n  equipment: \"fa-tshirt\",\r\n  feat: \"fa-hand-rock\",\r\n  class: \"fa-user\",\r\n  deck: \"fa-cards\",\r\n};\r\n\r\nexport class WindowMenu extends Application {\r\n  list: JQuery<HTMLElement> | null = null;\r\n  nav: MobileUI;\r\n\r\n  constructor(nav: MobileUI) {\r\n    super({\r\n      template: \"modules/mobile-improvements/templates/window-selector.hbs\",\r\n      popOut: false,\r\n    });\r\n    this.nav = nav;\r\n    Hooks.on(\"WindowManager:Added\", this.windowAdded.bind(this));\r\n    Hooks.on(\"WindowManager:Removed\", this.windowRemoved.bind(this));\r\n  }\r\n\r\n  activateListeners(html: JQuery<HTMLElement>): void {\r\n    this.list = html.find(\".window-list\");\r\n    for (let w in ui.windows) {\r\n      this.windowAdded.call(this, w);\r\n    }\r\n  }\r\n\r\n  // Attempt to discern the title and icon of the window\r\n  winIcon(win: any): string {\r\n    if (win.options?.window?.icon) {\r\n      return win.options?.window?.icon;\r\n    }\r\n    let windowType: string =\r\n      win.icon ||\r\n      win.tabName ||\r\n      win.document?.type ||\r\n      win.document?.collectionName ||\r\n      (win.metadata ? \"compendium\" : \"\") ||\r\n      \"\";\r\n    windowType = windowType.toLowerCase();\r\n    const icon = icons[windowType] || windowType;\r\n    return icon;\r\n  }\r\n\r\n  newWindow = (win: Window | WindowV2): JQuery<HTMLElement> => {\r\n    const winIcon = this.winIcon(win.app);\r\n    const windowButton = $(\r\n      `<button class=\"window-select\" title=\"${win.title}\"><i class=\"fas ${winIcon}\"></i> ${win.title}</button>`\r\n    );\r\n    const closeButton = $(\r\n      `<button class=\"window-close\" title=\"close\"><i class=\"fas fa-times\"></i></button>`\r\n    );\r\n    const row = $(`<li class=\"window-row\"  data-id=\"${win.id}\"></li>`);\r\n    row.append(windowButton, closeButton);\r\n\r\n    windowButton.on(\"click\", (ev) => {\r\n      ev.preventDefault();\r\n      win.show();\r\n      this.nav.closeDrawer();\r\n    });\r\n    closeButton.on(\"click\", (ev) => {\r\n      ev.preventDefault();\r\n      win.close();\r\n    });\r\n    return row;\r\n  };\r\n  windowAdded(appId: number | string): void {\r\n    this.list?.append(this.newWindow(window.WindowManager.windows[appId]));\r\n    this.update();\r\n  }\r\n  windowRemoved(appId: number | string): void {\r\n    this.list?.find(`li[data-id=\"${appId}\"]`).remove();\r\n    this.update();\r\n  }\r\n\r\n  update(): void {\r\n    const winCount = Object.values(window.WindowManager.windows).length;\r\n    this.nav.setWindowCount(winCount);\r\n  }\r\n}\r\n","export class About extends Application {\n  constructor() {\n    super({\n      template: \"modules/mobile-improvements/templates/about.hbs\",\n      id: \"mobile-improvements-about\",\n      title: \"MOBILEIMPROVEMENTS.MenuAbout\",\n      width: 300,\n      height: 260,\n    });\n  }\n\n  activateListeners(html: JQuery<HTMLElement>): void {\n    html.find(\".close-about\").on(\"click\", (evt) => {\n      this.close();\n    });\n  }\n}\n","import type { MobileUI } from \"./MobileUi.js\";\nimport { getSetting, setSetting, settings } from \"./settings.js\";\nimport { About } from \"./about.js\";\nexport class MobileMenu extends Application {\n  nav: MobileUI;\n  aboutApp: About;\n\n  constructor(nav: MobileUI) {\n    super({\n      template: \"modules/mobile-improvements/templates/menu.hbs\",\n      popOut: false,\n    });\n    this.nav = nav;\n    this.aboutApp = new About();\n  }\n  activateListeners(html: JQuery<HTMLElement>): void {\n    html.find(\"li\").on(\"click\", (evt) => {\n      const [firstClass] = evt.currentTarget.className.split(\" \");\n      const [, name] = firstClass.split(\"-\");\n      this.selectItem(name);\n    });\n  }\n\n  toggleOpen(): void {\n    this.element.toggleClass(\"open\");\n  }\n\n  selectItem(name: string): void {\n    switch (name) {\n      case \"about\":\n        this.aboutApp.render(true);\n        break;\n      case \"fullscreen\":\n        if (document.fullscreenElement) {\n          document.exitFullscreen();\n        } else {\n          document.documentElement.requestFullscreen();\n        }\n        break;\n      case \"players\":\n        setSetting(\n          settings.SHOW_PLAYER_LIST,\n          !getSetting(settings.SHOW_PLAYER_LIST)\n        );\n        break;\n      case \"canvas\":\n        game.settings.set(\n          \"core\",\n          \"noCanvas\",\n          !game.settings.get(\"core\", \"noCanvas\")\n        );\n        //@ts-ignore\n        SettingsConfig.reloadConfirm();\n        break;\n      case \"exit\":\n        setSetting(settings.PIN_MOBILE_MODE, false);\n        break;\n      default:\n        console.log(\"Unhandled menu item\", name);\n        break;\n    }\n    this.nav.closeDrawer();\n  }\n}\n","import { settings, getSetting } from \"./settings.js\";\nimport { WindowMenu } from \"./windowMenu.js\";\nimport { MobileMenu } from \"./mobileMenu.js\";\n\nexport enum ViewState {\n  Unloaded,\n  Map,\n  App,\n}\nenum DrawerState {\n  None,\n  Macros = \"macros\",\n  Menu = \"menu\",\n  Windows = \"windows\",\n}\n\nfunction isTabletMode() {\n  return globalThis.MobileMode.enabled && window.innerWidth > 900;\n}\n\nexport class MobileUI extends Application {\n  state: ViewState = ViewState.Unloaded;\n  drawerState: DrawerState = DrawerState.None;\n  noCanvas = false;\n\n  windowMenu: WindowMenu;\n  mobileMenu: MobileMenu;\n\n  #lastCount = 0;\n\n  constructor() {\n    super({\n      template: \"modules/mobile-improvements/templates/navigation.hbs\",\n      popOut: false,\n    });\n\n    this.windowMenu = new WindowMenu(this);\n    this.mobileMenu = new MobileMenu(this);\n\n    // Ensure HUD shows on opening a new window\n    Hooks.on(\"WindowManager:WindowRendered\", () => this._onShowWindow());\n    Hooks.on(\"WindowManager:BroughtToTop\", () => this._onShowWindow());\n    Hooks.on(\"WindowManager:NoneVisible\", () => this._onHideAllWindows());\n  }\n\n  _onShowWindow(): void {\n    $(document.body).addClass(\"windows-open\");\n\n    if (!globalThis.MobileMode.enabled) return;\n    this.toggleHud(true);\n\n    if (isTabletMode()) {\n      this.showSidebar();\n    }\n  }\n\n  _onHideAllWindows(): void {\n    $(document.body).removeClass(\"windows-open\");\n  }\n\n  render(force: boolean, ...arg: unknown[]): unknown {\n    this.noCanvas = game.settings.get(\"core\", \"noCanvas\") as boolean;\n    this.state = this.noCanvas ? ViewState.App : ViewState.Map;\n\n    //@ts-ignore\n    const r = super.render(force, ...arg);\n    this.windowMenu.render(force);\n    this.mobileMenu.render(force);\n    return r;\n  }\n\n  activateListeners(html: JQuery<HTMLElement>): void {\n    html.find(\"li\").on(\"click\", (evt) => {\n      const [firstClass] = evt.currentTarget.className.split(\" \");\n      const [, name] = firstClass.split(\"-\");\n      this.selectItem(name);\n    });\n    this.updateMode();\n    html.before(\n      `<div id=\"show-mobile-navigation\"><i class=\"fas fa-chevron-up\"></i></div>`\n    );\n    html.siblings(\"#show-mobile-navigation\").on(\"click\", () => {\n      this.toggleHud();\n    });\n    if (this.noCanvas) {\n      this.element.find(\".navigation-map\").detach();\n    }\n  }\n\n  expandSidebarWithoutAnimation() {\n    //@ts-ignore\n    if (!ui.sidebar._collapsed) return;\n\n    const sidebar = ui.sidebar.element as unknown as HTMLElement;\n    const tab = sidebar.querySelector(\n      \".sidebar-tab.active\"\n    ) as HTMLElement | null;\n    const tabs = sidebar.querySelector(\"#sidebar-tabs\") as HTMLElement;\n    tabs.dataset.tooltipDirection = \"RIGHT\";\n    const icon = tabs?.querySelector(\"a.collapse i\");\n    sidebar.style.height = \"\";\n    sidebar.style.width = \"\";\n    sidebar.classList.remove(\"collapsed\");\n    if (tab) {\n      tab.style.display = \"\";\n      tab.style.height = \"\";\n    }\n    icon?.classList.remove(\"fa-caret-left\");\n    icon?.classList.add(\"fa-caret-right\");\n    //@ts-ignore\n    ui.sidebar._collapsed = false;\n    //@ts-ignore\n    Hooks.callAll(\"collapseSidebar\", ui.sidebar, ui.sidebar._collapsed);\n  }\n\n  collapseSidebarWithoutAnimation() {\n    //@ts-ignore\n    if (ui.sidebar._collapsed) return;\n    const sidebar = ui.sidebar.element as unknown as HTMLElement;\n    const tab = sidebar.querySelector(\n      \".sidebar-tab.active\"\n    ) as HTMLElement | null;\n    const tabs = sidebar.querySelector(\"#sidebar-tabs\") as HTMLElement;\n    tabs.dataset.tooltipDirection = \"LEFT\";\n    const icon = tabs?.querySelector(\"a.collapse i\");\n    sidebar.style.height = \"\";\n    sidebar.classList.add(\"collapsed\");\n    if (tab) {\n      tab.style.display = \"\";\n    }\n    icon?.classList.remove(\"fa-caret-right\");\n    icon?.classList.add(\"fa-caret-left\");\n    //@ts-ignore\n    ui.sidebar._collapsed = true;\n    //@ts-ignore\n    Hooks.callAll(\"collapseSidebar\", ui.sidebar, ui.sidebar._collapsed);\n  }\n\n  toggleHud(show: boolean = false): void {\n    const isHidden = document.body.classList.contains(\"hide-hud\");\n    if (isHidden || show) {\n      this.expandSidebarWithoutAnimation();\n      $(document.body).removeClass(\"hide-hud\");\n    } else {\n      $(document.body).addClass(\"hide-hud\");\n      this.collapseSidebarWithoutAnimation();\n    }\n  }\n\n  closeDrawer(): void {\n    this.setDrawerState(DrawerState.None);\n  }\n\n  showMap(): void {\n    const minimized = window.WindowManager.minimizeAll();\n    if (!minimized && this.state == ViewState.Map) {\n      this.toggleHud();\n    }\n    this.state = ViewState.Map;\n    canvas.ready && canvas.app?.start();\n    this.setDrawerState(DrawerState.None);\n    this.updateMode();\n  }\n\n  showSidebar(): void {\n    this.state = ViewState.App;\n    this.toggleHud(true);\n    ui.sidebar?.expand();\n    if (!isTabletMode()) window.WindowManager.minimizeAll();\n\n    if (getSetting(settings.SIDEBAR_PAUSES_RENDER) === true) {\n      // canvas.ready && canvas.app.stop();\n    }\n    this.setDrawerState(DrawerState.None);\n    this.updateMode();\n  }\n\n  showHotbar(): void {\n    $(document.body).addClass(\"show-hotbar\");\n  }\n\n  hideHotbar(): void {\n    $(document.body).removeClass(\"show-hotbar\");\n  }\n\n  setWindowCount(count: number): void {\n    this.element.find(\".navigation-windows .count\").html(count.toString());\n    if (count === 0) {\n      this.element.find(\".navigation-windows\").addClass(\"disabled\");\n    } else {\n      this.element.find(\".navigation-windows\").removeClass(\"disabled\");\n    }\n\n    if (\n      this.drawerState == DrawerState.Windows &&\n      (count === 0 || count > this.#lastCount)\n    ) {\n      this.setDrawerState(DrawerState.None);\n    }\n\n    this.#lastCount = count;\n  }\n\n  setDrawerState(state: DrawerState): void {\n    $(`body > .drawer`).removeClass(\"open\");\n    this.element.find(\".toggle.active\").removeClass(\"active\");\n    this.hideHotbar();\n    if (state == DrawerState.None || state == this.drawerState) {\n      this.drawerState = DrawerState.None;\n      return;\n    }\n\n    this.drawerState = state;\n    if (state == DrawerState.Macros) {\n      this.showHotbar();\n    } else {\n      $(`body > .drawer.drawer-${state}`).addClass(\"open\");\n    }\n    this.element.find(`.navigation-${state}`).addClass(\"active\");\n  }\n\n  selectItem(name: string): void {\n    switch (name) {\n      case \"map\":\n        this.showMap();\n        break;\n      case \"sidebar\":\n        this.showSidebar();\n        break;\n      default:\n        this.setDrawerState(name as DrawerState);\n    }\n  }\n\n  updateMode(): void {\n    if (globalThis.MobileMode.enabled) {\n      this.element.find(\".active:not(.toggle)\").removeClass(\"active\");\n      $(document.body).removeClass(\"mobile-app\");\n      $(document.body).removeClass(\"mobile-map\");\n\n      switch (this.state) {\n        case ViewState.Map:\n          this.element.find(\".navigation-map\").addClass(\"active\");\n          $(document.body).addClass(\"mobile-map\");\n          this.collapseSidebarWithoutAnimation();\n          break;\n        case ViewState.App:\n          this.element.find(\".navigation-sidebar\").addClass(\"active\");\n          $(document.body).addClass(\"mobile-app\");\n          this.expandSidebarWithoutAnimation();\n          break;\n        default:\n          break;\n      }\n    } else {\n      this.expandSidebarWithoutAnimation();\n    }\n  }\n}\n","declare global {\n  interface LenientGlobalVariableTypes {\n    canvas: never;\n  }\n}\n\nexport class TouchInput {\n  cancelled = false;\n  tapMaxTime = 400;\n  tapStart = -1;\n  tapStartPos = { x: 0, y: 0 };\n  touches = 0;\n\n  getTarget(evt: PIXI.InteractionEvent): PlaceableObject | null {\n    let target = evt.target as PlaceableObject;\n    while (!target?.document && target?.parent) {\n      target = target.parent as PlaceableObject;\n    }\n    if (!target.document) {\n      return null;\n    }\n    return target;\n  }\n\n  hook(): void {\n    if (!canvas.ready) return;\n    canvas.stage?.on(\"touchstart\", (evt) => {\n      this.touches++;\n      this.tapStart = Date.now();\n      this.tapStartPos = evt.client;\n      if (this.touches > 1) {\n        this.cancelled = true;\n      }\n    });\n\n    canvas.stage?.on(\"touchmove\", (evt) => {\n      if (\n        evt.client.x != this.tapStartPos.x ||\n        evt.client.y != this.tapStartPos.y\n      ) {\n        this.cancelled = true;\n      }\n    });\n\n    canvas.stage?.on(\"touchend\", (evt) => {\n      if (this.touches > 0) this.touches--;\n      if (!this.cancelled && Date.now() - this.tapStart < this.tapMaxTime) {\n        const target = this.getTarget(evt);\n        if (!target) {\n          globalThis.MobileMode.navigation.toggleHud();\n        }\n      }\n      this.cancelled = false;\n    });\n\n    console.log(\"Mobile Improvements | Touch tap hooked\");\n  }\n}\n","import { ViewState } from \"./MobileUi\";\nimport { getSetting, settings } from \"./settings\";\n\nexport function initChatEffects() {\n  const windowHtml = `<div id=\"mobile-chat-bubbles\"></div>`;\n  document.body.insertAdjacentHTML(\"beforeend\", windowHtml);\n  const bubbleWindow = document.getElementById(\"mobile-chat-bubbles\")!;\n\n  Hooks.on(\"createChatMessage\", (newMessage: ChatMessage) => {\n    if (\n      !globalThis.MobileMode.enabled ||\n      !newMessage.isRoll ||\n      !newMessage.isAuthor\n    ) {\n      return;\n    }\n\n    if (getSetting(settings.SHOW_CHAT_ON_ROLL)) {\n      const shouldBloop =\n        globalThis.MobileMode.navigation.state === ViewState.Map ||\n        window.WindowManager.minimizeAll() ||\n        ui.sidebar.activeTab !== \"chat\";\n\n      globalThis.MobileMode.navigation.showSidebar();\n      ui.sidebar.activateTab(\"chat\");\n\n      if (shouldBloop) {\n        Hooks.once(\n          \"renderChatMessageHTML\",\n          (obj: ChatMessage, html: HTMLElement) => {\n            if (obj.id !== newMessage.id) return; // Avoid possible race condition?\n\n            html.classList.add(\"bloop\");\n            setTimeout(() => html.classList.remove(\"bloop\"), 10000);\n          }\n        );\n      }\n    }\n\n    if (getSetting(settings.SHOW_ROLL_BUBBLES)) {\n      Hooks.once(\n        \"renderChatMessageHTML\",\n        async (message: ChatMessage, html: HTMLElement, data) => {\n          if (newMessage.id !== message.id) return; // Avoid possible race condition?\n\n          if (html.classList.contains(\"dsn-hide\")) {\n            await new Promise<void>((resolve) => {\n              Hooks.once(\"diceSoNiceRollComplete\", () => {\n                resolve();\n              });\n            });\n          }\n\n          const flavor = data.message.flavor\n            ? `<div class=\"flavor\">${data.message.flavor}</div>`\n            : \"\";\n          const bubbleHtml = `<div class=\"mi-chat-bubble\">${flavor}${data.message.content}</div>`;\n          bubbleWindow.insertAdjacentHTML(\"beforeend\", bubbleHtml);\n          const bubble = bubbleWindow.lastElementChild!;\n          bubble.addEventListener(\"click\", () => bubble.remove());\n          // Demonlord fix\n          if (game.user?.isGM) {\n            bubble.querySelectorAll(\".gmremove\").forEach((el) => el.remove());\n          } else {\n            bubble.querySelectorAll(\".gmonlyzero\").forEach((el) => el.remove());\n          }\n          setTimeout(() => bubble.remove(), 15000);\n        }\n      );\n    }\n  });\n}\n","import { preloadTemplates } from \"./module/preloadTemplates.js\";\r\nimport {\r\n  registerSettings,\r\n  settings,\r\n  getSetting,\r\n  setSetting,\r\n} from \"./module/settings.js\";\r\nimport * as windowMgr from \"./module/windowManager.js\";\r\nimport { MobileUI } from \"./module/MobileUi.js\";\r\nimport { TouchInput } from \"./module/touchInput.js\";\r\nimport { initChatEffects } from \"./module/chatEffects.js\";\r\n\r\ndeclare global {\r\n  interface LenientGlobalVariableTypes {\r\n    game: never;\r\n    ui: never;\r\n  }\r\n}\r\n\r\nfunction setMeta(maxScale = \"1.0\") {\r\n  const meta = document.querySelector(`meta[name=\"viewport\"]`);\r\n  if (meta) {\r\n    meta.setAttribute(\r\n      \"content\",\r\n      `width=device-width, initial-scale=1.0, maximum-scale=${maxScale}, user-scalable=1, interactive-widget=resizes-content`\r\n    );\r\n  }\r\n}\r\n\r\nabstract class MobileMode {\r\n  static enabled = false;\r\n  static navigation: MobileUI;\r\n  static compatibilityClasses: string[] = [];\r\n\r\n  static updateCompatibilityClasses() {\r\n    MobileMode.compatibilityClasses.forEach((c) => {\r\n      document.body.classList.toggle(c, MobileMode.enabled);\r\n    });\r\n  }\r\n\r\n  static enter() {\r\n    if (MobileMode.enabled) return;\r\n    MobileMode.enabled = true;\r\n    document.body.classList.add(\"mobile-improvements\");\r\n    MobileMode.navigation?.updateMode();\r\n    MobileMode.updateCompatibilityClasses();\r\n    setMeta();\r\n    ui.nav?.collapse();\r\n    Hooks.call(\"mobile-improvements:enter\");\r\n  }\r\n\r\n  static leave() {\r\n    if (!MobileMode.enabled) return;\r\n    MobileMode.enabled = false;\r\n    document.body.classList.remove(\"mobile-improvements\");\r\n    MobileMode.navigation.updateMode();\r\n    MobileMode.updateCompatibilityClasses();\r\n    Hooks.call(\"mobile-improvements:leave\");\r\n  }\r\n\r\n  static viewResize() {\r\n    if (game.settings && getSetting(settings.PIN_MOBILE_MODE))\r\n      return MobileMode.enter();\r\n    if (localStorage.getItem(\"mobile-improvements.pinMobileMode\") === \"true\")\r\n      return MobileMode.enter();\r\n\r\n    if (window.innerWidth <= 800) {\r\n      MobileMode.enter();\r\n    } else {\r\n      MobileMode.leave();\r\n    }\r\n  }\r\n}\r\n\r\ndocument.body.addEventListener(\"scroll\", () => {\r\n  document.body.scroll(0, 0);\r\n});\r\n\r\nfunction togglePlayerList(show: boolean) {\r\n  if (show) {\r\n    document.getElementById(\"players\")?.classList.add(\"mobile-hidden\");\r\n  } else {\r\n    document.getElementById(\"players\")?.classList.remove(\"mobile-hidden\");\r\n  }\r\n}\r\n\r\nfunction showToggleModeButton(show: boolean) {\r\n  if (!show) {\r\n    $(\"#mobile-improvements-toggle\").detach();\r\n    return;\r\n  }\r\n  const button = $(\"<button>\")\r\n    .attr(\"id\", \"mobile-improvements-toggle\")\r\n    .attr(\"type\", \"button\")\r\n    .attr(\"data-tooltip\", game.i18n.localize(\"MOBILEIMPROVEMENTS.EnableMobileMode\"))\r\n    .attr(\"data-tooltip-direction\", \"LEFT\")\r\n    .addClass(\"ui-control icon fa-solid fa-mobile-alt\");\r\n  $(\"#hotbar\").prepend(button);\r\n  button.on(\"click\", () => {\r\n    setSetting(settings.PIN_MOBILE_MODE, true);\r\n  });\r\n}\r\n\r\n// Trigger the recalculation of viewheight often. Not great performance,\r\n// but required to work on different mobile browsers\r\ndocument.addEventListener(\"fullscreenchange\", () =>\r\n  setTimeout(MobileMode.viewResize, 100)\r\n);\r\nwindow.addEventListener(\"resize\", MobileMode.viewResize);\r\nwindow.addEventListener(\"scroll\", MobileMode.viewResize);\r\nMobileMode.viewResize();\r\n\r\nHooks.once(\"init\", async function () {\r\n  console.log(\"Mobile Improvements | Initializing Mobile Improvements\");\r\n  windowMgr.activate();\r\n\r\n  if (MobileMode.navigation === undefined) {\r\n    MobileMode.navigation = new MobileUI();\r\n  }\r\n  registerSettings({\r\n    [settings.SHOW_PLAYER_LIST]: togglePlayerList,\r\n    [settings.SHOW_MOBILE_TOGGLE]: showToggleModeButton,\r\n    [settings.PIN_MOBILE_MODE]: (enabled) => {\r\n      if (enabled) MobileMode.enter();\r\n      else MobileMode.leave();\r\n    },\r\n  });\r\n  await preloadTemplates();\r\n});\r\n\r\nHooks.on(\"drawPrimaryCanvasGroup\", () => {\r\n  const sceneBackgroundTexture =\r\n    //@ts-ignore\r\n    canvas.app?.stage.rendered.environment.primary.background.texture;\r\n  const textureSize = {\r\n    width: sceneBackgroundTexture.width,\r\n    height: sceneBackgroundTexture.height,\r\n  };\r\n  const maxTextureSize = canvas.app?.renderer.gl.getParameter(\r\n    canvas.app?.renderer.gl.MAX_TEXTURE_SIZE\r\n  );\r\n  if (\r\n    maxTextureSize &&\r\n    Math.max(textureSize.width, textureSize.height) > maxTextureSize\r\n  ) {\r\n    ui.notifications.error(\r\n      game.i18n.format(\"MOBILEIMPROVEMENTS.MaxTextureSizeExceeded\", {\r\n        width: textureSize.width,\r\n        height: textureSize.height,\r\n        maxTextureSize,\r\n      })\r\n    );\r\n  }\r\n});\r\n\r\nHooks.on(\"ready\", () => {\r\n  supressNotifications();\r\n  // Compatibility with Window Controls\r\n  if (game.modules?.get(\"window-controls\")?.active) {\r\n    MobileMode.compatibilityClasses.push(\"mi-window-controls\");\r\n    const organizedMinimize = game.settings.get(\r\n      \"window-controls\",\r\n      \"organizedMinimize\"\r\n    );\r\n    if (organizedMinimize == \"persistentTop\") {\r\n      MobileMode.compatibilityClasses.push(\r\n        \"mi-window-controls-persistent\",\r\n        \"mi-window-controls-persistent-top\"\r\n      );\r\n    } else if (organizedMinimize == \"persistentBottom\") {\r\n      MobileMode.compatibilityClasses.push(\r\n        \"mi-window-controls-persistent\",\r\n        \"mi-window-controls-persistent-bottom\"\r\n      );\r\n    }\r\n    MobileMode.updateCompatibilityClasses();\r\n  }\r\n  MobileMode.navigation.render(true);\r\n  initChatEffects();\r\n\r\n  showToggleModeButton(getSetting(settings.SHOW_MOBILE_TOGGLE));\r\n});\r\n\r\nHooks.once(\"renderChatLog\", (app: ApplicationV2) => {\r\n  if (!app.element) {\r\n    return;\r\n  }\r\n  let touchWhenFocused = false;\r\n  const form = app.element.querySelector(\".chat-form\") as HTMLFormElement;\r\n  const textarea = form?.querySelector(\"#chat-message\") as HTMLTextAreaElement;\r\n  const controls = form.querySelector(\".chat-controls\");\r\n\r\n  const btn = document.createElement(\"button\");\r\n  btn.id = \"chat-form--send\";\r\n  btn.className = \"ui-control\";\r\n  btn.innerHTML = `<i class=\"fas fa-paper-plane\"></i>`;\r\n\r\n  btn.addEventListener(\"touchstart\", () => {\r\n    if (document.activeElement === textarea) {\r\n      touchWhenFocused = true;\r\n    }\r\n  });\r\n  btn.addEventListener(\"touchend\", () => {\r\n    setTimeout(() => (touchWhenFocused = false), 100);\r\n  });\r\n\r\n  btn.addEventListener(\"click\", (evt) => {\r\n    evt.preventDefault();\r\n    if (touchWhenFocused) {\r\n      textarea?.focus();\r\n    }\r\n    console.log(app);\r\n    //@ts-ignore\r\n    app._onKeyDown({\r\n      key: \"Enter\",\r\n      target: textarea,\r\n      preventDefault: () => {},\r\n      stopPropagation: () => {},\r\n      currentTarget: textarea,\r\n    });\r\n  });\r\n  controls?.append(btn);\r\n});\r\n\r\nHooks.once(\"renderSceneNavigation\", () => {\r\n  if (MobileMode.enabled) ui.nav?.collapse();\r\n});\r\n\r\nHooks.once(\"renderPlayerList\", () =>\r\n  togglePlayerList(getSetting(settings.SHOW_PLAYER_LIST))\r\n);\r\n\r\nHooks.on(\"getApplicationHeaderButtons\", addWindowZoomControlButton);\r\nHooks.on(\"getActorSheetHeaderButtons\", addWindowZoomControlButton);\r\nHooks.on(\"getHeaderControlsApplicationV2\", addWindowZoomControlButton);\r\n\r\nfunction addWindowZoomControlButton(app, buttons) {\r\n  if (MobileMode.enabled) {\r\n    buttons.unshift({\r\n      class: \"zoom\",\r\n      label: \"MOBILEIMPROVEMENTS.ZoomOut\",\r\n      icon: \"fa-solid fa-magnifying-glass-minus\",\r\n      onclick: () => createZoomControl(app),\r\n      onClick: () => createZoomControl(app),\r\n    });\r\n  }\r\n}\r\n\r\nfunction createZoomControl(app) {\r\n  const html = $(app.element);\r\n  const currentZoom = getComputedStyle(html.get(0)).getPropertyValue(\r\n    \"--zoomValue\"\r\n  );\r\n  if (html.find(\".window-zoom-slider\").length > 0) {\r\n    html.find(\".window-zoom-slider\").remove();\r\n  } else {\r\n    const zoomTool = $(\"<div>\")\r\n      .addClass(\"flexrow window-zoom-slider\")\r\n      .insertAfter(html.find(\".window-header\"));\r\n    const zoomSlider = $(\"<input>\")\r\n      .attr(\"type\", \"range\")\r\n      .attr(\"min\", 0.5)\r\n      .attr(\"max\", 1)\r\n      .attr(\"step\", 0.1)\r\n      .val(currentZoom)\r\n      .on(\"input\", function () {\r\n        const newZoomValue = $(this).val() as number;\r\n        html.get(0).style.setProperty(\"--zoomValue\", newZoomValue);\r\n        setMeta(newZoomValue < 1 ? \"2.0\" : \"1.0\");\r\n      })\r\n      .on(\"change\", function () {\r\n        const orderedClasses = [...html.get(0).classList]\r\n          .filter((c) => ![\"app\", \"window-app\", \"application\", \"wm-managed\"].includes(c))\r\n          .sort()\r\n          .join(\" \");\r\n        setSetting(\r\n          settings.WINDOWS_ZOOM_VALUES,\r\n          foundry.utils.mergeObject(\r\n            getSetting(settings.WINDOWS_ZOOM_VALUES),\r\n            { [orderedClasses]: $(this).val() }\r\n          )\r\n        );\r\n      })\r\n      .appendTo(zoomTool);\r\n    const zoomHide = $(\"<i>\")\r\n      .addClass(\"toggle fas fa-caret-up\")\r\n      .on(\"click\", function () {\r\n        $(this).closest(\".window-zoom-slider\").remove();\r\n      })\r\n      .appendTo(zoomTool);\r\n  }\r\n}\r\n\r\nHooks.on(\"renderFormApplication\", setWindowZoomValueFromStorage);\r\nHooks.on(\"renderActorSheet\", setWindowZoomValueFromStorage);\r\nHooks.on(\"renderApplicationV2\", setWindowZoomValueFromStorage);\r\n\r\nHooks.on(\"renderSettingsConfig\", (app, html: HTMLElement) => {\r\n  if (!MobileMode.enabled) {\r\n    return;\r\n  }\r\n  const sidebar = html.querySelector(\r\n    `aside[data-application-part=\"sidebar\"]`\r\n  ) as HTMLElement;\r\n  const toggle = document.createElement(\"div\");\r\n  toggle.className = \"sidebar-toggle\";\r\n  toggle.innerHTML = `<i class=\"fas fa-caret-left\"></i>`;\r\n  sidebar?.insertAdjacentElement(\"afterend\", toggle);\r\n\r\n  toggle.addEventListener(\"click\", () => {\r\n    const visible = sidebar.style.display !== \"none\";\r\n    const icon = toggle.firstElementChild!;\r\n    if (visible) {\r\n      icon.classList.remove(\"fa-caret-left\");\r\n      icon.classList.add(\"fa-caret-right\");\r\n      sidebar.style.display = \"none\";\r\n    } else {\r\n      icon.classList.remove(\"fa-caret-right\");\r\n      icon.classList.add(\"fa-caret-left\");\r\n      sidebar.style.display = \"\";\r\n    }\r\n  });\r\n});\r\n\r\nHooks.on(\"WindowManager:Maximized\", onMainWindowChanged);\r\nHooks.on(\"WindowManager:Minimized\", onMainWindowChanged);\r\nHooks.on(\"WindowManager:Removed\", onMainWindowChanged);\r\n\r\nfunction setMetaForWindow(html: HTMLElement | JQuery<HTMLElement> | undefined) {\r\n  if (MobileMode.enabled && html) {\r\n    const elem = \"get\" in html ? html.get(0) : html;\r\n    const isZoomed =\r\n      elem &&\r\n      parseFloat(getComputedStyle(elem).getPropertyValue(\"--zoomValue\")) < 1;\r\n    setMeta(isZoomed ? \"2.0\" : \"1.0\");\r\n  }\r\n}\r\n\r\nfunction onMainWindowChanged() {\r\n  if (MobileMode.enabled) {\r\n    const currentWindow = Object.values(windowMgr.getManager().windows).find(\r\n      (w) => !w.minimized\r\n    );\r\n    if (currentWindow) {\r\n      setMetaForWindow(currentWindow.app.element);\r\n    } else {\r\n      setMeta(\"1.0\");\r\n    }\r\n  }\r\n}\r\n\r\nfunction setWindowZoomValueFromStorage(app, html) {\r\n  const elem = \"get\" in html ? html.get(0) : html;\r\n  if (MobileMode.enabled) {\r\n    const settingObjectValue = getSetting(settings.WINDOWS_ZOOM_VALUES);\r\n    const orderedClasses = [...elem.classList]\r\n      .filter((c) => ![\"app\", \"window-app\", \"application\", \"wm-managed\"].includes(c))\r\n      .sort()\r\n      .join(\" \");\r\n    elem\r\n      .style.setProperty(\r\n        \"--zoomValue\",\r\n        settingObjectValue[orderedClasses] || 1\r\n      );\r\n  }\r\n}\r\n\r\nfunction supressNotifications() {\r\n  window.libWrapper.register(\r\n    \"mobile-improvements\",\r\n    \"ui.notifications.notify\",\r\n    function (wrapped, ...args) {\r\n      if (\r\n        [\r\n          \"ERROR.LowResolution\",\r\n          \"ERROR.RESOLUTION.Window\",\r\n          \"ERROR.RESOLUTION.Screen\",\r\n          \"ERROR.RESOLUTION.Scale\",\r\n        ].includes(args[0])\r\n      ) {\r\n        console.info(\"notification suppressed\", args);\r\n        return;\r\n      }\r\n      return wrapped(...args);\r\n    }\r\n  );\r\n}\r\n\r\nconst touchInput = new TouchInput();\r\nHooks.on(\"canvasReady\", () => touchInput.hook());\r\n\r\nglobalThis.MobileMode = MobileMode;\r\n"],"names":["windowMgr.activate","windowMgr.getManager"],"mappings":"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"}