{
  "version": 3,
  "sources": ["/cdn/shop/t/13/assets/book-finder.js?wizard_optional_child_genres=1"],
  "sourcesContent": ["class BookFinder extends HTMLElement {\n  connectedCallback() {\n    this.dialog = this.querySelector('dialog');\n    this.steps = [...this.querySelectorAll('[data-book-finder-step]')];\n    this.activeSteps = [];\n    this.currentStep = 0;\n    this.indexPromise = null;\n\n    this.querySelector('[data-book-finder-open]')?.addEventListener('click', () => this.open());\n    this.querySelector('[data-book-finder-close]')?.addEventListener('click', () => this.close());\n    this.querySelector('[data-book-finder-back]')?.addEventListener('click', () => this.back());\n    this.querySelector('[data-book-finder-next]')?.addEventListener('click', () => this.next());\n    this.dialog?.addEventListener('click', (event) => {\n      if (event.target === this.dialog) this.close();\n    });\n    this.dialog?.addEventListener('close', () => document.documentElement.classList.remove('book-finder-open'));\n    this.querySelectorAll('input').forEach((input) => input.addEventListener('change', () => this.update()));\n  }\n\n  open() {\n    this.currentStep = 0;\n    this.querySelector('form')?.reset();\n    if (typeof this.dialog?.showModal === 'function') this.dialog.showModal();\n    else this.dialog?.setAttribute('open', '');\n    this.dialog?.focus({ preventScroll: true });\n    document.documentElement.classList.add('book-finder-open');\n    this.update();\n  }\n\n  close() {\n    if (typeof this.dialog?.close === 'function') this.dialog.close();\n    else this.dialog?.removeAttribute('open');\n    document.documentElement.classList.remove('book-finder-open');\n  }\n\n  back() {\n    if (this.currentStep === 0) {\n      this.close();\n      return;\n    }\n    this.currentStep -= 1;\n    this.update();\n  }\n\n  next() {\n    if (!this.isCurrentStepValid()) return;\n    if (this.currentStep < this.activeSteps.length - 1) {\n      this.currentStep += 1;\n      this.update();\n      return;\n    }\n    this.submitFilters();\n  }\n\n  isCurrentStepValid() {\n    const current = this.activeSteps[this.currentStep];\n    const isOptionalChildGenres = current?.dataset.bookFinderAudience === 'bambini'\n      && current.dataset.bookFinderKind === 'genres';\n\n    if (isOptionalChildGenres) {\n      current.removeAttribute('data-invalid');\n      return true;\n    }\n\n    const checked = current?.querySelectorAll('input:checked').length > 0;\n    current?.toggleAttribute('data-invalid', !checked);\n    if (!checked) {\n      this.querySelector('.book-finder__error')?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n    }\n    return checked;\n  }\n\n  update() {\n    const audience = this.selectedValue('quiz_audience') || 'adulti';\n    const skipAdultPurpose = audience === 'adulti' && this.selectedValue('quiz_reader_profile') === 'regalo';\n    const adultGiftPurpose = this.querySelector('input[name=\"quiz_purpose\"][value=\"regalo\"]');\n\n    if (skipAdultPurpose && adultGiftPurpose) {\n      adultGiftPurpose.checked = true;\n      adultGiftPurpose.dataset.bookFinderAutoSelected = 'true';\n    } else if (adultGiftPurpose?.dataset.bookFinderAutoSelected === 'true') {\n      adultGiftPurpose.checked = false;\n      delete adultGiftPurpose.dataset.bookFinderAutoSelected;\n    }\n\n    this.activeSteps = this.steps.filter((step) => {\n      if (step.dataset.bookFinderAudience && step.dataset.bookFinderAudience !== audience) return false;\n      if (skipAdultPurpose && step.dataset.bookFinderAudience === 'adulti' && step.dataset.bookFinderKind === 'purpose') return false;\n      return true;\n    });\n    this.currentStep = Math.min(this.currentStep, Math.max(this.activeSteps.length - 1, 0));\n    const current = this.activeSteps[this.currentStep];\n    this.steps.forEach((step) => step.toggleAttribute('hidden', step !== current));\n    const progress = this.querySelector('[data-book-finder-progress]');\n    const stepNumber = this.querySelector('[data-book-finder-step-number]');\n    const counter = this.querySelector('[data-book-finder-counter]');\n    const next = this.querySelector('[data-book-finder-next]');\n    const error = this.querySelector('.book-finder__error');\n    if (progress) progress.style.setProperty('--progress', `${((this.currentStep + 1) / this.activeSteps.length) * 100}%`);\n    if (stepNumber) stepNumber.textContent = String(this.currentStep + 1);\n    if (counter) counter.textContent = `${this.currentStep + 1} di ${this.activeSteps.length}`;\n    if (next) next.querySelector('span').textContent = this.currentStep === this.activeSteps.length - 1 ? 'Scopri i libri per te!' : 'Avanti';\n    if (error) error.textContent = current?.dataset.bookFinderKind === 'genres' ? 'Seleziona almeno una categoria' : 'Seleziona almeno una risposta';\n    this.dialog?.style.setProperty('--book-finder-height', `${current?.dataset.bookFinderHeight || 650}px`);\n    current?.removeAttribute('data-invalid');\n  }\n\n  normalize(value) {\n    return String(value || '')\n      .normalize('NFD')\n      .replace(/[\\u0300-\\u036f]/g, '')\n      .toLocaleLowerCase('it')\n      .replace(/[^a-z0-9]+/g, '-')\n      .replace(/^-|-$/g, '');\n  }\n\n  async loadIndexPage(page) {\n    const url = new URL(this.dataset.indexUrl || '/collections/all?view=book-finder-index', window.location.origin);\n    url.searchParams.set('page', String(page));\n\n    const previewThemeId = new URL(window.location.href).searchParams.get('preview_theme_id');\n    if (previewThemeId) url.searchParams.set('preview_theme_id', previewThemeId);\n\n    const response = await fetch(url, { credentials: 'same-origin' });\n    if (!response.ok) throw new Error(`Book finder index request failed: ${response.status}`);\n    return response.json();\n  }\n\n  loadIndex() {\n    if (this.indexPromise) return this.indexPromise;\n\n    this.indexPromise = (async () => {\n      const products = [];\n      let page = 1;\n      let totalPages = 1;\n\n      do {\n        const payload = await this.loadIndexPage(page);\n        products.push(...(Array.isArray(payload.products) ? payload.products : []));\n        totalPages = Number(payload.pages) || 1;\n        page += 1;\n      } while (page <= totalPages);\n\n      return products;\n    })().catch((error) => {\n      this.indexPromise = null;\n      throw error;\n    });\n\n    return this.indexPromise;\n  }\n\n  selectedValue(name) {\n    return this.querySelector(`input[name=\"${name}\"]:checked`)?.value || '';\n  }\n\n  selectedValues(name) {\n    return [...this.querySelectorAll(`input[name=\"${name}\"]:checked`)].map((input) => input.value);\n  }\n\n  matchesProfile(productValue, selectedValue) {\n    const aliases = {\n      vorace: ['lettore-vorace-piu-di-12-libri-anno', 'non-riesce-a-stare-senza-libro-in-mano'],\n      affezionato: ['lettore-regolare-4-12-libri-anno', 'legge-quando-puo-ma-ci-tiene-molto'],\n      occasionale: ['lettore-occasionale-meno-di-4-libri-anno', 'sto-riscoprendo-il-piacere-di-leggere'],\n      ripartenza: ['lettore-occasionale-meno-di-4-libri-anno', 'sto-riscoprendo-il-piacere-di-leggere', 'stiamo-cercando-di-farlo-leggere-di-piu'],\n      regalo: ['e-un-regalo-per-qualcun-altro'],\n      incuriosire: ['non-e-un-gran-fan-vogliamo-incuriosirlo'],\n      prelettore: ['e-ancora-troppo-piccolo-per-leggere-da-solo'],\n      curioso: ['e-un-bambino-molto-curioso'],\n    };\n    const normalizedValue = this.normalize(productValue);\n    return (aliases[selectedValue] || [selectedValue]).some(\n      (alias) => normalizedValue === alias || normalizedValue.includes(alias)\n    );\n  }\n\n  matchesGenre(product, selectedGenres) {\n    const collectionAliases = {\n      'libri-contemporanei': ['libri-contemporanei', 'contemporanei', 'narrativa'],\n      'gialli-thriller': ['gialli-thriller', 'thriller'],\n      'libri-storici': ['libri-storici', 'romanzi-storici', 'storici'],\n      'storie-amore': ['storie-amore', 'rosa-romance', 'romance'],\n      'libri-saggistica': ['libri-saggistica', 'saggistica-memoir', 'saggistica-e-memoir', 'saggistica'],\n      cartonati: ['cartonati'],\n      'libri-da-lettura': ['libri-da-lettura'],\n      'colorati-stickers': ['colorati-stickers', 'colorati-e-stickers', 'libri-da-colorare'],\n      prescolari: ['prescolari'],\n    };\n    const handles = Array.isArray(product.collections) ? product.collections.map((value) => this.normalize(value)) : [];\n    return selectedGenres.some((genre) =>\n      (collectionAliases[genre] || [genre]).some((alias) => handles.includes(alias))\n    );\n  }\n\n  matchesAge(productValue, selectedValues) {\n    const aliases = {\n      '0-2': ['0-2', '0-2-anni'],\n      '3-5': ['3-5', '3-5-anni'],\n      '5-7': ['5-7', '5-7-anni'],\n      '8-9': ['8-9', '8-9-anni'],\n      '10-plus': ['10', '10-anni', '10-plus', '10-anni-in-su'],\n    };\n    const normalizedValues = (Array.isArray(productValue) ? productValue : [productValue]).map((value) => this.normalize(value));\n    return selectedValues.some((selectedValue) =>\n      (aliases[selectedValue] || [selectedValue]).some((alias) =>\n        normalizedValues.some((value) => value === alias || value.includes(alias))\n      )\n    );\n  }\n\n  isCurated(product, selectedPath) {\n    if (selectedPath === 'catalogo') return true;\n    return Boolean(product.curated?.[selectedPath]);\n  }\n\n  stableHash(value) {\n    let hash = 2166136261;\n    for (let index = 0; index < value.length; index += 1) {\n      hash ^= value.charCodeAt(index);\n      hash = Math.imul(hash, 16777619);\n    }\n    return hash >>> 0;\n  }\n\n  selectMatches(products, filters) {\n    const audienceProducts = products.filter(\n      (product) => this.normalize(product.audience) === filters.audience\n    );\n    if (!audienceProducts.length) return [];\n\n    const genreMatches = filters.genres.length\n      ? audienceProducts.filter((product) => this.matchesGenre(product, filters.genres))\n      : audienceProducts;\n    const hasProfileData = audienceProducts.some((product) => this.normalize(product.readerProfile));\n    const hasAgeData = audienceProducts.some((product) => {\n      const values = Array.isArray(product.age) ? product.age : [product.age];\n      return values.some((value) => this.normalize(value));\n    });\n    const hasGenreData = filters.audience === 'adulti' || audienceProducts.some((product) =>\n      ['cartonati', 'libri-da-lettura', 'colorati-stickers', 'colorati-e-stickers', 'libri-da-colorare', 'prescolari']\n        .some((handle) => (product.collections || []).map((value) => this.normalize(value)).includes(handle))\n    );\n    let candidates = hasGenreData && filters.genres.length ? genreMatches : audienceProducts;\n\n    const shouldFilterProfile = hasProfileData && !(\n      filters.audience === 'adulti' && filters.readerProfile === 'regalo'\n    );\n\n    if (shouldFilterProfile) {\n      candidates = candidates.filter((product) => this.matchesProfile(product.readerProfile, filters.readerProfile));\n    }\n    if (filters.audience === 'bambini' && hasAgeData) {\n      candidates = candidates.filter((product) => this.matchesAge(product.age, filters.childAges));\n    }\n    if (filters.audience === 'adulti' && filters.curatedPath !== 'catalogo') {\n      candidates = candidates.filter((product) => this.isCurated(product, filters.curatedPath));\n    }\n\n    const seed = [\n      filters.audience,\n      filters.readerProfile,\n      ...filters.genres.slice().sort(),\n      filters.curatedPath,\n      ...filters.childAges.slice().sort(),\n    ].join('|');\n\n    return candidates\n      .map((product) => ({ product, tieBreaker: this.stableHash(`${seed}|${product.id}`) }))\n      .sort((left, right) => left.tieBreaker - right.tieBreaker)\n      .map((entry) => entry.product);\n  }\n\n  buildSearchQuery(products) {\n    return products\n      .map((product) => String(product.title || '').trim())\n      .filter(Boolean)\n      .filter((title, index, titles) => titles.indexOf(title) === index)\n      .map((title) => `title:${JSON.stringify(title)}`)\n      .join(' OR ');\n  }\n\n  async submitFilters() {\n    const nextButton = this.querySelector('[data-book-finder-next]');\n    const nextLabel = nextButton?.querySelector('span');\n    const error = this.querySelector('.book-finder__error');\n    const originalLabel = nextLabel?.textContent;\n\n    if (nextButton) nextButton.disabled = true;\n    if (nextLabel) nextLabel.textContent = 'Cerco\u2026';\n    if (error) error.textContent = '';\n\n    try {\n      const audience = this.selectedValue('quiz_audience');\n      const readerProfile = audience === 'bambini'\n        ? this.selectedValue('quiz_child_reader_profile')\n        : this.selectedValue('quiz_reader_profile');\n      const genres = audience === 'bambini' ? this.selectedValues('quiz_child_genres') : this.selectedValues('quiz_genres');\n      const curatedPath = this.selectedValue('quiz_curated_path');\n      const childAges = this.selectedValues('quiz_child_age');\n      const products = await this.loadIndex();\n      const matches = this.selectMatches(products, {\n        audience,\n        readerProfile,\n        genres,\n        curatedPath,\n        childAges,\n      });\n\n      const url = new URL(this.dataset.resultsUrl || '/search', window.location.origin);\n      url.searchParams.set('type', 'product');\n      url.searchParams.set('options[prefix]', 'none');\n      url.searchParams.set('q', this.buildSearchQuery(matches) || '__wizard_no_results__');\n      url.searchParams.set('book_finder_audience', audience);\n      if (matches.length) {\n        url.searchParams.set('book_finder_ids', matches.map((product) => product.id).join(','));\n      }\n      window.location.assign(url.toString());\n    } catch (errorValue) {\n      console.error('Unable to load book finder results', errorValue);\n      if (error) error.textContent = 'Non riusciamo a caricare i risultati. Riprova tra poco.';\n      if (nextButton) nextButton.disabled = false;\n      if (nextLabel) nextLabel.textContent = originalLabel || 'Scopri i libri per te!';\n    }\n  }\n}\n\nif (!customElements.get('book-finder')) customElements.define('book-finder', BookFinder);\n"],
  "mappings": "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",
  "names": []
}
