\n \n{/if}\n","\n\n\n\n\n \n {@html message}\n \n\n","import Notification from './Notification.svelte'\nimport NotificationNotice from './NotificationNotice.svelte'\n\nNotification.create = create\n\nexport default Notification\n\nexport function create(props) {\n if (typeof props === 'string') props = { message: props }\n\n const notification = new NotificationNotice({\n target: document.body,\n props,\n intro: true,\n })\n\n notification.$on('destroyed', notification.$destroy)\n\n return notification\n}\n","\n\n\n\n\n
\n
\n {@html message}\n
\n\n {#if actionText}\n
\n \n
\n {/if}\n
\n\n","import Snackbar from './Snackbar.svelte'\n\nSnackbar.create = create\n\nexport default Snackbar\n\nexport function create(props) {\n if (typeof props === 'string') props = { message: props }\n\n const snackbar = new Snackbar({\n target: document.body,\n props,\n intro: true,\n });\n\n snackbar.$on('destroyed', snackbar.$destroy)\n\n return snackbar;\n}","\n\n\n\n\n
\n
\n {@html message}\n
\n
\n\n","import Toast from './Toast.svelte'\n\nToast.create = create\n\nexport default Toast\n\nexport function create(props) {\n if (typeof props === 'string') props = { message: props }\n\n const toast = new Toast({\n target: document.body,\n props,\n intro: true,\n });\n\n toast.$on('destroyed', toast.$destroy)\n\n return toast;\n}","\n\n\n\n
\n\t\n\t\n
\n","function h(s, t, e) {\n s.insertBefore(t, e || null);\n}\nfunction d(s) {\n s.parentNode && s.parentNode.removeChild(s);\n}\nfunction u(s) {\n const t = {};\n for (const r in s)\n t[r] = [e(s[r])];\n function e(r) {\n return function() {\n return {\n c: function() {\n },\n // noop\n m: function(n, i) {\n h(n, r.cloneNode(!0), i);\n },\n d: function(n) {\n n && d(r);\n },\n l: function() {\n }\n // noop\n };\n };\n }\n return t;\n}\nfunction a(s) {\n let t = s.parentElement;\n for (; t; ) {\n if (t.tagName.indexOf(\"-\") !== -1)\n return t;\n t = t.parentElement;\n }\n return null;\n}\nfunction c(s) {\n let t = document.createDocumentFragment();\n for (; s.firstChild; )\n t.appendChild(s.firstChild);\n return t;\n}\nconst l = /* @__PURE__ */ new Map(), f = new MutationObserver((s) => {\n s.forEach((t) => {\n const e = t.target, r = t.attributeName, o = e.getAttribute(r);\n e.forwardAttributeToProp(r, o);\n });\n});\nfunction g(s) {\n let t = document.querySelectorAll(\"[data-svelte-retag-render]\");\n if (t.length !== 0)\n for (let e of t)\n e.isConnected && e.parentElement.closest('[data-svelte-retag-render=\"light\"]') === null && (e.removeAttribute(\"data-svelte-retag-render\"), e._renderSvelteComponent());\n}\nfunction m(s) {\n window.customElements.get(\"svelte-retag\") || (window.customElements.define(\"svelte-retag\", class extends HTMLElement {\n // noop\n }), window.customElements.define(\"svelte-retag-default\", class extends HTMLElement {\n // noop\n })), window.customElements.define(s.tagname, class extends HTMLElement {\n constructor() {\n if (super(), this._debug(\"constructor()\"), this.attributesObserved = !1, s.shadow && (this.attachShadow({ mode: \"open\" }), this._root = document.createElement(\"svelte-retag\"), this.shadowRoot.appendChild(this._root), s.href)) {\n let t = document.createElement(\"link\");\n t.setAttribute(\"href\", s.href), t.setAttribute(\"rel\", \"stylesheet\"), this.shadowRoot.appendChild(t);\n }\n }\n /**\n * Attributes we're watching for changes after render (doesn't affect attributes already present prior to render).\n *\n * NOTE: This only applies if opts.attributes is an array. If opts.attributes is true, then all attributes are\n * watched using the mutation observer instead.\n *\n * @returns string[]\n */\n static get observedAttributes() {\n return Array.isArray(s.attributes) ? s.attributes : [];\n }\n /**\n * Attached to DOM.\n */\n connectedCallback() {\n this._debug(\"connectedCallback()\"), this.slotEls = {};\n const t = document.readyState === \"loading\";\n if (!s.shadow)\n if (this.hasAttribute(\"data-svelte-retag-hydratable\"))\n if (t) {\n this._onSlotsReady(() => {\n this._initLightRoot(), this._hydrateLightSlots(), this._queueForRender();\n });\n return;\n } else\n this._initLightRoot(), this._hydrateLightSlots();\n else\n this._initLightRoot();\n s.shadow ? this._observeSlots(!0) : t && (this._observeSlots(!0), this._onSlotsReady(() => {\n this._observeSlots(!1);\n })), this._queueForRender(), s.hydratable && this.setAttribute(\"data-svelte-retag-hydratable\", \"\");\n }\n /**\n * Removed from DOM (could be called inside another custom element that starts rendering after this one). In that\n * situation, the connectedCallback() will be executed again (most likely with constructor() as well, unfortunately).\n */\n disconnectedCallback() {\n if (this._debug(\"disconnectedCallback()\"), this.removeAttribute(\"data-svelte-retag-render\"), this.removeAttribute(\"data-svelte-retag-hydratable\"), this._observeSlots(!1), this.componentInstance)\n try {\n this.componentInstance.$destroy(), delete this.componentInstance;\n } catch (t) {\n console.error(`Error destroying Svelte component in '${this.tagName}'s disconnectedCallback(): ${t}`);\n }\n s.shadow || (this._restoreLightSlots(), this.removeChild(this._root));\n }\n /**\n * Callback/hook for observedAttributes.\n *\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(t, e, r) {\n this._debug(\"attributes changed\", { name: t, oldValue: e, newValue: r }), this.forwardAttributeToProp(t, r);\n }\n /**\n * Forward modifications to element attributes to the corresponding Svelte prop (if applicable).\n *\n * @param {string} name\n * @param {string} value\n */\n forwardAttributeToProp(t, e) {\n if (this._debug(\"forwardAttributeToProp\", { name: t, value: e }), this.componentInstance) {\n let r = this._translateAttribute(t);\n this.componentInstance.$set({ [r]: e });\n }\n }\n /**\n * Setup a wrapper in the light DOM which can keep the rendered Svelte component separate from the default Slot\n * content, which is potentially being actively appended (at least while the browser parses during loading).\n */\n _initLightRoot() {\n let t = this.querySelector(\"svelte-retag\");\n t !== null && t.parentElement === this ? (this._debug(\"_initLightRoot(): Restore from existing light DOM root\"), this._root = t) : (this._root = document.createElement(\"svelte-retag\"), this.prepend(this._root));\n }\n /**\n * Queues the provided callback to execute when we think all slots are fully loaded and available to fetch and\n * manipulate.\n *\n * @param {callback} callback\n */\n _onSlotsReady(t) {\n document.addEventListener(\"readystatechange\", () => {\n document.readyState === \"interactive\" && t();\n });\n }\n /**\n * Converts the provided lowercase attribute name to the correct case-sensitive component prop name, if possible.\n *\n * @param {string} attributeName\n * @returns {string}\n */\n _translateAttribute(t) {\n return t = t.toLowerCase(), this.propMap && this.propMap.has(t) ? this.propMap.get(t) : (this._debug(`_translateAttribute(): ${t} not found`), t);\n }\n /**\n * To support context, this traverses the DOM to find potential parent elements (also managed by svelte-retag) which\n * may contain context necessary to render this component.\n *\n * See context functions at: https://svelte.dev/docs/svelte#setcontext\n *\n * @returns {Map|null}\n */\n _getAncestorContext() {\n var e, r;\n let t = this;\n for (; t.parentNode; ) {\n t = t.parentNode;\n let o = (r = (e = t == null ? void 0 : t.componentInstance) == null ? void 0 : e.$$) == null ? void 0 : r.context;\n if (o instanceof Map)\n return o;\n }\n return null;\n }\n /**\n * Queue this element for render in the next animation frame. This offers the opportunity to render known available\n * elements all at once and, ideally, from the top down (to preserve context).\n */\n _queueForRender() {\n if (!this.isConnected) {\n this._debug(\"queueForRender(): skipped, already disconnected\");\n return;\n }\n if (this.parentElement.closest('[data-svelte-retag-render=\"light\"]') !== null) {\n this._debug(\"queueForRender(): skipped, light DOM parent is queued for render\");\n return;\n }\n this.setAttribute(\"data-svelte-retag-render\", s.shadow ? \"shadow\" : \"light\"), requestAnimationFrame(g);\n }\n /**\n * Renders (or rerenders) the Svelte component into this custom element based on the latest properties and slots\n * (with slots initialized elsewhere).\n *\n * IMPORTANT:\n *\n * Despite the intuitive name, this method is private since its functionality requires a deeper understanding\n * of how it depends on current internal state and how it alters internal state. Be sure to study how it's called\n * before calling it yourself externally. (\"Yarrr! Here be dragons! 🔥🐉\")\n *\n * That said... this is currently the workflow:\n *\n * 1. Wait for connection to DOM\n * 2. Ensure slots are properly prepared (e.g. in case of hydration) or observed (in case actively parsing DOM, e.g.\n * IIFE/UMD or shadow DOM) in case there are any changes *after* this render\n * 3. _queueForRender(): Kick off to requestAnimationFrame() to queue render of the component (instead of rendering\n * immediately) to ensure that all currently connected and available components are taken into account (this is\n * necessary for properly supporting context to prevent from initializing components out of order).\n * 4. renderElements(): Renders through the DOM tree in document order and from the top down (parent to child),\n * reaching this element instantiating this component, ensuring context is preserved.\n *\n */\n _renderSvelteComponent() {\n this._debug(\"renderSvelteComponent()\"), s.shadow ? this.slotEls = this._getShadowSlots() : this.slotEls = this._getLightSlots(), this._root.innerHTML = \"\";\n const t = this._getAncestorContext() || /* @__PURE__ */ new Map();\n let e = {\n $$scope: {},\n // Convert our list of slots into Svelte-specific slot objects\n $$slots: u(this.slotEls)\n // All other *initial* props are pulled dynamically from element attributes (see proxy below)...\n };\n if (!l.has(this.tagName))\n this.propMap = /* @__PURE__ */ new Map(), l.set(this.tagName, this.propMap), e = new Proxy(e, {\n get: (r, o) => {\n let n = o.toString();\n o.indexOf(\"$$\") === -1 && this.propMap.set(n.toLowerCase(), n);\n let i = this.attributes.getNamedItem(n);\n return i !== null ? r[n] = i.value : r[o];\n }\n });\n else {\n this.propMap = l.get(this.tagName);\n for (let r of [...this.attributes])\n r.name.indexOf(\"data-svelte-retag\") === -1 && (e[this._translateAttribute(r.name)] = r.value);\n }\n this.componentInstance = new s.component({ target: this._root, props: e, context: t }), s.attributes === !0 && !this.attributesObserved && (this.attributesObserved = !0, this.propMap.size > 0 ? f.observe(this, {\n attributes: !0,\n // implicit, but... 🤷♂️\n attributeFilter: [...this.propMap.keys()]\n }) : this._debug(\"renderSvelteComponent(): skipped attribute observer, no props\")), this._debug(\"renderSvelteComponent(): completed\");\n }\n /**\n * Fetches slots from pre-rendered Svelte component HTML using special markers (either data attributes or custom\n * wrappers). Note that this will only work during initialization and only if the Svelte retag instance is\n * hydratable.\n */\n _hydrateLightSlots() {\n let t = this._root.querySelectorAll(\"[data-svelte-retag-slot]\");\n for (let r of t) {\n if (a(r) !== this._root)\n continue;\n let n = r.getAttribute(\"slot\");\n this.slotEls[n] = r;\n }\n let e = this.querySelector(\"svelte-retag-default\");\n return e !== null && (this.slotEls.default = e), this._restoreLightSlots(), !0;\n }\n /**\n * Indicates if the provided element instance belongs to this custom element or not.\n *\n * @param {Element} slot\n * @returns {boolean}\n */\n _isOwnSlot(t) {\n let e = a(t);\n return e === null ? !1 : e === this;\n }\n /**\n * Returns a map of slot names and the corresponding HTMLElement (named slots) or DocumentFragment (default slots).\n *\n * IMPORTANT: Since this custom element is the \"root\", these slots must be removed (which is done in THIS method).\n *\n * TODO: Problematic name. We are \"getting\" but we're also mangling/mutating state (which *is* necessary). \"Get\" may be confusing here; is there a better name?\n *\n * @returns {SlotList}\n */\n _getLightSlots() {\n this._debug(\"_getLightSlots()\");\n let t = {};\n const e = this.querySelectorAll(\"[slot]\");\n for (let i of e)\n this._isOwnSlot(i) && (t[i.slot] = i, s.hydratable && i.setAttribute(\"data-svelte-retag-slot\", \"\"), this.removeChild(i));\n let r = document.createDocumentFragment();\n s.hydratable && (r = document.createElement(\"svelte-retag-default\"));\n let o = [...this.childNodes], n = \"\";\n for (let i of o) {\n if (i instanceof HTMLElement && i.tagName === \"SVELTE-RETAG\") {\n this._debug(\"_getLightSlots(): skipping container\");\n continue;\n }\n i instanceof Text ? n += i.textContent : i.outerHTML && (n += i.outerHTML), r.appendChild(i);\n }\n return n.trim() !== \"\" && (t.default ? console.error(`svelteRetag: '${this.tagName}': Found elements without slot attribute when using slot=\"default\"`) : t.default = r), t;\n }\n /**\n * Go through originally removed slots and restore back to the custom element.\n */\n _restoreLightSlots() {\n this._debug(\"_restoreLightSlots:\", this.slotEls);\n for (let t in this.slotEls) {\n let e = this.slotEls[t];\n e.tagName === \"SVELTE-RETAG-DEFAULT\" ? this.prepend(c(e)) : (this.prepend(e), e instanceof HTMLElement && e.hasAttribute(\"data-svelte-retag-slot\") && e.removeAttribute(\"data-svelte-retag-slot\"));\n }\n this.slotEls = {};\n }\n /**\n * Fetches and returns references to the existing shadow DOM slots. Left unmodified.\n *\n * @returns {SlotList}\n */\n _getShadowSlots() {\n this._debug(\"_getShadowSlots()\");\n const t = this.querySelectorAll(\"[slot]\");\n let e = {}, r = this.innerHTML.length;\n return t.forEach((o) => {\n e[o.slot] = document.createElement(\"slot\"), e[o.slot].setAttribute(\"name\", o.slot), r -= o.outerHTML.length;\n }), r > 0 && (e.default = document.createElement(\"slot\")), e;\n }\n /**\n * Toggle on/off the MutationObserver used to watch for changes in child slots.\n */\n _observeSlots(t) {\n t !== this.slotObserverActive && (this.slotObserver || (this.slotObserver = new MutationObserver((e) => {\n this._processSlotMutations(e);\n })), t ? (this.slotObserver.observe(this, { childList: !0, subtree: !1, attributes: !1 }), this._debug(\"_observeSlots: OBSERVE\")) : (this.slotObserver.disconnect(), this._debug(\"_observeSlots: DISCONNECT\")), this.slotObserverActive = t);\n }\n /**\n * Watches for slot changes, specifically:\n *\n * 1. Shadow DOM: All slot changes will queue a rerender of the Svelte component\n *\n * 2. Light DOM: Only additions will be accounted for. This is particularly because currently we only support\n * watching for changes during document parsing (i.e. document.readyState === 'loading', prior to the\n * 'DOMContentLoaded' event.\n *\n * @param {MutationRecord[]} mutations\n */\n _processSlotMutations(t) {\n this._debug(\"_processSlotMutations()\", t);\n let e = !1;\n for (let r of t)\n if (r.type === \"childList\") {\n if (s.shadow) {\n e = !0;\n break;\n } else if (r.addedNodes.length > 0) {\n e = !0;\n break;\n }\n }\n e && (s.shadow || (this._observeSlots(!1), this._restoreLightSlots(), this._observeSlots(!0)), this._debug(\"_processMutations(): Queue rerender\"), this._queueForRender());\n }\n /**\n * Pass through to console.log() but includes a reference to the custom element in the log for easier targeting for\n * debugging purposes.\n *\n * @param {...*}\n */\n _debug() {\n s.debugMode && (s.debugMode === \"cli\" ? console.log.apply(null, [performance.now(), this.tagName, ...arguments]) : console.log.apply(null, [performance.now(), this, ...arguments]));\n }\n });\n}\nfunction b() {\n document.querySelector(\"bluc-map\") != null && import(\"./bluc-map-V5jWel-1.js\").then((s) => {\n m({\n component: s.default,\n tagname: \"bluc-map\"\n });\n });\n}\nexport {\n b as initializeMaps\n};\n//# sourceMappingURL=bluc-map.js.map\n","import \"../Styles/index.scss\";\nimport \"@ungap/custom-elements\";\n\nimport FontFaceObserver from \"fontfaceobserver\";\nimport { balanceText } from \"balanced-text\";\n\nif (window.innerWidth > 768) {\n\t// wait on font before balancing\n\tnew FontFaceObserver(\"Harabara Mais\").load().then(_ => {\n\t\tbalanceText({\n\t\t\twatch: true,\n\t\t\tdebounce: 200,\n\t\t\tlazyBalance: false,\n\t\t\tdisableWait: false\n\t\t});\n\t});\n}\n\nimport mediumZoom from \"@wagich/medium-zoom\";\nconst zoomOptions = {\n\tbackground: \"rgba(143,144,148,0.8)\",\n\tmargin: Math.max(window.innerHeight, window.innerWidth) * 0.025, // 2.5vmax\n};\nlet zoom = mediumZoom(\".asset.is-zoomable\", zoomOptions);\n\nimport component from \"svelte-tag\";\nimport ContactForm from \"./contact-form.svelte\";\nnew component({ component: ContactForm, tagname: \"contact-form\", attributes: [\"buttontext\"] });\n\nimport { initializeMaps } from \"@wagich/bluc-map\";\ninitializeMaps();\n\nlet headerMenu = document.querySelector(\".header-menu\");\nif (headerMenu != null) {\n\tdocument.body.style.setProperty(\"--menu-size\", `${Math.max(headerMenu.clientWidth, headerMenu.clientHeight) * 1.2}px`);\n\n\tlet btnMenuOpen = document.getElementById(\"btnMenuOpen\");\n\tbtnMenuOpen?.addEventListener(\"click\", () => {\n\t\tdocument.body.classList.add(\"is-menu-open\");\n\t});\n\n\tlet btnMenuClose = document.getElementById(\"btnMenuClose\");\n\tbtnMenuClose?.addEventListener(\"click\", () => {\n\t\tdocument.body.classList.remove(\"is-menu-open\");\n\t});\n}\n\nfunction setViewportProperty(doc: HTMLElement) {\n\tlet prevClientHeight = 0;\n\n\tfunction handleResize() {\n\t\tvar clientHeight = doc.clientHeight;\n\t\tif (clientHeight === prevClientHeight) return;\n\t\trequestAnimationFrame(function updateViewportHeight() {\n\t\t\tdoc.style.setProperty(\"--vh\", (clientHeight * 0.01) + 'px');\n\t\t\tprevClientHeight = clientHeight;\n\t\t});\n\t}\n\thandleResize();\n\n\treturn handleResize;\n}\nwindow.addEventListener(\"resize\", setViewportProperty(document.documentElement));\n"],"file":"assets/main-Ba4w5eqZ.js"}