{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/adp-eli-visual-configure.js?verify=basincolor"],
  "sourcesContent": ["/* CURRENT CANONICAL Eli visual configurator. All active Eli visual changes go here. */\n(function () {\n  'use strict';\n\n  function esc(value) {\n    return String(value == null ? '' : value).replace(/[&<>\"']/g, function (c) {\n      return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];\n    });\n  }\n\n  function money(value) {\n    return new Intl.NumberFormat('en-AU', { style: 'currency', currency: 'AUD', maximumFractionDigits: 0 }).format(Number(value || 0));\n  }\n\n  function init() {\n    var root = document.querySelector('[data-adp-eli-visual-configure]');\n    var groupsHost = document.querySelector('[data-adp-eli-visual-groups]');\n    var detailHero = document.querySelector('[data-adp-eli-configure-hero]');\n    var baseStrip = document.querySelector('[data-adp-eli-base-strip]');\n    var baseStripText = document.querySelector('[data-adp-eli-base-strip-text]');\n    var baseStripDepth = document.querySelector('[data-adp-eli-base-strip-depth]');\n    var baseStripPrice = document.querySelector('[data-adp-eli-base-strip-price]');\n    var baseStripSku = document.querySelector('[data-adp-eli-base-strip-sku]');\n    var baseStripChoices = document.querySelector('[data-adp-eli-base-strip-choices]');\n    var baseText = document.querySelector('[data-adp-eli-visual-base]');\n    var priceText = document.querySelector('[data-adp-eli-visual-price]');\n    var changeBase = document.querySelector('[data-adp-eli-change-base]');\n    var continueQuote = document.querySelector('[data-adp-eli-continue-quote]');\n    var quoteSection = document.querySelector('.adp-eli-five__quiet--support');\n    var describeStage = document.querySelector('.adp-eli-five__quiet--config');\n    var manualDetails = document.querySelector('.adp-eli-five__manual');\n    var cfg = document.querySelector('[data-adp-eli-configurator]');\n    var data = window.ADPEliConfiguratorData;\n\n    if (!root || !groupsHost || !detailHero || !cfg || !data) return;\n\n    document.documentElement.classList.add('adp-eli-private-page-active');\n\n    var baseStripAnchor = document.createElement('div');\n    baseStripAnchor.className = 'adp-eli-five__base-strip-anchor';\n    if (baseStrip && baseStrip.parentNode) baseStrip.parentNode.insertBefore(baseStripAnchor, baseStrip);\n\n    var state = {\n      base: null,\n      baseValues: null,\n      choices: {},\n      expanded: {},\n      explicitNone: {}\n    };\n\n    var GROUPS = [\n      { field: 'cabinet_finish', list: 'cabinet_finishes', title: 'Cabinet finish', note: 'This is the largest visible surface on the vanity.', limit: 8, image: true },\n      { field: 'top_finish', list: 'top_finishes', title: 'Benchtop finish', note: 'Choose No benchtop or any ADP benchtop finish. You can change this choice here at any time.', limit: 8, image: true, topOnly: true },\n      { field: 'statement_top', list: 'statement_tops', title: 'Benchtop upgrade', note: 'Statement: 40, 60 or 90 mm. Royale: 60 mm, Durasein only. Choose one upgrade or standard thickness.', limit: 10, image: true, allowNone: true, noneLabel: 'Standard thickness', topOnly: true },\n      { field: 'basin', list: 'basins', title: 'Basin', note: 'ADP basins are sold separately. Double-bowl configurations use two matching basins.', limit: 8, image: true, allowNone: true, noneLabel: 'No basin supplied' },\n      { field: 'waste', list: 'wastes', title: 'Plug & waste', note: 'Chrome is supplied with the vanity. Other finishes are an upgrade; double-bowl configurations include two.', limit: 10, image: true },\n      { field: 'power_point', list: 'power_points', title: 'In-drawer power', note: 'Optional power point inside the vanity drawer.', limit: 10, image: true, allowNone: true, noneLabel: 'No power point' },\n      { field: 'tap_hole', list: 'tap_holes', title: 'Tap-hole drilling', note: 'Choose the benchtop drilling. Clock positions are read from the basin as the reference.', limit: 10, image: false, topOnly: true }\n    ];\n    var statementIndex = GROUPS.findIndex(function (group) { return group.field === 'statement_top'; });\n    if (statementIndex !== 2 && statementIndex >= 0) {\n      var statementGroup = GROUPS.splice(statementIndex, 1)[0];\n      GROUPS.splice(2, 0, statementGroup);\n    }\n    window.OZBEliPrivateVisualBuild = '2026-09-20-2317-fix';\n\n    function baseLabel(v) {\n      if (!v) return '';\n      var mount = v.mounting === 'wall-hung' ? 'Wall hung' : 'Floor mount';\n      var layout = {centre:'Centre bowl',left:'Left offset',right:'Right offset',double:'Double bowl'}[v.layout] || v.layout;\n      var top = v.top_mode === 'cabinet-only' ? 'Cabinet only \u2014 no ADP benchtop' : 'With benchtop';\n      return v.width + ' mm \u00B7 ' + mount + ' \u00B7 ' + layout + ' \u00B7 ' + top;\n    }\n\n    function syncBaseSummary() {\n      if (!state.base) return;\n      var requestedDepth = (state.choices && state.choices.requested_depth) || (state.baseValues && state.baseValues.requested_depth) || state.base.depth || 'full-depth';\n      var depthMm = state.base.depth_mm || (requestedDepth === 'ensuite' ? 395 : 500);\n      var basePrice = state.base.quote_only || requestedDepth === 'ensuite' ? 'Quote required' : money(state.base.price);\n      var baseSku = state.base.quote_only || requestedDepth === 'ensuite' ? 'ADP Ensuite line' : (state.base.sku || '\u2014');\n      var label = baseLabel(state.base);\n      var stripLabel = label + ' \u00B7 ' + depthMm + ' mm deep';\n      if (baseText) baseText.textContent = label;\n      if (baseStripText) baseStripText.textContent = stripLabel;\n      if (baseStripDepth) baseStripDepth.textContent = depthMm + ' mm';\n      if (baseStripPrice) baseStripPrice.textContent = '\u2014';\n      if (baseStripSku) baseStripSku.textContent = baseSku;\n    }\n\n    function baseForTopMode(topMode) {\n      if (!state.base) return null;\n      var match = (data.variants || []).find(function (variant) {\n        return variant.mounting === state.base.mounting &&\n          Number(variant.width) === Number(state.base.width) &&\n          variant.layout === state.base.layout &&\n          variant.top_mode === topMode;\n      });\n      if (!match) return null;\n      var requestedDepth = (state.choices && state.choices.requested_depth) || (state.baseValues && state.baseValues.requested_depth) || state.base.depth || 'full-depth';\n      return Object.assign({}, match, requestedDepth === 'ensuite'\n        ? {depth:'ensuite', depth_mm:395, quote_only:true, sku:'Ensuite \u2014 quote required'}\n        : {depth:'full-depth', depth_mm:500, quote_only:false});\n    }\n\n    function available(item) {\n      if (!state.base) return true;\n      if (item.required_material && item.required_material !== state.choices.top_material) return false;\n      if (!item || !item.available_on) return true;\n      return item.available_on.indexOf(state.base.mounting + ':' + state.base.width) !== -1;\n    }\n\n    function currentPrice() {\n      var node = cfg.querySelector('[data-live-price]');\n      var currentEstimate = node && node.textContent.trim() ? node.textContent.trim() : '\u2014';\n      if (priceText) priceText.textContent = currentEstimate;\n      if (baseStripPrice) baseStripPrice.textContent = currentEstimate;\n      var summary = document.querySelector('[data-adp-eli-order-summary]');\n      if (summary && cfg.adpEliGetSummary) summary.value = cfg.adpEliGetSummary();\n      refreshBaseStrip();\n    }\n\n    function tapHoleSummaryVisual() {\n      if (!state.base || state.base.top_mode === 'cabinet-only') return '';\n      var isDouble = state.base.layout === 'double';\n      var leftId = isDouble ? String(state.choices.tap_hole_left || '') : '';\n      var rightId = isDouble ? String(state.choices.tap_hole_right || '') : '';\n      var singleId = !isDouble ? String(state.choices.tap_hole || '') : '';\n      var hasHole = isDouble\n        ? ((leftId && leftId !== 'none') || (rightId && rightId !== 'none'))\n        : (singleId && singleId !== 'none');\n      if (!hasHole) return '';\n\n      function hole(id, cx) {\n        if (id === 'one-10') return '<circle cx=\"' + (cx - 21) + '\" cy=\"31\" r=\"4.2\"></circle>';\n        if (id === 'one-12') return '<circle cx=\"' + cx + '\" cy=\"24\" r=\"4.2\"></circle>';\n        if (id === 'one-2') return '<circle cx=\"' + (cx + 21) + '\" cy=\"31\" r=\"4.2\"></circle>';\n        return '';\n      }\n\n      var basinMarks = isDouble\n        ? '<path d=\"M90 62 A34 22 0 1 0 22 62 A34 22 0 1 0 90 62 Z M87.2 62 A31.2 19.2 0 1 1 24.8 62 A31.2 19.2 0 1 1 87.2 62 Z\"></path>' +\n          '<path d=\"M178 62 A34 22 0 1 0 110 62 A34 22 0 1 0 178 62 Z M175.2 62 A31.2 19.2 0 1 1 112.8 62 A31.2 19.2 0 1 1 175.2 62 Z\"></path>'\n        : '<path d=\"M146 62 A58 24 0 1 0 30 62 A58 24 0 1 0 146 62 Z M142.8 62 A54.8 20.8 0 1 1 33.2 62 A54.8 20.8 0 1 1 142.8 62 Z\"></path>';\n      var holes = isDouble ? hole(leftId, 56) + hole(rightId, 144) : hole(singleId, 88);\n      return '<span class=\"adp-eli-tap-summary-visual\" aria-hidden=\"true\"><svg viewBox=\"0 0 200 104\" focusable=\"false\">' +\n        '<rect class=\"adp-eli-tap-summary-visual__cabinet\" x=\"12\" y=\"16\" width=\"176\" height=\"80\" rx=\"3\"></rect>' +\n        '<rect class=\"adp-eli-tap-summary-visual__top\" x=\"8\" y=\"8\" width=\"184\" height=\"78\" rx=\"4\"></rect>' +\n        '<g class=\"adp-eli-tap-summary-visual__basins\" fill-rule=\"evenodd\">' + basinMarks + '</g>' +\n        '<g class=\"adp-eli-tap-summary-visual__holes\">' + holes + '</g>' +\n        '</svg></span>';\n    }\n\n    function refreshBaseStrip() {\n      if (!baseStripChoices || !state.base) return;\n      var fields = [\n        {field:'cabinet_finish', list:'cabinet_finishes', label:'Cabinet'},\n        {field:'top_finish', list:'top_finishes', label:'Top'},\n        {field:'statement_top', list:'statement_tops', label:'Benchtop upgrade', noneLabel:'Standard thickness'},\n        {field:'basin', list:'basins', label:'Basin'},\n        {field:'waste', list:'wastes', label:'Waste'},\n        {field:'power_point', list:'power_points', label:'Power'},\n        {field:'tap_hole_summary', label:'Tap holes', special:true}\n      ];\n      baseStripChoices.innerHTML = fields.map(function (entry) {\n        if (entry.special && entry.field === 'tap_hole_summary') {\n          var tapVisual = tapHoleSummaryVisual();\n          if (!tapVisual) return '<span class=\"adp-eli-five__base-choice adp-eli-five__base-choice--placeholder\" data-adp-eli-base-choice-placeholder=\"tap_hole_summary\" aria-hidden=\"true\"><span class=\"adp-eli-five__base-choice-none\"></span><span></span></span>';\n          return '<span class=\"adp-eli-five__base-choice adp-eli-five__base-choice--tap-summary\" data-adp-eli-base-choice=\"tap_hole_summary\">' + tapVisual + '<span>Tap holes</span></span>';\n        }\n        var value = state.choices[entry.field];\n        if (!value) {\n          if (!state.explicitNone[entry.field]) return '<span class=\"adp-eli-five__base-choice adp-eli-five__base-choice--placeholder\" data-adp-eli-base-choice-placeholder=\"' + esc(entry.field) + '\" aria-hidden=\"true\"><span class=\"adp-eli-five__base-choice-none\"></span><span></span></span>';\n          var noneLabel = entry.noneLabel || (entry.field === 'top_finish' ? 'No benchtop' : entry.field === 'basin' ? 'No basin supplied' : entry.field === 'power_point' ? 'No power point' : 'None');\n          return '<span class=\"adp-eli-five__base-choice adp-eli-five__base-choice--none\" data-adp-eli-base-choice=\"' + esc(entry.field) + '\"><span class=\"adp-eli-five__base-choice-none\" aria-hidden=\"true\">None</span><span>' + esc(noneLabel) + '</span></span>';\n        }\n        var item = (data[entry.list] || []).find(function (candidate) { return String(candidate.id) === String(value); });\n        if (!item) return '';\n        var isDouble = state.base.layout === 'double';\n        var thumbnail = '';\n        var choiceClass = '';\n        var choiceText = item.name;\n        if (entry.field === 'statement_top') choiceText = 'Benchtop upgrade \u00B7 ' + item.name;\n        if (entry.field === 'power_point' && state.choices.power_location) choiceText += ' \u00B7 ' + (state.choices.power_location === 'left' ? 'Left drawer' : 'Right drawer');\n        if (item.image && entry.field === 'basin' && isDouble) {\n          thumbnail = '<span class=\"adp-eli-five__base-choice-visuals adp-eli-five__base-choice-visuals--double\"><img src=\"' + esc(item.image) + '\" alt=\"\" loading=\"lazy\"><img src=\"' + esc(item.image) + '\" alt=\"\" loading=\"lazy\"></span>';\n          choiceClass = ' adp-eli-five__base-choice--double-basin';\n          choiceText = '2 \u00D7 ' + item.name;\n        } else if (item.image && entry.field === 'waste' && isDouble) {\n          thumbnail = '<span class=\"adp-eli-five__base-choice-visuals adp-eli-five__base-choice-visuals--double-waste\"><img src=\"' + esc(item.image) + '\" alt=\"\" loading=\"lazy\"><img src=\"' + esc(item.image) + '\" alt=\"\" loading=\"lazy\"></span>';\n          choiceClass = ' adp-eli-five__base-choice--double-waste';\n          choiceText = '2 \u00D7 ' + item.name;\n        } else if (item.image) {\n          thumbnail = '<img src=\"' + esc(item.image) + '\" alt=\"\" loading=\"lazy\">';\n        }\n        return '<span class=\"adp-eli-five__base-choice' + choiceClass + '\" data-adp-eli-base-choice=\"' + esc(entry.field) + '\">' + thumbnail + '<span>' + esc(choiceText) + '</span></span>';\n      }).join('');\n      baseStrip.classList.toggle('has-visual-choices', baseStripChoices.textContent.trim().length > 0);\n      updateBaseStripPin();\n    }\n\n    function updateBaseStripPin() {\n      if (!baseStrip || !baseStripAnchor || !state.base || baseStrip.hidden || baseStrip.classList.contains('is-handoff-target')) return;\n      var anchor = baseStripAnchor.getBoundingClientRect();\n      var rootBounds = root.getBoundingClientRect();\n      var pin = anchor.top <= 16 && rootBounds.bottom > baseStrip.offsetHeight + 24;\n      if (pin) {\n        if (!baseStrip.classList.contains('is-pinned')) baseStripAnchor.style.height = baseStrip.offsetHeight + 'px';\n        var fixedBounds = baseStripAnchor.getBoundingClientRect();\n        baseStrip.style.setProperty('--eli-base-strip-left', fixedBounds.left + 'px');\n        baseStrip.style.setProperty('--eli-base-strip-width', fixedBounds.width + 'px');\n        baseStrip.classList.add('is-pinned');\n      } else {\n        baseStrip.classList.remove('is-pinned');\n        baseStrip.style.removeProperty('--eli-base-strip-left');\n        baseStrip.style.removeProperty('--eli-base-strip-width');\n        baseStripAnchor.style.height = '';\n      }\n    }\n\n    function captureChoiceFlight(option) {\n      if (!option) return null;\n      var image = option.querySelector('img');\n      var source = image || option.querySelector('.adp-eli-visual-option__image--none');\n      if (!source) return null;\n      var start = source.getBoundingClientRect();\n      return {\n        kind: image ? 'image' : 'none',\n        src: image ? (image.currentSrc || image.src) : '',\n        text: image ? '' : source.textContent.trim(),\n        left:start.left,\n        top:start.top,\n        width:start.width,\n        height:start.height\n      };\n    }\n\n    function animateChoiceToStrip(flightData, field) {\n      if (!flightData || !baseStrip) return;\n      window.requestAnimationFrame(function () {\n        var choice = baseStrip.querySelector('[data-adp-eli-base-choice=\"' + field + '\"]');\n        var target = choice && (flightData.kind === 'image' ? choice.querySelector('img') : choice.querySelector('.adp-eli-five__base-choice-none'));\n        if (!target) return;\n        var end = target.getBoundingClientRect();\n        var flight = flightData.kind === 'image' ? document.createElement('img') : document.createElement('div');\n        flight.className = 'adp-eli-choice-flight' + (flightData.kind === 'none' ? ' adp-eli-choice-flight--none' : '');\n        if (flightData.kind === 'image') {\n          flight.src = flightData.src;\n          flight.alt = '';\n        } else {\n          flight.textContent = flightData.text || 'None';\n        }\n        flight.style.left = flightData.left + 'px';\n        flight.style.top = flightData.top + 'px';\n        flight.style.width = flightData.width + 'px';\n        flight.style.height = flightData.height + 'px';\n        document.body.appendChild(flight);\n        window.requestAnimationFrame(function () {\n          flight.style.left = end.left + 'px';\n          flight.style.top = end.top + 'px';\n          flight.style.width = end.width + 'px';\n          flight.style.height = end.height + 'px';\n          flight.style.opacity = '.18';\n        });\n        window.setTimeout(function () { flight.remove(); }, 620);\n      });\n    }\n\n    function previewModal() {\n      var modal = document.querySelector('[data-adp-eli-visual-modal]');\n      if (modal) return modal;\n      modal = document.createElement('div');\n      modal.className = 'adp-eli-visual-modal';\n      modal.hidden = true;\n      modal.setAttribute('data-adp-eli-visual-modal', '');\n      modal.setAttribute('role', 'dialog');\n      modal.setAttribute('aria-modal', 'true');\n      modal.innerHTML = '<div class=\"adp-eli-visual-modal__backdrop\" data-adp-eli-visual-modal-close></div><div class=\"adp-eli-visual-modal__panel\"><button type=\"button\" class=\"adp-eli-visual-modal__close\" data-adp-eli-visual-modal-close aria-label=\"Close material preview\">\u00D7</button><img data-adp-eli-visual-modal-image alt=\"\"><p data-adp-eli-visual-modal-label></p></div>';\n      document.body.appendChild(modal);\n      modal.addEventListener('click', function (event) {\n        if (event.target.closest('[data-adp-eli-visual-modal-close]')) modal.hidden = true;\n      });\n      document.addEventListener('keydown', function (event) {\n        if (event.key === 'Escape') modal.hidden = true;\n      });\n      return modal;\n    }\n\n    function openPreview(src, label) {\n      var modal = previewModal();\n      var image = modal.querySelector('[data-adp-eli-visual-modal-image]');\n      var caption = modal.querySelector('[data-adp-eli-visual-modal-label]');\n      image.src = src;\n      image.alt = label;\n      caption.textContent = label;\n      modal.hidden = false;\n      modal.querySelector('.adp-eli-visual-modal__close').focus();\n    }\n\n    function payloadFor(nextChoices) {\n      var payload = Object.assign({}, state.baseValues || {}, nextChoices || {});\n      ['step','confirmed','expanded'].forEach(function (key) { delete payload[key]; });\n      if (payload.top_finish) {\n        var top = data.top_finishes.find(function (item) { return String(item.id) === String(payload.top_finish); });\n        if (top) payload.top_material = top.material;\n      }\n      if (state.base && state.base.top_mode === 'cabinet-only') {\n        delete payload.top_finish;\n        delete payload.top_material;\n        delete payload.statement_top;\n        delete payload.tap_hole;\n        delete payload.tap_hole_left;\n        delete payload.tap_hole_right;\n      }\n      return payload;\n    }\n\n    function applyChoice(field, rawValue) {\n      var next = Object.assign({}, state.choices);\n      var selectingNone = rawValue === '__none__';\n      if (selectingNone) next[field] = null;\n      else next[field] = rawValue;\n\n      if (field === 'top_finish') {\n        var top = data.top_finishes.find(function (item) { return String(item.id) === String(rawValue); });\n        if (top) next.top_material = top.material;\n        var upgrade = data.statement_tops.find(function (item) { return String(item.id) === String(next.statement_top); });\n        if (upgrade && upgrade.required_material && upgrade.required_material !== next.top_material) next.statement_top = null;\n      }\n\n      var applied = cfg.adpEliApplyRequirements(payloadFor(next));\n      if (!applied || !applied.ok) {\n        var message = applied && applied.errors ? applied.errors.join(' ') : 'That choice could not be applied.';\n        root.setAttribute('data-visual-error', message);\n        var error = root.querySelector('[data-adp-eli-visual-error]');\n        if (error) error.textContent = message;\n        return false;\n      }\n\n      root.removeAttribute('data-visual-error');\n      var errorNode = root.querySelector('[data-adp-eli-visual-error]');\n      if (errorNode) errorNode.textContent = '';\n      state.choices = cfg.adpEliGetState ? cfg.adpEliGetState() : next;\n      state.explicitNone[field] = selectingNone;\n      renderGroups();\n      currentPrice();\n      return true;\n    }\n\n    function optionMeta(group, item) {\n      if (!item) return '';\n      if (item.out_of_stock) return 'Out of stock \u2014 contact us for availability';\n      if (group.field === 'top_finish') return (item.material || '') + (item.adjustment_percent ? ' \u00B7 +' + item.adjustment_percent + '%' : ' \u00B7 included');\n      if (group.field === 'waste' || group.field === 'power_point' || group.field === 'statement_top' || group.field === 'basin') {\n        var count = item.multiply_by_basin_count && state.base.layout === 'double' ? 2 : 1;\n        return (item.basin_type ? item.basin_type + ' \u00B7 ' : '') + (Number(item.price || 0) > 0 ? '+' + money(item.price * count) + (count === 2 ? ' for 2' : '') : 'Included');\n      }\n      return '';\n    }\n\n    function tapHoleOptionVisual(item) {\n      var id = item && item.id ? String(item.id) : '';\n      var basinOutline = '<path data-tap-basin-outline=\"solid\" fill=\"#483d33\" fill-opacity=\".24\" fill-rule=\"evenodd\" stroke=\"none\" d=\"M126 64 A46 27 0 1 0 34 64 A46 27 0 1 0 126 64 Z M123.2 64 A43.2 24.2 0 1 1 36.8 64 A43.2 24.2 0 1 1 123.2 64 Z\"></path>';\n      var holes = '';\n      if (id === 'one-10') holes = '<circle cx=\"49\" cy=\"31\" r=\"4.3\" fill=\"#6a4b39\"></circle>';\n      else if (id === 'one-12') holes = '<circle cx=\"80\" cy=\"24\" r=\"4.3\" fill=\"#6a4b39\"></circle>';\n      else if (id === 'one-2') holes = '<circle cx=\"111\" cy=\"31\" r=\"4.3\" fill=\"#6a4b39\"></circle>';\n      return '<span class=\"adp-eli-tap-hole-option-visual\" aria-hidden=\"true\">' +\n        '<svg viewBox=\"0 0 160 104\" focusable=\"false\">' +\n          '<rect class=\"adp-eli-tap-hole-option-visual__top\" x=\"8\" y=\"8\" width=\"144\" height=\"88\" rx=\"4\"></rect>' +\n          '<g class=\"adp-eli-tap-hole-option-visual__marks\">' + basinOutline + holes + '</g>' +\n        '</svg>' +\n      '</span>';\n    }\n\n    function doubleTapHoleOptionVisual(item, side) {\n      var id = item && item.id ? String(item.id) : '';\n      var leftActive = side === 'left';\n      var leftFill = leftActive ? '.34' : '.12';\n      var rightFill = leftActive ? '.12' : '.34';\n      var leftRing = '<path fill=\"#483d33\" fill-opacity=\"' + leftFill + '\" fill-rule=\"evenodd\" stroke=\"none\" d=\"M90 65 A34 23 0 1 0 22 65 A34 23 0 1 0 90 65 Z M87.2 65 A31.2 20.2 0 1 1 24.8 65 A31.2 20.2 0 1 1 87.2 65 Z\"></path>';\n      var rightRing = '<path fill=\"#483d33\" fill-opacity=\"' + rightFill + '\" fill-rule=\"evenodd\" stroke=\"none\" d=\"M178 65 A34 23 0 1 0 110 65 A34 23 0 1 0 178 65 Z M175.2 65 A31.2 20.2 0 1 1 112.8 65 A31.2 20.2 0 1 1 175.2 65 Z\"></path>';\n      var cx = side === 'left' ? 56 : 144;\n      var hole = '';\n      if (id === 'one-10') hole = '<circle cx=\"' + (cx - 21) + '\" cy=\"34\" r=\"4.2\" fill=\"#6a4b39\"></circle>';\n      else if (id === 'one-12') hole = '<circle cx=\"' + cx + '\" cy=\"27\" r=\"4.2\" fill=\"#6a4b39\"></circle>';\n      else if (id === 'one-2') hole = '<circle cx=\"' + (cx + 21) + '\" cy=\"34\" r=\"4.2\" fill=\"#6a4b39\"></circle>';\n      return '<span class=\"adp-eli-double-tap-option-visual\" aria-hidden=\"true\">' +\n        '<svg viewBox=\"0 0 200 104\" focusable=\"false\">' +\n          '<rect class=\"adp-eli-tap-hole-option-visual__top\" x=\"8\" y=\"8\" width=\"184\" height=\"88\" rx=\"4\"></rect>' +\n          '<g>' + leftRing + rightRing + hole + '</g>' +\n        '</svg>' +\n      '</span>';\n    }\n\n    function renderDoubleTapHoleGroup(group) {\n      var options = (data.tap_holes || []).filter(available);\n      function sideBlock(side, label) {\n        var field = 'tap_hole_' + side;\n        var selected = state.choices[field];\n        var ordered = side === 'right'\n          ? ['one-2','none','one-10','one-12'].map(function (id) { return options.find(function (item) { return String(item.id) === id; }); }).filter(Boolean)\n          : ['none','one-10','one-12','one-2'].map(function (id) { return options.find(function (item) { return String(item.id) === id; }); }).filter(Boolean);\n        return '<div class=\"adp-eli-double-tap__side\" data-double-tap-side=\"' + side + '\"><h3>' + label + '</h3><div class=\"adp-eli-double-tap__options\">' + ordered.map(function (item) {\n          var active = String(selected || '') === String(item.id);\n          return '<button type=\"button\" class=\"adp-eli-visual-option adp-eli-double-tap__option' + (active ? ' is-selected' : '') + '\" data-double-tap-field=\"' + field + '\" data-double-tap-value=\"' + esc(item.id) + '\" aria-pressed=\"' + (active ? 'true' : 'false') + '\">' + doubleTapHoleOptionVisual(item, side) + '<span class=\"adp-eli-visual-option__copy\"><strong>' + esc(item.name) + '</strong></span></button>';\n        }).join('') + '</div></div>';\n      }\n      return '<section class=\"adp-eli-visual-group adp-eli-visual-group--double-tap\" data-visual-group=\"tap_hole\"><div class=\"adp-eli-visual-group__heading\"><div><span>' + esc(group.title) + '</span><p>Choose the drilling for each basin separately.</p></div></div><div class=\"adp-eli-double-tap\">' + sideBlock('left', 'Left basin') + sideBlock('right', 'Right basin') + '</div></section>';\n    }\n\n    function renderOption(group, item, none) {\n      var value = none ? '__none__' : String(item.id);\n      var selected = none ? !!state.explicitNone[group.field] : String(state.choices[group.field]) === value;\n      var label = none ? group.noneLabel : item.name;\n      var image = group.image && !none && item.image ? item.image : '';\n      var meta = none ? '' : optionMeta(group, item);\n      var tapVisual = group.field === 'tap_hole' && !none ? tapHoleOptionVisual(item) : '';\n      var visual = tapVisual || (image\n        ? '<span class=\"adp-eli-visual-option__image\"><img loading=\"lazy\" src=\"' + esc(image) + '\" alt=\"' + esc(label) + '\"></span>'\n        : (none && group.image ? '<span class=\"adp-eli-visual-option__image adp-eli-visual-option__image--none\" aria-hidden=\"true\"><span>None</span></span>' : ''));\n      var preview = image ? '<button type=\"button\" class=\"adp-eli-visual-option__preview\" data-visual-preview-src=\"' + esc(image) + '\" data-visual-preview-label=\"' + esc(label) + '\" aria-label=\"View ' + esc(label) + ' larger\">+</button>' : '';\n      var hasVisualSlot = !!tapVisual || !!image || (none && group.image);\n      return '<div class=\"adp-eli-visual-option-wrap\"><button type=\"button\" class=\"adp-eli-visual-option' + (!hasVisualSlot ? ' adp-eli-visual-option--text' : '') + (selected ? ' is-selected' : '') + '\" data-visual-field=\"' + esc(group.field) + '\" data-visual-value=\"' + esc(value) + '\" aria-pressed=\"' + (selected ? 'true' : 'false') + '\"' + (!none && item.out_of_stock ? ' disabled' : '') + '>' +\n        visual + '<span class=\"adp-eli-visual-option__copy\"><strong>' + esc(label) + '</strong>' + (meta ? '<small>' + esc(meta) + '</small>' : '') + '</span></button>' + preview + '</div>';\n    }\n\n    function powerLocationChoices() {\n      var s = state.choices;\n      if (!s.power_point) return '';\n      var selectedPower = (data.power_points || []).find(function (item) { return String(item.id) === String(s.power_point); });\n      var label = selectedPower ? selectedPower.name.replace('In-Drawer Power Point ', '') : 'Power';\n      var isBlack = /black/i.test(label);\n      var icon = '<i class=\"adp-eli-power-location__icon adp-eli-power-location__icon--' + (isBlack ? 'black' : 'white') + '\" aria-hidden=\"true\"></i>';\n      return '<div class=\"adp-eli-power-location\"><div class=\"adp-eli-power-location__cabinet\" role=\"group\" aria-label=\"Choose power point drawer\"><button type=\"button\" class=\"adp-eli-power-location__drawer adp-eli-power-location__drawer--left' + (s.power_location === 'left' ? ' is-selected' : '') + '\" data-adp-eli-power-location=\"left\" aria-pressed=\"' + (s.power_location === 'left' ? 'true' : 'false') + '\"><span class=\"adp-eli-power-location__drawer-front\" aria-hidden=\"true\">' + (s.power_location === 'left' ? icon : '') + '</span><strong>Left drawer</strong></button><button type=\"button\" class=\"adp-eli-power-location__drawer adp-eli-power-location__drawer--right' + (s.power_location === 'right' ? ' is-selected' : '') + '\" data-adp-eli-power-location=\"right\" aria-pressed=\"' + (s.power_location === 'right' ? 'true' : 'false') + '\"><span class=\"adp-eli-power-location__drawer-front\" aria-hidden=\"true\">' + (s.power_location === 'right' ? icon : '') + '</span><strong>Right drawer</strong></button></div></div>';\n    }\n\n    function renderNoBenchtopOption() {\n      var selected = state.base && state.base.top_mode === 'cabinet-only';\n      return '<div class=\"adp-eli-visual-option-wrap\"><button type=\"button\" class=\"adp-eli-visual-option' + (selected ? ' is-selected' : '') + '\" data-adp-eli-no-benchtop aria-pressed=\"' + (selected ? 'true' : 'false') + '\"><span class=\"adp-eli-visual-option__image adp-eli-visual-option__image--none\" aria-hidden=\"true\"><span>No top</span></span><span class=\"adp-eli-visual-option__copy\"><strong>No benchtop</strong><small>Cabinet only</small></span></button></div>';\n    }\n\n    function renderGroup(group) {\n      if (group.topOnly && group.field !== 'top_finish' && state.base && state.base.top_mode === 'cabinet-only') return '';\n      if (group.field === 'tap_hole' && state.base && state.base.layout === 'double') return renderDoubleTapHoleGroup(group);\n      var options = (data[group.list] || []).filter(available);\n      var showAll = group.field === 'top_finish' || !!state.expanded[group.field];\n      var limit = group.limit || options.length;\n      var shown = showAll ? options : options.slice(0, limit);\n      var optionHtml = '';\n      if (group.field === 'top_finish') optionHtml += renderNoBenchtopOption();\n      else if (group.allowNone) optionHtml += renderOption(group, null, true);\n      optionHtml += shown.map(function (item) { return renderOption(group, item, false); }).join('');\n      var hasMore = !showAll && options.length > shown.length;\n      var previewHtml = '';\n      if (hasMore && group.field === 'cabinet_finish') {\n        previewHtml = '<div class=\"adp-eli-visual-group__preview\" aria-hidden=\"true\" inert>' + options.slice(limit, limit * 2).map(function (item) { return renderOption(group, item, false); }).join('') + '</div>';\n      }\n      var moreLabel = group.field === 'cabinet_finish' ? 'View all ' + options.length + ' finishes' : 'View all ' + options.length;\n      var more = hasMore ? '<button type=\"button\" class=\"adp-eli-visual-configure__more\" data-visual-expand=\"' + esc(group.field) + '\">' + moreLabel + '</button>' : '';\n      var less = showAll && options.length > limit ? '<button type=\"button\" class=\"adp-eli-visual-configure__more\" data-visual-collapse=\"' + esc(group.field) + '\">Show less</button>' : '';\n      var choiceCount = group.field === 'top_finish' ? options.length + 1 : options.length;\n      var optionsBlock = '<div class=\"adp-eli-visual-group__options\">' + optionHtml + '</div>' + previewHtml;\n      if (group.field === 'power_point' && state.choices.power_point) optionsBlock = '<div class=\"adp-eli-power-choice-layout\"><div>' + optionsBlock + more + less + '</div>' + powerLocationChoices() + '</div>';\n      else optionsBlock += more + less;\n      return '<section class=\"adp-eli-visual-group' + (previewHtml ? ' has-collapsed-preview' : '') + '\" data-visual-group=\"' + esc(group.field) + '\"><div class=\"adp-eli-visual-group__heading\"><div><span>' + esc(group.title) + '</span><p>' + esc(group.note) + '</p></div><em>' + choiceCount + ' choices</em></div>' + optionsBlock + '</section>';\n    }\n\n    function renderGroups() {\n      if (!state.base) return;\n      groupsHost.innerHTML = GROUPS.map(renderGroup).join('') + '<p class=\"adp-eli-visual-configure__error\" data-adp-eli-visual-error aria-live=\"polite\"></p>';\n    }\n\n    function orderDetails() {\n      var s = state.choices;\n      function number(field, label, min, max) {\n        return '<label>' + label + '<input type=\"number\" step=\"1\" min=\"' + min + '\" max=\"' + max + '\" data-order-field=\"' + field + '\" value=\"' + esc(s[field] || '') + '\"></label>';\n      }\n      function fillerChoices(side) {\n        var selected = s['filler_' + side] || 'none';\n        var sideLabel = side === 'left' ? 'Left side' : 'Right side';\n        var choices = [\n          ['none', 'No filler / infill', 'Cabinet sits clear of this wall.'],\n          ['filler', 'Filler strip', 'Cabinet stays the same size; installer trims the strip on site.'],\n          ['infill-10', '10 mm infill', 'ADP reduces the cabinet by 10 mm.'],\n          ['wide-infill', 'Wide infill', 'For an obstruction; specify 60\u2013100 mm.']\n        ];\n        return '<div class=\"adp-eli-order-visual adp-eli-order-visual--filler\"><div class=\"adp-eli-order-visual__copy\"><span>' + sideLabel + ' filler / infill</span><p>Use a filler when the cabinet size stays unchanged; use an infill when ADP must reduce the cabinet to suit the wall.</p></div><div class=\"adp-eli-filler-choices\">' + choices.map(function (choice) {\n          var kind = choice[0];\n          return '<button type=\"button\" class=\"adp-eli-filler-choice' + (selected === kind ? ' is-selected' : '') + '\" data-adp-eli-filler-kind=\"' + kind + '\" data-adp-eli-filler-side=\"' + side + '\" aria-pressed=\"' + (selected === kind ? 'true' : 'false') + '\"><span class=\"adp-eli-filler-choice__diagram adp-eli-filler-choice__diagram--' + kind + '\" aria-hidden=\"true\"><i></i><b></b></span><strong>' + choice[1] + '</strong><small>' + choice[2] + '</small></button>';\n        }).join('') + '</div>' + (selected === 'wide-infill' ? number('infill_' + side + '_width', sideLabel + ' wide infill, mm', 60, 100) : '') + '</div>';\n      }\n      var html = '';\n      if (state.base.top_mode !== 'cabinet-only') html += number('splashback_height','Splashback height, mm (optional; quote required)',90,250);\n      html += fillerChoices('left') + fillerChoices('right');\n      html += '<label class=\"adp-eli-order-notes\">Anything we should know?<textarea rows=\"3\" maxlength=\"600\" data-order-field=\"customer_notes\" placeholder=\"Access, wall conditions, unusual measurements, delivery or installation notes\u2026\">' + esc(s.customer_notes || '') + '</textarea><small>This note travels with your OZ Bathroom quote request.</small></label>';\n      return '<section class=\"adp-eli-visual-group\" data-adp-order-details><div class=\"adp-eli-visual-group__heading\"><div><span>Installation & made-to-order details</span><p>Fillers, infills and splashback dimensions require a supplier quote. Two 10 mm infills reduce the cabinet by 20 mm. For custom overall widths, please contact OZ Bathroom directly.</p></div></div><div class=\"adp-eli-order-fields\">' + html + '</div><p><a href=\"' + esc(data.order_form_url) + '\" target=\"_blank\" rel=\"noopener\">ADP Eli official order form</a></p></section>';\n    }\n\n    function selectBase(detail) {\n      if (!detail || !detail.variant) return;\n      state.base = detail.variant;\n      state.baseValues = Object.assign({}, detail.values || {}, {\n        mounting: detail.variant.mounting,\n        width: detail.variant.width,\n        layout: detail.variant.layout,\n        top_mode: detail.variant.top_mode\n      });\n      var reset = {custom_width:null,requested_depth:(detail.values && detail.values.requested_depth) || 'full-depth',top_finish:null,waste:null,tap_hole_left:null,tap_hole_right:null,power_location:null,customer_notes:'',splashback_height:null,filler_left:'none',filler_right:'none',infill_left_width:null,infill_right_width:null};\n      cfg.adpEliApplyRequirements(Object.assign({}, state.baseValues, reset));\n      state.choices = cfg.adpEliGetState ? cfg.adpEliGetState() : {};\n      state.expanded = {};\n      state.explicitNone = {};\n      if (state.base.top_mode === 'cabinet-only') state.explicitNone.top_finish = true;\n      syncBaseSummary();\n      if (baseStrip) {\n        baseStrip.hidden = false;\n        baseStrip.classList.add('is-handoff-target');\n      }\n      root.hidden = false;\n      document.documentElement.classList.add('adp-eli-configure-active');\n      renderGroups();\n      currentPrice();\n\n    }\n\n    function switchTopMode(topMode) {\n      if (!state.base || state.base.top_mode === topMode) return true;\n      var nextBase = baseForTopMode(topMode);\n      if (!nextBase) {\n        var missing = root.querySelector('[data-adp-eli-visual-error]');\n        if (missing) missing.textContent = 'That benchtop supply option is not available for this base configuration.';\n        return false;\n      }\n      var result = cfg.adpEliApplyRequirements({top_mode:topMode});\n      var error = root.querySelector('[data-adp-eli-visual-error]');\n      if (!result || !result.ok) {\n        if (error) error.textContent = result && result.errors ? result.errors.join(' ') : 'That base change could not be applied.';\n        return false;\n      }\n      if (error) error.textContent = '';\n      state.base = nextBase;\n      state.baseValues = Object.assign({}, state.baseValues || {}, {top_mode:topMode});\n      if (topMode === 'cabinet-only') {\n        ['top_finish','top_material','statement_top','tap_hole','tap_hole_left','tap_hole_right','splashback_height'].forEach(function (field) { delete state.baseValues[field]; });\n      }\n      state.choices = cfg.adpEliGetState ? cfg.adpEliGetState() : Object.assign({}, state.choices, {top_mode:topMode});\n      state.expanded.top_finish = false;\n      state.explicitNone.top_finish = topMode === 'cabinet-only';\n      syncBaseSummary();\n      renderGroups();\n      currentPrice();\n      return true;\n    }\n\n    groupsHost.addEventListener('click', function (event) {\n      var noBenchtop = event.target.closest('[data-adp-eli-no-benchtop]');\n      if (noBenchtop) {\n        var noTopFlight = captureChoiceFlight(noBenchtop);\n        if (switchTopMode('cabinet-only')) {\n          state.explicitNone.top_finish = true;\n          refreshBaseStrip();\n          animateChoiceToStrip(noTopFlight, 'top_finish');\n        }\n        return;\n      }\n      var doubleTap = event.target.closest('[data-double-tap-field]');\n      if (doubleTap) {\n        var tapField = doubleTap.dataset.doubleTapField;\n        var tapValues = {};\n        tapValues[tapField] = doubleTap.dataset.doubleTapValue;\n        var tapResult = cfg.adpEliApplyRequirements(tapValues);\n        root.querySelector('[data-adp-eli-visual-error]').textContent = tapResult.ok ? '' : tapResult.errors.join(' ');\n        if (tapResult.ok) {\n          state.choices = cfg.adpEliGetState();\n          renderGroups();\n          currentPrice();\n        }\n        return;\n      }\n      var option = event.target.closest('[data-visual-field]');\n      if (option) {\n        var field = option.dataset.visualField;\n        var flightData = captureChoiceFlight(option);\n        if (field === 'top_finish' && state.base && state.base.top_mode === 'cabinet-only' && !switchTopMode('standard-top')) return;\n        if (field === 'top_finish') state.explicitNone.top_finish = false;\n        if (applyChoice(field, option.dataset.visualValue)) animateChoiceToStrip(flightData, field);\n        return;\n      }\n      if (event.target.closest('[data-adp-eli-change-base-inline]')) {\n        if (changeBase) changeBase.click();\n        return;\n      }\n      var preview = event.target.closest('[data-visual-preview-src]');\n      if (preview) {\n        openPreview(preview.dataset.visualPreviewSrc, preview.dataset.visualPreviewLabel);\n        return;\n      }\n      var powerLocation = event.target.closest('[data-adp-eli-power-location]');\n      if (powerLocation) {\n        var powerResult = cfg.adpEliApplyRequirements({power_location:powerLocation.dataset.adpEliPowerLocation});\n        root.querySelector('[data-adp-eli-visual-error]').textContent = powerResult.ok ? '' : powerResult.errors.join(' ');\n        if (powerResult.ok) {\n          state.choices = cfg.adpEliGetState();\n          renderGroups();\n          currentPrice();\n        }\n        return;\n      }\n      var fillerChoice = event.target.closest('[data-adp-eli-filler-kind]');\n      if (fillerChoice) {\n        var fillerResult = cfg.adpEliApplyRequirements((function () { var values = {}; values['filler_' + fillerChoice.dataset.adpEliFillerSide] = fillerChoice.dataset.adpEliFillerKind; return values; })());\n        root.querySelector('[data-adp-eli-visual-error]').textContent = fillerResult.ok ? '' : fillerResult.errors.join(' ');\n        if (fillerResult.ok) {\n          state.choices = cfg.adpEliGetState();\n          renderGroups();\n          currentPrice();\n        }\n        return;\n      }\n      var expand = event.target.closest('[data-visual-expand]');\n      if (expand) {\n        state.expanded[expand.dataset.visualExpand] = true;\n        renderGroups();\n        return;\n      }\n      var collapse = event.target.closest('[data-visual-collapse]');\n      if (collapse) {\n        state.expanded[collapse.dataset.visualCollapse] = false;\n        renderGroups();\n        return;\n      }\n    });\n\n    groupsHost.addEventListener('change', function (event) {\n      var input = event.target.closest('[data-order-field]');\n      if (!input) return;\n      var field = input.dataset.orderField;\n      var next = Object.assign({}, state.choices);\n      next[field] = input.type === 'number' ? (input.value === '' ? null : Number(input.value)) : (input.value || null);\n      // Pass only business fields; the engine snapshot also contains UI state.\n      var result = cfg.adpEliApplyRequirements(Object.fromEntries([[field, next[field]]]));\n      if (!result.ok) {\n        root.querySelector('[data-adp-eli-visual-error]').textContent = result.errors.join(' ');\n        if (continueQuote) continueQuote.disabled = true;\n        return;\n      }\n      if (continueQuote) continueQuote.disabled = false;\n      state.choices = cfg.adpEliGetState();\n      renderGroups();\n      currentPrice();\n    });\n\n    groupsHost.addEventListener('input', function (event) {\n      var input = event.target.closest('[data-order-field]');\n      if (!input) return;\n      var values = {};\n      values[input.dataset.orderField] = input.type === 'number' ? (input.value === '' ? null : Number(input.value)) : input.value;\n      var result = cfg.adpEliApplyRequirements(values);\n      root.querySelector('[data-adp-eli-visual-error]').textContent = result.ok ? '' : result.errors.join(' ');\n      if (continueQuote) continueQuote.disabled = !result.ok;\n      if (result.ok) {\n        state.choices = cfg.adpEliGetState();\n        currentPrice();\n      }\n    });\n\n    if (changeBase) changeBase.addEventListener('click', function () {\n      root.hidden = true;\n      if (baseStrip) baseStrip.hidden = true;\n      if (baseStrip) baseStrip.classList.remove('is-handoff-target');\n      if (window.ADPEliClearBaseHandoff) window.ADPEliClearBaseHandoff();\n      if (describeStage) describeStage.classList.remove('is-base-selected');\n      document.documentElement.classList.remove('adp-eli-configure-active');\n      document.querySelectorAll('.adp-eli-natural-language__card').forEach(function (card) { card.classList.remove('is-selected','is-not-selected'); });\n      document.querySelectorAll('[data-nl-use]').forEach(function (button) {\n        button.removeAttribute('disabled');\n        button.removeAttribute('aria-selected');\n      });\n      if (manualDetails) manualDetails.open = false;\n      window.requestAnimationFrame(function () { describeStage.scrollIntoView({ block: 'start' }); });\n    });\n\n    if (continueQuote) continueQuote.addEventListener('click', function () {\n      currentPrice();\n      if (quoteSection) quoteSection.scrollIntoView({ block: 'start' });\n    });\n\n    var copySummary = document.querySelector('[data-adp-eli-copy-summary]');\n    if (copySummary) copySummary.addEventListener('click', function () {\n      currentPrice();\n      var summary = document.querySelector('[data-adp-eli-order-summary]');\n      if (summary && navigator.clipboard) navigator.clipboard.writeText(summary.value).then(function () {\n        copySummary.textContent = 'Configuration copied';\n      }).catch(function () { summary.focus(); summary.select(); });\n    });\n\n    document.addEventListener('adp:eli:base-selected', function (event) { selectBase(event.detail); });\n\n    window.addEventListener('resize', updateBaseStripPin);\n    document.addEventListener('scroll', updateBaseStripPin, true);\n\n    var priceNode = cfg.querySelector('[data-live-price]');\n    if (priceNode && window.MutationObserver) new MutationObserver(currentPrice).observe(priceNode, { childList: true, subtree: true, characterData: true });\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n}());\n"],
  "mappings": "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",
  "names": []
}
