{
  "version": 3,
  "sources": ["/cdn/shop/t/38/assets/darkstone-pull-list-portal-embed.js?portal_reserved_visible=20260428"],
  "sourcesContent": ["(function () {\n  var ROOT_SELECTOR = \"[data-darkstone-pull-list-portal]\";\n  var DEFAULT_SORT = \"title-az\";\n\n  function escapeHtml(value) {\n    return String(value == null ? \"\" : value)\n      .replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/\"/g, \"&quot;\")\n      .replace(/'/g, \"&#39;\");\n  }\n\n  function formatDateLabel(value) {\n    if (!value) return \"TBD\";\n\n    var date = new Date(value);\n    if (Number.isNaN(date.getTime())) return \"TBD\";\n\n    return date.toLocaleDateString(undefined, {\n      month: \"short\",\n      day: \"numeric\",\n      year: \"numeric\",\n    });\n  }\n\n  function formatMoney(value) {\n    var amount = Number(value || 0);\n    if (!Number.isFinite(amount) || amount <= 0) return null;\n\n    return amount.toLocaleString(undefined, {\n      style: \"currency\",\n      currency: \"USD\",\n    });\n  }\n\n  function getUiState(root) {\n    if (!root.__darkstonePullListUi) {\n      root.__darkstonePullListUi = {};\n    }\n\n    return root.__darkstonePullListUi;\n  }\n\n  function readQueryState() {\n    var url = new URL(window.location.href);\n\n    return {\n      publisher: (url.searchParams.get(\"publisher\") || \"\").trim(),\n      sort: (url.searchParams.get(\"sort\") || DEFAULT_SORT).trim() || DEFAULT_SORT,\n      q: (url.searchParams.get(\"q\") || \"\").trim(),\n      foc: url.searchParams.get(\"foc\") === \"next\" ? \"next\" : \"\",\n    };\n  }\n\n  function buildPageHref(params) {\n    var query = new URLSearchParams();\n\n    if (params.publisher) query.set(\"publisher\", params.publisher);\n    if (params.sort && params.sort !== DEFAULT_SORT) query.set(\"sort\", params.sort);\n    if (params.q) query.set(\"q\", params.q);\n    if (params.foc) query.set(\"foc\", params.foc);\n\n    var queryString = query.toString();\n    return window.location.pathname + (queryString ? \"?\" + queryString : \"\");\n  }\n\n  function buildEndpointUrl(root, state) {\n    var endpoint = root.getAttribute(\"data-endpoint\") || \"/apps/portal/pull-list\";\n    var url = new URL(endpoint, window.location.origin);\n\n    if (state.publisher) url.searchParams.set(\"publisher\", state.publisher);\n    if (state.sort && state.sort !== DEFAULT_SORT) url.searchParams.set(\"sort\", state.sort);\n    if (state.q) url.searchParams.set(\"q\", state.q);\n    if (state.foc) url.searchParams.set(\"foc\", state.foc);\n\n    return url.toString();\n  }\n\n  function getAvailability(release, reservationCutoffDays, serverDate) {\n    if (!release || !release.focDate) {\n      return {\n        isOpen: false,\n        label: \"Date pending\",\n        detail: \"Final-order cutoff has not been announced yet.\",\n        tone: \"soon\",\n      };\n    }\n\n    var focDate = new Date(release.focDate);\n    if (Number.isNaN(focDate.getTime())) {\n      return {\n        isOpen: false,\n        label: \"Date pending\",\n        detail: \"Final-order cutoff has not been announced yet.\",\n        tone: \"soon\",\n      };\n    }\n\n    var today = new Date(serverDate || Date.now());\n    var timeDiff = focDate.getTime() - today.getTime();\n    var daysUntilFoc = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));\n\n    if (daysUntilFoc < reservationCutoffDays) {\n      return {\n        isOpen: false,\n        label: \"Window closed\",\n        detail: \"Orders now close \" + reservationCutoffDays + \" day\" + (reservationCutoffDays === 1 ? \"\" : \"s\") + \" before FOC.\",\n        tone: \"closed\",\n      };\n    }\n\n    if (daysUntilFoc <= reservationCutoffDays + 3) {\n      var remainingDays = Math.max(daysUntilFoc - reservationCutoffDays, 0);\n      return {\n        isOpen: true,\n        label: \"Closing soon\",\n        detail: \"Reserve within \" + remainingDays + \" day\" + (remainingDays === 1 ? \"\" : \"s\") + \".\",\n        tone: \"soon\",\n      };\n    }\n\n    return {\n      isOpen: true,\n      label: \"Ordering open\",\n      detail: \"Reserve before \" + formatDateLabel(release.focDate) + \".\",\n      tone: \"open\",\n    };\n  }\n\n  async function fetchPortalData(root, state) {\n    var response = await fetch(buildEndpointUrl(root, state), {\n      credentials: \"same-origin\",\n      headers: {\n        Accept: \"application/json\",\n      },\n    });\n\n    if (!response.ok) {\n      throw new Error(\"Request failed with \" + response.status);\n    }\n\n    return response.json();\n  }\n\n  async function submitPortalRequest(root, entries) {\n    var endpoint = root.getAttribute(\"data-endpoint\") || \"/apps/portal/pull-list\";\n    var loginUrl = root.getAttribute(\"data-login-url\") || \"/account/login?return_url=%2Fpages%2Fpull-list\";\n    var body = new URLSearchParams();\n\n    Object.keys(entries).forEach(function (key) {\n      if (entries[key] == null) return;\n      body.append(key, String(entries[key]));\n    });\n\n    var response = await fetch(endpoint, {\n      method: \"POST\",\n      credentials: \"same-origin\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/x-www-form-urlencoded;charset=UTF-8\",\n      },\n      body: body.toString(),\n    });\n\n    if (response.redirected && response.url.indexOf(\"/account/login\") !== -1) {\n      window.location.href = loginUrl;\n      return null;\n    }\n\n    if (!response.ok) {\n      var errorText = \"\";\n\n      try {\n        errorText = await response.text();\n      } catch (_error) {\n        errorText = \"\";\n      }\n\n      throw new Error(errorText || (\"Request failed with \" + response.status));\n    }\n\n    return fetchPortalData(root, readQueryState());\n  }\n\n  async function submitPortalAction(root, form) {\n    var formData = new FormData(form);\n    var entries = {};\n\n    formData.forEach(function (value, key) {\n      entries[key] = String(value);\n    });\n\n    if (entries.intent === \"updateQuantity\") {\n      var quantity = Number.parseInt(entries.quantity || \"1\", 10);\n      entries.quantity = String(!Number.isFinite(quantity) || quantity < 1 ? 1 : quantity);\n    }\n\n    return submitPortalRequest(root, entries);\n  }\n\n  function renderPublisherCard(entry, state) {\n    return [\n      '<a class=\"darkstone-pull-list__publisher-card\" href=\"', escapeHtml(buildPageHref({\n        publisher: entry.publisher,\n        sort: state.sort,\n        q: state.q,\n      })), '\">',\n      '<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--publisher\">', escapeHtml(String(entry.count || 0)), ' books</span>',\n      '<h3 class=\"darkstone-pull-list__publisher-name\">', escapeHtml(entry.publisher || \"Unknown\"), \"</h3>\",\n      '<p class=\"darkstone-pull-list__publisher-copy\">Browse upcoming releases from this publisher.</p>',\n      '<div class=\"darkstone-pull-list__publisher-footer\">',\n      '<span class=\"darkstone-pull-list__publisher-cta\">Browse publisher</span>',\n      \"</div>\",\n      \"</a>\",\n    ].join(\"\");\n  }\n\n  function renderVariant(variant, release, state, availability) {\n    var variantPrice = formatMoney(variant.price);\n    var previewTitle = variant.title || release.title || \"Variant cover\";\n    var isReserved = Boolean(variant.reserved);\n    var reservedLabel = \"Reserved\" + (variant.reservedQuantity ? \" x\" + String(variant.reservedQuantity) : \"\");\n    var canReserve = Boolean(availability && availability.isOpen && !isReserved);\n\n    return [\n      '<article class=\"darkstone-pull-list__variant', isReserved ? \" is-reserved\" : \"\", '\">',\n      '<div class=\"darkstone-pull-list__variant-cover\">',\n      variant.coverImage\n        ? '<button type=\"button\" class=\"darkstone-pull-list__variant-preview-trigger\" data-open-cover-preview=\"1\" data-cover-src=\"' + escapeHtml(variant.coverImage) + '\" data-cover-title=\"' + escapeHtml(previewTitle) + '\"><img src=\"' + escapeHtml(variant.coverImage) + '\" alt=\"' + escapeHtml(previewTitle) + '\"></button>'\n        : \"\",\n      \"</div>\",\n      \"<div>\",\n      '<h4 class=\"darkstone-pull-list__variant-title\">', escapeHtml(previewTitle), \"</h4>\",\n      '<p class=\"darkstone-pull-list__variant-meta\">',\n      variantPrice ? \"Cover \" + escapeHtml(variantPrice) : \"Cover price pending\",\n      isReserved ? ' <span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-open\">' + escapeHtml(reservedLabel) + \"</span>\" : \"\",\n      \"</p>\",\n      '<form data-darkstone-portal-action method=\"post\" action=\"/apps/portal/pull-list\" style=\"margin-top:0.75rem\">',\n      '<input type=\"hidden\" name=\"intent\" value=\"add\">',\n      '<input type=\"hidden\" name=\"title\" value=\"', escapeHtml(variant.title || release.title || \"\"), '\">',\n      '<input type=\"hidden\" name=\"publisher\" value=\"', escapeHtml(release.publisher || state.publisher || \"Unknown\"), '\">',\n      '<input type=\"hidden\" name=\"productMasterId\" value=\"', escapeHtml(variant.id || \"\"), '\">',\n      '<input type=\"hidden\" name=\"selectedPublisher\" value=\"', escapeHtml(state.publisher || \"\"), '\">',\n      '<input type=\"hidden\" name=\"sortOrder\" value=\"', escapeHtml(state.sort || DEFAULT_SORT), '\">',\n      '<input type=\"hidden\" name=\"searchQuery\" value=\"', escapeHtml(state.q || \"\"), '\">',\n      '<input type=\"hidden\" name=\"focMode\" value=\"', escapeHtml(state.foc || \"\"), '\">',\n      '<button type=\"submit\" class=\"darkstone-pull-list__button darkstone-pull-list__button--ghost\"', canReserve ? \"\" : \" disabled\", \">\",\n      isReserved ? \"Reserved\" : availability && !availability.isOpen ? \"Reservation closed\" : \"Reserve this cover\",\n      \"</button>\",\n      \"</form>\",\n      \"</div>\",\n      \"</article>\",\n    ].join(\"\");\n  }\n\n  function renderCoverPreviewModal(uiState) {\n    var preview = uiState.previewCover;\n    if (!preview || !preview.src) return \"\";\n\n    return [\n      '<div class=\"darkstone-pull-list__modal\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Variant cover preview\">',\n      '<button type=\"button\" class=\"darkstone-pull-list__modal-backdrop\" data-close-cover-preview=\"1\" aria-label=\"Close cover preview\"></button>',\n      '<div class=\"darkstone-pull-list__modal-dialog\">',\n      '<div class=\"darkstone-pull-list__modal-header\">',\n      '<p class=\"darkstone-pull-list__section-kicker\">Cover preview</p>',\n      '<button type=\"button\" class=\"darkstone-pull-list__modal-close\" data-close-cover-preview=\"1\" aria-label=\"Close cover preview\">Close</button>',\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__modal-image-wrap\">',\n      '<img class=\"darkstone-pull-list__modal-image\" src=\"', escapeHtml(preview.src), '\" alt=\"', escapeHtml(preview.title || \"Variant cover preview\"), '\">',\n      \"</div>\",\n      preview.title ? '<p class=\"darkstone-pull-list__modal-copy\">' + escapeHtml(preview.title) + \"</p>\" : \"\",\n      \"</div>\",\n      \"</div>\",\n    ].join(\"\");\n  }\n\n  function renderPullItem(item, state) {\n    var itemMeta = [];\n    var isSeries = Boolean(item.isSeries);\n\n    if (item.publisher) {\n      itemMeta.push('<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--publisher\">' + escapeHtml(item.publisher) + \"</span>\");\n    }\n\n    if (isSeries) {\n      itemMeta.push('<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-soon\">Standing order</span>');\n    } else if (item.issueNumber) {\n      itemMeta.push('<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-soon\">Issue #' + escapeHtml(item.issueNumber) + \"</span>\");\n      itemMeta.push('<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-open\">Qty ' + escapeHtml(String(item.quantity || 1)) + \"</span>\");\n    }\n\n    if (item.storeDate) {\n      itemMeta.push('<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-open\">On sale ' + escapeHtml(formatDateLabel(item.storeDate)) + \"</span>\");\n    }\n\n    return [\n      '<article class=\"darkstone-pull-list__manage-item\">',\n      '<div class=\"darkstone-pull-list__manage-cover\">',\n      item.coverImage\n        ? '<img src=\"' + escapeHtml(item.coverImage) + '\" alt=\"' + escapeHtml(item.title || \"Pull list item\") + '\">'\n        : '<div class=\"darkstone-pull-list__manage-fallback\">' + escapeHtml(isSeries ? \"Series\" : \"Issue\") + \"</div>\",\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__manage-body\">',\n      '<h4 class=\"darkstone-pull-list__manage-title\">', escapeHtml(item.title || \"Pull list item\"), \"</h4>\",\n      itemMeta.length ? '<div class=\"darkstone-pull-list__badge-row darkstone-pull-list__manage-meta\">' + itemMeta.join(\"\") + \"</div>\" : \"\",\n      '<div class=\"darkstone-pull-list__manage-actions\">',\n      !isSeries ? [\n        '<form data-darkstone-portal-action method=\"post\" action=\"/apps/portal/pull-list\" class=\"darkstone-pull-list__manage-row\">',\n        '<input type=\"hidden\" name=\"intent\" value=\"updateQuantity\">',\n        '<input type=\"hidden\" name=\"itemId\" value=\"', escapeHtml(item.id || \"\"), '\">',\n        '<input type=\"hidden\" name=\"selectedPublisher\" value=\"', escapeHtml(state.publisher || \"\"), '\">',\n        '<input type=\"hidden\" name=\"sortOrder\" value=\"', escapeHtml(state.sort || DEFAULT_SORT), '\">',\n        '<input type=\"hidden\" name=\"searchQuery\" value=\"', escapeHtml(state.q || \"\"), '\">',\n        '<input type=\"hidden\" name=\"focMode\" value=\"', escapeHtml(state.foc || \"\"), '\">',\n        '<div class=\"darkstone-pull-list__manage-quantity\">',\n        '<label class=\"darkstone-pull-list__manage-label\" for=\"qty-', escapeHtml(item.id || \"item\"), '\">Quantity</label>',\n        '<input id=\"qty-', escapeHtml(item.id || \"item\"), '\" class=\"darkstone-pull-list__input\" type=\"number\" min=\"1\" step=\"1\" name=\"quantity\" value=\"', escapeHtml(String(item.quantity || 1)), '\">',\n        \"</div>\",\n        '<button type=\"submit\" class=\"darkstone-pull-list__button darkstone-pull-list__button--ghost\">Update quantity</button>',\n        \"</form>\",\n      ].join(\"\") : \"\",\n      '<form data-darkstone-portal-action method=\"post\" action=\"/apps/portal/pull-list\">',\n      '<input type=\"hidden\" name=\"intent\" value=\"removeItem\">',\n      '<input type=\"hidden\" name=\"itemId\" value=\"', escapeHtml(item.id || \"\"), '\">',\n      '<input type=\"hidden\" name=\"selectedPublisher\" value=\"', escapeHtml(state.publisher || \"\"), '\">',\n      '<input type=\"hidden\" name=\"sortOrder\" value=\"', escapeHtml(state.sort || DEFAULT_SORT), '\">',\n      '<input type=\"hidden\" name=\"searchQuery\" value=\"', escapeHtml(state.q || \"\"), '\">',\n      '<input type=\"hidden\" name=\"focMode\" value=\"', escapeHtml(state.foc || \"\"), '\">',\n      '<button type=\"submit\" class=\"darkstone-pull-list__button darkstone-pull-list__button--danger\">', escapeHtml(isSeries ? \"Cancel subscription\" : \"Remove hold\"), \"</button>\",\n      \"</form>\",\n      \"</div>\",\n      \"</div>\",\n      \"</article>\",\n    ].join(\"\");\n  }\n\n  function getVariantDetailsKey(release) {\n    return [\n      release.id,\n      release.publisher,\n      release.seriesTitle || release.title,\n      release.issueNumber,\n      release.focDate,\n    ].filter(Boolean).join(\"|\") || release.title || \"release\";\n  }\n\n  function renderReleaseCard(release, data, state, uiState) {\n    var variants = Array.isArray(release.variants) ? release.variants : [];\n    var primaryVariant = variants[0] || {};\n    var availability = getAvailability(release, Number(data.reservationCutoffDays || 0), data.serverDate);\n    var mainCoverPrice = formatMoney(primaryVariant.price);\n    var primaryReserved = Boolean(primaryVariant.reserved);\n    var alternateVariants = variants.slice(1);\n    var variantDetailsKey = getVariantDetailsKey(release);\n    var variantDetailsOpen = Boolean(uiState.openVariantDetails && uiState.openVariantDetails[variantDetailsKey]);\n\n    return [\n      '<article class=\"darkstone-pull-list__release\">',\n      '<div class=\"darkstone-pull-list__release-image\">',\n      primaryVariant.coverImage\n        ? '<img src=\"' + escapeHtml(primaryVariant.coverImage) + '\" alt=\"' + escapeHtml(release.title || \"Upcoming release\") + '\">'\n        : '<div class=\"darkstone-pull-list__release-fallback\">' + escapeHtml(release.title || \"Upcoming release\") + \"</div>\",\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__release-body\">',\n      '<div class=\"darkstone-pull-list__badge-row\">',\n      '<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--status is-' + escapeHtml(availability.tone) + '\">',\n      escapeHtml(availability.label),\n      \"</span>\",\n      release.issueNumber\n        ? '<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--publisher\">Issue #' + escapeHtml(release.issueNumber) + \"</span>\"\n        : \"\",\n      \"</div>\",\n      '<h3 class=\"darkstone-pull-list__release-title\">', escapeHtml(release.title || \"Upcoming release\"), \"</h3>\",\n      '<p class=\"darkstone-pull-list__release-copy\">', escapeHtml(availability.detail), \"</p>\",\n      '<p class=\"darkstone-pull-list__meta\"><strong>FOC ', escapeHtml(formatDateLabel(release.focDate)), \"</strong>\",\n      mainCoverPrice ? \" | Main cover \" + escapeHtml(mainCoverPrice) : \"\",\n      \" | \" + escapeHtml(variants.length > 1 ? variants.length + \" cover options\" : \"Single cover\"),\n      \"</p>\",\n      '<div class=\"darkstone-pull-list__release-actions\">',\n      '<form data-darkstone-portal-action method=\"post\" action=\"/apps/portal/pull-list\">',\n      '<input type=\"hidden\" name=\"intent\" value=\"add\">',\n      '<input type=\"hidden\" name=\"title\" value=\"', escapeHtml(primaryVariant.title || release.title || \"\"), '\">',\n      '<input type=\"hidden\" name=\"publisher\" value=\"', escapeHtml(release.publisher || state.publisher || \"Unknown\"), '\">',\n      '<input type=\"hidden\" name=\"productMasterId\" value=\"', escapeHtml(primaryVariant.id || release.id || \"\"), '\">',\n      '<input type=\"hidden\" name=\"selectedPublisher\" value=\"', escapeHtml(state.publisher || \"\"), '\">',\n      '<input type=\"hidden\" name=\"sortOrder\" value=\"', escapeHtml(state.sort || DEFAULT_SORT), '\">',\n      '<input type=\"hidden\" name=\"searchQuery\" value=\"', escapeHtml(state.q || \"\"), '\">',\n      '<input type=\"hidden\" name=\"focMode\" value=\"', escapeHtml(state.foc || \"\"), '\">',\n      '<button type=\"submit\" class=\"darkstone-pull-list__button darkstone-pull-list__button--primary\"', availability.isOpen && !primaryReserved ? \"\" : \" disabled\", \">\",\n      primaryReserved\n        ? \"Reserved\" + (primaryVariant.reservedQuantity ? \" x\" + escapeHtml(String(primaryVariant.reservedQuantity)) : \"\")\n        : availability.isOpen ? \"Add main cover\" : \"Reservation closed\",\n      \"</button>\",\n      \"</form>\",\n      '<form data-darkstone-portal-action method=\"post\" action=\"/apps/portal/pull-list\">',\n      '<input type=\"hidden\" name=\"intent\" value=\"subscribeSeries\">',\n      '<input type=\"hidden\" name=\"seriesTitle\" value=\"', escapeHtml(release.seriesTitle || release.title || \"\"), '\">',\n      '<input type=\"hidden\" name=\"publisher\" value=\"', escapeHtml(release.publisher || state.publisher || \"Unknown\"), '\">',\n      '<input type=\"hidden\" name=\"selectedPublisher\" value=\"', escapeHtml(state.publisher || \"\"), '\">',\n      '<input type=\"hidden\" name=\"sortOrder\" value=\"', escapeHtml(state.sort || DEFAULT_SORT), '\">',\n      '<input type=\"hidden\" name=\"searchQuery\" value=\"', escapeHtml(state.q || \"\"), '\">',\n      '<input type=\"hidden\" name=\"focMode\" value=\"', escapeHtml(state.foc || \"\"), '\">',\n      '<button type=\"submit\" class=\"darkstone-pull-list__button darkstone-pull-list__button--ghost\">Subscribe to series</button>',\n      \"</form>\",\n      \"</div>\",\n      alternateVariants.length ? [\n        '<details class=\"darkstone-pull-list__details\" data-variant-details=\"', escapeHtml(variantDetailsKey), '\"', variantDetailsOpen ? \" open\" : \"\", \">\",\n        \"<summary>View alternate covers (\" + escapeHtml(String(alternateVariants.length)) + \")</summary>\",\n        '<div class=\"darkstone-pull-list__variant-list\">',\n        alternateVariants.map(function (variant) { return renderVariant(variant, release, state, availability); }).join(\"\"),\n        \"</div>\",\n        \"</details>\",\n      ].join(\"\") : \"\",\n      \"</div>\",\n      \"</article>\",\n    ].join(\"\");\n  }\n\n  function renderManageColumn(key, title, items, state, emptyMessage, uiState) {\n    var isOpen = Boolean(uiState[key]);\n    var itemCount = items.length;\n    var countLabel = itemCount + \" item\" + (itemCount === 1 ? \"\" : \"s\");\n\n    return [\n      '<article class=\"darkstone-pull-list__card darkstone-pull-list__manage-card',\n      isOpen ? \" is-open\" : \" is-collapsed\",\n      '\">',\n      '<p class=\"darkstone-pull-list__section-kicker\">Current pull list</p>',\n      '<button type=\"button\" class=\"darkstone-pull-list__manage-toggle\" data-toggle-pull-section=\"', escapeHtml(key), '\" aria-expanded=\"', isOpen ? \"true\" : \"false\", '\">',\n      '<span class=\"darkstone-pull-list__manage-toggle-heading\">',\n      '<span class=\"darkstone-pull-list__card-title\">', escapeHtml(title), \"</span>\",\n      '<span class=\"darkstone-pull-list__manage-count\">', escapeHtml(countLabel), \"</span>\",\n      \"</span>\",\n      '<span class=\"darkstone-pull-list__manage-toggle-copy\">', isOpen ? \"Hide\" : \"Show\", \"</span>\",\n      \"</button>\",\n      '<div class=\"darkstone-pull-list__manage-panel\"', isOpen ? \"\" : \" hidden\", \">\",\n      itemCount\n        ? '<div class=\"darkstone-pull-list__manage-list\">' + items.map(function (item) { return renderPullItem(item, state); }).join(\"\") + \"</div>\"\n        : '<div class=\"darkstone-pull-list__empty darkstone-pull-list__manage-empty\">' + escapeHtml(emptyMessage) + \"</div>\",\n      \"</div>\",\n      \"</article>\",\n    ].join(\"\");\n  }\n\n  function renderGuestState(root, data, notice, error) {\n    var loginUrl = root.getAttribute(\"data-login-url\") || \"/account/login?return_url=%2Fpages%2Fpull-list\";\n    var uiState = getUiState(root);\n    uiState.previewCover = null;\n    root.__darkstonePullListMessages = {\n      notice: notice || \"\",\n      error: error || \"\",\n    };\n    document.body.classList.remove(\"darkstone-pull-list-modal-open\");\n\n    root.innerHTML = [\n      notice ? '<div class=\"darkstone-pull-list__notice\">' + escapeHtml(notice) + \"</div>\" : \"\",\n      error ? '<div class=\"darkstone-pull-list__error\">' + escapeHtml(error) + \"</div>\" : \"\",\n      '<section class=\"darkstone-pull-list__hero\">',\n      \"<div>\",\n      '<p class=\"darkstone-pull-list__kicker\">Darkstone Pull List</p>',\n      '<h2 class=\"darkstone-pull-list__title\">Sign in to open your collector pull list.</h2>',\n      '<p class=\"darkstone-pull-list__copy\">Once you are signed in, this page will show your publisher shelves, active pull-list stats, and one-click reserve actions without leaving the main storefront.</p>',\n      '<div class=\"darkstone-pull-list__chips\">',\n      '<span class=\"darkstone-pull-list__chip\">Reserve weekly books before final cutoff</span>',\n      '<span class=\"darkstone-pull-list__chip\">Keep the main Darkstone site navigation</span>',\n      '<span class=\"darkstone-pull-list__chip\">Jump between Guild, events, and your account</span>',\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__actions\">',\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__button--primary\" href=\"' + escapeHtml(loginUrl) + '\">Sign in to continue</a>',\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"/pages/events\">Browse events</a>',\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"/account\">Go to account</a>',\n      \"</div>\",\n      \"</div>\",\n      '<aside class=\"darkstone-pull-list__snapshot\">',\n      \"<p>Sign in to browse publisher shelves and reserve weekly books without leaving the storefront.</p>\",\n      \"<p><strong>\" + escapeHtml(formatDateLabel(data.serverDate)) + \"</strong> is the latest storefront sync date.</p>\",\n      \"<p>Your pull list, Guild tools, and events all stay connected here.</p>\",\n      \"</aside>\",\n      \"</section>\",\n    ].join(\"\");\n  }\n\n  function renderPortal(root, data, state, notice, error) {\n    var customerName = escapeHtml((data.customer && data.customer.firstName) || \"Collector\");\n    var selectedPublisher = data.selectedPublisher || \"\";\n    var publishers = Array.isArray(data.publishers) ? data.publishers : [];\n    var releases = Array.isArray(data.upcomingReleases) ? data.upcomingReleases : [];\n    var activePullItems = Array.isArray(data.activePullItems) ? data.activePullItems : [];\n    var reservedIssueItems = activePullItems.filter(function (item) { return !item.isSeries; });\n    var reservedSeriesItems = activePullItems.filter(function (item) { return item.isSeries; });\n    var isNextFocView = data.focMode === \"next\" || state.foc === \"next\";\n    var hasSelectedPublisher = Boolean(selectedPublisher) && !isNextFocView;\n    var nextFocDate = data.nextFocDate || \"\";\n    var nextFocReleaseCount = Number(data.nextFocReleaseCount || 0);\n    var uiState = getUiState(root);\n\n    if (typeof uiState.reservedBooks === \"undefined\") {\n      uiState.reservedBooks = reservedIssueItems.length === 0;\n    }\n\n    if (typeof uiState.seriesSubscriptions === \"undefined\") {\n      uiState.seriesSubscriptions = reservedSeriesItems.length === 0;\n    }\n\n    uiState.openVariantDetails = uiState.openVariantDetails || {};\n\n    root.__darkstonePullListMessages = {\n      notice: notice || \"\",\n      error: error || \"\",\n    };\n    document.body.classList.toggle(\"darkstone-pull-list-modal-open\", Boolean(uiState.previewCover && uiState.previewCover.src));\n\n    root.innerHTML = [\n      notice ? '<div class=\"darkstone-pull-list__notice\">' + escapeHtml(notice) + \"</div>\" : \"\",\n      error ? '<div class=\"darkstone-pull-list__error\">' + escapeHtml(error) + \"</div>\" : \"\",\n      '<section class=\"darkstone-pull-list__hero\">',\n      \"<div>\",\n      '<p class=\"darkstone-pull-list__kicker\">Darkstone Pull List</p>',\n      '<h2 class=\"darkstone-pull-list__title\">',\n      isNextFocView ? \"Books due by the next FOC.\" : hasSelectedPublisher ? \"Reserve \" + escapeHtml(selectedPublisher) + \" books.\" : \"Browse this week's publisher shelves.\",\n      \"</h2>\",\n      '<p class=\"darkstone-pull-list__copy\">',\n      isNextFocView\n        ? \"Welcome back, \" + customerName + \". This view gathers every publisher with books due by \" + escapeHtml(formatDateLabel(nextFocDate)) + \" so you can make the next cutoff pass without hunting shelf by shelf.\"\n        : hasSelectedPublisher\n        ? \"Welcome back, \" + customerName + \". Reserve the main cover fast, then open alternate covers when you want a specific variant.\"\n        : \"Welcome back, \" + customerName + \". Start with the publishers below, reserve books before FOC, and manage your current holds without leaving the storefront.\",\n      \"</p>\",\n      '<div class=\"darkstone-pull-list__chips\">',\n      '<span class=\"darkstone-pull-list__chip\">Reservations close ' + escapeHtml(String(data.reservationCutoffDays || 0)) + \" day\" + (Number(data.reservationCutoffDays || 0) === 1 ? \"\" : \"s\") + \" before FOC</span>\",\n      '<span class=\"darkstone-pull-list__chip\">' + escapeHtml(String(data.activePullCount || 0)) + \" active pull-list item\" + (Number(data.activePullCount || 0) === 1 ? \"\" : \"s\") + \"</span>\",\n      '<span class=\"darkstone-pull-list__chip\">' + escapeHtml(String(data.seriesSubscriptionCount || 0)) + \" active series subscription\" + (Number(data.seriesSubscriptionCount || 0) === 1 ? \"\" : \"s\") + \"</span>\",\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__actions\">',\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__button--primary\" href=\"/account\">My account</a>',\n      nextFocDate\n        ? isNextFocView\n          ? '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"' + escapeHtml(buildPageHref({})) + '\">Back to publishers</a>'\n          : '<a class=\"darkstone-pull-list__link darkstone-pull-list__button--primary\" href=\"' + escapeHtml(buildPageHref({ foc: \"next\", sort: \"foc-soon\" })) + '\">View next FOC (' + escapeHtml(String(nextFocReleaseCount)) + ')</a>'\n        : \"\",\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"/apps/portal/guild-ledger\">Guild ledger</a>',\n      '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"/pages/events\">Events and tickets</a>',\n      \"</div>\",\n      \"</div>\",\n      '<aside class=\"darkstone-pull-list__snapshot\">',\n      \"<p><strong>\" + escapeHtml(String(data.seriesSubscriptionCount || 0)) + \"</strong> series subscription\" + (Number(data.seriesSubscriptionCount || 0) === 1 ? \"\" : \"s\") + \" are active on your pull list.</p>\",\n      nextFocDate\n        ? \"<p><strong>\" + escapeHtml(String(nextFocReleaseCount)) + \"</strong> book group\" + (nextFocReleaseCount === 1 ? \"\" : \"s\") + \" are due by the next FOC on \" + escapeHtml(formatDateLabel(nextFocDate)) + \".</p>\"\n        : \"\",\n      \"<p><strong>\" + escapeHtml(formatDateLabel(data.serverDate)) + \"</strong> is the storefront sync date for this browsing session.</p>\",\n      isNextFocView\n        ? \"<p>Use this cross-publisher view when you want to review the nearest cutoff first.</p>\"\n        : hasSelectedPublisher\n        ? \"<p>Reserve books from this publisher, then update your holds right below.</p>\"\n        : \"<p>Pick a publisher first or update the active holds already tied to your account.</p>\",\n      hasSelectedPublisher || isNextFocView\n        ? '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"' + escapeHtml(buildPageHref({})) + '\">Back to publishers</a>'\n        : \"\",\n      \"</aside>\",\n      \"</section>\",\n\n      '<section class=\"darkstone-pull-list__section\">',\n      '<div class=\"darkstone-pull-list__toolbar\">',\n      \"<div>\",\n      '<p class=\"darkstone-pull-list__section-kicker\">Current pull list</p>',\n      '<h3 class=\"darkstone-pull-list__section-title\">Reserved books and active series</h3>',\n      '<p class=\"darkstone-pull-list__copy\">Open either box when you want to update quantities, remove holds, or review your always-on subscriptions.</p>',\n      '<div class=\"darkstone-pull-list__badge-row darkstone-pull-list__toolbar-chips\">',\n      '<span class=\"darkstone-pull-list__chip\">' + escapeHtml(String(reservedIssueItems.length)) + \" reserved book\" + (reservedIssueItems.length === 1 ? \"\" : \"s\") + \"</span>\",\n      '<span class=\"darkstone-pull-list__chip\">' + escapeHtml(String(reservedSeriesItems.length)) + \" series subscription\" + (reservedSeriesItems.length === 1 ? \"\" : \"s\") + \"</span>\",\n      '<span class=\"darkstone-pull-list__chip\">' + escapeHtml(String(data.activePullCount || 0)) + \" total active item\" + (Number(data.activePullCount || 0) === 1 ? \"\" : \"s\") + \"</span>\",\n      \"</div>\",\n      \"</div>\",\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__manage-grid\">',\n      renderManageColumn(\"reservedBooks\", \"Reserved books\", reservedIssueItems, state, \"No current reserved books are on this pull list yet.\", uiState),\n      renderManageColumn(\"seriesSubscriptions\", \"Series subscriptions\", reservedSeriesItems, state, \"No active series subscriptions are on this pull list yet.\", uiState),\n      \"</div>\",\n      \"</section>\",\n\n      hasSelectedPublisher || isNextFocView\n        ? [\n            '<section class=\"darkstone-pull-list__section darkstone-pull-list__browse-section\">',\n            '<div class=\"darkstone-pull-list__toolbar\">',\n            \"<div>\",\n            '<p class=\"darkstone-pull-list__section-kicker\">', isNextFocView ? \"Next FOC shelf\" : \"Publisher shelf\", \"</p>\",\n            '<h3 class=\"darkstone-pull-list__section-title\">', isNextFocView ? \"Due by \" + escapeHtml(formatDateLabel(nextFocDate)) : escapeHtml(selectedPublisher), \"</h3>\",\n            '<p class=\"darkstone-pull-list__copy\">', isNextFocView ? \"Showing every publisher with books due by the nearest final-order cutoff.\" : \"Reserve the main cover fast, then open alternate covers when you want a specific variant.\", \"</p>\",\n            \"</div>\",\n            isNextFocView\n              ? '<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--publisher\">' + escapeHtml(String(nextFocReleaseCount)) + ' due</span>'\n              : '<span class=\"darkstone-pull-list__badge darkstone-pull-list__badge--publisher\">' + escapeHtml(selectedPublisher) + '</span>',\n            \"</div>\",\n            '<div class=\"darkstone-pull-list__card darkstone-pull-list__filter\">',\n            '<form method=\"get\" action=\"', escapeHtml(window.location.pathname), '\">',\n            isNextFocView\n              ? '<input type=\"hidden\" name=\"foc\" value=\"next\">'\n              : '<input type=\"hidden\" name=\"publisher\" value=\"' + escapeHtml(selectedPublisher) + '\">',\n            '<div class=\"darkstone-pull-list__filter-row\">',\n            '<input class=\"darkstone-pull-list__input\" type=\"search\" name=\"q\" value=\"', escapeHtml(data.searchQuery || \"\"), '\" placeholder=\"Search titles or cover variants\">',\n            '<select class=\"darkstone-pull-list__select\" name=\"sort\">',\n            '<option value=\"title-az\"', data.sortOrder === \"title-az\" ? \" selected\" : \"\", \">Title A-Z</option>\",\n            '<option value=\"title-za\"', data.sortOrder === \"title-za\" ? \" selected\" : \"\", \">Title Z-A</option>\",\n            '<option value=\"foc-soon\"', data.sortOrder === \"foc-soon\" ? \" selected\" : \"\", \">FOC closing soon</option>\",\n            '<option value=\"foc-late\"', data.sortOrder === \"foc-late\" ? \" selected\" : \"\", \">FOC closing later</option>\",\n            \"</select>\",\n            '<button class=\"darkstone-pull-list__button darkstone-pull-list__button--primary\" type=\"submit\">Apply filters</button>',\n            '<a class=\"darkstone-pull-list__link darkstone-pull-list__link--ghost\" href=\"', escapeHtml(isNextFocView ? buildPageHref({ foc: \"next\", sort: \"foc-soon\" }) : buildPageHref({ publisher: selectedPublisher })), '\">Reset</a>',\n            \"</div>\",\n            '<p class=\"darkstone-pull-list__filter-note\">', isNextFocView ? \"This cross-publisher view is sorted for the nearest FOC first so you can quickly catch anything due next.\" : \"Reserve a main cover in one click, then open alternate covers only when you want a specific variant.\", \"</p>\",\n            \"</form>\",\n            \"</div>\",\n            releases.length\n              ? '<div class=\"darkstone-pull-list__release-grid\">' + releases.map(function (release) { return renderReleaseCard(release, data, state, uiState); }).join(\"\") + \"</div>\"\n              : '<div class=\"darkstone-pull-list__empty\">No books match this shelf right now. Try another search term or reset the filters.</div>',\n            \"</section>\",\n          ].join(\"\")\n        : [\n            '<section class=\"darkstone-pull-list__section darkstone-pull-list__browse-section\">',\n            '<div class=\"darkstone-pull-list__toolbar\">',\n            '<div>',\n            '<p class=\"darkstone-pull-list__section-kicker\">Browse by publisher</p>',\n            '<h3 class=\"darkstone-pull-list__section-title\">Publisher shelves</h3>',\n            '<p class=\"darkstone-pull-list__copy\">Pick a publisher shelf, or jump straight to the nearest final-order cutoff across every publisher.</p>',\n            '</div>',\n            nextFocDate\n              ? '<a class=\"darkstone-pull-list__link darkstone-pull-list__button--primary\" href=\"' + escapeHtml(buildPageHref({ foc: \"next\", sort: \"foc-soon\" })) + '\">View books due by ' + escapeHtml(formatDateLabel(nextFocDate)) + '</a>'\n              : \"\",\n            '</div>',\n            publishers.length\n              ? '<div class=\"darkstone-pull-list__publisher-grid\">' + publishers.map(function (entry) { return renderPublisherCard(entry, state); }).join(\"\") + \"</div>\"\n              : '<div class=\"darkstone-pull-list__empty\">No publisher shelves are live yet. Once the next weekly imports are in range, they will appear here automatically.</div>',\n            \"</section>\",\n          ].join(\"\"),\n      renderCoverPreviewModal(uiState),\n    ].join(\"\");\n  }\n\n  function renderLoadError(root, message) {\n    var uiState = getUiState(root);\n    uiState.previewCover = null;\n    root.__darkstonePullListMessages = {\n      notice: \"\",\n      error: message || \"\",\n    };\n    document.body.classList.remove(\"darkstone-pull-list-modal-open\");\n\n    root.innerHTML = [\n      '<div class=\"darkstone-pull-list__error\">',\n      escapeHtml(message),\n      \"</div>\",\n      '<div class=\"darkstone-pull-list__notice\">Refresh the page in a moment. If the problem persists, the app deployment and theme publish step may be out of sync.</div>',\n    ].join(\"\");\n  }\n\n  async function refresh(root, options) {\n    options = options || {};\n    root.innerHTML = '<div class=\"darkstone-pull-list__loading\">Loading the Darkstone pull list portal...</div>';\n\n    try {\n      var data = await fetchPortalData(root, readQueryState());\n      root.__darkstonePullListData = data;\n      root.__darkstonePullListState = readQueryState();\n\n      if (data.requiresLogin) {\n        renderGuestState(root, data, options.notice, options.error);\n        return;\n      }\n\n      renderPortal(root, data, readQueryState(), options.notice, options.error);\n    } catch (error) {\n      renderLoadError(root, error && error.message ? error.message : \"We could not load the pull list right now.\");\n    }\n  }\n\n  function getSuccessNotice(form) {\n    var intent = form.querySelector('input[name=\"intent\"]');\n    var title = form.querySelector('input[name=\"title\"]');\n    var seriesTitle = form.querySelector('input[name=\"seriesTitle\"]');\n\n    if (!intent) return \"Your pull list was updated.\";\n    if (intent.value === \"subscribeSeries\") {\n      return (seriesTitle && seriesTitle.value ? seriesTitle.value : \"This series\") + \" is now on your pull list.\";\n    }\n    if (intent.value === \"updateQuantity\") {\n      return \"Quantity updated.\";\n    }\n    if (intent.value === \"removeItem\") {\n      return \"Pull list item removed.\";\n    }\n\n    return (title && title.value ? title.value : \"That issue\") + \" was added to your pull list.\";\n  }\n\n  function getPendingLabel(form) {\n    var intent = form.querySelector('input[name=\"intent\"]');\n    if (!intent) return \"Saving...\";\n    if (intent.value === \"subscribeSeries\") return \"Subscribing...\";\n    if (intent.value === \"updateQuantity\") return \"Updating...\";\n    if (intent.value === \"removeItem\") return \"Removing...\";\n    return \"Adding...\";\n  }\n\n  function setActionPending(form) {\n    var button = form.querySelector('button[type=\"submit\"]');\n    if (!button) return function () {};\n\n    var originalHtml = button.innerHTML;\n    var originalDisabled = button.disabled;\n    button.disabled = true;\n    button.setAttribute(\"aria-busy\", \"true\");\n    button.innerHTML = getPendingLabel(form);\n\n    return function () {\n      button.disabled = originalDisabled;\n      button.removeAttribute(\"aria-busy\");\n      button.innerHTML = originalHtml;\n    };\n  }\n\n  function captureScrollPosition() {\n    return {\n      x: window.pageXOffset || document.documentElement.scrollLeft || 0,\n      y: window.pageYOffset || document.documentElement.scrollTop || 0,\n    };\n  }\n\n  function restoreScrollPosition(position) {\n    if (!position) return;\n    window.requestAnimationFrame(function () {\n      window.scrollTo(position.x, position.y);\n    });\n  }\n\n  function bindRoot(root) {\n    if (root.__darkstonePullListBound) return;\n    root.__darkstonePullListBound = true;\n\n    root.addEventListener(\"toggle\", function (event) {\n      var details = event.target;\n      if (!(details instanceof HTMLDetailsElement) || !details.hasAttribute(\"data-variant-details\")) {\n        return;\n      }\n\n      var detailsKey = details.getAttribute(\"data-variant-details\");\n      if (!detailsKey) return;\n\n      var uiState = getUiState(root);\n      uiState.openVariantDetails = uiState.openVariantDetails || {};\n      if (details.open) {\n        uiState.openVariantDetails[detailsKey] = true;\n      } else {\n        delete uiState.openVariantDetails[detailsKey];\n      }\n    }, true);\n\n    root.addEventListener(\"submit\", function (event) {\n      var form = event.target;\n      if (!(form instanceof HTMLFormElement) || !form.hasAttribute(\"data-darkstone-portal-action\")) {\n        return;\n      }\n\n      event.preventDefault();\n\n      if (root.getAttribute(\"data-busy\") === \"1\") {\n        return;\n      }\n\n      root.setAttribute(\"data-busy\", \"1\");\n      var restoreActionButton = setActionPending(form);\n      var scrollPosition = captureScrollPosition();\n      var openVariantDetails = form.closest(\"details[data-variant-details]\");\n      if (openVariantDetails) {\n        var openDetailsKey = openVariantDetails.getAttribute(\"data-variant-details\");\n        if (openDetailsKey) {\n          var uiState = getUiState(root);\n          uiState.openVariantDetails = uiState.openVariantDetails || {};\n          uiState.openVariantDetails[openDetailsKey] = true;\n        }\n      }\n\n      submitPortalAction(root, form)\n        .then(function (data) {\n          root.removeAttribute(\"data-busy\");\n          restoreActionButton();\n          if (!data) return;\n\n          root.__darkstonePullListData = data;\n          root.__darkstonePullListState = readQueryState();\n          renderPortal(root, data, readQueryState(), getSuccessNotice(form), \"\");\n          restoreScrollPosition(scrollPosition);\n        })\n        .catch(function (error) {\n          root.removeAttribute(\"data-busy\");\n          restoreActionButton();\n          refresh(root, {\n            error: error && error.message ? error.message : \"We could not update the pull list right now.\",\n          });\n        });\n    });\n\n    root.addEventListener(\"click\", function (event) {\n      var previewTrigger = event.target instanceof Element ? event.target.closest(\"[data-open-cover-preview]\") : null;\n      if (previewTrigger && root.contains(previewTrigger)) {\n        var uiState = getUiState(root);\n        uiState.previewCover = {\n          src: previewTrigger.getAttribute(\"data-cover-src\") || \"\",\n          title: previewTrigger.getAttribute(\"data-cover-title\") || \"Variant cover\",\n        };\n\n        if (root.__darkstonePullListData && !root.__darkstonePullListData.requiresLogin) {\n          var previewMessages = root.__darkstonePullListMessages || {};\n          renderPortal(\n            root,\n            root.__darkstonePullListData,\n            root.__darkstonePullListState || readQueryState(),\n            previewMessages.notice || \"\",\n            previewMessages.error || \"\"\n          );\n        }\n        return;\n      }\n\n      var closePreview = event.target instanceof Element ? event.target.closest(\"[data-close-cover-preview]\") : null;\n      if (closePreview && root.contains(closePreview)) {\n        var closeUiState = getUiState(root);\n        closeUiState.previewCover = null;\n\n        if (root.__darkstonePullListData && !root.__darkstonePullListData.requiresLogin) {\n          var closeMessages = root.__darkstonePullListMessages || {};\n          renderPortal(\n            root,\n            root.__darkstonePullListData,\n            root.__darkstonePullListState || readQueryState(),\n            closeMessages.notice || \"\",\n            closeMessages.error || \"\"\n          );\n        }\n        return;\n      }\n\n      var toggle = event.target instanceof Element ? event.target.closest(\"[data-toggle-pull-section]\") : null;\n      if (!toggle || !root.contains(toggle)) {\n        return;\n      }\n\n      var sectionKey = toggle.getAttribute(\"data-toggle-pull-section\");\n      if (!sectionKey) {\n        return;\n      }\n\n      var uiState = getUiState(root);\n      uiState[sectionKey] = !Boolean(uiState[sectionKey]);\n\n      if (root.__darkstonePullListData && !root.__darkstonePullListData.requiresLogin) {\n        var messages = root.__darkstonePullListMessages || {};\n        renderPortal(\n          root,\n          root.__darkstonePullListData,\n          root.__darkstonePullListState || readQueryState(),\n          messages.notice || \"\",\n          messages.error || \"\"\n        );\n      }\n    });\n\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key !== \"Escape\") {\n        return;\n      }\n\n      var uiState = getUiState(root);\n      if (!uiState.previewCover) {\n        return;\n      }\n\n      uiState.previewCover = null;\n\n      if (root.__darkstonePullListData && !root.__darkstonePullListData.requiresLogin) {\n        var messages = root.__darkstonePullListMessages || {};\n        renderPortal(\n          root,\n          root.__darkstonePullListData,\n          root.__darkstonePullListState || readQueryState(),\n          messages.notice || \"\",\n          messages.error || \"\"\n        );\n      }\n    });\n  }\n\n  function mountRoot(root) {\n    bindRoot(root);\n    refresh(root);\n  }\n\n  function onReady(callback) {\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", callback, { once: true });\n      return;\n    }\n\n    callback();\n  }\n\n  onReady(function () {\n    var roots = document.querySelectorAll(ROOT_SELECTOR);\n    roots.forEach(function (root) {\n      mountRoot(root);\n    });\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
