{"version":3,"names":["BOUGHT_PRO","BOUGHT_MAX","BOUGHT","concat","NOT_BOUGHT","ASK_FIRST","I27_UPDATED","I27_NOT_YET","I27_ASK","D8_BUYERS","D8_NO","D8_ASK","D9_RESERVED","D9_ASK","D10_USING","D10_ASK","B11_BUY","B11_NO","B11_ASK","A12_IN","A12_NOT","A12_ASK","RULES","target","source","showOnlyWhen","prompt","hiddenNote","length","DEBUG","test","location","search","log","console","apply","slice","call","arguments","e","state","topicId","polls","votes","postIdOf","loading","resetNotice","removing","RESET_TEXT","norm","s","String","replace","trim","hit","text","pats","i","topicIdFromPath","window","__imPollBranchTestTopicId","m","pathname","match","loadTopic","cb","id","xhr","XMLHttpRequest","open","setRequestHeader","withCredentials","onreadystatechange","readyState","status","j","JSON","parse","responseText","posts","post_stream","p","pl","k","name","pv","polls_votes","key","Object","prototype","hasOwnProperty","keys","send","chosenTexts","pollName","poll","ids","out","opts","options","push","html","pollNameOf","el","titleEl","querySelector","t","textContent","title","lis","querySelectorAll","getAttribute","matches","set","all","noteFor","outer","note","previousElementSibling","classList","contains","document","createElement","className","parentNode","insertBefore","style","display","clearNote","findPollEl","els","removeVote","finish","setTimeout","ok","schedule","btn","click","toggle","el2","b","applying","isLoggedIn","shownNotes","hiddenTargets","map","n","rule","closest","chosen","pNote","pKey","skip","c","hideWhen","hNote","hKey","allow","hasShow","show","resetNote","myTexts","stale","v","o","span","txt","want","timer","clearTimeout","hookVote","u","M","toUpperCase","__imBranchVote","__imBranchUrl","body","sent","addEventListener","nameMatch","decodeURIComponent","re","m2","exec","boot","tries","iv","setInterval","clearInterval","lastPath","mo","MutationObserver","startObserver","root","observe","childList","subtree","__imPollBranch","diag","ti","matched","showingResults","removeBtn","toggleBtn","loggedIn","knownPolls","myVotes","dom","reload"],"sources":["theme-2-inline-common-head_tag.js"],"sourcesContent":["\n/*!\n * iM Poll Branch v2 - Discourse の poll に「分岐」を足す\n *\n * なぜ必要か\n *   Discourse 標準の poll には分岐が無い。そのため「(3) で iPhone 18 Pro を選んだ人」に\n *   (4) で Pro に存在しない色を選ばせてしまい、集計にノイズが入る。\n *\n * なぜ素の <script> なのか\n *   テーマの extra_js (api-initializer 形式) は正しくコンパイルされるが、\n *   Discourse 2026.8 では追加直後に moduleBroker へ登録されず実行されなかった\n *   (Could not find module。サーバー再起動が要るとみられる)。\n *   親テーマの head_tag は素の <script> で確実に動いているので、同じ方式を採る。\n *   Discourse の JS API は使えないため、投票状態は /t/{id}.json から読み、\n *   投票の検知は PUT /polls/vote のフックで行う。\n *\n * 触らないもの\n *   ul.results (投票後の結果表示) には一切手を出さない。\n *   結果は「みんなの回答」なので、絞ると数字が歪んで見えるため。\n *\n * 壊れ方の設計\n *   判定できない場合は必ず「何もしない」= 全選択肢が見える通常の poll に戻る。\n *   設問を消したまま止まることが無いようにしている。\n */\n(function () {\n  \"use strict\";\n\n  // ============================================================\n  // 設定: 毎回ここだけ書き換える\n  //   target      : 制御される設問の name  ([poll name=xxx] の xxx)\n  //   source      : 参照する設問の name\n  //   show        : source の答え -> target で見せる選択肢の配列\n  //   hideWhen    : source がこれなら target を設問ごと隠す\n  //   showOnlyWhen: source がこれを含むときだけ target を出す\n  //   prompt      : source が未回答のときに出す案内文\n  // ============================================================\n  // (1) でこれを選んだ人だけが、購入についての設問 (3)〜(8) に答える。\n  // 去年の記事も (3) 以降を「iPhoneシリーズの購入検討者に」限定して聞いていた。\n  //\n  // なぜ複数選択の設問を先頭に置くか:\n  //   複数選択だけは「今すぐ投票！」を押さないと確定しない。単一選択のあとに\n  //   置くと「クリックしたのに進まない」と勘違いされる（2026-09-09 実測）。\n  //   先頭に置けば、あとは全部クリックだけで進む＝簡単になる方向なので迷わない。\n  // (1) は製品カテゴリ、(3) は iPhone の中のモデル、と役割を分ける。\n  // (1) に「折りたたみiPhone」を単独で置くと (3) と重複して二度聞きになる。\n  // 前方一致なので \"iPhone 18シリーズ（折りたたみモデルを含む）\" にも当たる。\n  /* --- RULES_BLOCK_START --- (poll_branch_check.mjs がここを読む。消さないこと) */\n  // 第6回（2026-09-23〜29）：発売後の使用感。設問 = poll_6th_topic.md\n  // (1) の答えで「もう使っている人向け」(2)〜(9) と「買っていない人向け」(10) を出し分ける。\n  // (11) iOS 27 と (12) iPhone Duo は全員に出す（ルール無し）。過去の RULES は poll_rules_history.md。\n  // 「注文したが、まだ届いていない」人は使用感を答えられないので、(2)〜(10) をすべて隠す\n  // （どちらのリストにも入れない）。\n  var BOUGHT_PRO = [\"iPhone 18 Pro を購入して、もう使っている\"];\n  var BOUGHT_MAX = [\"iPhone 18 Pro Max を購入して、もう使っている\"];\n  var BOUGHT = BOUGHT_PRO.concat(BOUGHT_MAX);\n  var NOT_BOUGHT = [\n    \"買うつもりだが、まだ注文していない\",\n    \"iPhone Duo（折りたたみ）を待つので買っていない\",\n    \"今回は買わない\"\n  ];\n  var ASK_FIRST = \"先に「（1）もう手元にありますか？」にお答えください。\";\n\n  // 第7回（2026-09-30〜10-05）：iOS 27 の使い心地。設問 = poll_7th_topic.md（設問名は i27_ で始まる）\n  // 第6回の締切（9/29 23:59）より前にテーマへ載せるため、第6回と第7回のルールを同時に置いている。\n  // 部品はページに無い設問のルールを飛ばす（if (!el) continue）ので、互いに干渉しない。\n  // ⚠️ 設問名を回をまたいで使い回さないこと（同じ名前だと前の回のルールが効いてしまう）。\n  var I27_UPDATED = [\"アップデートした\", \"新しいiPhoneに最初から入っていた\"];\n  var I27_NOT_YET = [\"まだアップデートしていない\"];\n  var I27_ASK = \"先に「（1）iOS 27、アップデートしましたか？」にお答えください。\";\n\n  // 第8回（2026-10-07〜10-12）：iPhone Duo を予約するか。設問 = poll_8th_topic.md（設問名は d8_ で始まる）\n  var D8_BUYERS = [\"10月16日（金）の予約開始日に予約する\", \"発売後に実物を見てから決める\", \"欲しいが、値下がりや割引を待つ\"];\n  var D8_NO = [\"買う予定はない\"];\n  var D8_ASK = \"先に「（1）iPhone Duo、予約しますか？」にお答えください。\";\n\n  // 第9回（2026-10-17〜10-22）：iPhone Duo を予約したか。設問 = poll_9th_topic.md（設問名は d9_ で始まる）\n  var D9_RESERVED = [\"予約した\"];\n  var D9_ASK = \"先に「（1）iPhone Duo、予約しましたか？」にお答えください。\";\n\n  // 第10回（2026-10-27〜11-02）：iPhone Duo を使ってみてどう？ 設問 = poll_10th_topic.md（設問名は d10_ で始まる）\n  // (8) 価格は全員に聞くのでルール無し。「注文したがまだ届いていない」人には (2)〜(7) を出さない。\n  var D10_USING = [\"購入して、もう使っている\"];\n  var D10_ASK = \"先に「（1）iPhone Duo、もう手元にありますか？」にお答えください。\";\n\n  // 第11回（2026-11-03〜11-09）：年末までに買いたいApple製品。設問 = poll_11th_topic.md（b11_）\n  var B11_BUY = [\"買う予定がある\", \"セールの内容を見て決める\"];\n  var B11_NO = [\"買う予定はない\"];\n  var B11_ASK = \"先に「（1）年末までにApple製品を買う予定はありますか？」にお答えください。\";\n\n  // 第12回（2026-11-10〜11-16）：AppleCare+。設問 = poll_12th_topic.md（a12_）\n  // キャリアの補償・わからない の人には (2)(3) を出さず、全員向けの (4)(5) だけ\n  var A12_IN = [\"入っている（毎月払っている）\", \"入っている（2年分などをまとめて払った）\"];\n  var A12_NOT = [\"どれにも入っていない\"];\n  var A12_ASK = \"先に「（1）AppleCare+に入っていますか？」にお答えください。\";\n\n  var RULES = [\n    // カラーと容量は買ったモデルのものだけ。選ばなかったモデルは hiddenNote: \"\" で静かに消す\n    { target: \"q2_color_pro\",      source: \"q1_got\", showOnlyWhen: BOUGHT_PRO, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q3_storage_pro\",    source: \"q1_got\", showOnlyWhen: BOUGHT_PRO, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q4_color_promax\",   source: \"q1_got\", showOnlyWhen: BOUGHT_MAX, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q5_storage_promax\", source: \"q1_got\", showOnlyWhen: BOUGHT_MAX, prompt: ASK_FIRST, hiddenNote: \"\" },\n\n    // 実際に使っている人だけに聞く：満足度・良い点・不満・前の機種の行き先\n    { target: \"q6_satisfaction\", source: \"q1_got\", showOnlyWhen: BOUGHT, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q7_good\",         source: \"q1_got\", showOnlyWhen: BOUGHT, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q8_bad\",          source: \"q1_got\", showOnlyWhen: BOUGHT, prompt: ASK_FIRST, hiddenNote: \"\" },\n    { target: \"q9_oldphone\",     source: \"q1_got\", showOnlyWhen: BOUGHT, prompt: ASK_FIRST, hiddenNote: \"\" },\n\n    // 買っていない人だけに聞く：見送った理由\n    { target: \"q10_why_not\", source: \"q1_got\", showOnlyWhen: NOT_BOUGHT, prompt: ASK_FIRST, hiddenNote: \"\" },\n\n    // ---- 第7回 ----\n    // アップデートした人（最初から入っていた人を含む）：使い心地・良い点・気になる点\n    { target: \"i27_satisfaction\", source: \"i27_updated\", showOnlyWhen: I27_UPDATED, prompt: I27_ASK, hiddenNote: \"\" },\n    { target: \"i27_good\",         source: \"i27_updated\", showOnlyWhen: I27_UPDATED, prompt: I27_ASK, hiddenNote: \"\" },\n    { target: \"i27_bad\",          source: \"i27_updated\", showOnlyWhen: I27_UPDATED, prompt: I27_ASK, hiddenNote: \"\" },\n    // まだの人：理由。「機種が対応していない」人には (2)〜(5) を出さず (6) だけ\n    { target: \"i27_why_not\",      source: \"i27_updated\", showOnlyWhen: I27_NOT_YET, prompt: I27_ASK, hiddenNote: \"\" },\n\n    // ---- 第8回 ----\n    // 買うつもりの人（予約・発売後に判断・値下がり待ち）：色・容量・購入先・支払い\n    { target: \"d8_color\",   source: \"d8_plan\", showOnlyWhen: D8_BUYERS, prompt: D8_ASK, hiddenNote: \"\" },\n    { target: \"d8_storage\", source: \"d8_plan\", showOnlyWhen: D8_BUYERS, prompt: D8_ASK, hiddenNote: \"\" },\n    { target: \"d8_where\",   source: \"d8_plan\", showOnlyWhen: D8_BUYERS, prompt: D8_ASK, hiddenNote: \"\" },\n    { target: \"d8_pay\",     source: \"d8_plan\", showOnlyWhen: D8_BUYERS, prompt: D8_ASK, hiddenNote: \"\" },\n    // 買わない人：理由\n    { target: \"d8_why_not\", source: \"d8_plan\", showOnlyWhen: D8_NO, prompt: D8_ASK, hiddenNote: \"\" },\n\n    // ---- 第9回 ---- 予約した人だけに、お届け日・場所・時間帯・困ったことを聞く（色・容量は第8回・第10回と重なるので外した 10/13）\n    { target: \"d9_delivery\", source: \"d9_reserved\", showOnlyWhen: D9_RESERVED, prompt: D9_ASK, hiddenNote: \"\" },\n    { target: \"d9_where\",    source: \"d9_reserved\", showOnlyWhen: D9_RESERVED, prompt: D9_ASK, hiddenNote: \"\" },\n    { target: \"d9_when\",     source: \"d9_reserved\", showOnlyWhen: D9_RESERVED, prompt: D9_ASK, hiddenNote: \"\" },\n    { target: \"d9_trouble\",  source: \"d9_reserved\", showOnlyWhen: D9_RESERVED, prompt: D9_ASK, hiddenNote: \"\" },\n\n    // ---- 第10回 ---- もう使っている人だけに、色・容量・満足度・良い点・不満・前の機種を聞く\n    { target: \"d10_color\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n    { target: \"d10_storage\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n    { target: \"d10_satisfaction\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n    { target: \"d10_good\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n    { target: \"d10_bad\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n    { target: \"d10_oldphone\", source: \"d10_got\", showOnlyWhen: D10_USING, prompt: D10_ASK, hiddenNote: \"\" },\n\n    // ---- 第11回・第12回 ----\n    { target: \"b11_items\", source: \"b11_plan\", showOnlyWhen: B11_BUY, prompt: B11_ASK, hiddenNote: \"\" },\n    { target: \"b11_where\", source: \"b11_plan\", showOnlyWhen: B11_BUY, prompt: B11_ASK, hiddenNote: \"\" },\n    { target: \"b11_budget\", source: \"b11_plan\", showOnlyWhen: B11_BUY, prompt: B11_ASK, hiddenNote: \"\" },\n    { target: \"b11_why_not\", source: \"b11_plan\", showOnlyWhen: B11_NO, prompt: B11_ASK, hiddenNote: \"\" },\n    { target: \"a12_why\", source: \"a12_status\", showOnlyWhen: A12_IN, prompt: A12_ASK, hiddenNote: \"\" },\n    { target: \"a12_why_not\", source: \"a12_status\", showOnlyWhen: A12_NOT, prompt: A12_ASK, hiddenNote: \"\" }\n  ];\n  /* --- RULES_BLOCK_END --- */\n  // ===== 設定ここまで =====\n\n  if (!RULES.length) { return; }\n\n  var DEBUG = /[?&]im_branch_debug=1/.test(location.search);\n  function log() {\n    if (!DEBUG) { return; }\n    try { console.log.apply(console, [\"[im-poll-branch]\"].concat([].slice.call(arguments))); } catch (e) {}\n  }\n\n  var state = { topicId: null, polls: {}, votes: {}, postIdOf: {}, loading: false };\n\n  // 上流の答えが変わって白紙に戻した設問。案内を出し続けるために覚えておく。\n  var resetNotice = {};\n  // 取り消しAPIの多重送信と、失敗時の無限リトライを防ぐ\n  var removing = {};\n\n  var RESET_TEXT = \"前の設問の回答が変わったため、この設問はいったん白紙に戻しました。お手数ですが選び直してください。\";\n\n  function norm(s) {\n    return String(s == null ? \"\" : s).replace(/<[^>]*>/g, \"\").replace(/\\s+/g, \" \").trim();\n  }\n\n  // 完全一致だけで判定する。\n  // 前方一致を許すと「iPhone 18」が「iPhone 18 Pro」にも当たり、モデル別に分けた\n  // カラーの設問が混ざってしまう（Pro を選んだ人に無印のカラーが出る）。\n  // 選択肢の文言を変えたらルールも直す必要があるが、その食い違いは\n  // poll_branch_check.mjs が機械的に見つけてくれる。\n  function hit(text, pats) {\n    if (!pats) { return false; }\n    for (var i = 0; i < pats.length; i++) {\n      if (pats[i] === \"*\" || text === pats[i]) { return true; }\n    }\n    return false;\n  }\n\n  function topicIdFromPath() {\n    // テストページ (poll_branch_test.html) から動かすための入口。\n    // 本番では未定義なので、通常どおり URL から読む。\n    if (window.__imPollBranchTestTopicId) { return String(window.__imPollBranchTestTopicId); }\n    var m = (location.pathname || \"\").match(/^\\/t\\/(?:[^\\/]+\\/)?(\\d+)/);\n    return m ? m[1] : null;\n  }\n\n  function loadTopic(cb) {\n    var id = topicIdFromPath();\n    if (!id) { return cb(false); }\n    if (state.loading) { return cb(false); }\n    state.loading = true;\n    var xhr = new XMLHttpRequest();\n    xhr.open(\"GET\", \"/t/\" + id + \".json\", true);\n    xhr.setRequestHeader(\"Accept\", \"application/json\");\n    xhr.withCredentials = true;\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState !== 4) { return; }\n      state.loading = false;\n      if (xhr.status < 200 || xhr.status >= 300) { log(\"topic json\", xhr.status); return cb(false); }\n      try {\n        var j = JSON.parse(xhr.responseText);\n        var posts = (j.post_stream && j.post_stream.posts) || [];\n        state.polls = {};\n        state.votes = {};\n        state.postIdOf = {};\n        state.topicId = id;\n        for (var i = 0; i < posts.length; i++) {\n          var p = posts[i];\n          var pl = p.polls || [];\n          for (var k = 0; k < pl.length; k++) {\n            state.polls[pl[k].name] = pl[k];\n            state.postIdOf[pl[k].name] = p.id;\n          }\n          var pv = p.polls_votes || {};\n          for (var key in pv) {\n            if (Object.prototype.hasOwnProperty.call(pv, key)) { state.votes[key] = pv[key]; }\n          }\n        }\n        log(\"loaded polls=\", Object.keys(state.polls), \"votes=\", state.votes);\n        cb(true);\n      } catch (e) { log(\"parse\", e); cb(false); }\n    };\n    xhr.send();\n  }\n\n  // 自分が選んだ選択肢のテキスト。null = 判定不能(触らない), [] = 未回答\n  function chosenTexts(pollName) {\n    var poll = state.polls[pollName];\n    if (!poll) { return null; }\n    var ids = state.votes[pollName] || [];\n    if (!ids.length) { return []; }\n    var out = [];\n    for (var i = 0; i < ids.length; i++) {\n      var opts = poll.options || [];\n      for (var j = 0; j < opts.length; j++) {\n        if (opts[j].id === ids[i]) { out.push(norm(opts[j].html)); break; }\n      }\n    }\n    return out;\n  }\n\n  // DOM の .poll 要素 -> 設問名。\n  //\n  // ⚠️ 選択肢の id で突合してはいけない。id は選択肢のテキストから作られるため、\n  //    同じ選択肢を持つ設問を区別できない。実際に 2026-09-09、\n  //    「iPhone 18 Pro のカラー」と「Pro Max のカラー」が同じ4色だったため\n  //    id が完全に一致し、折りたたみの2色も iPhone 18 の5色に含まれていて、\n  //    選んでいないモデルのカラー設問まで表示された。\n  //    タイトルは設問ごとに違うので、こちらを正とする。\n  function pollNameOf(el) {\n    var name;\n    var titleEl = el.querySelector(\".poll-title\");\n    var t = titleEl ? norm(titleEl.textContent) : \"\";\n    if (t) {\n      for (name in state.polls) {\n        if (Object.prototype.hasOwnProperty.call(state.polls, name) &&\n            norm(state.polls[name].title) === t) {\n          return name;\n        }\n      }\n    }\n\n    // タイトルが取れないときの保険。\n    // 選択肢の数まで一致し、候補がただ1つに絞れたときだけ採用する。\n    var lis = el.querySelectorAll(\"[data-poll-option-id]\");\n    var ids = [];\n    for (var i = 0; i < lis.length; i++) { ids.push(lis[i].getAttribute(\"data-poll-option-id\")); }\n    if (!ids.length) { return null; }\n    var matches = [];\n    for (name in state.polls) {\n      if (!Object.prototype.hasOwnProperty.call(state.polls, name)) { continue; }\n      var opts = state.polls[name].options || [];\n      if (opts.length !== ids.length) { continue; }\n      var set = {}, k;\n      for (k = 0; k < opts.length; k++) { set[opts[k].id] = 1; }\n      var all = true;\n      for (k = 0; k < ids.length; k++) { if (!set[ids[k]]) { all = false; break; } }\n      if (all) { matches.push(name); }\n    }\n    // 2つ以上に当てはまるなら区別できない。触らない方が安全。\n    return matches.length === 1 ? matches[0] : null;\n  }\n\n  function noteFor(outer, text) {\n    var note = outer.previousElementSibling;\n    if (!note || !note.classList || !note.classList.contains(\"im-branch-note\")) {\n      note = document.createElement(\"div\");\n      note.className = \"im-branch-note\";\n      outer.parentNode.insertBefore(note, outer);\n    }\n    // textContent への代入は、中のテキストノードを作り直すので childList の変更になる。\n    // それを MutationObserver が拾って apply を呼び、また代入して…と 80ms ごとに\n    // 永久に回り続けてしまう。値が変わるときだけ書き換える。\n    if (note.textContent !== text) { note.textContent = text; }\n    if (note.style.display !== \"\") { note.style.display = \"\"; }\n  }\n\n  function clearNote(outer) {\n    var note = outer.previousElementSibling;\n    if (note && note.classList && note.classList.contains(\"im-branch-note\")) { note.style.display = \"none\"; }\n  }\n\n  // 上流の答えが変わって意味を失った投票を白紙に戻す。\n  //\n  // ⚠️ API (DELETE /polls/vote) を直接叩いてはいけない。\n  //    サーバー側の票は消えるのに Discourse の画面状態が更新されず、\n  //    結果表示のまま残って選択肢に戻らない (2026-09-09 実測)。\n  //    Discourse 自身の「投票を取り消す」ボタン (.remove-vote) を押させれば、\n  //    正規の処理が走って画面も選択肢表示に戻る。\n  // 設問名から、いま画面にある poll 要素を探す。\n  // ⚠️ 要素を変数に取っておいて後で使ってはいけない。ボタンを押すと Discourse が\n  //    描き直すので、持っていた参照が画面から外れて何も見つからなくなる。\n  //    毎回ここで探し直すこと。\n  function findPollEl(pollName) {\n    var els = document.querySelectorAll(\".poll\");\n    for (var i = 0; i < els.length; i++) {\n      if (pollNameOf(els[i]) === pollName) { return els[i]; }\n    }\n    return null;\n  }\n\n  function removeVote(pollName) {\n    if (removing[pollName]) { return; }\n    var el = findPollEl(pollName);\n    if (!el) { return; }\n\n    function finish() {\n      setTimeout(function () {\n        removing[pollName] = false;\n        loadTopic(function (ok) { if (ok) { schedule(); } });\n      }, 700);\n    }\n\n    var btn = el.querySelector(\"button.remove-vote\");\n    if (btn) {\n      removing[pollName] = true;\n      resetNotice[pollName] = true;\n      log(\"removeVote via UI\", pollName);\n      btn.click();\n      finish();\n      return;\n    }\n\n    // ⚠️ 結果を表示している間は「投票を取り消す」ボタンが存在しない。\n    //    poll.gjs の showRemoveVoteButton が !showResults を条件にしているため。\n    //    results=on_vote だと投票直後は必ず結果表示なので、ここに来るのが普通。\n    //    先に「結果を隠す」(.toggle-results) を押してボタンを出してから取り消す。\n    var toggle = el.querySelector(\"button.toggle-results\");\n    if (!toggle) { log(\"no toggle-results button\", pollName); return; }\n    removing[pollName] = true;\n    log(\"closing results first\", pollName);\n    toggle.click();\n    setTimeout(function () {\n      // ここで el を使い回さない。押した時点で描き直されている。\n      var el2 = findPollEl(pollName);\n      var b = el2 && el2.querySelector(\"button.remove-vote\");\n      if (b) {\n        resetNotice[pollName] = true;\n        log(\"removeVote via UI (after closing results)\", pollName);\n        b.click();\n      } else {\n        log(\"remove-vote still missing after closing results\", pollName);\n      }\n      finish();\n    }, 350);\n  }\n\n  var applying = false;\n\n  // 未ログインの人は投票できない。つまり参照先の設問が永久に「未回答」のままになり、\n  // 分岐をかけると設問の中身が最後まで見えない。会員登録の動機を削いでしまうので、\n  // ログインしていないときは何も隠さず、通常の poll として全部見せる。\n  function isLoggedIn() {\n    return !!document.querySelector(\"#current-user, .header-dropdown-toggle.current-user, .current-user\");\n  }\n\n  function apply() {\n    if (applying) { return false; }\n    var els = document.querySelectorAll(\".poll\");\n    if (!els.length) { return false; }\n    // false を返してリトライを続ける。ヘッダの描画が遅れて一瞬ログアウト状態に\n    // 見えることがあり、true で打ち切ると分岐が効かないまま終わってしまうため。\n    // 本当に未ログインなら数秒リトライして止まるだけで、実害はない。\n    if (!isLoggedIn()) { return false; }\n    applying = true;\n    // 同じ設問を待って隠れているものが続くと、同じ案内が何本も並んで画面が埋まる\n    // (9問だと5本並んだ)。同じ案内は最初の1つにだけ出す。\n    var shownNotes = {};\n    // このターンで隠した設問。参照先そのものが隠れているのに\n    // 「先に(3)にお答えください」と出すと、その(3)が画面に無くて混乱するため、\n    // 案内を出すかどうかの判断に使う。RULES は上流から順に並べておくこと。\n    var hiddenTargets = {};\n    try {\n      var map = {}, i;\n      for (i = 0; i < els.length; i++) {\n        var n = pollNameOf(els[i]);\n        if (n) { map[n] = els[i]; }\n      }\n      for (i = 0; i < RULES.length; i++) {\n        var rule = RULES[i];\n        var el = map[rule.target];\n        if (!el) { continue; }\n        var outer = el.closest(\".poll-outer\") || el;\n        var chosen = chosenTexts(rule.source);\n\n        // 参照先が見つからない -> 触らない (安全側)\n        if (chosen === null) { continue; }\n\n        // 未回答 -> 隠して案内\n        if (!chosen.length) {\n          outer.style.display = \"none\";\n          hiddenTargets[rule.target] = true;\n          var pNote = hiddenTargets[rule.source] ? null\n            : (rule.prompt || \"先に前の設問にお答えください。\");\n          if (pNote) {\n            var pKey = \"p:\" + rule.source + \"|\" + pNote;\n            if (!shownNotes[pKey]) {\n              shownNotes[pKey] = true;\n              noteFor(outer, pNote);\n            } else {\n              clearNote(outer);\n            }\n          } else {\n            clearNote(outer);\n          }\n          // 上流を取り消した場合、ここに入っている回答は意味を失うので白紙に戻す\n          if ((state.votes[rule.target] || []).length) { removeVote(rule.target); }\n          continue;\n        }\n\n        var skip = false, c;\n        // 「買う予定はない」等\n        if (rule.hideWhen) {\n          for (c = 0; c < chosen.length; c++) {\n            if (hit(chosen[c], rule.hideWhen)) { skip = true; break; }\n          }\n        }\n        // showOnlyWhen: この答えを含むときだけ出す\n        if (!skip && rule.showOnlyWhen) {\n          var ok = false;\n          for (c = 0; c < chosen.length; c++) {\n            if (hit(chosen[c], rule.showOnlyWhen)) { ok = true; break; }\n          }\n          if (!ok) { skip = true; }\n        }\n        if (skip) {\n          outer.style.display = \"none\";\n          hiddenTargets[rule.target] = true;\n          // hiddenNote に空文字を指定したら案内を出さない。\n          // モデル別のカラー設問は、選ばなかったモデルの分が静かに消えるだけでよく、\n          // 「答えなくていい」と3本並べても邪魔になるだけのため。\n          var hNote = (rule.hiddenNote === \"\" || hiddenTargets[rule.source]) ? null\n            : (rule.hiddenNote || \"この設問はお答えいただく必要がありません。\");\n          if (hNote) {\n            var hKey = \"h:\" + rule.source + \"|\" + hNote;\n            if (!shownNotes[hKey]) {\n              shownNotes[hKey] = true;\n              noteFor(outer, hNote);\n            } else {\n              clearNote(outer);\n            }\n          } else {\n            clearNote(outer);\n          }\n          // 対象外になった設問に回答が残っていると集計が濁るので白紙に戻す\n          if ((state.votes[rule.target] || []).length) { removeVote(rule.target); }\n          continue;\n        }\n\n        outer.style.display = \"\";\n\n        // 見せる選択肢を決める。キーは選択肢の文言と完全一致させる。\n        var allow = [];\n        var hasShow = false;\n        for (var key in (rule.show || {})) {\n          if (Object.prototype.hasOwnProperty.call(rule.show, key)) { hasShow = true; break; }\n        }\n        if (hasShow) {\n          for (c = 0; c < chosen.length; c++) {\n            if (Object.prototype.hasOwnProperty.call(rule.show, chosen[c])) {\n              allow = allow.concat(rule.show[chosen[c]]);\n            }\n          }\n        }\n        // ルールに載っていない答え -> 全部見せる (安全側)\n        if (!allow.length) {\n          log(\"no rule for\", chosen);\n          if (resetNotice[rule.target]) { noteFor(outer, rule.resetNote || RESET_TEXT); }\n          else { clearNote(outer); }\n          continue;\n        }\n\n        // すでに入れた回答が、いま見せている選択肢に無ければ白紙に戻す。\n        // 例: モデルを iPhone 18 から 18 Pro に変えたのに「ピンク」が残っている状態。\n        // 放っておくと「Pro なのにピンク」という矛盾したデータが集計に混ざる。\n        if ((state.votes[rule.target] || []).length) {\n          var myTexts = chosenTexts(rule.target) || [];\n          var stale = false;\n          for (var v = 0; v < myTexts.length; v++) {\n            if (!hit(myTexts[v], allow)) { stale = true; break; }\n          }\n          if (stale) { removeVote(rule.target); continue; }\n        }\n\n        if (resetNotice[rule.target]) { noteFor(outer, rule.resetNote || RESET_TEXT); }\n        else { clearNote(outer); }\n\n        // ul.options だけを触る。ul.results (結果表示) は絶対に触らない。\n        var opts = el.querySelectorAll(\"ul.options > li[data-poll-option-id]\");\n        for (var o = 0; o < opts.length; o++) {\n          var span = opts[o].querySelector(\".option-text\");\n          var txt = norm(span ? span.textContent : opts[o].textContent);\n          var want = hit(txt, allow) ? \"\" : \"none\";\n          if (opts[o].style.display !== want) { opts[o].style.display = want; }\n        }\n      }\n    } catch (e) {\n      // ここで例外を外に出すと、呼び出し元の setTimeout / MutationObserver が\n      // 止まって以降いっさい効かなくなる。握りつぶして次の機会に任せる。\n      log(\"apply error\", e);\n    } finally {\n      applying = false;\n    }\n    return true;\n  }\n\n  var timer = null;\n  function schedule() {\n    if (timer) { clearTimeout(timer); }\n    timer = setTimeout(function () { timer = null; apply(); }, 80);\n  }\n\n  // 投票を検知する。Discourse の poll は PUT /polls/vote を投げ、\n  // body に poll_name と options[] が入っている (poll.gjs の castVotes)。\n  function hookVote() {\n    var open = XMLHttpRequest.prototype.open;\n    var send = XMLHttpRequest.prototype.send;\n    XMLHttpRequest.prototype.open = function (m, u) {\n      try {\n        var M = String(m).toUpperCase();\n        // 投票 (PUT) だけでなく取り消し (DELETE) も見る。\n        // 読者が自分で「投票を取り消す」を押したときに追随できないと、\n        // 下流の設問が絞られたまま残ってしまうため。\n        this.__imBranchVote = (M === \"PUT\" || M === \"DELETE\") && /\\/polls\\/vote/.test(String(u || \"\"));\n        this.__imBranchUrl = String(u || \"\");\n      } catch (e) { this.__imBranchVote = false; }\n      return open.apply(this, arguments);\n    };\n    XMLHttpRequest.prototype.send = function (body) {\n      if (this.__imBranchVote) {\n        // DELETE は本文でなくクエリ文字列で送られることがあるので、URL も一緒に見る\n        var sent = String(body == null ? \"\" : body) + \"&\" + String(this.__imBranchUrl || \"\");\n        this.addEventListener(\"load\", function () {\n          try {\n            // 送信した内容から「どの設問に何を入れたか」を拾う\n            var nameMatch = sent.match(/poll_name=([^&]*)/);\n            var name = nameMatch ? decodeURIComponent(nameMatch[1]) : null;\n            var opts = [];\n            var re = /options(?:%5B%5D|\\[\\])=([^&]*)/g;\n            var m2;\n            while ((m2 = re.exec(sent)) !== null) { opts.push(decodeURIComponent(m2[1])); }\n            if (name) {\n              if (opts.length) {\n                state.votes[name] = opts;\n                // 選び直してもらえたときだけ案内を消す。\n                // 取り消し (opts が空) で消してはいけない。こちらが白紙に戻すために\n                // 押したボタンも同じ経路を通るので、案内が一瞬で消えてしまう。\n                delete resetNotice[name];\n              } else {\n                delete state.votes[name];\n              }\n              log(\"voted\", name, opts);\n              schedule();\n              // 取り消しなどで本文が空のこともあるので、少し遅れて正本を取り直す\n              setTimeout(function () {\n                loadTopic(function (ok) { if (ok) { schedule(); } });\n              }, 400);\n            }\n          } catch (e) { log(\"vote hook\", e); }\n        });\n      }\n      return send.apply(this, arguments);\n    };\n  }\n\n  // ⚠️ 「効いたら止める」にしてはいけない。\n  //    poll の描画と /t/{id}.json の読み込みは別々に進むので、poll だけ先に出た\n  //    瞬間に判定すると、設問データが空のまま「やることなし」で止まってしまい、\n  //    二度と絞り込まれない（2026-09-10 に本番で発生）。\n  //    数秒のあいだ、何度も繰り返し当てにいく。\n  function boot() {\n    if (!topicIdFromPath()) { return; }\n    var tries = 0;\n    var iv = setInterval(function () {\n      tries++;\n      apply();\n      // 設問が読めていなければ、読み直しも試す\n      if (!Object.keys(state.polls).length && tries % 5 === 0) {\n        loadTopic(function (ok) { if (ok) { apply(); } });\n      }\n      if (tries > 30) { clearInterval(iv); }\n    }, 200);\n    loadTopic(function (ok) { if (ok) { apply(); } });\n  }\n\n  hookVote();\n\n  // Discourse は SPA。トピックを移動しても再評価する。\n  var lastPath = location.pathname;\n  setInterval(function () {\n    if (location.pathname !== lastPath) {\n      lastPath = location.pathname;\n      state.polls = {};\n      state.votes = {};\n      state.topicId = null;\n      boot();\n    }\n  }, 700);\n\n  var mo = new MutationObserver(function () { if (state.topicId) { schedule(); } });\n  function startObserver() {\n    var root = document.querySelector(\"#main-outlet\") || document.body;\n    if (root) { mo.observe(root, { childList: true, subtree: true }); }\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", function () { boot(); startObserver(); });\n  } else {\n    boot();\n    startObserver();\n  }\n\n  // 不具合が出たときにブラウザのコンソールから中身を見られるようにしておく。\n  // URL の ?im_branch_debug=1 は Discourse に消されてログが出ないことがあるため。\n  // 持っているのは自分の投票状態だけで、他人のデータには触れない。\n  window.__imPollBranch = {\n    diag: function () {\n      var out = [];\n      var els = document.querySelectorAll(\".poll\");\n      for (var i = 0; i < els.length; i++) {\n        var el = els[i];\n        var ti = el.querySelector(\".poll-title\");\n        out.push({\n          matched: pollNameOf(el),\n          title: ti ? norm(ti.textContent) : null,\n          showingResults: !!el.querySelector(\"ul.results\"),\n          removeBtn: !!el.querySelector(\"button.remove-vote\"),\n          toggleBtn: !!el.querySelector(\"button.toggle-results\")\n        });\n      }\n      return {\n        loggedIn: isLoggedIn(),\n        knownPolls: Object.keys(state.polls),\n        myVotes: state.votes,\n        dom: out\n      };\n    },\n    apply: function () { return apply(); },\n    // 投票状態を読み直す。テストページから使うほか、\n    // 表示がおかしいときに手で叩いて直せるようにしてある。\n    reload: function (cb) {\n      loadTopic(function (ok) {\n        if (ok) { schedule(); }\n        if (cb) { cb(ok); }\n      });\n    }\n  };\n\n  log(\"installed\", RULES.length, \"rule(s)\");\n})();\n"],"mappings":"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","ignoreList":[]}