diff --git a/core/tag_builder.py b/core/tag_builder.py index 10c934f..15b5ca6 100644 --- a/core/tag_builder.py +++ b/core/tag_builder.py @@ -3501,9 +3501,11 @@ async def _api_characters(request): params + [per_page, offset], ).fetchall() - # Merge user edits onto this page. 2b is edit-only, so no overlay adds - # exist to break LIMIT/OFFSET; adds/deletes (which would) are deferred. - merged = tag_overlay.apply_overlay("characters", [dict(r) for r in rows]) + # Merge user edits + tombstone-deletes onto this page. Adds are suppressed + # here (include_adds=False): user-added characters live in the separate + # "Mine" view, and injecting them into a LIMIT/OFFSET page would duplicate + # them across pages and skew the total count. + merged = tag_overlay.apply_overlay("characters", [dict(r) for r in rows], include_adds=False) return web.json_response({ "characters": merged, @@ -3578,7 +3580,9 @@ async def _api_character_detail(request): if not char: return web.json_response({"error": "Character not found"}, status=404) # Apply user edits (dict — downstream uses char["..."] / dict(char), both fine). - char = (tag_overlay.apply_overlay("characters", [dict(char)]) or [dict(char)])[0] + # include_adds=False: this row already exists in the base, and the Mine view + # owns added characters, so adds must never tag along on a single-row detail. + char = (tag_overlay.apply_overlay("characters", [dict(char)], include_adds=False) or [dict(char)])[0] outfits = db.execute( "SELECT * FROM outfits WHERE character_tag = ? ORDER BY sort_order, outfit_name", diff --git a/core/tag_overlay.py b/core/tag_overlay.py index 709aaba..8cbb20b 100644 --- a/core/tag_overlay.py +++ b/core/tag_overlay.py @@ -193,13 +193,19 @@ def _coerce_types(spec: dict, data: dict) -> None: # ── the merge ──────────────────────────────────────────────────────── -def apply_overlay(table: str, base_rows: list[dict], add_filter: dict | None = None) -> list[dict]: +def apply_overlay(table: str, base_rows: list[dict], add_filter: dict | None = None, + include_adds: bool = True) -> list[dict]: """Merge the user delta over freshly-read base rows. Unregistered tables and tables with no overlay pass through unchanged, so every read site can call this unconditionally and Phase-2 breadth is just registry lines. add_filter (e.g. {"item_group": group}) scopes user-added rows to a filtered query so an add in one group doesn't leak into another group's view. + + include_adds=False applies only edits + deletes, never user-added rows. The + paginated character browser uses this: its adds live in a separate "Mine" + view, so injecting them here would duplicate them across every page (adds + aren't bounded by the SQL LIMIT/OFFSET) and skew the total count. """ spec = ENTITY_REGISTRY.get(table) if spec is None: @@ -240,15 +246,16 @@ def apply_overlay(table: str, base_rows: list[dict], add_filter: dict | None = N out.append(merged) seen.add(key) - for key, row in adds.items(): - if key in deletes or key in seen: - continue - if add_filter and any(str(row.get(c, "")) != str(v) for c, v in add_filter.items()): - continue - merged = dict(row) - merged["_overlay"] = "add" - out.append(merged) - seen.add(key) + if include_adds: + for key, row in adds.items(): + if key in deletes or key in seen: + continue + if add_filter and any(str(row.get(c, "")) != str(v) for c, v in add_filter.items()): + continue + merged = dict(row) + merged["_overlay"] = "add" + out.append(merged) + seen.add(key) # Only re-sort tables that declare a sort column (the *_items buckets). # Tables without one (e.g. characters, ordered server-side by post_count) diff --git a/js/lib/svelte/assets/promptchain-svelte.css b/js/lib/svelte/assets/promptchain-svelte.css index 8d934c8..88055e0 100644 --- a/js/lib/svelte/assets/promptchain-svelte.css +++ b/js/lib/svelte/assets/promptchain-svelte.css @@ -5994,6 +5994,25 @@ line-height: 1.3; } + /* "Add subject" tile in Subjects → Mine. Dashed accent box that reads as an + action, not a content card. */ + .pcr-atb2-card-add.svelte-ibd6yj { + align-items: center; + justify-content: center; + min-height: 72px; + border: 1px dashed #5b4b8a; + background: rgba(124, 58, 237, 0.07); + } + .pcr-atb2-card-add.svelte-ibd6yj:hover { + background: rgba(124, 58, 237, 0.16); + border-color: #8b5cf6; + } + .pcr-atb2-card-add-plus.svelte-ibd6yj { + font-size: 26px; + line-height: 1; + color: #b59cff; + } + /* ---- LIST VIEW ---- compact rows reusing the same card markup: tiny left thumb + name (left) + series (right). Toggled via .pcr-atb2-list-mode on the browser; works in every view (All / category / NSFW / search / recent). */ diff --git a/js/lib/svelte/promptchain-tag-builder2.js b/js/lib/svelte/promptchain-tag-builder2.js index f10d0db..1ea46ea 100644 --- a/js/lib/svelte/promptchain-tag-builder2.js +++ b/js/lib/svelte/promptchain-tag-builder2.js @@ -1860,119 +1860,124 @@ var root_7 = from_html(` var root_9 = from_html(` `); var root_10 = from_html(` `); var root_8 = from_html(`
`); -var root_6 = from_html(`
All
`); -var root_12 = from_html(`
`); -var root_11 = from_html(`
All
`); -var root_14 = from_html(`
`); -var root_15 = from_html(`
Modifiers
`); -var root_13 = from_html(`
`); -var root_17 = from_html(`
`); -var root_18 = from_html(`
Modifiers
`); -var root_16 = from_html(`
`); +var root_11 = from_html(` `); +var root_6 = from_html(`
All
⭐ Mine
`); +var root_13 = from_html(`
`); +var root_12 = from_html(`
All
`); +var root_15 = from_html(`
`); +var root_16 = from_html(`
Modifiers
`); +var root_14 = from_html(`
`); +var root_18 = from_html(`
`); +var root_19 = from_html(`
Modifiers
`); +var root_17 = from_html(`
`); var root_2 = from_html(`
`, 1); -var root_19 = from_html(`/ `, 1); -var root_20 = from_html(``); -var root_24 = from_html(``); -var root_25 = from_html(`
`); -var root_23 = from_html(`
`); -var root_27 = from_html(``); -var root_26 = from_html(`
`); -var root_28 = from_html(`
🕘 Recently used
`); -var root_30 = from_html(`
`); -var root_35 = from_html(``); -var root_34 = from_html(`
`); -var root_37 = from_html(``); -var root_36 = from_html(`
`); -var root_38 = from_html(`
`); -var root_39 = from_html(`
`); -var root_40 = from_html(``); -var root_33 = from_html(`
`); -var root_32 = from_html(`
/
`); -var root_21 = from_html(` `, 1); -var root_43 = from_html(`
Searching characters…
`); -var root_44 = from_html(`
`); -var root_47 = from_html(``); -var root_48 = from_html(`
`); -var root_46 = from_html(`
`); +var root_20 = from_html(`/ `, 1); +var root_21 = from_html(``); +var root_25 = from_html(``); +var root_26 = from_html(`
`); +var root_24 = from_html(`
`); +var root_28 = from_html(``); +var root_27 = from_html(`
`); +var root_29 = from_html(`
🕘 Recently used
`); +var root_31 = from_html(`
`); +var root_36 = from_html(``); +var root_35 = from_html(`
`); +var root_38 = from_html(``); +var root_37 = from_html(`
`); +var root_39 = from_html(`
`); +var root_40 = from_html(`
`); +var root_41 = from_html(``); +var root_34 = from_html(`
`); +var root_33 = from_html(`
/
`); +var root_22 = from_html(` `, 1); +var root_45 = from_html(`
`); +var root_44 = from_html(`
`); +var root_46 = from_html(`
No added subjects yet. Click “Add subject” to create one — it survives updates.
`); +var root_43 = from_html(`
+
Add subject
`, 1); +var root_48 = from_html(`
Searching characters…
`); var root_49 = from_html(`
`); -var root_45 = from_html(`
`, 1); -var root_51 = from_html(`
`); -var root_52 = from_html(`
`); -var root_55 = from_html(``); -var root_54 = from_html(`
`); -var root_53 = from_html(`
`); -var root_56 = from_html(`
Connect a model to see styles.
`); -var root_57 = from_html(`
Loading styles…
`); -var root_58 = from_html(`
No styles found for this model.
`); -var root_59 = from_html(`
`); -var root_60 = from_html(`
No items.
`); -var root_64 = from_html(``); -var root_65 = from_html(``); -var root_63 = from_html(`
`); -var root_62 = from_html(`
`); +var root_52 = from_html(``); +var root_53 = from_html(`
`); +var root_51 = from_html(`
`); +var root_54 = from_html(`
`); +var root_50 = from_html(`
`, 1); +var root_56 = from_html(`
`); +var root_57 = from_html(`
`); +var root_60 = from_html(``); +var root_59 = from_html(`
`); +var root_58 = from_html(`
`); +var root_61 = from_html(`
Connect a model to see styles.
`); +var root_62 = from_html(`
Loading styles…
`); +var root_63 = from_html(`
No styles found for this model.
`); +var root_64 = from_html(`
`); +var root_65 = from_html(`
No items.
`); var root_69 = from_html(``); -var root_68 = from_html(`
`); var root_70 = from_html(``); -var root_71 = from_html(`
`); -var root_72 = from_html(`
`); -var root_67 = from_html(`
`); -var root_66 = from_html(`
`); -var root_74 = from_html(``); -var root_75 = from_html(` `); -var root_76 = from_html(` `); -var root_77 = from_html(` `, 1); -var root_80 = from_html(``); -var root_81 = from_html(` `, 1); -var root_84 = from_html(``); -var root_85 = from_html(` `, 1); -var root_88 = from_html(``); -var root_91 = from_html(` `); -var root_92 = from_html(`
Identity
`); -var root_94 = from_html(` `); -var root_93 = from_html(`
Modifiers + add
`); -var root_97 = from_html(`+`); -var root_99 = from_html(``); -var root_98 = from_html(` `); -var root_100 = from_html(`+ add`); -var root_96 = from_html(`
`); -var root_90 = from_html(`
`); -var root_102 = from_html(` `); -var root_101 = from_html(`
Custom / Freeform
`); -var root_105 = from_html(` `); -var root_104 = from_html(`
`); -var root_73 = from_html(`
Subject
Identity
Outfit
Pose
`); -var root_108 = from_html(`+`); -var root_109 = from_html(` `); -var root_110 = from_html(`+ add`); -var root_107 = from_html(`
`); -var root_112 = from_html(` `); -var root_111 = from_html(`
Custom / Freeform
`); -var root_116 = from_html(``); -var root_115 = from_html(` `); -var root_114 = from_html(`
+
`); -var root_106 = from_html(`
🏠 Scene Shared
`); -var root_117 = from_html(`
+ Add Scene
`); -var root_119 = from_html(` `); -var root_118 = from_html(`
🎨 Style
`); -var root_120 = from_html(`
+ Add Style
`); -var root_122 = from_html(`
`); -var root_124 = from_html(``); -var root_123 = from_html(`
`); -var root_121 = from_html(`
Tag
Natlang
`, 1); -var root_126 = from_html(`
Searching…
`); -var root_127 = from_html(`
No matches.
`); -var root_129 = from_html(`
`); -var root_125 = from_html(`
`); -var root_133 = from_html(`
Loading…
`); -var root_134 = from_html(`
No matches.
`); -var root_137 = from_html(`★`); -var root_136 = from_html(`
`); -var root_132 = from_html(`
`); -var root_139 = from_html(`
`); -var root_138 = from_html(`
`); -var root_140 = from_html(`
Swap identity?
Replace with ?
`); -var root_146 = from_html(``); -var root_145 = from_html(`
`, 1); +var root_68 = from_html(`
`); +var root_67 = from_html(`
`); +var root_74 = from_html(``); +var root_73 = from_html(`
`); +var root_75 = from_html(``); +var root_76 = from_html(`
`); +var root_77 = from_html(`
`); +var root_72 = from_html(`
`); +var root_71 = from_html(`
`); +var root_79 = from_html(``); +var root_80 = from_html(` `); +var root_81 = from_html(` `); +var root_82 = from_html(` `, 1); +var root_85 = from_html(``); +var root_86 = from_html(` `, 1); +var root_89 = from_html(``); +var root_90 = from_html(` `, 1); +var root_93 = from_html(``); +var root_96 = from_html(` `); +var root_97 = from_html(`
Identity
`); +var root_99 = from_html(` `); +var root_98 = from_html(`
Modifiers + add
`); +var root_102 = from_html(`+`); +var root_104 = from_html(``); +var root_103 = from_html(` `); +var root_105 = from_html(`+ add`); +var root_101 = from_html(`
`); +var root_95 = from_html(`
`); +var root_107 = from_html(` `); +var root_106 = from_html(`
Custom / Freeform
`); +var root_110 = from_html(` `); +var root_109 = from_html(`
`); +var root_78 = from_html(`
Subject
Identity
Outfit
Pose
`); +var root_113 = from_html(`+`); +var root_114 = from_html(` `); +var root_115 = from_html(`+ add`); +var root_112 = from_html(`
`); +var root_117 = from_html(` `); +var root_116 = from_html(`
Custom / Freeform
`); +var root_121 = from_html(``); +var root_120 = from_html(` `); +var root_119 = from_html(`
+
`); +var root_111 = from_html(`
🏠 Scene Shared
`); +var root_122 = from_html(`
+ Add Scene
`); +var root_124 = from_html(` `); +var root_123 = from_html(`
🎨 Style
`); +var root_125 = from_html(`
+ Add Style
`); +var root_127 = from_html(`
`); +var root_129 = from_html(``); +var root_128 = from_html(`
`); +var root_126 = from_html(`
Tag
Natlang
`, 1); +var root_131 = from_html(`
Searching…
`); +var root_132 = from_html(`
No matches.
`); +var root_134 = from_html(`
`); +var root_130 = from_html(`
`); +var root_138 = from_html(`
Loading…
`); +var root_139 = from_html(`
No matches.
`); +var root_142 = from_html(`★`); +var root_141 = from_html(`
`); +var root_137 = from_html(`
`); +var root_144 = from_html(`
`); +var root_143 = from_html(`
`); +var root_145 = from_html(`
Swap identity?
Replace with ?
`); +var root_151 = from_html(``); +var root_150 = from_html(`
`, 1); var root_1 = from_html(`
Tag Builder 2
Adding to:
`, 1); function TagBuilder2($$anchor, $$props) { var _a; @@ -2818,6 +2823,7 @@ function TagBuilder2($$anchor, $$props) { if (cat.enabled && cat.bucket) loadBucket(cat.bucket); } loadOverlayCount(); + loadMyCharacters(); const charTagsPromise = fetch(`/promptchain/tag-builder/characters/identity-index`).then((r) => r.ok ? r.json() : { characters: [] }).then((d) => { const chars = d.characters || []; normalizedCharacterTags = new Set(chars.map((c) => c.tag)); @@ -3383,11 +3389,13 @@ function TagBuilder2($$anchor, $$props) { set(overlayEditorOpen, null); } async function commitOverlayEditor() { - var _a2; + var _a2, _b; const ed = get(overlayEditorOpen); if (!ed) return; - if (ed.kind === "character") await refreshCharacterRow((_a2 = ed.initial) == null ? void 0 : _a2.tag); - else await reloadBucketItems(ed.bucket); + if (ed.kind === "character") { + await loadMyCharacters(); + if (ed.mode === "edit" && ((_a2 = ed.initial) == null ? void 0 : _a2._overlay) !== "add") await refreshCharacterRow((_b = ed.initial) == null ? void 0 : _b.tag); + } else await reloadBucketItems(ed.bucket); set(overlayEditorOpen, null); loadOverlayCount(); } @@ -3529,6 +3537,55 @@ function TagBuilder2($$anchor, $$props) { console.error("[TagBuilder2] character refresh failed", e); } } + const MINE_KEY = "__mine__"; + let myCharacters = state(proxy([])); + let myCharactersLoading = state(false); + async function loadMyCharacters() { + set(myCharactersLoading, true); + try { + const res = await fetch("/promptchain/tag-builder/overlay/characters", { cache: "no-store" }); + const adds = res.ok ? (await res.json()).adds || {} : {}; + set(myCharacters, Object.values(adds).map((row) => ({ ...row, _overlay: "add" })), true); + } catch (e) { + console.error("[TagBuilder2] load my characters failed", e); + set(myCharacters, [], true); + } + set(myCharactersLoading, false); + } + function openNewCharacterEditor() { + set( + overlayEditorOpen, + { + bucket: "character", + table: "characters", + mode: "add", + fields: CHARACTER_FIELDS, + initial: {}, + groups: [], + kind: "character" + }, + true + ); + } + async function deleteCharacter(char) { + closeCharEditMenu(); + const label = char.display || char.tag; + const msg = char._overlay === "add" ? `Remove your added subject “${label}”?` : `Hide “${label}” from the library? You can bring it back from your edits list.`; + if (typeof window !== "undefined" && !window.confirm(msg)) return; + try { + const res = await fetch(`/promptchain/tag-builder/overlay/characters/${encodeURIComponent(char.tag)}`, { method: "DELETE" }); + if (!res.ok) { + console.error(`[TagBuilder2] character delete failed: ${res.status}`); + return; + } + } catch (e) { + console.error("[TagBuilder2] character delete error", e); + return; + } + set(characters, get(characters).filter((c) => c.tag !== char.tag), true); + await loadMyCharacters(); + loadOverlayCount(); + } const OVERLAY_TABLE_LABELS = { cast_items: "Cast", appearance_items: "Appearance", @@ -3713,6 +3770,7 @@ function TagBuilder2($$anchor, $$props) { set(activeSubjectSubitem, get(activeSubjectSubitem) === key ? null : key, true); set(searchQuery, ""); set(debouncedQuery, ""); + if (key === MINE_KEY) loadMyCharacters(); scrollBrowserTop(); } function selectGroup(groupName) { @@ -6681,7 +6739,7 @@ ${filtered}` : filtered; } var node_4 = sibling(div_4, 2); { - var consequent_7 = ($$anchor3) => { + var consequent_8 = ($$anchor3) => { var div_5 = root_6(); var div_6 = child(div_5); let classes_2; @@ -6730,130 +6788,148 @@ ${filtered}` : filtered; delegated("click", div_7, () => selectSubjectSubitem(get(sub).key)); append($$anchor4, div_7); }); - template_effect(() => classes_2 = set_class(div_6, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_2, { active: get(activeSubjectSubitem) === null })); - delegated("click", div_6, () => set(activeSubjectSubitem, null)); - append($$anchor3, div_5); - }; - var consequent_8 = ($$anchor3) => { - var div_8 = root_11(); - var div_9 = child(div_8); + var div_8 = sibling(node_6, 2); let classes_4; - var span_9 = sibling(child(div_9), 2); - var text_10 = child(span_9); - var node_8 = sibling(div_9, 2); - each(node_8, 17, () => get(styleGroups), index, ($$anchor4, g) => { - var div_10 = root_12(); - let classes_5; - var span_10 = child(div_10); - var text_11 = child(span_10); - var span_11 = sibling(span_10, 2); - var text_12 = child(span_11); - template_effect(() => { - classes_5 = set_class(div_10, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_5, { active: get(activeGroup) === get(g).group_name }); - set_text(text_11, get(g).display_name); - set_text(text_12, (get(itemsByGroup)[get(g).group_name] || []).length); - }); - delegated("click", div_10, () => selectGroup(get(g).group_name)); - append($$anchor4, div_10); - }); - template_effect(() => { - classes_4 = set_class(div_9, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_4, { active: get(activeGroup) === null }); - set_text(text_10, get(stylesCache).items.length); - }); - delegated("click", div_9, () => set(activeGroup, null)); - append($$anchor3, div_8); - }; - var consequent_10 = ($$anchor3) => { - var div_11 = root_13(); - var node_9 = child(div_11); - each(node_9, 17, () => get(bucketCache)[get(cat).bucket].groups, index, ($$anchor4, g) => { - var div_12 = root_14(); - let classes_6; - var span_12 = child(div_12); - var text_13 = child(span_12); - var span_13 = sibling(span_12, 2); - var text_14 = child(span_13); - template_effect(() => { - classes_6 = set_class(div_12, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_6, { - active: get(activeGroup) === null && get(scrollSpyGroup) === get(g).group_name - }); - set_text(text_13, get(g).display_name || get(g).group_name); - set_text(text_14, (get(itemsByGroup)[get(g).group_name] || []).length); - }); - delegated("click", div_12, () => scrollToGroup(get(g).group_name)); - append($$anchor4, div_12); - }); - var node_10 = sibling(node_9, 2); + var node_8 = sibling(child(div_8), 2); { - var consequent_9 = ($$anchor4) => { - var div_13 = root_15(); - let classes_7; - var span_14 = sibling(child(div_13), 2); - var text_15 = child(span_14); - template_effect(() => { - classes_7 = set_class(div_13, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_7, { active: get(activeGroup) === MODIFIER_GROUP_KEY }); - set_text(text_15, MODIFIER_ITEMS.length); - }); - delegated("click", div_13, () => selectGroup(MODIFIER_GROUP_KEY)); - append($$anchor4, div_13); + var consequent_7 = ($$anchor4) => { + var span_9 = root_11(); + var text_10 = child(span_9); + template_effect(() => set_text(text_10, get(myCharacters).length)); + append($$anchor4, span_9); }; - if_block(node_10, ($$render) => { - if (get(cat).key === "appearance") $$render(consequent_9); + if_block(node_8, ($$render) => { + if (get(myCharacters).length) $$render(consequent_7); }); } - append($$anchor3, div_11); + template_effect(() => { + classes_2 = set_class(div_6, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_2, { active: get(activeSubjectSubitem) === null }); + classes_4 = set_class(div_8, 1, "pcr-atb2-rail-sub pcr-atb2-rail-sub-mine svelte-ibd6yj", null, classes_4, { active: get(activeSubjectSubitem) === MINE_KEY }); + }); + delegated("click", div_6, () => set(activeSubjectSubitem, null)); + delegated("click", div_8, () => selectSubjectSubitem(MINE_KEY)); + append($$anchor3, div_5); }; - var consequent_12 = ($$anchor3) => { - var div_14 = root_16(); - var node_11 = child(div_14); - each(node_11, 17, () => get(bucketCache)[get(cat).bucket].groups, index, ($$anchor4, g) => { - var div_15 = root_17(); - let classes_8; - var span_15 = child(div_15); - var text_16 = child(span_15); - var span_16 = sibling(span_15, 2); + var consequent_9 = ($$anchor3) => { + var div_9 = root_12(); + var div_10 = child(div_9); + let classes_5; + var span_10 = sibling(child(div_10), 2); + var text_11 = child(span_10); + var node_9 = sibling(div_10, 2); + each(node_9, 17, () => get(styleGroups), index, ($$anchor4, g) => { + var div_11 = root_13(); + let classes_6; + var span_11 = child(div_11); + var text_12 = child(span_11); + var span_12 = sibling(span_11, 2); + var text_13 = child(span_12); + template_effect(() => { + classes_6 = set_class(div_11, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_6, { active: get(activeGroup) === get(g).group_name }); + set_text(text_12, get(g).display_name); + set_text(text_13, (get(itemsByGroup)[get(g).group_name] || []).length); + }); + delegated("click", div_11, () => selectGroup(get(g).group_name)); + append($$anchor4, div_11); + }); + template_effect(() => { + classes_5 = set_class(div_10, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_5, { active: get(activeGroup) === null }); + set_text(text_11, get(stylesCache).items.length); + }); + delegated("click", div_10, () => set(activeGroup, null)); + append($$anchor3, div_9); + }; + var consequent_11 = ($$anchor3) => { + var div_12 = root_14(); + var node_10 = child(div_12); + each(node_10, 17, () => get(bucketCache)[get(cat).bucket].groups, index, ($$anchor4, g) => { + var div_13 = root_15(); + let classes_7; + var span_13 = child(div_13); + var text_14 = child(span_13); + var span_14 = sibling(span_13, 2); + var text_15 = child(span_14); + template_effect(() => { + classes_7 = set_class(div_13, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_7, { + active: get(activeGroup) === null && get(scrollSpyGroup) === get(g).group_name + }); + set_text(text_14, get(g).display_name || get(g).group_name); + set_text(text_15, (get(itemsByGroup)[get(g).group_name] || []).length); + }); + delegated("click", div_13, () => scrollToGroup(get(g).group_name)); + append($$anchor4, div_13); + }); + var node_11 = sibling(node_10, 2); + { + var consequent_10 = ($$anchor4) => { + var div_14 = root_16(); + let classes_8; + var span_15 = sibling(child(div_14), 2); + var text_16 = child(span_15); + template_effect(() => { + classes_8 = set_class(div_14, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_8, { active: get(activeGroup) === MODIFIER_GROUP_KEY }); + set_text(text_16, MODIFIER_ITEMS.length); + }); + delegated("click", div_14, () => selectGroup(MODIFIER_GROUP_KEY)); + append($$anchor4, div_14); + }; + if_block(node_11, ($$render) => { + if (get(cat).key === "appearance") $$render(consequent_10); + }); + } + append($$anchor3, div_12); + }; + var consequent_13 = ($$anchor3) => { + var div_15 = root_17(); + var node_12 = child(div_15); + each(node_12, 17, () => get(bucketCache)[get(cat).bucket].groups, index, ($$anchor4, g) => { + var div_16 = root_18(); + let classes_9; + var span_16 = child(div_16); var text_17 = child(span_16); + var span_17 = sibling(span_16, 2); + var text_18 = child(span_17); template_effect( ($0) => { - classes_8 = set_class(div_15, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_8, { + classes_9 = set_class(div_16, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_9, { active: get(scrollSpyGroup) === get(cat).key + "/" + get(g).group_name }); - set_text(text_16, get(g).display_name || get(g).group_name); - set_text(text_17, $0); + set_text(text_17, get(g).display_name || get(g).group_name); + set_text(text_18, $0); }, [ () => get(bucketCache)[get(cat).bucket].items.filter((i) => i.item_group === get(g).group_name).length ] ); - delegated("click", div_15, () => scrollToAllSection(get(cat).key + "/" + get(g).group_name)); - append($$anchor4, div_15); + delegated("click", div_16, () => scrollToAllSection(get(cat).key + "/" + get(g).group_name)); + append($$anchor4, div_16); }); - var node_12 = sibling(node_11, 2); + var node_13 = sibling(node_12, 2); { - var consequent_11 = ($$anchor4) => { - var div_16 = root_18(); - let classes_9; - var span_17 = sibling(child(div_16), 2); - var text_18 = child(span_17); + var consequent_12 = ($$anchor4) => { + var div_17 = root_19(); + let classes_10; + var span_18 = sibling(child(div_17), 2); + var text_19 = child(span_18); template_effect(() => { - classes_9 = set_class(div_16, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_9, { active: get(scrollSpyGroup) === "appearance/__modifiers__" }); - set_text(text_18, MODIFIER_ITEMS.length); + classes_10 = set_class(div_17, 1, "pcr-atb2-rail-sub svelte-ibd6yj", null, classes_10, { active: get(scrollSpyGroup) === "appearance/__modifiers__" }); + set_text(text_19, MODIFIER_ITEMS.length); }); - delegated("click", div_16, () => scrollToAllSection("appearance/__modifiers__")); - append($$anchor4, div_16); + delegated("click", div_17, () => scrollToAllSection("appearance/__modifiers__")); + append($$anchor4, div_17); }; - if_block(node_12, ($$render) => { - if (get(cat).key === "appearance") $$render(consequent_11); + if_block(node_13, ($$render) => { + if (get(cat).key === "appearance") $$render(consequent_12); }); } - append($$anchor3, div_14); + append($$anchor3, div_15); }; if_block(node_4, ($$render) => { var _a2, _b, _c, _d; - if (get(isActive) && get(cat).key === "subjects") $$render(consequent_7); - else if (get(isActive) && get(cat).key === "styles" && get(styleGroups).length) $$render(consequent_8, 1); - else if (get(isActive) && get(cat).enabled && ((_b = (_a2 = get(bucketCache)[get(cat).bucket]) == null ? void 0 : _a2.groups) == null ? void 0 : _b.length)) $$render(consequent_10, 2); - else if (get(activeCategory) === "all" && get(cat).key === get(scrollSpyCategory) && get(cat).enabled && get(cat).bucket && ((_d = (_c = get(bucketCache)[get(cat).bucket]) == null ? void 0 : _c.groups) == null ? void 0 : _d.length)) $$render(consequent_12, 3); + if (get(isActive) && get(cat).key === "subjects") $$render(consequent_8); + else if (get(isActive) && get(cat).key === "styles" && get(styleGroups).length) $$render(consequent_9, 1); + else if (get(isActive) && get(cat).enabled && ((_b = (_a2 = get(bucketCache)[get(cat).bucket]) == null ? void 0 : _a2.groups) == null ? void 0 : _b.length)) $$render(consequent_11, 2); + else if (get(activeCategory) === "all" && get(cat).key === get(scrollSpyCategory) && get(cat).enabled && get(cat).bucket && ((_d = (_c = get(bucketCache)[get(cat).bucket]) == null ? void 0 : _c.groups) == null ? void 0 : _d.length)) $$render(consequent_13, 3); }); } template_effect(() => { @@ -6866,95 +6942,95 @@ ${filtered}` : filtered; }); bind_this(aside, ($$value) => set(railEl, $$value), () => get(railEl)); var main = sibling(aside, 2); - let classes_10; - var div_17 = child(main); - var span_18 = child(div_17); - var span_19 = child(span_18); let classes_11; - var strong = sibling(child(span_19)); - var text_19 = child(strong); - var node_13 = sibling(span_19, 2); - { - var consequent_13 = ($$anchor2) => { - var fragment_3 = root_19(); - var span_20 = sibling(first_child(fragment_3), 2); - var text_20 = child(span_20); - template_effect(($0) => set_text(text_20, $0), [() => groupDisplay(get(activeBucket), get(activeGroup))]); - append($$anchor2, fragment_3); - }; - if_block(node_13, ($$render) => { - if (get(activeGroup)) $$render(consequent_13); - }); - } - var div_18 = sibling(span_18, 2); - var button_2 = child(div_18); + var div_18 = child(main); + var span_19 = child(div_18); + var span_20 = child(span_19); let classes_12; - var button_3 = sibling(button_2, 2); - let classes_13; - var node_14 = sibling(div_18, 2); + var strong = sibling(child(span_20)); + var text_20 = child(strong); + var node_14 = sibling(span_20, 2); { var consequent_14 = ($$anchor2) => { - var button_4 = root_20(); - var text_21 = child(button_4); - template_effect(() => set_text(text_21, `✎ ${get(overlayTotalCount) ?? ""}`)); + var fragment_3 = root_20(); + var span_21 = sibling(first_child(fragment_3), 2); + var text_21 = child(span_21); + template_effect(($0) => set_text(text_21, $0), [() => groupDisplay(get(activeBucket), get(activeGroup))]); + append($$anchor2, fragment_3); + }; + if_block(node_14, ($$render) => { + if (get(activeGroup)) $$render(consequent_14); + }); + } + var div_19 = sibling(span_19, 2); + var button_2 = child(div_19); + let classes_13; + var button_3 = sibling(button_2, 2); + let classes_14; + var node_15 = sibling(div_19, 2); + { + var consequent_15 = ($$anchor2) => { + var button_4 = root_21(); + var text_22 = child(button_4); + template_effect(() => set_text(text_22, `✎ ${get(overlayTotalCount) ?? ""}`)); delegated("click", button_4, openOverlayManager); append($$anchor2, button_4); }; - if_block(node_14, ($$render) => { - if (get(overlayTotalCount) > 0) $$render(consequent_14); + if_block(node_15, ($$render) => { + if (get(overlayTotalCount) > 0) $$render(consequent_15); }); } - var node_15 = sibling(div_17, 2); + var node_16 = sibling(div_18, 2); { - var consequent_28 = ($$anchor2) => { + var consequent_29 = ($$anchor2) => { const recentCard = ($$anchor3, r = noop) => { var fragment_4 = comment(); - var node_16 = first_child(fragment_4); + var node_17 = first_child(fragment_4); { - var consequent_17 = ($$anchor4) => { + var consequent_18 = ($$anchor4) => { const o = user_derived(() => r().option); const isChar = user_derived(() => get(o).kind === "character"); const rHasImg = user_derived(() => { var _a2; return get(isChar) ? get(characterThumbs).has(get(o).tag) : !!((_a2 = get(castThumbs)[get(o).group]) == null ? void 0 : _a2.has(get(o).tag)); }); - var div_19 = root_23(); - var div_20 = child(div_19); - let classes_14; - var node_17 = child(div_20); + var div_20 = root_24(); + var div_21 = child(div_20); + let classes_15; + var node_18 = child(div_21); { - var consequent_15 = ($$anchor5) => { - var img = root_24(); + var consequent_16 = ($$anchor5) => { + var img = root_25(); template_effect(($0) => set_attribute(img, "src", $0), [ () => get(isChar) ? `/promptchain/tag-builder/thumb/characters/${encodeURIComponent(get(o).tag)}` : `/promptchain/tag-builder/thumb/${encodeURIComponent(get(o).group)}/${encodeURIComponent(get(o).tag)}` ]); append($$anchor5, img); }; - if_block(node_17, ($$render) => { - if (get(rHasImg)) $$render(consequent_15); + if_block(node_18, ($$render) => { + if (get(rHasImg)) $$render(consequent_16); }); } - var div_21 = sibling(div_20, 2); - var text_22 = child(div_21); - var node_18 = sibling(div_21, 2); + var div_22 = sibling(div_21, 2); + var text_23 = child(div_22); + var node_19 = sibling(div_22, 2); { - var consequent_16 = ($$anchor5) => { - var div_22 = root_25(); - var text_23 = child(div_22); - template_effect(() => set_text(text_23, get(o).series)); - append($$anchor5, div_22); + var consequent_17 = ($$anchor5) => { + var div_23 = root_26(); + var text_24 = child(div_23); + template_effect(() => set_text(text_24, get(o).series)); + append($$anchor5, div_23); }; - if_block(node_18, ($$render) => { - if (get(o).series) $$render(consequent_16); + if_block(node_19, ($$render) => { + if (get(o).series) $$render(consequent_17); }); } template_effect(() => { - set_attribute(div_19, "title", get(o).base_natlang || get(o).display || get(o).tag); - classes_14 = set_class(div_20, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_14, { "has-image": get(rHasImg) }); - set_text(text_22, get(o).display || get(o).tag); + set_attribute(div_20, "title", get(o).base_natlang || get(o).display || get(o).tag); + classes_15 = set_class(div_21, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_15, { "has-image": get(rHasImg) }); + set_text(text_23, get(o).display || get(o).tag); }); - delegated("click", div_19, () => pickIdentityFromBrowser(get(o))); - append($$anchor4, div_19); + delegated("click", div_20, () => pickIdentityFromBrowser(get(o))); + append($$anchor4, div_20); }; var alternate = ($$anchor4) => { const it = user_derived(() => r().item); @@ -6963,78 +7039,78 @@ ${filtered}` : filtered; return (_a2 = CATEGORIES.find((c) => c.key === r().categoryKey)) == null ? void 0 : _a2.bucket; }); const rHasImg = user_derived(() => !!get(rBucket) && hasThumb(get(rBucket), get(it).item_tag)); - var div_23 = root_26(); - var div_24 = child(div_23); - let classes_15; - var node_19 = child(div_24); + var div_24 = root_27(); + var div_25 = child(div_24); + let classes_16; + var node_20 = child(div_25); { - var consequent_18 = ($$anchor5) => { - var img_1 = root_27(); + var consequent_19 = ($$anchor5) => { + var img_1 = root_28(); template_effect(($0) => set_attribute(img_1, "src", $0), [() => thumbUrl(get(rBucket), get(it).item_tag)]); append($$anchor5, img_1); }; - if_block(node_19, ($$render) => { - if (get(rHasImg)) $$render(consequent_18); + if_block(node_20, ($$render) => { + if (get(rHasImg)) $$render(consequent_19); }); } - var div_25 = sibling(div_24, 2); - var text_24 = child(div_25); + var div_26 = sibling(div_25, 2); + var text_25 = child(div_26); template_effect(() => { - set_attribute(div_23, "title", get(it).base_natlang || get(it).display_name || get(it).item_tag); - classes_15 = set_class(div_24, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_15, { "has-image": get(rHasImg) }); - set_text(text_24, get(it).display_name || get(it).item_tag); + set_attribute(div_24, "title", get(it).base_natlang || get(it).display_name || get(it).item_tag); + classes_16 = set_class(div_25, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_16, { "has-image": get(rHasImg) }); + set_text(text_25, get(it).display_name || get(it).item_tag); }); - delegated("click", div_23, () => pickItemFromAll(get(it), r().categoryKey, r().groupKey)); - append($$anchor4, div_23); + delegated("click", div_24, () => pickItemFromAll(get(it), r().categoryKey, r().groupKey)); + append($$anchor4, div_24); }; - if_block(node_16, ($$render) => { - if (r().type === "identity") $$render(consequent_17); + if_block(node_17, ($$render) => { + if (r().type === "identity") $$render(consequent_18); else $$render(alternate, -1); }); } append($$anchor3, fragment_4); }; - var fragment_5 = root_21(); - var node_20 = first_child(fragment_5); + var fragment_5 = root_22(); + var node_21 = first_child(fragment_5); { - var consequent_19 = ($$anchor3) => { - var div_26 = root_28(); - var div_27 = child(div_26); - var button_5 = sibling(child(div_27), 2); - var div_28 = sibling(div_27, 2); - each(div_28, 21, () => get(recentPicks), (r) => recentKey(r), ($$anchor4, r) => { + var consequent_20 = ($$anchor3) => { + var div_27 = root_29(); + var div_28 = child(div_27); + var button_5 = sibling(child(div_28), 2); + var div_29 = sibling(div_28, 2); + each(div_29, 21, () => get(recentPicks), (r) => recentKey(r), ($$anchor4, r) => { recentCard($$anchor4, () => get(r)); }); delegated("click", button_5, clearRecent); - append($$anchor3, div_26); + append($$anchor3, div_27); }; var d_1 = user_derived(() => RECENT_ENABLED); - if_block(node_20, ($$render) => { - if (get(d_1)) $$render(consequent_19); + if_block(node_21, ($$render) => { + if (get(d_1)) $$render(consequent_20); }); } - var node_21 = sibling(node_20, 2); + var node_22 = sibling(node_21, 2); { - var consequent_20 = ($$anchor3) => { - var div_29 = root_30(); - var text_25 = child(div_29); - template_effect(() => set_text(text_25, get(searchQuery) ? `No items match "${get(searchQuery)}"` : "Loading…")); - append($$anchor3, div_29); + var consequent_21 = ($$anchor3) => { + var div_30 = root_31(); + var text_26 = child(div_30); + template_effect(() => set_text(text_26, get(searchQuery) ? `No items match "${get(searchQuery)}"` : "Loading…")); + append($$anchor3, div_30); }; var alternate_1 = ($$anchor3) => { var fragment_7 = comment(); - var node_22 = first_child(fragment_7); - each(node_22, 17, () => get(allCategorySections), (section) => section.key, ($$anchor4, section) => { + var node_23 = first_child(fragment_7); + each(node_23, 17, () => get(allCategorySections), (section) => section.key, ($$anchor4, section) => { const cat = user_derived(() => CATEGORIES.find((c) => c.key === get(section).categoryKey)); - var div_30 = root_32(); - var div_31 = sibling(child(div_30), 2); - var span_21 = child(div_31); - var text_26 = child(span_21); - var span_22 = sibling(span_21, 4); + var div_31 = root_33(); + var div_32 = sibling(child(div_31), 2); + var span_22 = child(div_32); var text_27 = child(span_22); - action(div_31, ($$node) => stickyShadow == null ? void 0 : stickyShadow($$node)); - var div_32 = sibling(div_31, 2); - each(div_32, 21, () => get(section).items, (item) => item.item_tag, ($$anchor5, item) => { + var span_23 = sibling(span_22, 4); + var text_28 = child(span_23); + action(div_32, ($$node) => stickyShadow == null ? void 0 : stickyShadow($$node)); + var div_33 = sibling(div_32, 2); + each(div_33, 21, () => get(section).items, (item) => item.item_tag, ($$anchor5, item) => { const sectionCardMods = user_derived(() => !get(section).kind && isCustomizableSlot(get(section).categoryKey, get(section).groupKey) ? cardModifiers(get(item), get(section).categoryKey, get(section).groupKey) : null); const sectionCardDotColor = user_derived(() => { var _a2; @@ -7048,85 +7124,85 @@ ${filtered}` : filtered; var _a2, _b, _c, _d; return get(section).kind === "subject-character" ? ((_b = (_a2 = get(activeSubject)) == null ? void 0 : _a2.character) == null ? void 0 : _b.tag) === get(item).tag : get(section).kind === "subject-cast" ? ((_d = (_c = get(activeSubject)) == null ? void 0 : _c.character) == null ? void 0 : _d.tag) === get(item).item_tag : false; }); - var div_33 = root_33(); - let classes_16; - var node_23 = child(div_33); + var div_34 = root_34(); + let classes_17; + var node_24 = child(div_34); { - var consequent_22 = ($$anchor6) => { - var div_34 = root_34(); - let classes_17; - var node_24 = child(div_34); + var consequent_23 = ($$anchor6) => { + var div_35 = root_35(); + let classes_18; + var node_25 = child(div_35); { - var consequent_21 = ($$anchor7) => { - var img_2 = root_35(); + var consequent_22 = ($$anchor7) => { + var img_2 = root_36(); template_effect(($0) => set_attribute(img_2, "src", $0), [ () => `/promptchain/tag-builder/thumb/characters/${encodeURIComponent(get(item).tag)}` ]); append($$anchor7, img_2); }; var d_2 = user_derived(() => get(characterThumbs).has(get(item).tag)); - if_block(node_24, ($$render) => { - if (get(d_2)) $$render(consequent_21); + if_block(node_25, ($$render) => { + if (get(d_2)) $$render(consequent_22); }); } - template_effect(($0) => classes_17 = set_class(div_34, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_17, $0), [ + template_effect(($0) => classes_18 = set_class(div_35, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_18, $0), [ () => ({ "has-image": get(characterThumbs).has(get(item).tag) }) ]); - append($$anchor6, div_34); + append($$anchor6, div_35); }; - var consequent_24 = ($$anchor6) => { + var consequent_25 = ($$anchor6) => { const hasImg = user_derived(() => { var _a2; return (_a2 = get(castThumbs)[get(section).castGroup]) == null ? void 0 : _a2.has(get(item).item_tag); }); - var div_35 = root_36(); - let classes_18; - var node_25 = child(div_35); + var div_36 = root_37(); + let classes_19; + var node_26 = child(div_36); { - var consequent_23 = ($$anchor7) => { - var img_3 = root_37(); + var consequent_24 = ($$anchor7) => { + var img_3 = root_38(); template_effect(($0) => set_attribute(img_3, "src", $0), [ () => `/promptchain/tag-builder/thumb/${encodeURIComponent(get(section).castGroup)}/${encodeURIComponent(get(item).item_tag)}` ]); append($$anchor7, img_3); }; - if_block(node_25, ($$render) => { - if (get(hasImg)) $$render(consequent_23); + if_block(node_26, ($$render) => { + if (get(hasImg)) $$render(consequent_24); }); } - template_effect(() => classes_18 = set_class(div_35, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_18, { "has-image": get(hasImg) })); - append($$anchor6, div_35); - }; - var consequent_25 = ($$anchor6) => { - var div_36 = root_38(); - var img_4 = child(div_36); - template_effect(($0) => set_attribute(img_4, "src", $0), [() => thumbUrl(get(cat).bucket, get(item).item_tag)]); + template_effect(() => classes_19 = set_class(div_36, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_19, { "has-image": get(hasImg) })); append($$anchor6, div_36); }; + var consequent_26 = ($$anchor6) => { + var div_37 = root_39(); + var img_4 = child(div_37); + template_effect(($0) => set_attribute(img_4, "src", $0), [() => thumbUrl(get(cat).bucket, get(item).item_tag)]); + append($$anchor6, div_37); + }; var d_3 = user_derived(() => { var _a2; return ((_a2 = get(cat)) == null ? void 0 : _a2.bucket) && hasThumb(get(cat).bucket, get(item).item_tag); }); - var consequent_26 = ($$anchor6) => { - var div_37 = root_39(); - append($$anchor6, div_37); + var consequent_27 = ($$anchor6) => { + var div_38 = root_40(); + append($$anchor6, div_38); }; - if_block(node_23, ($$render) => { + if_block(node_24, ($$render) => { var _a2; - if (get(section).kind === "subject-character") $$render(consequent_22); - else if (get(section).kind === "subject-cast") $$render(consequent_24, 1); - else if (get(d_3)) $$render(consequent_25, 2); - else if ((_a2 = get(cat)) == null ? void 0 : _a2.bucket) $$render(consequent_26, 3); + if (get(section).kind === "subject-character") $$render(consequent_23); + else if (get(section).kind === "subject-cast") $$render(consequent_25, 1); + else if (get(d_3)) $$render(consequent_26, 2); + else if ((_a2 = get(cat)) == null ? void 0 : _a2.bucket) $$render(consequent_27, 3); }); } - var div_38 = sibling(node_23, 2); - var node_26 = child(div_38); + var div_39 = sibling(node_24, 2); + var node_27 = child(div_39); { - var consequent_27 = ($$anchor6) => { - var button_6 = root_40(); - let classes_19; + var consequent_28 = ($$anchor6) => { + var button_6 = root_41(); + let classes_20; template_effect(() => { - classes_19 = set_class(button_6, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_19, { + classes_20 = set_class(button_6, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_20, { filled: !!get(sectionCardDotColor), hollow: !get(sectionCardDotColor) }); @@ -7138,17 +7214,17 @@ ${filtered}` : filtered; }); append($$anchor6, button_6); }; - if_block(node_26, ($$render) => { - if (get(sectionCardMods)) $$render(consequent_27); + if_block(node_27, ($$render) => { + if (get(sectionCardMods)) $$render(consequent_28); }); } - var text_28 = sibling(node_26); + var text_29 = sibling(node_27); template_effect( ($0) => { - classes_16 = set_class(div_33, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_16, $0); - set_attribute(div_33, "data-item-tag", get(item).item_tag); - set_attribute(div_33, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); - set_text(text_28, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); + classes_17 = set_class(div_34, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_17, $0); + set_attribute(div_34, "data-item-tag", get(item).item_tag); + set_attribute(div_34, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); + set_text(text_29, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); }, [ () => ({ @@ -7157,7 +7233,7 @@ ${filtered}` : filtered; }) ] ); - delegated("click", div_33, () => { + delegated("click", div_34, () => { if (get(section).kind === "subject-character") { if (get(sectionActiveIdentity)) unbindIdentity(get(activeSubject).id); else pickIdentityFromBrowser(characterToOption(get(item))); @@ -7168,147 +7244,195 @@ ${filtered}` : filtered; pickItemFromAll(get(item), get(section).categoryKey, get(section).groupKey); } }); - delegated("contextmenu", div_33, (e) => { + delegated("contextmenu", div_34, (e) => { if (!get(section).kind && get(sectionBucket)) openChipQaMenu(e, get(sectionBucket), get(item)); }); - append($$anchor5, div_33); + append($$anchor5, div_34); }); - action(div_30, ($$node) => spyTarget == null ? void 0 : spyTarget($$node)); + action(div_31, ($$node) => spyTarget == null ? void 0 : spyTarget($$node)); template_effect(() => { - set_attribute(div_30, "data-spy-group", get(section).key); - set_text(text_26, get(section).categoryLabel); - set_text(text_27, get(section).groupLabel); + set_attribute(div_31, "data-spy-group", get(section).key); + set_text(text_27, get(section).categoryLabel); + set_text(text_28, get(section).groupLabel); }); - append($$anchor4, div_30); + append($$anchor4, div_31); }); append($$anchor3, fragment_7); }; - if_block(node_21, ($$render) => { - if (get(allCategorySections).length === 0) $$render(consequent_20); + if_block(node_22, ($$render) => { + if (get(allCategorySections).length === 0) $$render(consequent_21); else $$render(alternate_1, -1); }); } append($$anchor2, fragment_5); }; - var consequent_38 = ($$anchor2) => { - const sub = user_derived(() => get(activeSubjectSubitem) ? SUBJECT_SUBITEMS.find((s) => s.key === get(activeSubjectSubitem)) : null); + var consequent_42 = ($$anchor2) => { + const sub = user_derived(() => get(activeSubjectSubitem) && get(activeSubjectSubitem) !== MINE_KEY ? SUBJECT_SUBITEMS.find((s) => s.key === get(activeSubjectSubitem)) : null); var fragment_8 = comment(); - var node_27 = first_child(fragment_8); + var node_28 = first_child(fragment_8); { - var consequent_34 = ($$anchor3) => { - var fragment_9 = comment(); - var node_28 = first_child(fragment_9); + var consequent_32 = ($$anchor3) => { + var fragment_9 = root_43(); + var div_40 = first_child(fragment_9); + var div_41 = child(div_40); + var node_29 = sibling(div_41, 2); + each(node_29, 17, () => get(myCharacters), (char) => char.tag, ($$anchor4, char) => { + const isActiveIdentity = user_derived(() => { + var _a2, _b; + return ((_b = (_a2 = get(activeSubject)) == null ? void 0 : _a2.character) == null ? void 0 : _b.tag) === get(char).tag; + }); + var div_42 = root_44(); + let classes_21; + var div_43 = sibling(child(div_42), 2); + var text_30 = child(div_43); + var node_30 = sibling(div_43, 2); + { + var consequent_30 = ($$anchor5) => { + var div_44 = root_45(); + var text_31 = child(div_44); + template_effect(() => set_text(text_31, get(char).series)); + append($$anchor5, div_44); + }; + if_block(node_30, ($$render) => { + if (get(char).series) $$render(consequent_30); + }); + } + template_effect(() => { + classes_21 = set_class(div_42, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_21, { selected: get(isActiveIdentity) }); + set_attribute(div_42, "title", get(char).base_natlang || `${get(char).display || get(char).tag}${get(char).series ? " — " + get(char).series : ""}`); + set_text(text_30, get(char).display || get(char).tag); + }); + delegated("click", div_42, () => get(isActiveIdentity) ? unbindIdentity(get(activeSubject).id) : pickIdentityFromBrowser(characterToOption(get(char)))); + delegated("contextmenu", div_42, (e) => openCharEditMenu(e, get(char))); + append($$anchor4, div_42); + }); + var node_31 = sibling(div_40, 2); { - var consequent_29 = ($$anchor4) => { - var div_39 = root_43(); - append($$anchor4, div_39); + var consequent_31 = ($$anchor4) => { + var div_45 = root_46(); + append($$anchor4, div_45); }; - var consequent_30 = ($$anchor4) => { - var div_40 = root_44(); - var text_29 = child(div_40); - template_effect(() => set_text(text_29, get(searchQuery) ? `No characters match "${get(searchQuery)}"` : "No characters.")); - append($$anchor4, div_40); + if_block(node_31, ($$render) => { + if (!get(myCharacters).length) $$render(consequent_31); + }); + } + delegated("click", div_41, openNewCharacterEditor); + append($$anchor3, fragment_9); + }; + var consequent_38 = ($$anchor3) => { + var fragment_10 = comment(); + var node_32 = first_child(fragment_10); + { + var consequent_33 = ($$anchor4) => { + var div_46 = root_48(); + append($$anchor4, div_46); + }; + var consequent_34 = ($$anchor4) => { + var div_47 = root_49(); + var text_32 = child(div_47); + template_effect(() => set_text(text_32, get(searchQuery) ? `No characters match "${get(searchQuery)}"` : "No characters.")); + append($$anchor4, div_47); }; var alternate_2 = ($$anchor4) => { - var fragment_10 = root_45(); - var div_41 = first_child(fragment_10); - each(div_41, 21, () => get(characters), (char) => char.tag, ($$anchor5, char) => { + var fragment_11 = root_50(); + var div_48 = first_child(fragment_11); + each(div_48, 21, () => get(characters), (char) => char.tag, ($$anchor5, char) => { const isActiveIdentity = user_derived(() => { var _a2, _b; return ((_b = (_a2 = get(activeSubject)) == null ? void 0 : _a2.character) == null ? void 0 : _b.tag) === get(char).tag; }); - var div_42 = root_46(); - let classes_20; - var div_43 = child(div_42); - let classes_21; - var node_29 = child(div_43); + var div_49 = root_51(); + let classes_22; + var div_50 = child(div_49); + let classes_23; + var node_33 = child(div_50); { - var consequent_31 = ($$anchor6) => { - var img_5 = root_47(); + var consequent_35 = ($$anchor6) => { + var img_5 = root_52(); template_effect(($0) => set_attribute(img_5, "src", $0), [ () => `/promptchain/tag-builder/thumb/characters/${encodeURIComponent(get(char).tag)}` ]); append($$anchor6, img_5); }; var d_4 = user_derived(() => get(characterThumbs).has(get(char).tag)); - if_block(node_29, ($$render) => { - if (get(d_4)) $$render(consequent_31); + if_block(node_33, ($$render) => { + if (get(d_4)) $$render(consequent_35); }); } - var div_44 = sibling(div_43, 2); - var text_30 = child(div_44); - var node_30 = sibling(div_44, 2); + var div_51 = sibling(div_50, 2); + var text_33 = child(div_51); + var node_34 = sibling(div_51, 2); { - var consequent_32 = ($$anchor6) => { - var div_45 = root_48(); - var text_31 = child(div_45); - template_effect(() => set_text(text_31, get(char).series)); - append($$anchor6, div_45); + var consequent_36 = ($$anchor6) => { + var div_52 = root_53(); + var text_34 = child(div_52); + template_effect(() => set_text(text_34, get(char).series)); + append($$anchor6, div_52); }; - if_block(node_30, ($$render) => { - if (get(char).series) $$render(consequent_32); + if_block(node_34, ($$render) => { + if (get(char).series) $$render(consequent_36); }); } template_effect( ($0) => { - classes_20 = set_class(div_42, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_20, { selected: get(isActiveIdentity) }); - set_attribute(div_42, "title", get(char).base_natlang || `${get(char).display}${get(char).series ? " — " + get(char).series : ""}`); - classes_21 = set_class(div_43, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_21, $0); - set_text(text_30, get(char).display || get(char).tag); + classes_22 = set_class(div_49, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_22, { selected: get(isActiveIdentity) }); + set_attribute(div_49, "title", get(char).base_natlang || `${get(char).display}${get(char).series ? " — " + get(char).series : ""}`); + classes_23 = set_class(div_50, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_23, $0); + set_text(text_33, get(char).display || get(char).tag); }, [ () => ({ "has-image": get(characterThumbs).has(get(char).tag) }) ] ); - delegated("click", div_42, () => get(isActiveIdentity) ? unbindIdentity(get(activeSubject).id) : pickIdentityFromBrowser(characterToOption(get(char)))); - delegated("contextmenu", div_42, (e) => openCharEditMenu(e, get(char))); - append($$anchor5, div_42); + delegated("click", div_49, () => get(isActiveIdentity) ? unbindIdentity(get(activeSubject).id) : pickIdentityFromBrowser(characterToOption(get(char)))); + delegated("contextmenu", div_49, (e) => openCharEditMenu(e, get(char))); + append($$anchor5, div_49); }); - var node_31 = sibling(div_41, 2); + var node_35 = sibling(div_48, 2); { - var consequent_33 = ($$anchor5) => { - var div_46 = root_49(); - var text_32 = child(div_46); - action(div_46, ($$node) => characterLoadMore == null ? void 0 : characterLoadMore($$node)); - template_effect(($0) => set_text(text_32, $0), [ + var consequent_37 = ($$anchor5) => { + var div_53 = root_54(); + var text_35 = child(div_53); + action(div_53, ($$node) => characterLoadMore == null ? void 0 : characterLoadMore($$node)); + template_effect(($0) => set_text(text_35, $0), [ () => get(charactersLoadingMore) ? "Loading more…" : `Showing ${get(characters).length} of ${get(charactersTotal).toLocaleString()} — scroll for more` ]); - append($$anchor5, div_46); + append($$anchor5, div_53); }; - if_block(node_31, ($$render) => { - if (get(charactersTotal) > get(characters).length) $$render(consequent_33); + if_block(node_35, ($$render) => { + if (get(charactersTotal) > get(characters).length) $$render(consequent_37); }); } - append($$anchor4, fragment_10); + append($$anchor4, fragment_11); }; - if_block(node_28, ($$render) => { - if (get(charactersLoading)) $$render(consequent_29); - else if (get(characters).length === 0) $$render(consequent_30, 1); + if_block(node_32, ($$render) => { + if (get(charactersLoading)) $$render(consequent_33); + else if (get(characters).length === 0) $$render(consequent_34, 1); else $$render(alternate_2, -1); }); } - append($$anchor3, fragment_9); + append($$anchor3, fragment_10); }; var alternate_4 = ($$anchor3) => { const castData = user_derived(() => get(castCache)[get(sub).filter]); - var fragment_11 = comment(); - var node_32 = first_child(fragment_11); + var fragment_12 = comment(); + var node_36 = first_child(fragment_12); { - var consequent_35 = ($$anchor4) => { - var div_47 = root_51(); - var text_33 = child(div_47); - template_effect(() => set_text(text_33, `Loading ${get(sub).label ?? ""}…`)); - append($$anchor4, div_47); + var consequent_39 = ($$anchor4) => { + var div_54 = root_56(); + var text_36 = child(div_54); + template_effect(() => set_text(text_36, `Loading ${get(sub).label ?? ""}…`)); + append($$anchor4, div_54); }; - var consequent_36 = ($$anchor4) => { - var div_48 = root_52(); - var text_34 = child(div_48); - template_effect(($0) => set_text(text_34, `No ${$0 ?? ""} items.`), [() => get(sub).label.toLowerCase()]); - append($$anchor4, div_48); + var consequent_40 = ($$anchor4) => { + var div_55 = root_57(); + var text_37 = child(div_55); + template_effect(($0) => set_text(text_37, `No ${$0 ?? ""} items.`), [() => get(sub).label.toLowerCase()]); + append($$anchor4, div_55); }; var alternate_3 = ($$anchor4) => { - var div_49 = root_53(); - each(div_49, 21, () => get(castData).items, (item) => item.item_tag, ($$anchor5, item) => { + var div_56 = root_58(); + each(div_56, 21, () => get(castData).items, (item) => item.item_tag, ($$anchor5, item) => { const hasImg = user_derived(() => { var _a2; return (_a2 = get(castThumbs)[get(sub).filter]) == null ? void 0 : _a2.has(get(item).item_tag); @@ -7317,31 +7441,31 @@ ${filtered}` : filtered; var _a2, _b; return ((_b = (_a2 = get(activeSubject)) == null ? void 0 : _a2.character) == null ? void 0 : _b.tag) === get(item).item_tag; }); - var div_50 = root_54(); - let classes_22; - var div_51 = child(div_50); - let classes_23; - var node_33 = child(div_51); + var div_57 = root_59(); + let classes_24; + var div_58 = child(div_57); + let classes_25; + var node_37 = child(div_58); { - var consequent_37 = ($$anchor6) => { - var img_6 = root_55(); + var consequent_41 = ($$anchor6) => { + var img_6 = root_60(); template_effect(($0) => set_attribute(img_6, "src", $0), [ () => `/promptchain/tag-builder/thumb/${encodeURIComponent(get(sub).filter)}/${encodeURIComponent(get(item).item_tag)}` ]); append($$anchor6, img_6); }; - if_block(node_33, ($$render) => { - if (get(hasImg)) $$render(consequent_37); + if_block(node_37, ($$render) => { + if (get(hasImg)) $$render(consequent_41); }); } - var div_52 = sibling(div_51, 2); - var text_35 = child(div_52); + var div_59 = sibling(div_58, 2); + var text_38 = child(div_59); template_effect( ($0) => { - classes_22 = set_class(div_50, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_22, $0); - set_attribute(div_50, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); - classes_23 = set_class(div_51, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_23, { "has-image": get(hasImg) }); - set_text(text_35, get(item).display_name || get(item).item_tag); + classes_24 = set_class(div_57, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_24, $0); + set_attribute(div_57, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); + classes_25 = set_class(div_58, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_25, { "has-image": get(hasImg) }); + set_text(text_38, get(item).display_name || get(item).item_tag); }, [ () => ({ @@ -7350,90 +7474,91 @@ ${filtered}` : filtered; }) ] ); - delegated("click", div_50, () => get(isActiveIdentity) ? unbindIdentity(get(activeSubject).id) : pickIdentityFromBrowser(castToOption(get(item), get(sub).filter))); - delegated("contextmenu", div_50, (e) => openChipQaMenu(e, "cast", get(item))); - append($$anchor5, div_50); + delegated("click", div_57, () => get(isActiveIdentity) ? unbindIdentity(get(activeSubject).id) : pickIdentityFromBrowser(castToOption(get(item), get(sub).filter))); + delegated("contextmenu", div_57, (e) => openChipQaMenu(e, "cast", get(item))); + append($$anchor5, div_57); }); - append($$anchor4, div_49); + append($$anchor4, div_56); }; - if_block(node_32, ($$render) => { + if_block(node_36, ($$render) => { var _a2; - if (!get(castData) || get(castData).loading) $$render(consequent_35); - else if (!((_a2 = get(castData).items) == null ? void 0 : _a2.length)) $$render(consequent_36, 1); + if (!get(castData) || get(castData).loading) $$render(consequent_39); + else if (!((_a2 = get(castData).items) == null ? void 0 : _a2.length)) $$render(consequent_40, 1); else $$render(alternate_3, -1); }); } - append($$anchor3, fragment_11); + append($$anchor3, fragment_12); }; - if_block(node_27, ($$render) => { - if (!get(sub) || get(sub).source === "characters") $$render(consequent_34); + if_block(node_28, ($$render) => { + if (get(activeSubjectSubitem) === MINE_KEY) $$render(consequent_32); + else if (!get(sub) || get(sub).source === "characters") $$render(consequent_38, 1); else $$render(alternate_4, -1); }); } append($$anchor2, fragment_8); }; - var consequent_39 = ($$anchor2) => { - var div_53 = root_56(); - append($$anchor2, div_53); - }; - var consequent_40 = ($$anchor2) => { - var div_54 = root_57(); - append($$anchor2, div_54); - }; - var consequent_41 = ($$anchor2) => { - var div_55 = root_58(); - append($$anchor2, div_55); - }; - var consequent_42 = ($$anchor2) => { - var div_56 = root_59(); - var text_36 = child(div_56); - template_effect(() => set_text(text_36, `Loading ${get(activeCategoryDef).label ?? ""}…`)); - append($$anchor2, div_56); - }; var consequent_43 = ($$anchor2) => { - var div_57 = root_60(); - append($$anchor2, div_57); + var div_60 = root_61(); + append($$anchor2, div_60); + }; + var consequent_44 = ($$anchor2) => { + var div_61 = root_62(); + append($$anchor2, div_61); + }; + var consequent_45 = ($$anchor2) => { + var div_62 = root_63(); + append($$anchor2, div_62); }; var consequent_46 = ($$anchor2) => { - var fragment_12 = comment(); - var node_34 = first_child(fragment_12); - each(node_34, 17, () => get(groupedSections), (section) => section.key, ($$anchor3, section) => { - var div_58 = root_62(); - var div_59 = sibling(child(div_58), 2); - var span_23 = child(div_59); - var text_37 = child(span_23); - action(div_59, ($$node) => stickyShadow == null ? void 0 : stickyShadow($$node)); - var div_60 = sibling(div_59, 2); - each(div_60, 21, () => get(section).items, (item) => item.item_tag, ($$anchor4, item) => { + var div_63 = root_64(); + var text_39 = child(div_63); + template_effect(() => set_text(text_39, `Loading ${get(activeCategoryDef).label ?? ""}…`)); + append($$anchor2, div_63); + }; + var consequent_47 = ($$anchor2) => { + var div_64 = root_65(); + append($$anchor2, div_64); + }; + var consequent_50 = ($$anchor2) => { + var fragment_13 = comment(); + var node_38 = first_child(fragment_13); + each(node_38, 17, () => get(groupedSections), (section) => section.key, ($$anchor3, section) => { + var div_65 = root_67(); + var div_66 = sibling(child(div_65), 2); + var span_24 = child(div_66); + var text_40 = child(span_24); + action(div_66, ($$node) => stickyShadow == null ? void 0 : stickyShadow($$node)); + var div_67 = sibling(div_66, 2); + each(div_67, 21, () => get(section).items, (item) => item.item_tag, ($$anchor4, item) => { const groupCardMods = user_derived(() => isCustomizableSlot(get(activeCategory), get(item).item_group) ? cardModifiers(get(item), get(activeCategory), get(item).item_group) : null); const groupCardDotColor = user_derived(() => { var _a2; return ((_a2 = get(groupCardMods)) == null ? void 0 : _a2.color) ? customizerColorHex(get(groupCardMods).color) : null; }); - var div_61 = root_63(); - let classes_24; - var div_62 = child(div_61); - let classes_25; - var node_35 = child(div_62); + var div_68 = root_68(); + let classes_26; + var div_69 = child(div_68); + let classes_27; + var node_39 = child(div_69); { - var consequent_44 = ($$anchor5) => { - var img_7 = root_64(); + var consequent_48 = ($$anchor5) => { + var img_7 = root_69(); template_effect(($0) => set_attribute(img_7, "src", $0), [() => thumbUrl(get(activeBucket), get(item).item_tag)]); append($$anchor5, img_7); }; var d_5 = user_derived(() => hasThumb(get(activeBucket), get(item).item_tag)); - if_block(node_35, ($$render) => { - if (get(d_5)) $$render(consequent_44); + if_block(node_39, ($$render) => { + if (get(d_5)) $$render(consequent_48); }); } - var div_63 = sibling(div_62, 2); - var node_36 = child(div_63); + var div_70 = sibling(div_69, 2); + var node_40 = child(div_70); { - var consequent_45 = ($$anchor5) => { - var button_7 = root_65(); - let classes_26; + var consequent_49 = ($$anchor5) => { + var button_7 = root_70(); + let classes_28; template_effect(() => { - classes_26 = set_class(button_7, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_26, { + classes_28 = set_class(button_7, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_28, { filled: !!get(groupCardDotColor), hollow: !get(groupCardDotColor) }); @@ -7445,18 +7570,18 @@ ${filtered}` : filtered; }); append($$anchor5, button_7); }; - if_block(node_36, ($$render) => { - if (get(groupCardMods)) $$render(consequent_45); + if_block(node_40, ($$render) => { + if (get(groupCardMods)) $$render(consequent_49); }); } - var text_38 = sibling(node_36); + var text_41 = sibling(node_40); template_effect( ($0, $1) => { - classes_24 = set_class(div_61, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_24, $0); - set_attribute(div_61, "data-item-tag", get(item).item_tag); - set_attribute(div_61, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); - classes_25 = set_class(div_62, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_25, $1); - set_text(text_38, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); + classes_26 = set_class(div_68, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_26, $0); + set_attribute(div_68, "data-item-tag", get(item).item_tag); + set_attribute(div_68, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); + classes_27 = set_class(div_69, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_27, $1); + set_text(text_41, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); }, [ () => ({ @@ -7468,67 +7593,67 @@ ${filtered}` : filtered; }) ] ); - delegated("click", div_61, () => pickItem(get(item))); - delegated("contextmenu", div_61, (e) => { + delegated("click", div_68, () => pickItem(get(item))); + delegated("contextmenu", div_68, (e) => { if (get(activeBucket)) openChipQaMenu(e, get(activeBucket), get(item)); }); - append($$anchor4, div_61); + append($$anchor4, div_68); }); - action(div_58, ($$node) => spyTarget == null ? void 0 : spyTarget($$node)); + action(div_65, ($$node) => spyTarget == null ? void 0 : spyTarget($$node)); template_effect(() => { - set_attribute(div_58, "data-spy-group", get(section).groupKey); - set_text(text_37, get(section).groupLabel); + set_attribute(div_65, "data-spy-group", get(section).groupKey); + set_text(text_40, get(section).groupLabel); }); - append($$anchor3, div_58); + append($$anchor3, div_65); }); - append($$anchor2, fragment_12); + append($$anchor2, fragment_13); }; var alternate_5 = ($$anchor2) => { - var div_64 = root_66(); - each(div_64, 21, () => get(visibleItems), (item) => item.item_tag, ($$anchor3, item) => { + var div_71 = root_71(); + each(div_71, 21, () => get(visibleItems), (item) => item.item_tag, ($$anchor3, item) => { const flatCardMods = user_derived(() => isCustomizableSlot(get(activeCategory), get(item).item_group) ? cardModifiers(get(item), get(activeCategory), get(item).item_group) : null); const flatCardDotColor = user_derived(() => { var _a2; return ((_a2 = get(flatCardMods)) == null ? void 0 : _a2.color) ? customizerColorHex(get(flatCardMods).color) : null; }); - var div_65 = root_67(); - let classes_27; - var node_37 = child(div_65); + var div_72 = root_72(); + let classes_29; + var node_41 = child(div_72); { - var consequent_48 = ($$anchor4) => { - var div_66 = root_68(); - let classes_28; - var node_38 = child(div_66); + var consequent_52 = ($$anchor4) => { + var div_73 = root_73(); + let classes_30; + var node_42 = child(div_73); { - var consequent_47 = ($$anchor5) => { - var img_8 = root_69(); + var consequent_51 = ($$anchor5) => { + var img_8 = root_74(); template_effect(($0) => set_attribute(img_8, "src", $0), [() => thumbUrl(get(activeBucket), get(item).item_tag)]); append($$anchor5, img_8); }; var d_6 = user_derived(() => hasThumb(get(activeBucket), get(item).item_tag)); - if_block(node_38, ($$render) => { - if (get(d_6)) $$render(consequent_47); + if_block(node_42, ($$render) => { + if (get(d_6)) $$render(consequent_51); }); } - template_effect(($0) => classes_28 = set_class(div_66, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_28, $0), [ + template_effect(($0) => classes_30 = set_class(div_73, 1, "pcr-atb2-card-thumb svelte-ibd6yj", null, classes_30, $0), [ () => ({ "has-image": hasThumb(get(activeBucket), get(item).item_tag) }) ]); - append($$anchor4, div_66); + append($$anchor4, div_73); }; - if_block(node_37, ($$render) => { - if (get(activeCategory) !== "styles") $$render(consequent_48); + if_block(node_41, ($$render) => { + if (get(activeCategory) !== "styles") $$render(consequent_52); }); } - var div_67 = sibling(node_37, 2); - var node_39 = child(div_67); + var div_74 = sibling(node_41, 2); + var node_43 = child(div_74); { - var consequent_49 = ($$anchor4) => { - var button_8 = root_70(); - let classes_29; + var consequent_53 = ($$anchor4) => { + var button_8 = root_75(); + let classes_31; template_effect(() => { - classes_29 = set_class(button_8, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_29, { + classes_31 = set_class(button_8, 1, "pcr-atb2-card-mod-dot svelte-ibd6yj", null, classes_31, { filled: !!get(flatCardDotColor), hollow: !get(flatCardDotColor) }); @@ -7540,41 +7665,41 @@ ${filtered}` : filtered; }); append($$anchor4, button_8); }; - if_block(node_39, ($$render) => { - if (get(flatCardMods)) $$render(consequent_49); + if_block(node_43, ($$render) => { + if (get(flatCardMods)) $$render(consequent_53); }); } - var text_39 = sibling(node_39); - var node_40 = sibling(div_67, 2); + var text_42 = sibling(node_43); + var node_44 = sibling(div_74, 2); { - var consequent_50 = ($$anchor4) => { - var div_68 = root_71(); - var text_40 = child(div_68); + var consequent_54 = ($$anchor4) => { + var div_75 = root_76(); + var text_43 = child(div_75); template_effect(() => { var _a2; - return set_text(text_40, `${((_a2 = get(item).tags) == null ? void 0 : _a2.length) ?? 0 ?? ""} tags`); + return set_text(text_43, `${((_a2 = get(item).tags) == null ? void 0 : _a2.length) ?? 0 ?? ""} tags`); }); - append($$anchor4, div_68); + append($$anchor4, div_75); }; - var consequent_51 = ($$anchor4) => { - var div_69 = root_72(); - var text_41 = child(div_69); - template_effect(($0) => set_text(text_41, $0), [ + var consequent_55 = ($$anchor4) => { + var div_76 = root_77(); + var text_44 = child(div_76); + template_effect(($0) => set_text(text_44, $0), [ () => groupDisplay(get(activeBucket), get(item).item_group) ]); - append($$anchor4, div_69); + append($$anchor4, div_76); }; - if_block(node_40, ($$render) => { - if (get(activeCategory) === "styles") $$render(consequent_50); - else if (!get(activeGroup)) $$render(consequent_51, 1); + if_block(node_44, ($$render) => { + if (get(activeCategory) === "styles") $$render(consequent_54); + else if (!get(activeGroup)) $$render(consequent_55, 1); }); } template_effect( ($0) => { - classes_27 = set_class(div_65, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_27, $0); - set_attribute(div_65, "data-item-tag", get(item).item_tag); - set_attribute(div_65, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); - set_text(text_39, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); + classes_29 = set_class(div_72, 1, "pcr-atb2-card svelte-ibd6yj", null, classes_29, $0); + set_attribute(div_72, "data-item-tag", get(item).item_tag); + set_attribute(div_72, "title", get(item).base_natlang || get(item).display_name || get(item).item_tag); + set_text(text_42, ` ${(get(item).display_name || get(item).item_tag) ?? ""}`); }, [ () => ({ @@ -7584,31 +7709,31 @@ ${filtered}` : filtered; }) ] ); - delegated("click", div_65, () => pickItem(get(item))); - delegated("contextmenu", div_65, (e) => { + delegated("click", div_72, () => pickItem(get(item))); + delegated("contextmenu", div_72, (e) => { if (get(activeCategory) !== "styles" && get(activeBucket)) openChipQaMenu(e, get(activeBucket), get(item)); }); - append($$anchor3, div_65); + append($$anchor3, div_72); }); - append($$anchor2, div_64); + append($$anchor2, div_71); }; - if_block(node_15, ($$render) => { + if_block(node_16, ($$render) => { var _a2; - if (get(activeCategory) === "all") $$render(consequent_28); - else if (get(activeCategory) === "subjects") $$render(consequent_38, 1); - else if (get(activeCategory) === "styles" && !((_a2 = modelInfo()) == null ? void 0 : _a2.hash)) $$render(consequent_39, 2); - else if (get(activeCategory) === "styles" && get(stylesCache).loading) $$render(consequent_40, 3); - else if (get(activeCategory) === "styles" && get(visibleItems).length === 0) $$render(consequent_41, 4); - else if (get(activeCategory) !== "styles" && get(activeBucketData).loading) $$render(consequent_42, 5); - else if (get(visibleItems).length === 0) $$render(consequent_43, 6); - else if (get(groupedSections)) $$render(consequent_46, 7); + if (get(activeCategory) === "all") $$render(consequent_29); + else if (get(activeCategory) === "subjects") $$render(consequent_42, 1); + else if (get(activeCategory) === "styles" && !((_a2 = modelInfo()) == null ? void 0 : _a2.hash)) $$render(consequent_43, 2); + else if (get(activeCategory) === "styles" && get(stylesCache).loading) $$render(consequent_44, 3); + else if (get(activeCategory) === "styles" && get(visibleItems).length === 0) $$render(consequent_45, 4); + else if (get(activeCategory) !== "styles" && get(activeBucketData).loading) $$render(consequent_46, 5); + else if (get(visibleItems).length === 0) $$render(consequent_47, 6); + else if (get(groupedSections)) $$render(consequent_50, 7); else $$render(alternate_5, -1); }); } bind_this(main, ($$value) => set(browserEl, $$value), () => get(browserEl)); var aside_1 = sibling(main, 2); - var node_41 = sibling(child(aside_1), 2); - each(node_41, 17, () => get(subjects), (subj) => subj.id, ($$anchor2, subj) => { + var node_45 = sibling(child(aside_1), 2); + each(node_45, 17, () => get(subjects), (subj) => subj.id, ($$anchor2, subj) => { const typeDef = user_derived(() => SUBJECT_TYPES[get(subj).type] || SUBJECT_TYPES.person); const isActive = user_derived(() => get(activeSubjectId) === get(subj).id); const charThumbBucket = user_derived(() => { @@ -7619,206 +7744,206 @@ ${filtered}` : filtered; var _a2, _b; return ((_a2 = get(subj).character) == null ? void 0 : _a2.kind) === "cast" ? !!((_b = get(castThumbs)[get(subj).character.group]) == null ? void 0 : _b.has(get(subj).character.tag)) : !!(get(subj).character && get(characterThumbs).has(get(subj).character.tag)); }); - var div_70 = root_73(); - let classes_30; - var div_71 = child(div_70); - var node_42 = child(div_71); + var div_77 = root_78(); + let classes_32; + var div_78 = child(div_77); + var node_46 = child(div_78); { - var consequent_52 = ($$anchor3) => { - var span_24 = root_74(); - var img_9 = child(span_24); + var consequent_56 = ($$anchor3) => { + var span_25 = root_79(); + var img_9 = child(span_25); template_effect( ($0) => { - set_style(span_24, `border-color:${get(typeDef).color ?? ""}`); + set_style(span_25, `border-color:${get(typeDef).color ?? ""}`); set_attribute(img_9, "src", $0); }, [ () => `/promptchain/tag-builder/thumb/${encodeURIComponent(get(charThumbBucket))}/${encodeURIComponent(get(subj).character.tag)}` ] ); - append($$anchor3, span_24); - }; - var alternate_6 = ($$anchor3) => { - var span_25 = root_75(); - var text_42 = child(span_25); - template_effect(() => { - set_style(span_25, `background:${get(typeDef).color ?? ""}`); - set_text(text_42, get(subj).letter); - }); append($$anchor3, span_25); }; - if_block(node_42, ($$render) => { - if (get(subj).character && get(charThumbHas)) $$render(consequent_52); + var alternate_6 = ($$anchor3) => { + var span_26 = root_80(); + var text_45 = child(span_26); + template_effect(() => { + set_style(span_26, `background:${get(typeDef).color ?? ""}`); + set_text(text_45, get(subj).letter); + }); + append($$anchor3, span_26); + }; + if_block(node_46, ($$render) => { + if (get(subj).character && get(charThumbHas)) $$render(consequent_56); else $$render(alternate_6, -1); }); } - var input_1 = sibling(node_42, 2); - var span_26 = sibling(input_1, 2); - var text_43 = child(span_26); - var node_43 = sibling(span_26, 2); + var input_1 = sibling(node_46, 2); + var span_27 = sibling(input_1, 2); + var text_46 = child(span_27); + var node_47 = sibling(span_27, 2); { - var consequent_53 = ($$anchor3) => { - var span_27 = root_76(); - var text_44 = child(span_27); - template_effect(() => set_text(text_44, get(subj).regionName || "+ new block")); - append($$anchor3, span_27); + var consequent_57 = ($$anchor3) => { + var span_28 = root_81(); + var text_47 = child(span_28); + template_effect(() => set_text(text_47, get(subj).regionName || "+ new block")); + append($$anchor3, span_28); }; - if_block(node_43, ($$render) => { - if (get(regionMode)) $$render(consequent_53); + if_block(node_47, ($$render) => { + if (get(regionMode)) $$render(consequent_57); }); } - var button_9 = sibling(node_43, 2); - var div_72 = sibling(div_71, 2); - var div_73 = sibling(child(div_72), 2); - var span_28 = sibling(child(div_73), 2); - var span_29 = child(span_28); - var button_10 = child(span_29); - var span_30 = child(button_10); - var node_44 = child(span_30); + var button_9 = sibling(node_47, 2); + var div_79 = sibling(div_78, 2); + var div_80 = sibling(child(div_79), 2); + var span_29 = sibling(child(div_80), 2); + var span_30 = child(span_29); + var button_10 = child(span_30); + var span_31 = child(button_10); + var node_48 = child(span_31); { - var consequent_55 = ($$anchor3) => { - var fragment_13 = root_77(); - var text_45 = first_child(fragment_13, true); - var node_45 = sibling(text_45); + var consequent_59 = ($$anchor3) => { + var fragment_14 = root_82(); + var text_48 = first_child(fragment_14, true); + var node_49 = sibling(text_48); { - var consequent_54 = ($$anchor4) => { - var text_46 = text(); - template_effect(() => set_text(text_46, `— ${get(subj).character.series ?? ""}`)); - append($$anchor4, text_46); + var consequent_58 = ($$anchor4) => { + var text_49 = text(); + template_effect(() => set_text(text_49, `— ${get(subj).character.series ?? ""}`)); + append($$anchor4, text_49); }; - if_block(node_45, ($$render) => { - if (get(subj).character.series) $$render(consequent_54); + if_block(node_49, ($$render) => { + if (get(subj).character.series) $$render(consequent_58); }); } - template_effect(() => set_text(text_45, get(subj).character.display)); - append($$anchor3, fragment_13); + template_effect(() => set_text(text_48, get(subj).character.display)); + append($$anchor3, fragment_14); }; var alternate_7 = ($$anchor3) => { - var text_47 = text("Pick an identity…"); - append($$anchor3, text_47); + var text_50 = text("Pick an identity…"); + append($$anchor3, text_50); }; - if_block(node_44, ($$render) => { - if (get(subj).character) $$render(consequent_55); + if_block(node_48, ($$render) => { + if (get(subj).character) $$render(consequent_59); else $$render(alternate_7, -1); }); } - var node_46 = sibling(button_10, 2); + var node_50 = sibling(button_10, 2); { - var consequent_56 = ($$anchor3) => { - var button_11 = root_80(); + var consequent_60 = ($$anchor3) => { + var button_11 = root_85(); delegated("click", button_11, (e) => { e.stopPropagation(); unbindIdentity(get(subj).id); }); append($$anchor3, button_11); }; - if_block(node_46, ($$render) => { - if (get(subj).character) $$render(consequent_56); + if_block(node_50, ($$render) => { + if (get(subj).character) $$render(consequent_60); }); } - var div_74 = sibling(div_73, 2); - var span_31 = sibling(child(div_74), 2); - var span_32 = child(span_31); - var button_12 = child(span_32); - var span_33 = child(button_12); - var node_47 = child(span_33); + var div_81 = sibling(div_80, 2); + var span_32 = sibling(child(div_81), 2); + var span_33 = child(span_32); + var button_12 = child(span_33); + var span_34 = child(button_12); + var node_51 = child(span_34); { - var consequent_58 = ($$anchor3) => { - var fragment_15 = root_81(); - var text_48 = first_child(fragment_15, true); - var node_48 = sibling(text_48); + var consequent_62 = ($$anchor3) => { + var fragment_16 = root_86(); + var text_51 = first_child(fragment_16, true); + var node_52 = sibling(text_51); { - var consequent_57 = ($$anchor4) => { - var text_49 = text(); - template_effect(() => set_text(text_49, `— ${get(subj).activeOutfit.character_display ?? ""}`)); - append($$anchor4, text_49); + var consequent_61 = ($$anchor4) => { + var text_52 = text(); + template_effect(() => set_text(text_52, `— ${get(subj).activeOutfit.character_display ?? ""}`)); + append($$anchor4, text_52); }; - if_block(node_48, ($$render) => { + if_block(node_52, ($$render) => { var _a2; - if (get(subj).activeOutfit.character_tag !== ((_a2 = get(subj).character) == null ? void 0 : _a2.tag)) $$render(consequent_57); + if (get(subj).activeOutfit.character_tag !== ((_a2 = get(subj).character) == null ? void 0 : _a2.tag)) $$render(consequent_61); }); } - template_effect(() => set_text(text_48, get(subj).activeOutfit.name)); - append($$anchor3, fragment_15); + template_effect(() => set_text(text_51, get(subj).activeOutfit.name)); + append($$anchor3, fragment_16); }; var alternate_8 = ($$anchor3) => { - var text_50 = text("Pick outfit…"); - append($$anchor3, text_50); + var text_53 = text("Pick outfit…"); + append($$anchor3, text_53); }; - if_block(node_47, ($$render) => { - if (get(subj).activeOutfit) $$render(consequent_58); + if_block(node_51, ($$render) => { + if (get(subj).activeOutfit) $$render(consequent_62); else $$render(alternate_8, -1); }); } - var node_49 = sibling(button_12, 2); + var node_53 = sibling(button_12, 2); { - var consequent_59 = ($$anchor3) => { - var button_13 = root_84(); + var consequent_63 = ($$anchor3) => { + var button_13 = root_89(); delegated("click", button_13, (e) => { e.stopPropagation(); removePreset(get(subj).id, "outfit"); }); append($$anchor3, button_13); }; - if_block(node_49, ($$render) => { - if (get(subj).activeOutfit) $$render(consequent_59); + if_block(node_53, ($$render) => { + if (get(subj).activeOutfit) $$render(consequent_63); }); } - var div_75 = sibling(div_74, 2); - var span_34 = sibling(child(div_75), 2); - var span_35 = child(span_34); - var button_14 = child(span_35); - var span_36 = child(button_14); - var node_50 = child(span_36); + var div_82 = sibling(div_81, 2); + var span_35 = sibling(child(div_82), 2); + var span_36 = child(span_35); + var button_14 = child(span_36); + var span_37 = child(button_14); + var node_54 = child(span_37); { - var consequent_61 = ($$anchor3) => { - var fragment_17 = root_85(); - var text_51 = first_child(fragment_17, true); - var node_51 = sibling(text_51); + var consequent_65 = ($$anchor3) => { + var fragment_18 = root_90(); + var text_54 = first_child(fragment_18, true); + var node_55 = sibling(text_54); { - var consequent_60 = ($$anchor4) => { - var text_52 = text(); - template_effect(() => set_text(text_52, `— ${get(subj).activePose.character_display ?? ""}`)); - append($$anchor4, text_52); + var consequent_64 = ($$anchor4) => { + var text_55 = text(); + template_effect(() => set_text(text_55, `— ${get(subj).activePose.character_display ?? ""}`)); + append($$anchor4, text_55); }; - if_block(node_51, ($$render) => { + if_block(node_55, ($$render) => { var _a2; - if (get(subj).activePose.character_tag !== ((_a2 = get(subj).character) == null ? void 0 : _a2.tag)) $$render(consequent_60); + if (get(subj).activePose.character_tag !== ((_a2 = get(subj).character) == null ? void 0 : _a2.tag)) $$render(consequent_64); }); } - template_effect(() => set_text(text_51, get(subj).activePose.name)); - append($$anchor3, fragment_17); + template_effect(() => set_text(text_54, get(subj).activePose.name)); + append($$anchor3, fragment_18); }; var alternate_9 = ($$anchor3) => { - var text_53 = text("Pick pose…"); - append($$anchor3, text_53); + var text_56 = text("Pick pose…"); + append($$anchor3, text_56); }; - if_block(node_50, ($$render) => { - if (get(subj).activePose) $$render(consequent_61); + if_block(node_54, ($$render) => { + if (get(subj).activePose) $$render(consequent_65); else $$render(alternate_9, -1); }); } - var node_52 = sibling(button_14, 2); + var node_56 = sibling(button_14, 2); { - var consequent_62 = ($$anchor3) => { - var button_15 = root_88(); + var consequent_66 = ($$anchor3) => { + var button_15 = root_93(); delegated("click", button_15, (e) => { e.stopPropagation(); removePreset(get(subj).id, "pose"); }); append($$anchor3, button_15); }; - if_block(node_52, ($$render) => { - if (get(subj).activePose) $$render(consequent_62); + if_block(node_56, ($$render) => { + if (get(subj).activePose) $$render(consequent_66); }); } - var node_53 = sibling(div_72, 2); - each(node_53, 17, () => get(typeDef).slotCategories, index, ($$anchor3, catKey) => { + var node_57 = sibling(div_79, 2); + each(node_57, 17, () => get(typeDef).slotCategories, index, ($$anchor3, catKey) => { const catDef = user_derived(() => CATEGORIES.find((c) => c.key === get(catKey))); - var fragment_19 = comment(); - var node_54 = first_child(fragment_19); + var fragment_20 = comment(); + var node_58 = first_child(fragment_20); { - var consequent_70 = ($$anchor4) => { + var consequent_74 = ($$anchor4) => { const catGroups = user_derived(() => get(bucketCache)[get(catDef).bucket].groups); const catSlots = user_derived(() => get(subj).slots[get(catKey)] || {}); const multiSet = user_derived(() => MULTI_GROUPS[get(catDef).bucket] || /* @__PURE__ */ new Set()); @@ -7828,33 +7953,33 @@ ${filtered}` : filtered; return !!((_a2 = get(subj).expandedSections) == null ? void 0 : _a2[get(catKey)]); }); const hasChev = user_derived(() => get(emptyCount) > 0); - var div_76 = root_90(); - var div_77 = child(div_76); - let classes_31; - var span_37 = child(div_77); - var text_54 = child(span_37); - var node_55 = sibling(span_37, 2); + var div_83 = root_95(); + var div_84 = child(div_83); + let classes_33; + var span_38 = child(div_84); + var text_57 = child(span_38); + var node_59 = sibling(span_38, 2); { - var consequent_63 = ($$anchor5) => { - var span_38 = root_91(); - var text_55 = child(span_38); - template_effect(() => set_text(text_55, `${get(isExpanded) ? "▾" : "▸"} +${get(emptyCount) ?? ""}`)); - append($$anchor5, span_38); + var consequent_67 = ($$anchor5) => { + var span_39 = root_96(); + var text_58 = child(span_39); + template_effect(() => set_text(text_58, `${get(isExpanded) ? "▾" : "▸"} +${get(emptyCount) ?? ""}`)); + append($$anchor5, span_39); }; - if_block(node_55, ($$render) => { - if (get(hasChev)) $$render(consequent_63); + if_block(node_59, ($$render) => { + if (get(hasChev)) $$render(consequent_67); }); } - var node_56 = sibling(div_77, 2); + var node_60 = sibling(div_84, 2); { - var consequent_64 = ($$anchor5) => { - var div_78 = root_92(); - var span_39 = sibling(child(div_78), 2); - var span_40 = child(span_39); - var text_56 = child(span_40); - var button_16 = sibling(text_56); - template_effect(() => set_text(text_56, `${get(subj).character.display ?? ""} `)); - delegated("click", span_40, (e) => { + var consequent_68 = ($$anchor5) => { + var div_85 = root_97(); + var span_40 = sibling(child(div_85), 2); + var span_41 = child(span_40); + var text_59 = child(span_41); + var button_16 = sibling(text_59); + template_effect(() => set_text(text_59, `${get(subj).character.display ?? ""} `)); + delegated("click", span_41, (e) => { e.stopPropagation(); jumpToIdentity(get(subj).id); }); @@ -7862,24 +7987,24 @@ ${filtered}` : filtered; e.stopPropagation(); unbindIdentity(get(subj).id); }); - append($$anchor5, div_78); + append($$anchor5, div_85); }; - if_block(node_56, ($$render) => { - if (get(catKey) === "appearance" && get(subj).character) $$render(consequent_64); + if_block(node_60, ($$render) => { + if (get(catKey) === "appearance" && get(subj).character) $$render(consequent_68); }); } - var node_57 = sibling(node_56, 2); + var node_61 = sibling(node_60, 2); { - var consequent_65 = ($$anchor5) => { - var div_79 = root_93(); - var span_41 = sibling(child(div_79), 2); - var node_58 = child(span_41); - each(node_58, 19, () => get(subj).modifiers || [], (tok, mi) => tok + " " + mi, ($$anchor6, tok) => { - var span_42 = root_94(); - var text_57 = child(span_42); - var button_17 = sibling(text_57); - template_effect(() => set_text(text_57, `${get(tok) ?? ""} `)); - delegated("click", span_42, (e) => { + var consequent_69 = ($$anchor5) => { + var div_86 = root_98(); + var span_42 = sibling(child(div_86), 2); + var node_62 = child(span_42); + each(node_62, 19, () => get(subj).modifiers || [], (tok, mi) => tok + " " + mi, ($$anchor6, tok) => { + var span_43 = root_99(); + var text_60 = child(span_43); + var button_17 = sibling(text_60); + template_effect(() => set_text(text_60, `${get(tok) ?? ""} `)); + delegated("click", span_43, (e) => { e.stopPropagation(); jumpToModifier(get(subj).id, get(tok)); }); @@ -7887,43 +8012,43 @@ ${filtered}` : filtered; e.stopPropagation(); removeModifier(get(subj).id, get(tok)); }); - append($$anchor6, span_42); + append($$anchor6, span_43); }); - var span_43 = sibling(node_58, 2); - delegated("click", span_43, (e) => { + var span_44 = sibling(node_62, 2); + delegated("click", span_44, (e) => { e.stopPropagation(); openModifierPicker(get(subj).id, e.currentTarget); }); - append($$anchor5, div_79); + append($$anchor5, div_86); }; - if_block(node_57, ($$render) => { - if (get(catKey) === "appearance") $$render(consequent_65); + if_block(node_61, ($$render) => { + if (get(catKey) === "appearance") $$render(consequent_69); }); } - var node_59 = sibling(node_57, 2); - each(node_59, 17, () => get(catGroups), index, ($$anchor5, g) => { + var node_63 = sibling(node_61, 2); + each(node_63, 17, () => get(catGroups), index, ($$anchor5, g) => { const sel = user_derived(() => get(catSlots)[get(g).group_name] || []); const isMulti = user_derived(() => get(multiSet).has(get(g).group_name)); - var fragment_20 = comment(); - var node_60 = first_child(fragment_20); + var fragment_21 = comment(); + var node_64 = first_child(fragment_21); { - var consequent_69 = ($$anchor6) => { - var div_80 = root_96(); - var span_44 = child(div_80); - var text_58 = child(span_44); - var node_61 = sibling(text_58); + var consequent_73 = ($$anchor6) => { + var div_87 = root_101(); + var span_45 = child(div_87); + var text_61 = child(span_45); + var node_65 = sibling(text_61); { - var consequent_66 = ($$anchor7) => { - var span_45 = root_97(); - append($$anchor7, span_45); + var consequent_70 = ($$anchor7) => { + var span_46 = root_102(); + append($$anchor7, span_46); }; - if_block(node_61, ($$render) => { - if (get(isMulti)) $$render(consequent_66); + if_block(node_65, ($$render) => { + if (get(isMulti)) $$render(consequent_70); }); } - var span_46 = sibling(span_44, 2); - var node_62 = child(span_46); - each(node_62, 17, () => get(sel), (item) => item.item_tag, ($$anchor7, item) => { + var span_47 = sibling(span_45, 2); + var node_66 = child(span_47); + each(node_66, 17, () => get(sel), (item) => item.item_tag, ($$anchor7, item) => { const hasMods = user_derived(() => !!get(item).modifiers); const isFurn = user_derived(() => isFurnitureChip(get(item))); const capColor = user_derived(() => { @@ -7931,41 +8056,41 @@ ${filtered}` : filtered; return get(isFurn) ? get(item)._furniture.color ? customizerColorHex(get(item)._furniture.color) : null : get(hasMods) ? customizerColorHex((_a2 = get(item).modifiers) == null ? void 0 : _a2.color) : null; }); const modTooltip = user_derived(() => get(isFurn) ? "Edit furniture" : get(hasMods) ? modifierTooltip(get(item)) : ""); - var span_47 = root_98(); - let classes_32; - var node_63 = child(span_47); + var span_48 = root_103(); + let classes_34; + var node_67 = child(span_48); { - var consequent_67 = ($$anchor8) => { - var span_48 = root_99(); - let classes_33; + var consequent_71 = ($$anchor8) => { + var span_49 = root_104(); + let classes_35; template_effect(() => { - classes_33 = set_class(span_48, 1, "pcr-atb2-chip-cap svelte-ibd6yj", null, classes_33, { + classes_35 = set_class(span_49, 1, "pcr-atb2-chip-cap svelte-ibd6yj", null, classes_35, { "pcr-atb2-chip-cap-filled": !!get(capColor) || get(isFurn), "pcr-atb2-chip-cap-hollow": !get(capColor) && !get(isFurn) }); - set_style(span_48, get(capColor) ? `background:${get(capColor)}` : get(isFurn) ? "background:#7c3aed" : ""); - set_attribute(span_48, "title", get(modTooltip)); + set_style(span_49, get(capColor) ? `background:${get(capColor)}` : get(isFurn) ? "background:#7c3aed" : ""); + set_attribute(span_49, "title", get(modTooltip)); }); - delegated("click", span_48, (e) => { + delegated("click", span_49, (e) => { e.stopPropagation(); if (get(isFurn)) openFurnitureCustomizerForExisting(get(item), get(subj).id, get(g).group_name); else if (isCustomizableAppearance(get(catKey), get(g).group_name)) openFantasyCustomizerForExisting(get(subj).id, get(item)); else openCustomizerForExisting(get(subj).id, get(catKey), get(g).group_name, get(item)); }); - append($$anchor8, span_48); + append($$anchor8, span_49); }; - if_block(node_63, ($$render) => { - if (get(hasMods) || get(isFurn)) $$render(consequent_67); + if_block(node_67, ($$render) => { + if (get(hasMods) || get(isFurn)) $$render(consequent_71); }); } - var span_49 = sibling(node_63, 2); - var text_59 = child(span_49); - var button_18 = sibling(span_49, 2); + var span_50 = sibling(node_67, 2); + var text_62 = child(span_50); + var button_18 = sibling(span_50, 2); template_effect( ($0) => { - classes_32 = set_class(span_47, 1, "pcr-atb2-chip pcr-atb2-chip-jumpable svelte-ibd6yj", null, classes_32, $0); - set_attribute(span_49, "title", `Jump to ${get(catDef).label} / ${get(g).display_name || get(g).group_name}`); - set_text(text_59, get(item).display_name || get(item).item_tag); + classes_34 = set_class(span_48, 1, "pcr-atb2-chip pcr-atb2-chip-jumpable svelte-ibd6yj", null, classes_34, $0); + set_attribute(span_50, "title", `Jump to ${get(catDef).label} / ${get(g).display_name || get(g).group_name}`); + set_text(text_62, get(item).display_name || get(item).item_tag); }, [ () => ({ @@ -7974,7 +8099,7 @@ ${filtered}` : filtered; }) ] ); - delegated("click", span_49, (e) => { + delegated("click", span_50, (e) => { e.stopPropagation(); jumpToSlotChip(get(subj).id, get(catKey), get(g).group_name, get(item).item_tag); }); @@ -7982,119 +8107,119 @@ ${filtered}` : filtered; e.stopPropagation(); clearSubjectChip(get(subj).id, get(catKey), get(g).group_name, get(item).item_tag); }); - append($$anchor7, span_47); + append($$anchor7, span_48); }); - var node_64 = sibling(node_62, 2); + var node_68 = sibling(node_66, 2); { - var consequent_68 = ($$anchor7) => { - var span_50 = root_100(); - delegated("click", span_50, (e) => { + var consequent_72 = ($$anchor7) => { + var span_51 = root_105(); + delegated("click", span_51, (e) => { e.stopPropagation(); jumpToSlot(get(subj).id, get(catKey), get(g).group_name); }); - append($$anchor7, span_50); + append($$anchor7, span_51); }; - if_block(node_64, ($$render) => { - if (get(sel).length === 0 || get(isMulti)) $$render(consequent_68); + if_block(node_68, ($$render) => { + if (get(sel).length === 0 || get(isMulti)) $$render(consequent_72); }); } - template_effect(() => set_text(text_58, `${(get(g).display_name || get(g).group_name) ?? ""} `)); - append($$anchor6, div_80); + template_effect(() => set_text(text_61, `${(get(g).display_name || get(g).group_name) ?? ""} `)); + append($$anchor6, div_87); }; - if_block(node_60, ($$render) => { - if (get(sel).length > 0 || get(isExpanded)) $$render(consequent_69); + if_block(node_64, ($$render) => { + if (get(sel).length > 0 || get(isExpanded)) $$render(consequent_73); }); } - append($$anchor5, fragment_20); + append($$anchor5, fragment_21); }); template_effect(() => { - classes_31 = set_class(div_77, 1, "pcr-atb2-subj-section-header svelte-ibd6yj", null, classes_31, { clickable: get(hasChev) }); - set_text(text_54, get(catDef).label); + classes_33 = set_class(div_84, 1, "pcr-atb2-subj-section-header svelte-ibd6yj", null, classes_33, { clickable: get(hasChev) }); + set_text(text_57, get(catDef).label); }); - delegated("click", div_77, (e) => { + delegated("click", div_84, (e) => { if (get(hasChev)) { e.stopPropagation(); toggleSubjectSection(get(subj).id, get(catKey)); } }); - append($$anchor4, div_76); + append($$anchor4, div_83); }; var d_7 = user_derived(() => { var _a2, _b; return get(catDef) && get(catDef).enabled && ((_b = (_a2 = get(bucketCache)[get(catDef).bucket]) == null ? void 0 : _a2.groups) == null ? void 0 : _b.length) && subjNsfwSectionVisible(get(catKey), get(subj)); }); - if_block(node_54, ($$render) => { - if (get(d_7)) $$render(consequent_70); + if_block(node_58, ($$render) => { + if (get(d_7)) $$render(consequent_74); }); } - append($$anchor3, fragment_19); + append($$anchor3, fragment_20); }); - var node_65 = sibling(node_53, 2); + var node_69 = sibling(node_57, 2); { - var consequent_71 = ($$anchor3) => { - var div_81 = root_101(); - var div_82 = sibling(child(div_81), 2); - var span_51 = child(div_82); - each(span_51, 23, () => get(subj).freeform, (tok, ti) => tok + "\0" + ti, ($$anchor4, tok) => { - var span_52 = root_102(); - var text_60 = child(span_52); - var button_19 = sibling(text_60); - template_effect(() => set_text(text_60, `${get(tok) ?? ""} `)); + var consequent_75 = ($$anchor3) => { + var div_88 = root_106(); + var div_89 = sibling(child(div_88), 2); + var span_52 = child(div_89); + each(span_52, 23, () => get(subj).freeform, (tok, ti) => tok + "\0" + ti, ($$anchor4, tok) => { + var span_53 = root_107(); + var text_63 = child(span_53); + var button_19 = sibling(text_63); + template_effect(() => set_text(text_63, `${get(tok) ?? ""} `)); delegated("click", button_19, (e) => { e.stopPropagation(); removeFreeform(get(subj).id, get(tok)); }); - append($$anchor4, span_52); + append($$anchor4, span_53); }); - append($$anchor3, div_81); + append($$anchor3, div_88); }; - if_block(node_65, ($$render) => { - if (get(subj).freeform && get(subj).freeform.length) $$render(consequent_71); + if_block(node_69, ($$render) => { + if (get(subj).freeform && get(subj).freeform.length) $$render(consequent_75); }); } - var node_66 = sibling(node_65, 2); - each(node_66, 16, () => ["outfit", "pose", "interaction", "scene"], index, ($$anchor3, sectionKey) => { + var node_70 = sibling(node_69, 2); + each(node_70, 16, () => ["outfit", "pose", "interaction", "scene"], index, ($$anchor3, sectionKey) => { const items = user_derived(() => { var _a2; return ((_a2 = get(subj).sectionFreeform) == null ? void 0 : _a2[sectionKey]) || []; }); - var fragment_21 = comment(); - var node_67 = first_child(fragment_21); + var fragment_22 = comment(); + var node_71 = first_child(fragment_22); { - var consequent_72 = ($$anchor4) => { - var div_83 = root_104(); - var div_84 = child(div_83); - var span_53 = child(div_84); - var text_61 = child(span_53); - var div_85 = sibling(div_84, 2); - var span_54 = child(div_85); - each(span_54, 20, () => get(items), (tok) => tok, ($$anchor5, tok) => { - var span_55 = root_105(); - var text_62 = child(span_55); - var button_20 = sibling(text_62); - template_effect(() => set_text(text_62, `${tok ?? ""} `)); + var consequent_76 = ($$anchor4) => { + var div_90 = root_109(); + var div_91 = child(div_90); + var span_54 = child(div_91); + var text_64 = child(span_54); + var div_92 = sibling(div_91, 2); + var span_55 = child(div_92); + each(span_55, 20, () => get(items), (tok) => tok, ($$anchor5, tok) => { + var span_56 = root_110(); + var text_65 = child(span_56); + var button_20 = sibling(text_65); + template_effect(() => set_text(text_65, `${tok ?? ""} `)); delegated("click", button_20, (e) => { e.stopPropagation(); removeSectionFreeform(get(subj).id, sectionKey, tok); }); - append($$anchor5, span_55); + append($$anchor5, span_56); }); - template_effect(() => set_text(text_61, `Unbound (${sectionKey ?? ""})`)); - append($$anchor4, div_83); + template_effect(() => set_text(text_64, `Unbound (${sectionKey ?? ""})`)); + append($$anchor4, div_90); }; - if_block(node_67, ($$render) => { - if (get(items).length) $$render(consequent_72); + if_block(node_71, ($$render) => { + if (get(items).length) $$render(consequent_76); }); } - append($$anchor3, fragment_21); + append($$anchor3, fragment_22); }); template_effect(() => { - classes_30 = set_class(div_70, 1, "pcr-atb2-card2 pcr-atb2-subject-card svelte-ibd6yj", null, classes_30, { active: get(isActive) }); - set_style(div_70, `--subj-color:${get(typeDef).color ?? ""}`); + classes_32 = set_class(div_77, 1, "pcr-atb2-card2 pcr-atb2-subject-card svelte-ibd6yj", null, classes_32, { active: get(isActive) }); + set_style(div_77, `--subj-color:${get(typeDef).color ?? ""}`); set_value(input_1, get(subj).name); - set_text(text_43, get(typeDef).label); + set_text(text_46, get(typeDef).label); }); - delegated("click", div_70, () => setActiveSubject(get(subj).id)); + delegated("click", div_77, () => setActiveSubject(get(subj).id)); delegated("input", input_1, (e) => renameSubject(get(subj).id, e.target.value)); delegated("click", input_1, (e) => e.stopPropagation()); delegated("click", button_9, (e) => { @@ -8113,51 +8238,51 @@ ${filtered}` : filtered; e.stopPropagation(); togglePresetPicker("pose", get(subj).id, e.currentTarget); }); - append($$anchor2, div_70); + append($$anchor2, div_77); }); - var div_86 = sibling(node_41, 2); - var node_68 = sibling(div_86, 2); + var div_93 = sibling(node_45, 2); + var node_72 = sibling(div_93, 2); { - var consequent_78 = ($$anchor2) => { - var div_87 = root_106(); - let classes_34; - var div_88 = child(div_87); - var button_21 = sibling(child(div_88), 6); - var node_69 = sibling(div_88, 2); - each(node_69, 17, () => get(sceneGroupsList), index, ($$anchor3, g) => { + var consequent_82 = ($$anchor2) => { + var div_94 = root_111(); + let classes_36; + var div_95 = child(div_94); + var button_21 = sibling(child(div_95), 6); + var node_73 = sibling(div_95, 2); + each(node_73, 17, () => get(sceneGroupsList), index, ($$anchor3, g) => { const sel = user_derived(() => get(sceneSelections)[get(g).group_name] || []); const isMulti = user_derived(() => MULTI_GROUPS.scene.has(get(g).group_name)); - var div_89 = root_107(); - var span_56 = child(div_89); - var text_63 = child(span_56); - var node_70 = sibling(text_63); + var div_96 = root_112(); + var span_57 = child(div_96); + var text_66 = child(span_57); + var node_74 = sibling(text_66); { - var consequent_73 = ($$anchor4) => { - var span_57 = root_108(); - append($$anchor4, span_57); + var consequent_77 = ($$anchor4) => { + var span_58 = root_113(); + append($$anchor4, span_58); }; - if_block(node_70, ($$render) => { - if (get(isMulti)) $$render(consequent_73); + if_block(node_74, ($$render) => { + if (get(isMulti)) $$render(consequent_77); }); } - var span_58 = sibling(span_56, 2); - var node_71 = child(span_58); - each(node_71, 17, () => get(sel), (item) => item.item_tag, ($$anchor4, item) => { - var span_59 = root_109(); - let classes_35; - var text_64 = child(span_59); - var button_22 = sibling(text_64); + var span_59 = sibling(span_57, 2); + var node_75 = child(span_59); + each(node_75, 17, () => get(sel), (item) => item.item_tag, ($$anchor4, item) => { + var span_60 = root_114(); + let classes_37; + var text_67 = child(span_60); + var button_22 = sibling(text_67); template_effect( ($0) => { - classes_35 = set_class(span_59, 1, "pcr-atb2-chip pcr-atb2-chip-jumpable svelte-ibd6yj", null, classes_35, $0); - set_attribute(span_59, "title", `Jump to Scene / ${(get(g).display_name || get(g).group_name) ?? ""}`); - set_text(text_64, `${(get(item).display_name || get(item).item_tag) ?? ""} `); + classes_37 = set_class(span_60, 1, "pcr-atb2-chip pcr-atb2-chip-jumpable svelte-ibd6yj", null, classes_37, $0); + set_attribute(span_60, "title", `Jump to Scene / ${(get(g).display_name || get(g).group_name) ?? ""}`); + set_text(text_67, `${(get(item).display_name || get(item).item_tag) ?? ""} `); }, [ () => ({ "pcr-atb2-chip-unprocessed": isItemUnprocessed(get(item)) }) ] ); - delegated("click", span_59, (e) => { + delegated("click", span_60, (e) => { e.stopPropagation(); jumpToTag({ category: "scene", @@ -8169,459 +8294,459 @@ ${filtered}` : filtered; e.stopPropagation(); clearSceneChip(get(g).group_name, get(item).item_tag); }); - append($$anchor4, span_59); + append($$anchor4, span_60); }); - var node_72 = sibling(node_71, 2); + var node_76 = sibling(node_75, 2); { - var consequent_74 = ($$anchor4) => { - var span_60 = root_110(); - delegated("click", span_60, () => { + var consequent_78 = ($$anchor4) => { + var span_61 = root_115(); + delegated("click", span_61, () => { set(activeCategory, "scene"); set(activeGroup, get(g).group_name, true); }); - append($$anchor4, span_60); + append($$anchor4, span_61); }; - if_block(node_72, ($$render) => { - if (get(sel).length === 0 || get(isMulti)) $$render(consequent_74); + if_block(node_76, ($$render) => { + if (get(sel).length === 0 || get(isMulti)) $$render(consequent_78); }); } - template_effect(() => set_text(text_63, `${(get(g).display_name || get(g).group_name) ?? ""} `)); - append($$anchor3, div_89); + template_effect(() => set_text(text_66, `${(get(g).display_name || get(g).group_name) ?? ""} `)); + append($$anchor3, div_96); }); - var node_73 = sibling(node_69, 2); + var node_77 = sibling(node_73, 2); { - var consequent_75 = ($$anchor3) => { - var div_90 = root_111(); - var span_61 = sibling(child(div_90), 2); - each(span_61, 23, () => get(sceneFreeform), (tok, ti) => tok + " " + ti, ($$anchor4, tok) => { - var span_62 = root_112(); - var text_65 = child(span_62); - var button_23 = sibling(text_65); - template_effect(() => set_text(text_65, `${get(tok) ?? ""} `)); + var consequent_79 = ($$anchor3) => { + var div_97 = root_116(); + var span_62 = sibling(child(div_97), 2); + each(span_62, 23, () => get(sceneFreeform), (tok, ti) => tok + " " + ti, ($$anchor4, tok) => { + var span_63 = root_117(); + var text_68 = child(span_63); + var button_23 = sibling(text_68); + template_effect(() => set_text(text_68, `${get(tok) ?? ""} `)); delegated("click", button_23, (e) => { e.stopPropagation(); removeSceneFreeform(get(tok)); }); - append($$anchor4, span_62); + append($$anchor4, span_63); }); - append($$anchor3, div_90); + append($$anchor3, div_97); }; - if_block(node_73, ($$render) => { - if (get(sceneFreeform).length) $$render(consequent_75); + if_block(node_77, ($$render) => { + if (get(sceneFreeform).length) $$render(consequent_79); }); } - var node_74 = sibling(node_73, 2); - each(node_74, 17, () => { + var node_78 = sibling(node_77, 2); + each(node_78, 17, () => { var _a2; return ((_a2 = get(bucketCache).furniture) == null ? void 0 : _a2.groups) || []; }, index, ($$anchor3, fg) => { const fsel = user_derived(() => get(sceneSelections)[get(fg).group_name] || []); - var fragment_22 = comment(); - var node_75 = first_child(fragment_22); + var fragment_23 = comment(); + var node_79 = first_child(fragment_23); { - var consequent_77 = ($$anchor4) => { - var div_91 = root_114(); - var span_63 = child(div_91); - var text_66 = child(span_63); - var span_64 = sibling(span_63, 2); - each(span_64, 21, () => get(fsel), (item) => item.item_tag, ($$anchor5, item) => { + var consequent_81 = ($$anchor4) => { + var div_98 = root_119(); + var span_64 = child(div_98); + var text_69 = child(span_64); + var span_65 = sibling(span_64, 2); + each(span_65, 21, () => get(fsel), (item) => item.item_tag, ($$anchor5, item) => { const isCustomized = user_derived(() => isFurnitureChip(get(item))); - var span_65 = root_115(); - let classes_36; - var node_76 = child(span_65); + var span_66 = root_120(); + let classes_38; + var node_80 = child(span_66); { - var consequent_76 = ($$anchor6) => { + var consequent_80 = ($$anchor6) => { const sceneCapColor = user_derived(() => get(item)._furniture.color ? customizerColorHex(get(item)._furniture.color) : null); - var span_66 = root_116(); - template_effect(() => set_style(span_66, get(sceneCapColor) ? `background:${get(sceneCapColor)}` : "background:#7c3aed")); - delegated("click", span_66, (e) => { + var span_67 = root_121(); + template_effect(() => set_style(span_67, get(sceneCapColor) ? `background:${get(sceneCapColor)}` : "background:#7c3aed")); + delegated("click", span_67, (e) => { e.stopPropagation(); openFurnitureCustomizerForExisting(get(item), null, get(fg).group_name); }); - append($$anchor6, span_66); + append($$anchor6, span_67); }; - if_block(node_76, ($$render) => { - if (get(isCustomized)) $$render(consequent_76); + if_block(node_80, ($$render) => { + if (get(isCustomized)) $$render(consequent_80); }); } - var span_67 = sibling(node_76, 2); - var text_67 = child(span_67); - var button_24 = sibling(span_67, 2); + var span_68 = sibling(node_80, 2); + var text_70 = child(span_68); + var button_24 = sibling(span_68, 2); template_effect(() => { - classes_36 = set_class(span_65, 1, "pcr-atb2-chip svelte-ibd6yj", null, classes_36, { "pcr-atb2-chip-customized": get(isCustomized) }); - set_text(text_67, get(item).display_name || get(item).item_tag); + classes_38 = set_class(span_66, 1, "pcr-atb2-chip svelte-ibd6yj", null, classes_38, { "pcr-atb2-chip-customized": get(isCustomized) }); + set_text(text_70, get(item).display_name || get(item).item_tag); }); delegated("click", button_24, (e) => { e.stopPropagation(); clearSceneChip(get(fg).group_name, get(item).item_tag); }); - append($$anchor5, span_65); + append($$anchor5, span_66); }); - template_effect(() => set_text(text_66, `${(get(fg).icon || "📦") ?? ""} ${(get(fg).display_name || get(fg).group_name) ?? ""} `)); - append($$anchor4, div_91); + template_effect(() => set_text(text_69, `${(get(fg).icon || "📦") ?? ""} ${(get(fg).display_name || get(fg).group_name) ?? ""} `)); + append($$anchor4, div_98); }; - if_block(node_75, ($$render) => { - if (get(fsel).length > 0) $$render(consequent_77); + if_block(node_79, ($$render) => { + if (get(fsel).length > 0) $$render(consequent_81); }); } - append($$anchor3, fragment_22); + append($$anchor3, fragment_23); }); - template_effect(() => classes_34 = set_class(div_87, 1, "pcr-atb2-card2 pcr-atb2-scene-card svelte-ibd6yj", null, classes_34, { active: get(activeCategoryDef).scope === "global" })); + template_effect(() => classes_36 = set_class(div_94, 1, "pcr-atb2-card2 pcr-atb2-scene-card svelte-ibd6yj", null, classes_36, { active: get(activeCategoryDef).scope === "global" })); delegated("click", button_21, deleteScene); - append($$anchor2, div_87); + append($$anchor2, div_94); }; var alternate_10 = ($$anchor2) => { - var div_92 = root_117(); - delegated("click", div_92, spawnScene); - append($$anchor2, div_92); + var div_99 = root_122(); + delegated("click", div_99, spawnScene); + append($$anchor2, div_99); }; - if_block(node_68, ($$render) => { - if (get(sceneSpawned)) $$render(consequent_78); + if_block(node_72, ($$render) => { + if (get(sceneSpawned)) $$render(consequent_82); else $$render(alternate_10, -1); }); } - var node_77 = sibling(node_68, 2); + var node_81 = sibling(node_72, 2); { - var consequent_79 = ($$anchor2) => { - var div_93 = root_118(); - var div_94 = child(div_93); - var span_68 = sibling(child(div_94), 2); - var text_68 = child(span_68); - var button_25 = sibling(span_68, 4); - var div_95 = sibling(div_94, 2); - var span_69 = child(div_95); - each(span_69, 20, () => get(activeStyle).tags, (tag) => tag, ($$anchor3, tag) => { - var span_70 = root_119(); - var text_69 = child(span_70); - template_effect(() => set_text(text_69, tag)); - append($$anchor3, span_70); + var consequent_83 = ($$anchor2) => { + var div_100 = root_123(); + var div_101 = child(div_100); + var span_69 = sibling(child(div_101), 2); + var text_71 = child(span_69); + var button_25 = sibling(span_69, 4); + var div_102 = sibling(div_101, 2); + var span_70 = child(div_102); + each(span_70, 20, () => get(activeStyle).tags, (tag) => tag, ($$anchor3, tag) => { + var span_71 = root_124(); + var text_72 = child(span_71); + template_effect(() => set_text(text_72, tag)); + append($$anchor3, span_71); }); - template_effect(() => set_text(text_68, get(activeStyle).name)); - delegated("click", span_68, (e) => { + template_effect(() => set_text(text_71, get(activeStyle).name)); + delegated("click", span_69, (e) => { e.stopPropagation(); jumpToTag({ category: "styles", itemTag: get(activeStyle).id }); }); delegated("click", button_25, deleteStyleCard); - append($$anchor2, div_93); + append($$anchor2, div_100); }; - var consequent_80 = ($$anchor2) => { - var div_96 = root_120(); - delegated("click", div_96, () => { + var consequent_84 = ($$anchor2) => { + var div_103 = root_125(); + delegated("click", div_103, () => { set(activeCategory, "styles"); set(activeGroup, null); }); - append($$anchor2, div_96); + append($$anchor2, div_103); }; - if_block(node_77, ($$render) => { + if_block(node_81, ($$render) => { var _a2; - if (get(styleSpawned) && get(activeStyle)) $$render(consequent_79); - else if ((_a2 = modelInfo()) == null ? void 0 : _a2.hash) $$render(consequent_80, 1); + if (get(styleSpawned) && get(activeStyle)) $$render(consequent_83); + else if ((_a2 = modelInfo()) == null ? void 0 : _a2.hash) $$render(consequent_84, 1); }); } - var div_97 = sibling(div_3, 2); - var div_98 = child(div_97); - var div_99 = child(div_98); - let classes_37; - var div_100 = sibling(div_99, 2); - let classes_38; - var button_26 = sibling(div_98, 2); + var div_104 = sibling(div_3, 2); + var div_105 = child(div_104); + var div_106 = child(div_105); let classes_39; + var div_107 = sibling(div_106, 2); + let classes_40; + var button_26 = sibling(div_105, 2); + let classes_41; var button_27 = sibling(button_26, 4); var button_28 = sibling(button_27, 2); - var text_70 = child(button_28); - var node_78 = sibling(div_97, 2); + var text_73 = child(button_28); + var node_82 = sibling(div_104, 2); { - var consequent_84 = ($$anchor2) => { + var consequent_88 = ($$anchor2) => { const curStatus = user_derived(() => get(chipQaMenu).item.natlang_status ?? "unprocessed"); const tagOutput = user_derived(() => get(chipQaMenu).item.base_tags || get(chipQaMenu).item.item_tag); const natlangOutput = user_derived(() => get(chipQaMenu).item.base_natlang || ""); - var fragment_23 = root_121(); - var div_101 = first_child(fragment_23); - var div_102 = sibling(div_101, 2); - var div_103 = child(div_102); - var text_71 = child(div_103); - var div_104 = sibling(div_103, 2); - var div_105 = child(div_104); - var div_106 = sibling(child(div_105), 2); - var text_72 = child(div_106); - var div_107 = sibling(div_105, 2); - var div_108 = sibling(child(div_107), 2); - var text_73 = child(div_108); - var node_79 = sibling(div_104, 2); + var fragment_24 = root_126(); + var div_108 = first_child(fragment_24); + var div_109 = sibling(div_108, 2); + var div_110 = child(div_109); + var text_74 = child(div_110); + var div_111 = sibling(div_110, 2); + var div_112 = child(div_111); + var div_113 = sibling(child(div_112), 2); + var text_75 = child(div_113); + var div_114 = sibling(div_112, 2); + var div_115 = sibling(child(div_114), 2); + var text_76 = child(div_115); + var node_83 = sibling(div_111, 2); { - var consequent_81 = ($$anchor3) => { - var div_109 = root_122(); - var button_29 = child(div_109); - let classes_40; - var button_30 = sibling(button_29, 2); - let classes_41; - var button_31 = sibling(button_30, 2); + var consequent_85 = ($$anchor3) => { + var div_116 = root_127(); + var button_29 = child(div_116); let classes_42; + var button_30 = sibling(button_29, 2); + let classes_43; + var button_31 = sibling(button_30, 2); + let classes_44; template_effect(() => { - classes_40 = set_class(button_29, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_40, { current: get(curStatus) === "normalized" }); - classes_41 = set_class(button_30, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_41, { current: get(curStatus) === "unprocessed" }); - classes_42 = set_class(button_31, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_42, { current: get(curStatus) === "broken" }); + classes_42 = set_class(button_29, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_42, { current: get(curStatus) === "normalized" }); + classes_43 = set_class(button_30, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_43, { current: get(curStatus) === "unprocessed" }); + classes_44 = set_class(button_31, 1, "pcr-atb2-qa-menu-item svelte-ibd6yj", null, classes_44, { current: get(curStatus) === "broken" }); }); delegated("click", button_29, () => setChipNatlangStatus(get(chipQaMenu).bucket, get(chipQaMenu).item, "normalized")); delegated("click", button_30, () => setChipNatlangStatus(get(chipQaMenu).bucket, get(chipQaMenu).item, "unprocessed")); delegated("click", button_31, () => setChipNatlangStatus(get(chipQaMenu).bucket, get(chipQaMenu).item, "broken")); - append($$anchor3, div_109); + append($$anchor3, div_116); }; - if_block(node_79, ($$render) => { - if (get(chipQaMenu).item._overlay !== "add") $$render(consequent_81); + if_block(node_83, ($$render) => { + if (get(chipQaMenu).item._overlay !== "add") $$render(consequent_85); }); } - var node_80 = sibling(node_79, 2); + var node_84 = sibling(node_83, 2); { - var consequent_83 = ($$anchor3) => { - var div_110 = root_123(); - var button_32 = child(div_110); + var consequent_87 = ($$anchor3) => { + var div_117 = root_128(); + var button_32 = child(div_117); var button_33 = sibling(button_32, 2); - var node_81 = sibling(button_33, 2); + var node_85 = sibling(button_33, 2); { - var consequent_82 = ($$anchor4) => { - var button_34 = root_124(); + var consequent_86 = ($$anchor4) => { + var button_34 = root_129(); delegated("click", button_34, () => overlayRestore(get(chipQaMenu).bucket, get(chipQaMenu).item)); append($$anchor4, button_34); }; - if_block(node_81, ($$render) => { - if (get(chipQaMenu).item._overlay === "edit") $$render(consequent_82); + if_block(node_85, ($$render) => { + if (get(chipQaMenu).item._overlay === "edit") $$render(consequent_86); }); } - var button_35 = sibling(node_81, 2); - var text_74 = child(button_35); - template_effect(() => set_text(text_74, get(chipQaMenu).item._overlay === "add" ? "🗑️ Remove your item" : "🗑️ Delete")); + var button_35 = sibling(node_85, 2); + var text_77 = child(button_35); + template_effect(() => set_text(text_77, get(chipQaMenu).item._overlay === "add" ? "🗑️ Remove your item" : "🗑️ Delete")); delegated("click", button_32, () => openOverlayEditor(get(chipQaMenu).bucket, get(chipQaMenu).item, "edit")); delegated("click", button_33, () => openOverlayEditor(get(chipQaMenu).bucket, get(chipQaMenu).item, "add")); delegated("click", button_35, () => overlayDelete(get(chipQaMenu).bucket, get(chipQaMenu).item)); - append($$anchor3, div_110); + append($$anchor3, div_117); }; var d_8 = user_derived(() => isOverlayEditable(get(chipQaMenu).bucket)); - if_block(node_80, ($$render) => { - if (get(d_8)) $$render(consequent_83); + if_block(node_84, ($$render) => { + if (get(d_8)) $$render(consequent_87); }); } template_effect(() => { - set_style(div_102, `left:${get(chipQaMenu).x ?? ""}px;top:${get(chipQaMenu).y ?? ""}px`); - set_text(text_71, get(chipQaMenu).item.display_name || get(chipQaMenu).item.item_tag); - set_text(text_72, get(tagOutput)); - set_text(text_73, get(natlangOutput) || "(empty)"); + set_style(div_109, `left:${get(chipQaMenu).x ?? ""}px;top:${get(chipQaMenu).y ?? ""}px`); + set_text(text_74, get(chipQaMenu).item.display_name || get(chipQaMenu).item.item_tag); + set_text(text_75, get(tagOutput)); + set_text(text_76, get(natlangOutput) || "(empty)"); }); - delegated("click", div_101, closeChipQaMenu); - delegated("contextmenu", div_101, (e) => { + delegated("click", div_108, closeChipQaMenu); + delegated("contextmenu", div_108, (e) => { e.preventDefault(); closeChipQaMenu(); }); - append($$anchor2, fragment_23); + append($$anchor2, fragment_24); }; - if_block(node_78, ($$render) => { - if (get(chipQaMenu)) $$render(consequent_84); + if_block(node_82, ($$render) => { + if (get(chipQaMenu)) $$render(consequent_88); }); } - var node_82 = sibling(div, 2); + var node_86 = sibling(div, 2); { - var consequent_88 = ($$anchor2) => { - var div_111 = root_125(); - var input_2 = child(div_111); + var consequent_92 = ($$anchor2) => { + var div_118 = root_130(); + var input_2 = child(div_118); bind_this(input_2, ($$value) => identityPickerSearchEl = $$value, () => identityPickerSearchEl); - var div_112 = sibling(input_2, 2); - var node_83 = child(div_112); + var div_119 = sibling(input_2, 2); + var node_87 = child(div_119); { - var consequent_85 = ($$anchor3) => { - var div_113 = root_126(); - append($$anchor3, div_113); + var consequent_89 = ($$anchor3) => { + var div_120 = root_131(); + append($$anchor3, div_120); }; - var consequent_86 = ($$anchor3) => { - var div_114 = root_127(); - append($$anchor3, div_114); + var consequent_90 = ($$anchor3) => { + var div_121 = root_132(); + append($$anchor3, div_121); }; var alternate_12 = ($$anchor3) => { - var fragment_24 = comment(); - var node_84 = first_child(fragment_24); - each(node_84, 17, () => get(identityResults), (opt) => opt.kind + ":" + opt.tag, ($$anchor4, opt) => { - var div_115 = root_129(); - var span_71 = child(div_115); - var text_75 = child(span_71); - var span_72 = sibling(span_71, 2); - var node_85 = child(span_72); + var fragment_25 = comment(); + var node_88 = first_child(fragment_25); + each(node_88, 17, () => get(identityResults), (opt) => opt.kind + ":" + opt.tag, ($$anchor4, opt) => { + var div_122 = root_134(); + var span_72 = child(div_122); + var text_78 = child(span_72); + var span_73 = sibling(span_72, 2); + var node_89 = child(span_73); { - var consequent_87 = ($$anchor5) => { - var text_76 = text(); - template_effect(() => set_text(text_76, get(opt).series)); - append($$anchor5, text_76); + var consequent_91 = ($$anchor5) => { + var text_79 = text(); + template_effect(() => set_text(text_79, get(opt).series)); + append($$anchor5, text_79); }; var alternate_11 = ($$anchor5) => { - var text_77 = text(); - template_effect(() => set_text(text_77, get(opt).kindLabel)); - append($$anchor5, text_77); + var text_80 = text(); + template_effect(() => set_text(text_80, get(opt).kindLabel)); + append($$anchor5, text_80); }; - if_block(node_85, ($$render) => { - if (get(opt).kind === "character" && get(opt).series) $$render(consequent_87); + if_block(node_89, ($$render) => { + if (get(opt).kind === "character" && get(opt).series) $$render(consequent_91); else $$render(alternate_11, -1); }); } - template_effect(() => set_text(text_75, get(opt).display)); - delegated("click", div_115, () => pickIdentityFromDropdown(get(opt))); - append($$anchor4, div_115); + template_effect(() => set_text(text_78, get(opt).display)); + delegated("click", div_122, () => pickIdentityFromDropdown(get(opt))); + append($$anchor4, div_122); }); - append($$anchor3, fragment_24); + append($$anchor3, fragment_25); }; - if_block(node_83, ($$render) => { - if (get(identityCharLoading) && get(identityResults).length === 0) $$render(consequent_85); - else if (get(identityResults).length === 0) $$render(consequent_86, 1); + if_block(node_87, ($$render) => { + if (get(identityCharLoading) && get(identityResults).length === 0) $$render(consequent_89); + else if (get(identityResults).length === 0) $$render(consequent_90, 1); else $$render(alternate_12, -1); }); } - template_effect(() => set_style(div_111, `left:${get(identityPickerRect).left ?? ""}px; top:${get(identityPickerRect).top ?? ""}px; width:${get(identityPickerRect).width ?? ""}px;`)); - delegated("click", div_111, (e) => e.stopPropagation()); + template_effect(() => set_style(div_118, `left:${get(identityPickerRect).left ?? ""}px; top:${get(identityPickerRect).top ?? ""}px; width:${get(identityPickerRect).width ?? ""}px;`)); + delegated("click", div_118, (e) => e.stopPropagation()); bind_value(input_2, () => get(identityPickerQuery), ($$value) => set(identityPickerQuery, $$value)); - append($$anchor2, div_111); + append($$anchor2, div_118); }; - if_block(node_82, ($$render) => { - if (get(identityPickerOpen)) $$render(consequent_88); + if_block(node_86, ($$render) => { + if (get(identityPickerOpen)) $$render(consequent_92); }); } - var node_86 = sibling(node_82, 2); + var node_90 = sibling(node_86, 2); { - var consequent_92 = ($$anchor2) => { + var consequent_96 = ($$anchor2) => { const subj = user_derived(() => get(subjects).find((s) => s.id === get(presetPickerOpen).subjId)); const boundTag = user_derived(() => { var _a2, _b; return (_b = (_a2 = get(subj)) == null ? void 0 : _a2.character) == null ? void 0 : _b.tag; }); - var div_116 = root_132(); - var input_3 = child(div_116); + var div_123 = root_137(); + var input_3 = child(div_123); bind_this(input_3, ($$value) => presetPickerSearchEl = $$value, () => presetPickerSearchEl); - var div_117 = sibling(input_3, 2); - var node_87 = child(div_117); + var div_124 = sibling(input_3, 2); + var node_91 = child(div_124); { - var consequent_89 = ($$anchor3) => { - var div_118 = root_133(); - append($$anchor3, div_118); + var consequent_93 = ($$anchor3) => { + var div_125 = root_138(); + append($$anchor3, div_125); }; - var consequent_90 = ($$anchor3) => { - var div_119 = root_134(); - append($$anchor3, div_119); + var consequent_94 = ($$anchor3) => { + var div_126 = root_139(); + append($$anchor3, div_126); }; var alternate_13 = ($$anchor3) => { - var fragment_27 = comment(); - var node_88 = first_child(fragment_27); - each(node_88, 17, () => get(presetPickerResults), (row) => row.id, ($$anchor4, row) => { + var fragment_28 = comment(); + var node_92 = first_child(fragment_28); + each(node_92, 17, () => get(presetPickerResults), (row) => row.id, ($$anchor4, row) => { const isCanonical = user_derived(() => get(row).character_tag === get(boundTag)); const presetName = user_derived(() => get(presetPickerOpen).kind === "outfit" ? get(row).outfit_name : get(row).pose_name); - var div_120 = root_136(); - let classes_43; - var node_89 = child(div_120); + var div_127 = root_141(); + let classes_45; + var node_93 = child(div_127); { - var consequent_91 = ($$anchor5) => { - var span_73 = root_137(); - append($$anchor5, span_73); + var consequent_95 = ($$anchor5) => { + var span_74 = root_142(); + append($$anchor5, span_74); }; - if_block(node_89, ($$render) => { - if (get(isCanonical)) $$render(consequent_91); + if_block(node_93, ($$render) => { + if (get(isCanonical)) $$render(consequent_95); }); } - var span_74 = sibling(node_89, 2); - var text_78 = child(span_74); - var span_75 = sibling(span_74, 2); - var text_79 = child(span_75); + var span_75 = sibling(node_93, 2); + var text_81 = child(span_75); + var span_76 = sibling(span_75, 2); + var text_82 = child(span_76); template_effect(() => { - classes_43 = set_class(div_120, 1, "pcr-atb2-preset-dd-row svelte-ibd6yj", null, classes_43, { canonical: get(isCanonical) }); - set_text(text_78, get(presetName)); - set_text(text_79, `${get(row).character_display ?? ""}${get(row).character_series ? ` · ${get(row).character_series}` : ""}`); + classes_45 = set_class(div_127, 1, "pcr-atb2-preset-dd-row svelte-ibd6yj", null, classes_45, { canonical: get(isCanonical) }); + set_text(text_81, get(presetName)); + set_text(text_82, `${get(row).character_display ?? ""}${get(row).character_series ? ` · ${get(row).character_series}` : ""}`); }); - delegated("click", div_120, () => pickPresetFromDropdown(get(row))); - append($$anchor4, div_120); + delegated("click", div_127, () => pickPresetFromDropdown(get(row))); + append($$anchor4, div_127); }); - append($$anchor3, fragment_27); + append($$anchor3, fragment_28); }; - if_block(node_87, ($$render) => { - if (get(presetPickerLoading) && get(presetPickerResults).length === 0) $$render(consequent_89); - else if (get(presetPickerResults).length === 0) $$render(consequent_90, 1); + if_block(node_91, ($$render) => { + if (get(presetPickerLoading) && get(presetPickerResults).length === 0) $$render(consequent_93); + else if (get(presetPickerResults).length === 0) $$render(consequent_94, 1); else $$render(alternate_13, -1); }); } template_effect(() => { - set_style(div_116, `left:${get(presetPickerRect).left ?? ""}px; top:${get(presetPickerRect).top ?? ""}px; width:${get(presetPickerRect).width ?? ""}px;`); + set_style(div_123, `left:${get(presetPickerRect).left ?? ""}px; top:${get(presetPickerRect).top ?? ""}px; width:${get(presetPickerRect).width ?? ""}px;`); set_attribute(input_3, "placeholder", get(presetPickerOpen).kind === "outfit" ? "Search outfits…" : "Search poses…"); }); - delegated("click", div_116, (e) => e.stopPropagation()); + delegated("click", div_123, (e) => e.stopPropagation()); bind_value(input_3, () => get(presetPickerQuery), ($$value) => set(presetPickerQuery, $$value)); - append($$anchor2, div_116); + append($$anchor2, div_123); }; - if_block(node_86, ($$render) => { - if (get(presetPickerOpen)) $$render(consequent_92); + if_block(node_90, ($$render) => { + if (get(presetPickerOpen)) $$render(consequent_96); }); } - var node_90 = sibling(node_86, 2); + var node_94 = sibling(node_90, 2); { - var consequent_93 = ($$anchor2) => { + var consequent_97 = ($$anchor2) => { const subj = user_derived(() => get(subjects).find((s) => s.id === get(modifierPickerOpen))); - var div_121 = root_138(); - var div_122 = child(div_121); - each(div_122, 20, () => MODIFIER_OPTIONS, (opt) => opt, ($$anchor3, opt) => { + var div_128 = root_143(); + var div_129 = child(div_128); + each(div_129, 20, () => MODIFIER_OPTIONS, (opt) => opt, ($$anchor3, opt) => { const isOn = user_derived(() => { var _a2, _b; return !!((_b = (_a2 = get(subj)) == null ? void 0 : _a2.modifiers) == null ? void 0 : _b.includes(opt)); }); - var div_123 = root_139(); - let classes_44; - var span_76 = child(div_123); - var text_80 = child(span_76); - var span_77 = sibling(span_76, 2); - var text_81 = child(span_77); + var div_130 = root_144(); + let classes_46; + var span_77 = child(div_130); + var text_83 = child(span_77); + var span_78 = sibling(span_77, 2); + var text_84 = child(span_78); template_effect(() => { - classes_44 = set_class(div_123, 1, "pcr-atb2-modifier-dd-row svelte-ibd6yj", null, classes_44, { on: get(isOn) }); - set_text(text_80, get(isOn) ? "✓" : ""); - set_text(text_81, opt); + classes_46 = set_class(div_130, 1, "pcr-atb2-modifier-dd-row svelte-ibd6yj", null, classes_46, { on: get(isOn) }); + set_text(text_83, get(isOn) ? "✓" : ""); + set_text(text_84, opt); }); - delegated("click", div_123, () => { + delegated("click", div_130, () => { toggleModifier(get(modifierPickerOpen), opt); closeModifierPicker(); }); - append($$anchor3, div_123); + append($$anchor3, div_130); }); - template_effect(() => set_style(div_121, `left:${get(modifierPickerRect).left ?? ""}px; top:${get(modifierPickerRect).top ?? ""}px; width:${get(modifierPickerRect).width ?? ""}px;`)); - delegated("click", div_121, (e) => e.stopPropagation()); - append($$anchor2, div_121); + template_effect(() => set_style(div_128, `left:${get(modifierPickerRect).left ?? ""}px; top:${get(modifierPickerRect).top ?? ""}px; width:${get(modifierPickerRect).width ?? ""}px;`)); + delegated("click", div_128, (e) => e.stopPropagation()); + append($$anchor2, div_128); }; - if_block(node_90, ($$render) => { - if (get(modifierPickerOpen)) $$render(consequent_93); + if_block(node_94, ($$render) => { + if (get(modifierPickerOpen)) $$render(consequent_97); }); } - var node_91 = sibling(node_90, 2); + var node_95 = sibling(node_94, 2); { - var consequent_94 = ($$anchor2) => { - var div_124 = root_140(); - var div_125 = child(div_124); - var div_126 = sibling(child(div_125), 2); - var strong_1 = sibling(child(div_126)); - var text_82 = child(strong_1); + var consequent_98 = ($$anchor2) => { + var div_131 = root_145(); + var div_132 = child(div_131); + var div_133 = sibling(child(div_132), 2); + var strong_1 = sibling(child(div_133)); + var text_85 = child(strong_1); var strong_2 = sibling(strong_1, 2); - var text_83 = child(strong_2); - var div_127 = sibling(strong_2, 2); - var text_84 = child(div_127); - var div_128 = sibling(div_126, 2); - var button_36 = child(div_128); + var text_86 = child(strong_2); + var div_134 = sibling(strong_2, 2); + var text_87 = child(div_134); + var div_135 = sibling(div_133, 2); + var button_36 = child(div_135); var button_37 = sibling(button_36, 2); template_effect(() => { - set_text(text_82, get(pendingIdentitySwap).current.display); - set_text(text_83, get(pendingIdentitySwap).next.display); - set_text(text_84, `Identity-derived tags from ${get(pendingIdentitySwap).current.display ?? ""} will be removed and replaced.`); + set_text(text_85, get(pendingIdentitySwap).current.display); + set_text(text_86, get(pendingIdentitySwap).next.display); + set_text(text_87, `Identity-derived tags from ${get(pendingIdentitySwap).current.display ?? ""} will be removed and replaced.`); }); - delegated("click", div_124, cancelIdentitySwap); - delegated("click", div_125, (e) => e.stopPropagation()); + delegated("click", div_131, cancelIdentitySwap); + delegated("click", div_132, (e) => e.stopPropagation()); delegated("click", button_36, cancelIdentitySwap); delegated("click", button_37, confirmIdentitySwap); - append($$anchor2, div_124); + append($$anchor2, div_131); }; - if_block(node_91, ($$render) => { - if (get(pendingIdentitySwap)) $$render(consequent_94); + if_block(node_95, ($$render) => { + if (get(pendingIdentitySwap)) $$render(consequent_98); }); } - var node_92 = sibling(node_91, 2); + var node_96 = sibling(node_95, 2); { - var consequent_95 = ($$anchor2) => { + var consequent_99 = ($$anchor2) => { Customizer($$anchor2, { get item() { return get(customizerOpen).item; @@ -8636,13 +8761,13 @@ ${filtered}` : filtered; onCancel: cancelCustomizer }); }; - if_block(node_92, ($$render) => { - if (get(customizerOpen)) $$render(consequent_95); + if_block(node_96, ($$render) => { + if (get(customizerOpen)) $$render(consequent_99); }); } - var node_93 = sibling(node_92, 2); + var node_97 = sibling(node_96, 2); { - var consequent_96 = ($$anchor2) => { + var consequent_100 = ($$anchor2) => { { let $0 = user_derived(() => get(bucketCache).furniture.mods.actionOverrides || {}); let $1 = user_derived(() => get(furnitureCustomizerOpen).subjId ? get(subjects).find((s) => s.id === get(furnitureCustomizerOpen).subjId) : null); @@ -8679,14 +8804,14 @@ ${filtered}` : filtered; }); } }; - if_block(node_93, ($$render) => { + if_block(node_97, ($$render) => { var _a2; - if (get(furnitureCustomizerOpen) && ((_a2 = get(bucketCache).furniture) == null ? void 0 : _a2.mods)) $$render(consequent_96); + if (get(furnitureCustomizerOpen) && ((_a2 = get(bucketCache).furniture) == null ? void 0 : _a2.mods)) $$render(consequent_100); }); } - var node_94 = sibling(node_93, 2); + var node_98 = sibling(node_97, 2); { - var consequent_97 = ($$anchor2) => { + var consequent_101 = ($$anchor2) => { FantasyCustomizer($$anchor2, { get item() { return get(fantasyCustomizerOpen).item; @@ -8704,13 +8829,13 @@ ${filtered}` : filtered; onCancel: cancelFantasyCustomizer }); }; - if_block(node_94, ($$render) => { - if (get(fantasyCustomizerOpen)) $$render(consequent_97); + if_block(node_98, ($$render) => { + if (get(fantasyCustomizerOpen)) $$render(consequent_101); }); } - var node_95 = sibling(node_94, 2); + var node_99 = sibling(node_98, 2); { - var consequent_98 = ($$anchor2) => { + var consequent_102 = ($$anchor2) => { TagBuilderEditor($$anchor2, { get bucket() { return get(overlayEditorOpen).bucket; @@ -8734,50 +8859,54 @@ ${filtered}` : filtered; onCancel: closeOverlayEditor }); }; - if_block(node_95, ($$render) => { - if (get(overlayEditorOpen)) $$render(consequent_98); + if_block(node_99, ($$render) => { + if (get(overlayEditorOpen)) $$render(consequent_102); }); } - var node_96 = sibling(node_95, 2); + var node_100 = sibling(node_99, 2); { - var consequent_100 = ($$anchor2) => { - var fragment_32 = root_145(); - var div_129 = first_child(fragment_32); - var div_130 = sibling(div_129, 2); - var div_131 = child(div_130); - var text_85 = child(div_131); - var div_132 = sibling(div_131, 2); - var button_38 = child(div_132); - var node_97 = sibling(button_38, 2); + var consequent_104 = ($$anchor2) => { + var fragment_33 = root_150(); + var div_136 = first_child(fragment_33); + var div_137 = sibling(div_136, 2); + var div_138 = child(div_137); + var text_88 = child(div_138); + var div_139 = sibling(div_138, 2); + var button_38 = child(div_139); + var node_101 = sibling(button_38, 2); { - var consequent_99 = ($$anchor3) => { - var button_39 = root_146(); + var consequent_103 = ($$anchor3) => { + var button_39 = root_151(); delegated("click", button_39, () => characterRestore(get(charEditMenu).char)); append($$anchor3, button_39); }; - if_block(node_97, ($$render) => { - if (get(charEditMenu).char._overlay === "edit") $$render(consequent_99); + if_block(node_101, ($$render) => { + if (get(charEditMenu).char._overlay === "edit") $$render(consequent_103); }); } + var button_40 = sibling(node_101, 2); + var text_89 = child(button_40); template_effect(() => { - set_style(div_130, `left:${get(charEditMenu).x ?? ""}px;top:${get(charEditMenu).y ?? ""}px`); - set_text(text_85, get(charEditMenu).char.display || get(charEditMenu).char.tag); + set_style(div_137, `left:${get(charEditMenu).x ?? ""}px;top:${get(charEditMenu).y ?? ""}px`); + set_text(text_88, get(charEditMenu).char.display || get(charEditMenu).char.tag); + set_text(text_89, get(charEditMenu).char._overlay === "add" ? "🗑️ Remove" : "🗑️ Delete (hide)"); }); - delegated("click", div_129, closeCharEditMenu); - delegated("contextmenu", div_129, (e) => { + delegated("click", div_136, closeCharEditMenu); + delegated("contextmenu", div_136, (e) => { e.preventDefault(); closeCharEditMenu(); }); delegated("click", button_38, () => openCharacterEditor(get(charEditMenu).char)); - append($$anchor2, fragment_32); + delegated("click", button_40, () => deleteCharacter(get(charEditMenu).char)); + append($$anchor2, fragment_33); }; - if_block(node_96, ($$render) => { - if (get(charEditMenu)) $$render(consequent_100); + if_block(node_100, ($$render) => { + if (get(charEditMenu)) $$render(consequent_104); }); } - var node_98 = sibling(node_96, 2); + var node_102 = sibling(node_100, 2); { - var consequent_101 = ($$anchor2) => { + var consequent_105 = ($$anchor2) => { OverlayManager($$anchor2, { get labels() { return OVERLAY_TABLE_LABELS; @@ -8786,8 +8915,8 @@ ${filtered}` : filtered; onChanged: onOverlayChanged }); }; - if_block(node_98, ($$render) => { - if (get(overlayManagerOpen)) $$render(consequent_101); + if_block(node_102, ($$render) => { + if (get(overlayManagerOpen)) $$render(consequent_105); }); } template_effect(() => { @@ -8796,23 +8925,23 @@ ${filtered}` : filtered; set_attribute(button, "aria-label", get(maximized) ? "Restore" : "Maximize"); set_attribute(button, "title", get(maximized) ? "Restore" : "Maximize"); set_text(text_1, get(maximized) ? "❐" : "▢"); - classes_10 = set_class(main, 1, "pcr-atb2-browser svelte-ibd6yj", null, classes_10, { "pcr-atb2-list-mode": get(viewMode) === "list" }); + classes_11 = set_class(main, 1, "pcr-atb2-browser svelte-ibd6yj", null, classes_11, { "pcr-atb2-list-mode": get(viewMode) === "list" }); set_style(main, `--pcr-atb2-card-min: ${get(cardMinPx) ?? ""}px`); - classes_11 = set_class(span_19, 1, "pcr-atb2-bc-target svelte-ibd6yj", null, classes_11, { rebind: get(routingTarget).type === "rebind" }); - set_text(text_19, get(routingTarget).label); - classes_12 = set_class(button_2, 1, "pcr-atb2-view-btn svelte-ibd6yj", null, classes_12, { active: get(viewMode) === "cards" }); + classes_12 = set_class(span_20, 1, "pcr-atb2-bc-target svelte-ibd6yj", null, classes_12, { rebind: get(routingTarget).type === "rebind" }); + set_text(text_20, get(routingTarget).label); + classes_13 = set_class(button_2, 1, "pcr-atb2-view-btn svelte-ibd6yj", null, classes_13, { active: get(viewMode) === "cards" }); set_attribute(button_2, "aria-checked", get(viewMode) === "cards"); - classes_13 = set_class(button_3, 1, "pcr-atb2-view-btn svelte-ibd6yj", null, classes_13, { active: get(viewMode) === "list" }); + classes_14 = set_class(button_3, 1, "pcr-atb2-view-btn svelte-ibd6yj", null, classes_14, { active: get(viewMode) === "list" }); set_attribute(button_3, "aria-checked", get(viewMode) === "list"); - classes_37 = set_class(div_99, 1, "pcr-atb2-mode-option svelte-ibd6yj", null, classes_37, { active: !get(isNaturalMode) }); - set_attribute(div_99, "aria-checked", !get(isNaturalMode)); - classes_38 = set_class(div_100, 1, "pcr-atb2-mode-option svelte-ibd6yj", null, classes_38, { active: get(isNaturalMode) }); - set_attribute(div_100, "aria-checked", get(isNaturalMode)); - classes_39 = set_class(button_26, 1, "pcr-atb2-nsfw-toggle svelte-ibd6yj", null, classes_39, { active: !get(nsfwHidden) }); + classes_39 = set_class(div_106, 1, "pcr-atb2-mode-option svelte-ibd6yj", null, classes_39, { active: !get(isNaturalMode) }); + set_attribute(div_106, "aria-checked", !get(isNaturalMode)); + classes_40 = set_class(div_107, 1, "pcr-atb2-mode-option svelte-ibd6yj", null, classes_40, { active: get(isNaturalMode) }); + set_attribute(div_107, "aria-checked", get(isNaturalMode)); + classes_41 = set_class(button_26, 1, "pcr-atb2-nsfw-toggle svelte-ibd6yj", null, classes_41, { active: !get(nsfwHidden) }); set_attribute(button_26, "title", get(nsfwHidden) ? "NSFW hidden in the browser — click to show. (Already-added chips are unaffected.)" : "NSFW shown — click to hide"); set_attribute(button_26, "aria-pressed", !get(nsfwHidden)); button_28.disabled = get(totalSelectionCount) === 0; - set_text(text_70, `Insert${get(totalSelectionCount) > 0 ? ` (${get(totalSelectionCount)})` : ""}`); + set_text(text_73, `Insert${get(totalSelectionCount) > 0 ? ` (${get(totalSelectionCount)})` : ""}`); }); bind_value(input, () => get(searchQuery), ($$value) => set(searchQuery, $$value)); delegated("click", button, toggleMaximized); @@ -8822,9 +8951,9 @@ ${filtered}` : filtered; }); delegated("click", button_2, () => setViewMode("cards")); delegated("click", button_3, () => setViewMode("list")); - delegated("click", div_86, () => spawnSubject("person")); - delegated("click", div_99, () => setMode(false)); - delegated("click", div_100, () => setMode(true)); + delegated("click", div_93, () => spawnSubject("person")); + delegated("click", div_106, () => setMode(false)); + delegated("click", div_107, () => setMode(true)); delegated("click", button_26, toggleNsfw); delegated("click", button_27, function(...$$args) { var _a2; diff --git a/svelte-src/components/tag-builder2/TagBuilder2.svelte b/svelte-src/components/tag-builder2/TagBuilder2.svelte index 199c73c..22f3f0b 100644 --- a/svelte-src/components/tag-builder2/TagBuilder2.svelte +++ b/svelte-src/components/tag-builder2/TagBuilder2.svelte @@ -823,7 +823,8 @@ if (cat.enabled && cat.bucket) loadBucket(cat.bucket); } - loadOverlayCount(); // show the "Your edits" button if any deltas exist + loadOverlayCount(); // show the "Your edits" button if any deltas exist + loadMyCharacters(); // populate the Subjects → Mine tab // Preload normalized characters (tag + base_natlang etc.) so the // round-trip parser can recognize both tag-form ("cammy_white") and @@ -1358,8 +1359,12 @@ // blocks the grid/list, so the user can't click a stale (pre-edit) row // until fresh data is in place — otherwise a quick insert emits the old // value. - if (ed.kind === "character") await refreshCharacterRow(ed.initial?.tag); - else await reloadBucketItems(ed.bucket); + if (ed.kind === "character") { + // An add — or an edit of an already-added char — belongs to the Mine + // list; an edit of a base char is patched into the paginated list. + await loadMyCharacters(); + if (ed.mode === "edit" && ed.initial?._overlay !== "add") await refreshCharacterRow(ed.initial?.tag); + } else await reloadBucketItems(ed.bucket); overlayEditorOpen = null; loadOverlayCount(); } @@ -1473,6 +1478,56 @@ } } + // --- User-added subjects ("Mine") ------------------------------------- + // Added characters are kept OUT of the paginated browser (the server applies + // them with include_adds=False) — injecting them into a LIMIT/OFFSET page + // would duplicate them across pages and skew the count. They live here + // instead, read straight from the overlay file via the per-table summary. + const MINE_KEY = "__mine__"; + let myCharacters = $state([]); + let myCharactersLoading = $state(false); + + async function loadMyCharacters() { + myCharactersLoading = true; + try { + const res = await fetch("/promptchain/tag-builder/overlay/characters", { cache: "no-store" }); + const adds = res.ok ? (await res.json()).adds || {} : {}; + myCharacters = Object.values(adds).map(row => ({ ...row, _overlay: "add" })); + } catch (e) { + console.error("[TagBuilder2] load my characters failed", e); + myCharacters = []; + } + myCharactersLoading = false; + } + + function openNewCharacterEditor() { + overlayEditorOpen = { + bucket: "character", table: "characters", mode: "add", + fields: CHARACTER_FIELDS, initial: {}, groups: [], kind: "character", + }; + } + + // Hide a base character (tombstone) or drop a user-added one — both route + // through the same overlay DELETE. The base case is reversible from the + // "Your edits" view; the added case is gone for good, so confirm either way. + async function deleteCharacter(char) { + closeCharEditMenu(); + const label = char.display || char.tag; + const msg = char._overlay === "add" + ? `Remove your added subject “${label}”?` + : `Hide “${label}” from the library? You can bring it back from your edits list.`; + if (typeof window !== "undefined" && !window.confirm(msg)) return; + try { + const res = await fetch( + `/promptchain/tag-builder/overlay/characters/${encodeURIComponent(char.tag)}`, + { method: "DELETE" }); + if (!res.ok) { console.error(`[TagBuilder2] character delete failed: ${res.status}`); return; } + } catch (e) { console.error("[TagBuilder2] character delete error", e); return; } + characters = characters.filter(c => c.tag !== char.tag); + await loadMyCharacters(); + loadOverlayCount(); + } + // --- "Your edits" management view ------------------------------------- const OVERLAY_TABLE_LABELS = { cast_items: "Cast", appearance_items: "Appearance", clothing_items: "Clothing", @@ -1667,6 +1722,7 @@ activeSubjectSubitem = activeSubjectSubitem === key ? null : key; searchQuery = ""; debouncedQuery = ""; + if (key === MINE_KEY) loadMyCharacters(); // refresh in case edited elsewhere scrollBrowserTop(); } @@ -5380,6 +5436,18 @@ {/if} {/each} + + +
selectSubjectSubitem(MINE_KEY)} + > + ⭐ Mine + {#if myCharacters.length} + {myCharacters.length} + {/if} +
{:else if isActive && cat.key === "styles" && styleGroups.length}
@@ -5624,8 +5692,38 @@ {/each} {/if} {:else if activeCategory === "subjects"} - {@const sub = activeSubjectSubitem ? SUBJECT_SUBITEMS.find(s => s.key === activeSubjectSubitem) : null} - {#if !sub || sub.source === "characters"} + {@const sub = activeSubjectSubitem && activeSubjectSubitem !== MINE_KEY ? SUBJECT_SUBITEMS.find(s => s.key === activeSubjectSubitem) : null} + {#if activeSubjectSubitem === MINE_KEY} +
+ + +
+
+
+
Add subject
+
+ {#each myCharacters as char (char.tag)} + {@const isActiveIdentity = activeSubject?.character?.tag === char.tag} + + +
isActiveIdentity ? unbindIdentity(activeSubject.id) : pickIdentityFromBrowser(characterToOption(char))} + oncontextmenu={(e) => openCharEditMenu(e, char)} + title={char.base_natlang || `${char.display || char.tag}${char.series ? " — " + char.series : ""}`} + > +
+
{char.display || char.tag}
+ {#if char.series} +
{char.series}
+ {/if} +
+ {/each} +
+ {#if !myCharacters.length} +
No added subjects yet. Click “Add subject” to create one — it survives updates.
+ {/if} + {:else if !sub || sub.source === "characters"} {#if charactersLoading}
Searching characters…
{:else if characters.length === 0} @@ -6572,6 +6670,9 @@ ↩️ Restore default {/if} +
{/if} @@ -6880,6 +6981,25 @@ line-height: 1.3; } + /* "Add subject" tile in Subjects → Mine. Dashed accent box that reads as an + action, not a content card. */ + .pcr-atb2-card-add { + align-items: center; + justify-content: center; + min-height: 72px; + border: 1px dashed #5b4b8a; + background: rgba(124, 58, 237, 0.07); + } + .pcr-atb2-card-add:hover { + background: rgba(124, 58, 237, 0.16); + border-color: #8b5cf6; + } + .pcr-atb2-card-add-plus { + font-size: 26px; + line-height: 1; + color: #b59cff; + } + /* ---- LIST VIEW ---- compact rows reusing the same card markup: tiny left thumb + name (left) + series (right). Toggled via .pcr-atb2-list-mode on the browser; works in every view (All / category / NSFW / search / recent). */