/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@rtstic.dev/ascent-floorplan@1.0.8/dist/floorplan.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const TAB_QS_KEY="tab",RES_QS_KEY="residence";function updateTabQuery(e,{replace:t=!0}={}){try{const a=new URL(window.location.href);if(a.searchParams.get("tab")===e)return;a.searchParams.set("tab",e),t?window.history.replaceState(null,"",a):window.history.pushState(null,"",a)}catch(e){console.warn("Failed to update URL query param for tab:",e)}}function getTabFromQuery(){try{const e=new URL(window.location.href).searchParams.get("tab");return e&&e.trim()?e:null}catch(e){return console.warn("Failed to read URL query param for tab:",e),null}}function updateResidenceQuery(e,{replace:t=!0}={}){try{const a=new URL(window.location.href);if(a.searchParams.get(RES_QS_KEY)===e)return;e&&e.trim()?a.searchParams.set(RES_QS_KEY,e):a.searchParams.delete(RES_QS_KEY),t?window.history.replaceState(null,"",a):window.history.pushState(null,"",a)}catch(e){console.warn("Failed to update URL query param for residence:",e)}}function getResidenceFromQuery(){try{const e=new URL(window.location.href).searchParams.get(RES_QS_KEY);return e&&e.trim()?e:null}catch(e){return console.warn("Failed to read URL query param for residence:",e),null}}function initActiveTabFromQuery({delayMs:e=200,fallback:t=null}={}){setTimeout((()=>{const e=getTabFromQuery();e?setActiveTab(e):t&&setActiveTab(t)}),e)}function initActiveResidenceFromQuery({delayMs:e=200}={}){setTimeout((()=>{const e=getResidenceFromQuery();if(!e)return;const t=Array.isArray(window.masterFloorplanData)?window.masterFloorplanData.find((t=>t.id===e)):null;t?setActiveResidence(t,{updateQS:!1}):console.warn(`Residence id "${e}" from query not found in master data.`)}),e)}function setSelectedResidenceSVG(e){if(!(e&&e instanceof Element))return void console.error("setSelectedResidenceSVG expects a valid HTML element.");const t=document.querySelectorAll("g.clickable");t.length?(t.forEach((e=>e.classList.remove("selected"))),e.classList.add("selected")):console.warn('No <g> elements found with class "clickable".')}function setActiveResidence(e,{updateQS:t=!0}={}){let a=e;"string"==typeof e&&(a=Array.isArray(window.masterFloorplanData)?window.masterFloorplanData.find((t=>t.id===e)):null),a&&a.floorPlanEl&&a.id?(setSelectedResidenceSVG(a.floorPlanEl),showSelectedResidenceDetail(a.id),t&&updateResidenceQuery(a.id,{replace:!0})):console.warn("setActiveResidence could not resolve a valid master item with floorPlanEl and id.")}function showSelectedResidenceDetail(e){document.querySelectorAll("[data-fp-detail-selected]").forEach((e=>e.setAttribute("data-fp-detail-selected","false")));const t=document.querySelector(`[data-fp-detail="${e}"]`);if(t){t.setAttribute("data-fp-detail-selected","true");const e=document.querySelector("[data-fp-detail-section-anchor]");e&&setTimeout((()=>{e.scrollIntoView({behavior:"smooth",block:"start"})}),200)}}function setActiveGroupSVG(e){if(!e||"string"!=typeof e)return void console.error("setActiveGroupSVG requires a valid groupName string.");const t=document.querySelectorAll("g.unit-group");t.length?t.forEach((t=>{(t.getAttribute("data-name")||"").trim()===e.trim()?t.classList.add("active"):t.classList.remove("active")})):console.warn('No <g> elements found with class "unit-group".')}function highlightActiveGroup(e){const t=document.querySelectorAll("[data-fp-group-name]");t.length?e&&"string"==typeof e?t.forEach((t=>{(t.getAttribute("data-fp-group-name")||"").trim()===e.trim()?t.setAttribute("data-fp-selected","true"):t.setAttribute("data-fp-selected","false")})):console.error("Invalid groupName provided to highlightActiveGroup. Expected a non-empty string."):console.warn("No elements found with [data-fp-group-name].")}function resetSelectedResidenceSVG(){const e=document.querySelectorAll("g.clickable");e.length?e.forEach((e=>e.classList.remove("selected"))):console.warn('No <g> elements found with class "clickable" to reset.')}function hideSelectedResidenceDetail(){const e=document.querySelectorAll("[data-fp-detail-selected]");e.length?e.forEach((e=>e.setAttribute("data-fp-detail-selected","false"))):console.warn("No elements found with data-fp-detail-selected attribute.")}function resetResidenceQuery(){const e=new URL(window.location);e.searchParams.delete("residence"),window.history.replaceState({},"",e)}function resetActiveResidences(){resetSelectedResidenceSVG(),hideSelectedResidenceDetail(),resetResidenceQuery()}function collectUnitDataFromSVG(){const e=document.getElementById("floorplan").querySelectorAll("g.unit.clickable");return Array.from(e).map((e=>{const t=e.closest("g.unit-group");return{id:e.id||null,Name:e.getAttribute("data-name")||null,isSold:e.classList.contains("sold"),groupName:t&&t.getAttribute("data-name")||null,groupId:t&&t.getAttribute("id")||null}}))}function collectUnitDataFromCMS(){const e=document.querySelectorAll("[data-fp-id]");return e.length?Array.from(e).map((e=>{const t=e.getAttribute("data-fp-id"),a=e.getAttribute("data-fp-name"),n=e.getAttribute("data-fp-group-name"),o=e.getAttribute("data-fp-project"),r=e.getAttribute("data-fp-soldout");let l=null;return null===r?console.warn(`CMS element with ID "${t}" missing data-fp-soldout attribute.`):"true"===r.toLowerCase()?l=!0:"false"===r.toLowerCase()?l=!1:console.error(`Invalid data-fp-soldout value for ID "${t}": expected "true" or "false", got "${r}".`),t||console.warn("CMS element missing data-fp-id:",e),a||console.warn(`CMS element ${t} missing data-fp-name.`),n||console.warn(`CMS element ${t} missing data-fp-group-name.`),o||console.warn(`CMS element ${t} missing data-fp-project.`),{dataName:a||null,groupName:n||null,project:o||null,id:t||null,isSold:l}})):(console.warn("No CMS elements found with [data-fp-id]."),[])}function buildMasterFloorplanData(){const e=Array.isArray(window.floorplanDataFromSVG)?window.floorplanDataFromSVG:[],t=Array.isArray(window.floorplanDataFromCMS)?window.floorplanDataFromCMS:[],a=new Map(e.map((e=>[e.id,e]))),n=new Map(t.map((e=>[e.id,e]))),o=new Set([...a.keys(),...n.keys()]),r=[],l=[],i=[],s=[],c=[],d=e=>(e??"").trim();return o.forEach((e=>{const t=a.get(e),o=n.get(e);if(t&&!o)return void r.push(e);if(!t&&o)return void l.push(e);if(d(t.groupName)!==d(o.groupName))return void i.push({id:e,svgGroupName:t.groupName??null,cmsGroupName:o.groupName??null});const u=(e=>{if(!e)return null;const t=document.getElementById(e);if(t&&t.tagName&&"g"===t.tagName.toLowerCase())return t;let a=e;try{window.CSS&&"function"==typeof CSS.escape&&(a=CSS.escape(e))}catch(e){}return document.querySelector(`g#${a}, g[id="${e}"]`)||t||null})(e);u||s.push(e),c.push({id:e,isSold:o.isSold??null,groupName:o.groupName??null,floorPlanEl:u,dataFromSVG:{...t},dataFromCMS:{...o}})})),r.length&&console.warn("Ids present only in SVG:",r),l.length&&console.warn("Ids present only in CMS:",l),i.length&&console.warn("Ids with groupName mismatch:",i),s.length&&console.warn("Ids with no matching <g> element found in DOM:",s),window.masterFloorplanData=c,c}function consoleSVGs(){const e=document.querySelectorAll("g.clickable"),t=document.querySelectorAll("[data-fp-id]");e.forEach((e=>{e.addEventListener("click",(()=>{const t=e.id,a=(window.floorplanDataFromSVG?.find((e=>e.id===t)),window.floorplanDataFromCMS?.find((e=>e.id===t)),window.masterFloorplanData?.find((e=>e.id===t))),n=a&&a.groupName;a&&a.floorPlanEl&&setActiveResidence(a),n&&setActiveTab(n)}))})),t.forEach((e=>{e.addEventListener("click",(()=>{const t=e.getAttribute("data-fp-id"),a=(window.floorplanDataFromSVG?.find((e=>e.id===t)),window.floorplanDataFromCMS?.find((e=>e.id===t)),window.masterFloorplanData?.find((e=>e.id===t))),n=a&&a.groupName;a&&a.floorPlanEl&&setActiveResidence(a),n&&setActiveTab(n)}))}))}window.addEventListener("popstate",(()=>{const e=getTabFromQuery();e&&setActiveTab(e);const t=getResidenceFromQuery();if(t&&Array.isArray(window.masterFloorplanData)){const e=window.masterFloorplanData.find((e=>e.id===t));e&&setActiveResidence(e,{updateQS:!1})}}));let _activeTabLock=!1;function initFloorPlanTabs(){const e=document.querySelectorAll("[data-fp-tablink]");e.length?e.forEach((e=>{e.addEventListener("click",(()=>{const t=e.getAttribute("data-fp-tablink");t?(setActiveTab(t),resetActiveResidences()):console.warn("Element missing data-fp-tablink attribute:",e)}))})):console.warn("No elements found with [data-fp-tablink].")}function setActiveTab(e){if(!e||"string"!=typeof e)return void console.error("setActiveTab requires a non empty string.");if(_activeTabLock)return;const t=document.querySelectorAll("[data-fp-tablink]");if(!t.length)return void console.warn("No tabs found with [data-fp-tablink].");const a=Array.from(t).find((e=>"true"===e.getAttribute("data-fp-tablink-active")));if(a&&a.getAttribute("data-fp-tablink")===e)return;let n=null;_activeTabLock=!0;try{if(t.forEach((t=>{const a=t.getAttribute("data-fp-tablink");a===e&&(n=t),t.setAttribute("data-fp-tablink-active",a===e?"true":"false")})),!n)return void console.warn(`No tab found with data-fp-tablink="${e}".`);highlightActiveGroup(e),setActiveGroupSVG(e),updateTabQuery(e,{replace:!0})}finally{_activeTabLock=!1}}function initializeSoldResidentsFromCMS(){if(!Array.isArray(window.masterFloorplanData)||!window.masterFloorplanData.length)return void console.warn("Master floorplan data is missing or empty. Cannot initialize sold residences.");const e=document.querySelectorAll("g.clickable");e.length?e.forEach((e=>e.classList.remove("sold"))):console.warn('No <g> elements found with class "clickable".'),window.masterFloorplanData.forEach((e=>{e.isSold&&e.floorPlanEl instanceof Element&&e.floorPlanEl.classList.add("sold")}))}function loadFloorPlan(){fetch("https://cdn.jsdelivr.net/npm/@rtstic.dev/ascent-floorplan@1.0.3/dist/floorplan.svg").then((e=>e.text())).then((e=>{document.getElementById("floorplan").innerHTML=e,setTimeout((()=>{window.floorplanDataFromSVG=collectUnitDataFromSVG(),window.floorplanDataFromCMS=collectUnitDataFromCMS(),window.masterFloorplanData=buildMasterFloorplanData(),consoleSVGs(),initFloorPlanTabs(),initActiveTabFromQuery({delayMs:200,fallback:"1 BEDROOM + DEN"}),initActiveResidenceFromQuery({delayMs:200}),initializeSoldResidentsFromCMS()}),200)})).catch((e=>console.error("Error loading SVG:",e)))}document.addEventListener("DOMContentLoaded",(()=>{loadFloorPlan()})),document.addEventListener("DOMContentLoaded",(()=>{const e=document.querySelectorAll("[data-navigator-share]");e.length&&e.forEach((e=>{e.addEventListener("click",(async t=>{t.preventDefault();const a=function(e){let t=e;for(;t;){const e=t.querySelector("a.button[href]");if(e)return e;t=t.parentElement}return null}(e);if(!a||!a.href)return void alert("No shareable link found near this button.");const n=a.href;try{if(navigator.share)return void await navigator.share({url:n});alert("Sharing not supported. Copy this link: "+n)}catch(e){console.error("Error during share:",e)}}))}))}));
//# sourceMappingURL=/sm/3be09dde2156804a7672efd064f8d8549c9b22206770aac4795cee46544fbc42.map