{"version":3,"sources":["src/ts/overlay.ts","src/ts/dropdownMenuOrigin.ts","src/ts/dialog.ts","src/ts/dropdownMenu.ts","src/ts/input.ts","src/ts/navigationDrawer.ts","src/ts/toastColor.ts","src/ts/toast.ts","src/ts/toolbar.ts"],"names":["DropdownMenuOrigin","Overlay","element","this","Error","classList","add","prototype","show","delay","_this","setTimeout","_overlayActiveClass","hide","remove","createOverlay","document","createElement","querySelector","appendChild","Dialog","_overlay","querySelectorAll","forEach","el","addEventListener","e","close","preventDefault","open","_dialogOpenClass","attributeValue","attributes","getNamedItem","value","dialog","getElementById","replace","DropdownMenu","origin","TopRight","menu","nextElementSibling","contains","undefined","toLowerCase","stopPropagation","definedOrigin","toggle","setOrigin","top","left","TopLeft","TopStart","TopEnd","offsetTop","offsetHeight","TopRightPartial","TopLeftPartial","TopStartPartial","TopEndPartial","BottomRight","BottomLeft","BottomStart","BottomEnd","BottomRightPartial","BottomLeftPartial","BottomStartPartial","BottomEndPartial","offsetLeft","offsetWidth","style","_dropdownClass","_dropdownActiveClass","_menuOpenClass","getAttribute","Input","labelText","removeColorOnFocus","input","label","setLabel","_activeLabel","_disableLabel","_labelActiveClass","text","innerText","ToastColor","NavigationDrawer","_navigationDrawerOpenClass","navDrawer","Toast","message","title","color","iconClasses","timeout","toastColors","Object","keys","map","x","indexOf","_toasterId","setAttribute","toast","toastIcon","_a","apply","concat","split","toastContent","toastContentTitle","toastContentMessage","activeToast","_toastActiveClass","_timeoutToastDisable","Toolbar","lastScrollTop","window","scrollTop","documentElement","clientHeight","_toolbarHideClass"],"mappings":"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","file":"xmutarn.min.js","sourcesContent":["/**\r\n * Responsável por gerenciar um overlay.\r\n */\r\nclass Overlay {\r\n /**\r\n * Inicializa uma nova instância de Overlay.\r\n *\r\n * @param {HTMLElement} element O elemento do overlay.\r\n */\r\n constructor(public element: HTMLElement) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n element.classList.add(\"overlay\");\r\n }\r\n\r\n /** A classe CSS de ativação do overlay. */\r\n private static readonly _overlayActiveClass: string = \"overlay_active\";\r\n\r\n /**\r\n * Exibi o overlay.\r\n *\r\n * @param {number} delay O delay em milissegundos até a exibição do overlay.\r\n *\r\n * @returns {HTMLElement} O elemento do overlay.\r\n */\r\n public show(delay: number = 300): HTMLElement {\r\n setTimeout(() => this.element.classList.add(Overlay._overlayActiveClass), delay);\r\n\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Omite o overlay.\r\n *\r\n * @param {number} delay O delay em milissegundos até a omissão do overlay.\r\n *\r\n * @returns {HTMLElement} O elemento do overlay.\r\n */\r\n public hide(delay: number = 300): HTMLElement {\r\n setTimeout(() => this.element.classList.remove(Overlay._overlayActiveClass), delay);\r\n\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Cria um overlay.\r\n *\r\n * @returns {Overlay} Uma instância de Overlay correspondente ao elemento criado.\r\n */\r\n public static createOverlay(): Overlay {\r\n const element = document.createElement(\"div\");\r\n\r\n document.querySelector(\"body\").appendChild(element);\r\n\r\n return new Overlay(element);\r\n }\r\n}\r\n","/**\r\n * Representa a origem de abertura do menu suspenso.\r\n */\r\nenum DropdownMenuOrigin {\r\n TopRight = \"top-right\",\r\n TopRightPartial = \"top-right-partial\",\r\n TopLeft = \"top-left\",\r\n TopLeftPartial = \"top-left-partial\",\r\n TopStart = \"top-start\",\r\n TopStartPartial = \"top-start-partial\",\r\n TopEnd = \"top-end\",\r\n TopEndPartial = \"top-end-partial\",\r\n BottomRight = \"bottom-right\",\r\n BottomRightPartial = \"bottom-right-partial\",\r\n BottomLeft = \"bottom-left\",\r\n BottomLeftPartial = \"bottom-left-partial\",\r\n BottomStart = \"bottom-start\",\r\n BottomStartPartial = \"bottom-start-partial\",\r\n BottomEnd = \"bottom-end\",\r\n BottomEndPartial = \"bottom-end-partial\"\r\n}\r\n","/// \r\n\r\n/**\r\n * Responsável por gerenciar um diálogo.\r\n */\r\nclass Dialog {\r\n /**\r\n * Incializa uma nova instância de Dialog.\r\n *\r\n * @param {HTMLElement} element O elemento do diálogo.\r\n */\r\n constructor(public element: HTMLElement) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n element.classList.add(\"dialog\");\r\n\r\n // fecha o diálogo quando o evento de clique é acionado no elemento com o atributo \"x-close-dialog\".\r\n element.querySelectorAll(\"[x-close-dialog]\").forEach(el => {\r\n el.addEventListener(\"click\", e => {\r\n this.close();\r\n\r\n e.preventDefault();\r\n });\r\n });\r\n }\r\n\r\n /** A classe CSS de abertura do diálogo. */\r\n private static readonly _dialogOpenClass: string = \"dialog_open\";\r\n\r\n /** O overlay. */\r\n private _overlay: Overlay = Overlay.createOverlay();\r\n\r\n /**\r\n * Abre o diálogo.\r\n */\r\n public open(): void {\r\n this._overlay.show();\r\n\r\n this.element.classList.add(Dialog._dialogOpenClass);\r\n }\r\n\r\n /**\r\n * Fecha o diálogo.\r\n */\r\n public close(): void {\r\n this._overlay.hide();\r\n\r\n this.element.classList.remove(Dialog._dialogOpenClass);\r\n }\r\n}\r\n\r\n// inicializa uma nova instância de Dialog, a partir do atributo HTML \"x-open-dialog-id\".\r\ndocument.querySelectorAll(\"[x-open-dialog-id]\").forEach(element => {\r\n // obtém o valor do atributo do elemento selecionado.\r\n const attributeValue: string = element.attributes.getNamedItem(\"x-open-dialog-id\").value;\r\n\r\n const dialog: Dialog = new Dialog(document.getElementById(attributeValue.replace(\"#\", \"\")));\r\n\r\n element.addEventListener(\"click\", e => {\r\n dialog.open();\r\n\r\n e.preventDefault();\r\n });\r\n});\r\n","/// \r\n\r\n/**\r\n * Responsável por gerenciar um menu suspenso.\r\n */\r\nclass DropdownMenu {\r\n /** A classe CSS do dropdown. */\r\n private static readonly _dropdownClass: string = \"dropdown\";\r\n\r\n /** A classe CSS de ativação do dropdown. */\r\n private static readonly _dropdownActiveClass: string = \"dropdown_active\";\r\n\r\n /** A classe CSS de abertura do menu. */\r\n private static readonly _menuOpenClass: string = \"menu_open\";\r\n\r\n /** Obtém ou define o menu suspenso. */\r\n public menu: HTMLElement;\r\n\r\n /**\r\n * Inicializa uma nova instância de DropdownMenu.\r\n *\r\n * @param {HTMLElement} element O elemento responsável por abrir o menu suspenso.\r\n * @param {DropdownMenuOrigin} origin A origem da transformação do menu suspenso. O padrão é\r\n * \"DropdownMenuOrigin.TopRight\".\r\n */\r\n constructor(public element: HTMLElement, origin: DropdownMenuOrigin = DropdownMenuOrigin.TopRight) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n this.menu =\r\n element.nextElementSibling.classList.contains(\"menu\") ? element.nextElementSibling : undefined;\r\n\r\n if (!this.menu) {\r\n throw new Error(\"Nenhum elemento imediatamente próximo, com a classe 'menu', foi encontrado.\");\r\n }\r\n\r\n // adiciona a classe que irá definir a origem da abetura do menu suspenso, se o parâmetro \"origin\" não for nulo.\r\n if (origin != null) {\r\n this.menu.classList.add(`menu_origin-${origin.toLowerCase().replace(\"-partial\", \"\")}`);\r\n }\r\n\r\n this.menu.addEventListener(\"click\", e => e.stopPropagation());\r\n\r\n // sinalizador indicando se a origem foi definida.\r\n let definedOrigin: boolean = false;\r\n\r\n element.addEventListener(\"click\", e => {\r\n this.toggle();\r\n\r\n if (definedOrigin === false && origin != null) {\r\n this.setOrigin(origin);\r\n\r\n definedOrigin = true;\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n\r\n document.addEventListener(\"click\", () => this.close());\r\n }\r\n\r\n /**\r\n * Define a origem da transformação do menu suspenso.\r\n *\r\n * @param {DropdownMenuOrigin} origin A origem da transformação do menu suspenso. O padrão é\r\n * \"DropdownMenuOrigin.Topright\".\r\n *\r\n * @return {HTMLElement} O elemento responsável por abrir o menu suspenso.\r\n */\r\n public setOrigin(origin: DropdownMenuOrigin = DropdownMenuOrigin.TopRight): HTMLElement {\r\n let top: number,\r\n left: number;\r\n\r\n // top.\r\n if (origin === DropdownMenuOrigin.TopRight ||\r\n origin === DropdownMenuOrigin.TopLeft ||\r\n origin === DropdownMenuOrigin.TopStart ||\r\n origin === DropdownMenuOrigin.TopEnd) {\r\n top = this.element.offsetTop + this.element.offsetHeight;\r\n }\r\n\r\n // top partial.\r\n if (origin === DropdownMenuOrigin.TopRightPartial ||\r\n origin === DropdownMenuOrigin.TopLeftPartial ||\r\n origin === DropdownMenuOrigin.TopStartPartial ||\r\n origin === DropdownMenuOrigin.TopEndPartial) {\r\n top = this.element.offsetTop;\r\n }\r\n\r\n // bottom.\r\n if (origin === DropdownMenuOrigin.BottomRight ||\r\n origin === DropdownMenuOrigin.BottomLeft ||\r\n origin === DropdownMenuOrigin.BottomStart ||\r\n origin === DropdownMenuOrigin.BottomEnd) {\r\n top = this.element.offsetTop - this.menu.offsetHeight;\r\n }\r\n\r\n // bottom partial.\r\n if (origin === DropdownMenuOrigin.BottomRightPartial ||\r\n origin === DropdownMenuOrigin.BottomLeftPartial ||\r\n origin === DropdownMenuOrigin.BottomStartPartial ||\r\n origin === DropdownMenuOrigin.BottomEndPartial) {\r\n top = this.element.offsetTop - this.menu.offsetHeight + this.element.offsetHeight;\r\n }\r\n\r\n // right, right partial.\r\n if (origin === DropdownMenuOrigin.TopRight ||\r\n origin === DropdownMenuOrigin.TopRightPartial ||\r\n origin === DropdownMenuOrigin.BottomRight ||\r\n origin === DropdownMenuOrigin.BottomRightPartial) {\r\n left = this.element.offsetLeft + (this.element.offsetWidth - this.menu.offsetWidth);\r\n }\r\n\r\n // left, left partial.\r\n if (origin === DropdownMenuOrigin.TopLeft ||\r\n origin === DropdownMenuOrigin.TopLeftPartial ||\r\n origin === DropdownMenuOrigin.BottomLeft ||\r\n origin === DropdownMenuOrigin.BottomLeftPartial) {\r\n left = this.element.offsetLeft;\r\n }\r\n\r\n // start, start partial.\r\n if (origin === DropdownMenuOrigin.TopStart ||\r\n origin === DropdownMenuOrigin.TopStartPartial ||\r\n origin === DropdownMenuOrigin.BottomStart ||\r\n origin === DropdownMenuOrigin.BottomStartPartial) {\r\n left = this.element.offsetLeft - this.menu.offsetWidth;\r\n }\r\n\r\n // end, end partial.\r\n if (origin === DropdownMenuOrigin.TopEnd ||\r\n origin === DropdownMenuOrigin.TopEndPartial ||\r\n origin === DropdownMenuOrigin.BottomEnd ||\r\n origin === DropdownMenuOrigin.BottomEndPartial) {\r\n left = this.element.offsetLeft + this.element.offsetHeight;\r\n }\r\n\r\n // define o topo e a esquerda do menu suspenso.\r\n this.menu.style.top = top + \"px\";\r\n this.menu.style.left = left + \"px\";\r\n\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Abre o menu suspenso.\r\n *\r\n * @param {DropdownMenuOrigin} origin A origem da transformação do menu suspenso. O padrão é\r\n * \"DropdownMenuOrigin.TopRight\".\r\n *\r\n * @return {HTMLElement} O elemento responsável por abrir o menu dropdown.\r\n */\r\n public open(origin?: DropdownMenuOrigin): HTMLElement {\r\n if (this.element.classList.contains(DropdownMenu._dropdownClass)) {\r\n this.element.classList.add(DropdownMenu._dropdownActiveClass);\r\n }\r\n\r\n if (origin != null) {\r\n this.setOrigin(origin);\r\n }\r\n\r\n this.menu.classList.add(DropdownMenu._menuOpenClass);\r\n\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Fecha o menu suspenso.\r\n *\r\n * @return {HTMLElement} O elemento responsável por abrir o menu suspenso.\r\n */\r\n public close(): HTMLElement {\r\n if (this.element.classList.contains(DropdownMenu._dropdownClass)) {\r\n this.element.classList.remove(DropdownMenu._dropdownActiveClass);\r\n }\r\n\r\n this.menu.classList.remove(DropdownMenu._menuOpenClass);\r\n\r\n return this.element;\r\n }\r\n\r\n /**\r\n * Alterna entre abrir e fechar o menu suspenso.\r\n *\r\n * @param {DropdownMenuOrigin} origin A origem da transformação do menu suspenso. O padrão é\r\n * \"DropdownMenuOrigin.TopRight\".\r\n */\r\n public toggle(origin?: DropdownMenuOrigin): HTMLElement {\r\n if (this.element.classList.contains(DropdownMenu._dropdownClass)) {\r\n this.element.classList.toggle(DropdownMenu._dropdownActiveClass);\r\n }\r\n\r\n if (origin != null) {\r\n this.setOrigin(origin);\r\n }\r\n\r\n this.menu.classList.toggle(DropdownMenu._menuOpenClass);\r\n\r\n return this.element;\r\n }\r\n}\r\n\r\n// inicializa uma nova instância de DropdownMenu, a partir do atributo HTML \"x-dropdown-menu\".\r\ndocument.querySelectorAll(\"[x-role='dropdown-menu']\").forEach((element: HTMLElement): void => {\r\n // a origem da transformação do menu suspenso.\r\n let origin: DropdownMenuOrigin = element.getAttribute(\"x-origin\");\r\n\r\n if (origin) {\r\n new DropdownMenu(element, origin);\r\n } else {\r\n new DropdownMenu(element);\r\n }\r\n});\r\n","/**\r\n * Responsável por gerenciar um input.\r\n */\r\nclass Input {\r\n /** A classe CSS de ativação do rótulo do input. */\r\n private static readonly _labelActiveClass: string = \"input--label_active\";\r\n\r\n /** Obtém ou define o input. */\r\n public input: HTMLInputElement;\r\n\r\n /** Obtém ou define o rótulo do input. */\r\n public label: HTMLLabelElement;\r\n\r\n /**\r\n * Inicializa uma nova instância de Input.\r\n *\r\n * @param {HTMLElement} element O elemento responsável pelo input.\r\n * @param {string?} labelText O texto do rótulo do input.\r\n * @param {boolean?} removeColorOnFocus Sinalizador indicando se a cor deve ser removida ao acionar do evento \"focus\".\r\n */\r\n constructor(public element: HTMLElement, labelText?: string, removeColorOnFocus?: boolean) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento não foi fornecido.\");\r\n }\r\n\r\n if (removeColorOnFocus == null) {\r\n removeColorOnFocus = true;\r\n }\r\n\r\n this.input = element.querySelector(\"input\");\r\n\r\n if (!this.input) {\r\n throw new Error(\"O elemento 'input' não foi encontrado.\");\r\n }\r\n\r\n this.label = element.querySelector(\".input--label\");\r\n\r\n if (!this.label && !labelText) {\r\n throw new Error(\"O 'label' do input não foi encontrado ou o segundo argumento não foi fornecido.\");\r\n }\r\n\r\n if (!this.label && labelText) {\r\n this.setLabel(labelText);\r\n }\r\n\r\n if (this.input.value) {\r\n this._activeLabel();\r\n }\r\n\r\n // ativa ou desativa o rótulo, com base no valor do input, ao acionar o evento \"blur\".\r\n this.input.addEventListener(\"blur\", (): void => {\r\n if (this.input.value) {\r\n this._activeLabel();\r\n } else {\r\n this._disableLabel();\r\n }\r\n });\r\n\r\n if (removeColorOnFocus) {\r\n this.input.addEventListener(\"focus\", () => element.classList.remove(\"input_alert-color\"));\r\n }\r\n }\r\n\r\n /**\r\n * Ativa o rótulo do input.\r\n */\r\n private _activeLabel(): void {\r\n this.label.classList.add(Input._labelActiveClass);\r\n }\r\n\r\n /**\r\n * Desativa o rótulo do input.\r\n */\r\n private _disableLabel(): void {\r\n this.label.classList.remove(Input._labelActiveClass);\r\n }\r\n\r\n /**\r\n * Define o rótulo do input.\r\n *\r\n * @param {string} text O texto do rótulo.\r\n */\r\n public setLabel(text: string): void {\r\n // cria um rótulo, caso nenhum seja encontrado.\r\n if (!this.label) {\r\n this.label = document.createElement(\"label\");\r\n\r\n this.label.classList.add(\"input--label\");\r\n\r\n this.element.appendChild(this.label);\r\n }\r\n\r\n this.label.innerText = text;\r\n }\r\n}\r\n\r\n// inicializa uma nova instância de Input, a partir do atributo HTML \"x-role\".\r\ndocument.querySelectorAll(\"[x-role='input']\").forEach((element: HTMLElement): void => {\r\n new Input(element, element.getAttribute(\"x-label-text\"));\r\n});\r\n","/// \r\n\r\n/**\r\n * Responsável por gerenciar uma gaveta de navegação.\r\n */\r\nclass NavigationDrawer {\r\n /** O overlay. */\r\n private _overlay: Overlay = Overlay.createOverlay();\r\n\r\n /**\r\n * Inicializa uma nova instância de NavigationDrawer.\r\n *\r\n * @param element\r\n */\r\n constructor(public element: HTMLElement) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n element.classList.add(\"navigation-drawer\");\r\n\r\n // fecha a gaveta de navegação quando o evento de clique é acionado no overlay.\r\n this._overlay.element.addEventListener(\"click\", () => this.close());\r\n\r\n // fecha a gaveta de navegação quando o evento de clique é acionado nos elementos com o atributo \"x-close-nav-drawer\".\r\n element.querySelectorAll(\"[x-close-nav-drawer]\").forEach(el => {\r\n el.addEventListener(\"click\", e => {\r\n this.close();\r\n\r\n e.preventDefault();\r\n });\r\n });\r\n }\r\n\r\n /** A classe CSS de abertura da gaveta de navegação. */\r\n private static readonly _navigationDrawerOpenClass: string = \"navigation-drawer_open\";\r\n\r\n /**\r\n * Abre o diálogo.\r\n */\r\n public open(): void {\r\n this._overlay.show();\r\n\r\n this.element.classList.add(NavigationDrawer._navigationDrawerOpenClass);\r\n }\r\n\r\n /**\r\n * Fecha o diálogo.\r\n */\r\n public close(): void {\r\n this._overlay.hide();\r\n\r\n this.element.classList.remove(NavigationDrawer._navigationDrawerOpenClass);\r\n }\r\n}\r\n\r\n// inicializa uma nova instância de NavigationDrawer, a partir do atributo HTML \"x-open-nav-drawer-id\".\r\ndocument.querySelectorAll(\"[x-open-nav-drawer-id]\").forEach(element => {\r\n // obtém o valor do atributo do elemento selecionado.\r\n const attributeValue: string = element.attributes.getNamedItem(\"x-open-nav-drawer-id\").value;\r\n\r\n const navDrawer: NavigationDrawer = new NavigationDrawer(document.getElementById(attributeValue.replace(\"#\", \"\")));\r\n\r\n element.addEventListener(\"click\", e => {\r\n navDrawer.open();\r\n\r\n e.preventDefault();\r\n });\r\n});\r\n","/**\r\n * Representa a cor do toast.\r\n */\r\nenum ToastColor {\r\n /** Cor destaque do tema. */\r\n FeaturedColor = \"featured\",\r\n\r\n /** Cor de realçe do tema. */\r\n AccentColor = \"accent\",\r\n\r\n /** Cor de sucesso. */\r\n SuccessColor = \"success\",\r\n\r\n /** Cor de alerta. */\r\n AlertColor = \"alert\",\r\n\r\n /** Cor de cuidado. */\r\n WarningColor = \"warning\"\r\n}\r\n","/// \r\n\r\n/**\r\n * Responsável por gerenciar um toast.\r\n */\r\nclass Toast {\r\n /** O identificador do elemento responsável pelo toast. */\r\n private static readonly _toasterId: string = \"toaster\";\r\n\r\n /** A classe CSS de ativação do toast. */\r\n private static readonly _toastActiveClass: string = \"toast_active\";\r\n\r\n /** O elemento responsável pelo toast. */\r\n public element: HTMLElement;\r\n\r\n /** O elemento do toast. */\r\n public toast: HTMLElement;\r\n\r\n /**\r\n * Inicializa uma nova instância de Toast.\r\n *\r\n * @param {string} message A mensagem do toast.\r\n * @param {string} title O título do toast.\r\n * @param {ToastColor} color A cor do toast.\r\n * @param {string} iconClasses As classes de ícone do toast.\r\n * @param {number} delay O delay em milissegundos para abertura do toast.\r\n * @param {number} timeout O timeout para fechamento do toast. Caso o valor fornecido seja \"0\", o toast não será\r\n * fechado.\r\n */\r\n constructor(message: string, title?: string, color?: ToastColor, iconClasses?: string, delay?: number, timeout?: number) {\r\n if (!message) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n if (delay && typeof delay != \"number\") {\r\n throw new Error(\"O quinto argumento deve ser do tipo 'number'.\");\r\n }\r\n\r\n if (timeout && typeof timeout != \"number\") {\r\n throw new Error(\"O sexto argumento deve ser do tipo 'number'.\");\r\n }\r\n\r\n // obtém e define as cores do toast.\r\n const toastColors: string[] = Object.keys(ToastColor).map((x: any): string => ToastColor[x]);\r\n\r\n if (color && toastColors.indexOf(color) == -1) {\r\n throw new Error(`A cor '${color}' não está disponível.`);\r\n }\r\n\r\n this.element = document.querySelector(\"#\" + Toast._toasterId);\r\n\r\n if (!this.element) {\r\n // cria e define o elemento responsável por gerenciar o toast.\r\n this.element = document.createElement(\"section\");\r\n\r\n this.element.setAttribute(\"id\", Toast._toasterId);\r\n this.element.classList.add(\"toaster\");\r\n\r\n document.querySelector(\"body\").appendChild(this.element);\r\n }\r\n\r\n // cria e define o elemento do toast.\r\n this.toast = document.createElement(\"article\");\r\n\r\n this.toast.classList.add(\"toast\");\r\n\r\n if (color) {\r\n this.toast.classList.add(\"toast_color-\" + color);\r\n }\r\n\r\n if (iconClasses) {\r\n // cria e define o elemento de ícone do toast.\r\n const toastIcon: HTMLElement = document.createElement(\"div\");\r\n\r\n toastIcon.classList.add(\"toast--icon\", ...iconClasses.split(\" \"));\r\n\r\n this.toast.appendChild(toastIcon);\r\n }\r\n\r\n // cria e define o elemento de conteúdo do toast.\r\n const toastContent: HTMLElement = document.createElement(\"div\");\r\n\r\n toastContent.classList.add(\"toast--content\");\r\n\r\n this.toast.appendChild(toastContent);\r\n\r\n if (title) {\r\n const toastContentTitle: HTMLHeadingElement = document.createElement(\"h1\");\r\n\r\n toastContentTitle.classList.add(\"toast--content--title\", \"typography-body-2\");\r\n toastContentTitle.innerText = title;\r\n\r\n toastContent.appendChild(toastContentTitle);\r\n }\r\n\r\n // cria e define o elemento de mensagem do conteúdo do toast.\r\n const toastContentMessage: HTMLParagraphElement = document.createElement(\"p\");\r\n\r\n toastContentMessage.classList.add(\"toast--content--message\", \"typography-body-2\");\r\n toastContentMessage.innerText = message;\r\n\r\n if (title) {\r\n toastContentMessage.classList.add(\"toast--content--message_secondary\");\r\n }\r\n\r\n toastContent.appendChild(toastContentMessage);\r\n\r\n this.open(delay);\r\n\r\n // chama a função de fechamento do toast após o \"delay\" para evitar que o toast seja fechado mais cedo que o\r\n // esperado.\r\n setTimeout((): void => this.close(timeout), delay);\r\n }\r\n\r\n /** Timeout de desativação do toast, em milissegundos. */\r\n private static readonly _timeoutToastDisable: number = 400;\r\n\r\n /**\r\n * Abre o toast.\r\n *\r\n * @param {number} delay O delay em milissegundos para abertura do toast.\r\n */\r\n public open(delay: number = 0): void {\r\n // ativa o novo toast, e remove o toast ativo após o \"delay\".\r\n setTimeout((): void => {\r\n const activeToast: HTMLElement = this.element.querySelector(\".toast\");\r\n\r\n // desativa o toast ativo e omite o overlay, caso houver algum.\r\n if (activeToast) {\r\n activeToast.classList.remove(Toast._toastActiveClass);\r\n Toast._overlay.hide();\r\n }\r\n\r\n // aguarda 400ms, para que o toast ativo seja completamente desativado.\r\n setTimeout((): void => {\r\n if (activeToast) {\r\n activeToast.remove();\r\n }\r\n\r\n this.element.appendChild(this.toast);\r\n\r\n // ativa o novo toast após 100ms para evitar de ser apresentado de forma brusca.\r\n setTimeout((): void => this.toast.classList.add(Toast._toastActiveClass), 100);\r\n }, Toast._timeoutToastDisable);\r\n }, delay);\r\n }\r\n\r\n /** Overlay. */\r\n private static readonly _overlay: Overlay = Overlay.createOverlay();\r\n\r\n /**\r\n * Fecha o toast.\r\n *\r\n * @param {number} timeout O timeout para fechamento do toast. Caso o valor fornecido seja \"0\", o toast não será\r\n * fechado.\r\n */\r\n public close(timeout: number = 7000): void {\r\n if (timeout != 0) {\r\n // desativa o toast após o \"timeout\".\r\n setTimeout((): void => {\r\n this.toast.classList.remove(Toast._toastActiveClass);\r\n\r\n // aguarda 400ms, para que o toast seja completamente desativado, e remove-o em seguida.\r\n setTimeout((): void => this.toast.remove(), Toast._timeoutToastDisable);\r\n }, timeout);\r\n } else {\r\n Toast._overlay.show();\r\n }\r\n }\r\n}\r\n","/**\r\n * Responsável por gerenciar uma barra de ferramentas.\r\n */\r\nclass Toolbar {\r\n /** Classe CSS de omissão da barra de ferramentas. */\r\n private static readonly _toolbarHideClass: string = \"toolbar_hide\";\r\n\r\n /**\r\n * Inicializa uma nova instância de Toolbar.\r\n *\r\n * @param {HTMLElement} element O elemento da barra de ferramentas.\r\n */\r\n constructor(element: HTMLElement) {\r\n if (!element) {\r\n throw new Error(\"O primeiro argumento deve ser fornecido.\");\r\n }\r\n\r\n let lastScrollTop: number = 0;\r\n\r\n window.addEventListener(\"scroll\", () => {\r\n const scrollTop: number = document.documentElement.scrollTop;\r\n\r\n if (scrollTop > element.clientHeight && scrollTop > lastScrollTop) {\r\n element.classList.add(Toolbar._toolbarHideClass);\r\n } else {\r\n element.classList.remove(Toolbar._toolbarHideClass);\r\n }\r\n\r\n lastScrollTop = scrollTop;\r\n });\r\n }\r\n}\r\n\r\n// inicializa uma nova instância de Toolbar, a partir do atributo HTML \"x-role\".\r\ndocument.querySelectorAll(\"[x-role='toolbar']\").forEach((element: HTMLElement): void => {\r\n new Toolbar(element);\r\n});\r\n"]}