whose-turn 1.0.0-alpha.6 → 1.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ .rail[data-v-ffe046bc]{position:fixed;inset:0 auto 0 0;z-index:30;box-sizing:border-box;display:flex;flex-direction:column;gap:4px;width:60px;padding:12px 8px;overflow:hidden;border-right:1px solid var(--glass-edge);background:rgb(var(--glass),.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-family:var(--md-font);color:var(--md-on-surface);transition:width .18s ease,box-shadow .18s ease}.rail[data-v-ffe046bc]:hover,.rail[data-v-ffe046bc]:has(:focus-visible){width:232px;box-shadow:12px 0 32px #0000001f}.app:has(.modal) .rail[data-v-ffe046bc]{z-index:0}.rail__item[data-v-ffe046bc]{position:relative;display:flex;align-items:center;gap:12px;height:44px;padding:0 4px;border-radius:12px;color:inherit;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.rail__item[data-v-ffe046bc]:focus-visible{outline:var(--focus-ring);outline-offset:-2px}.rail__item--dragging[data-v-ffe046bc]{opacity:.4}.rail__item[data-drop=before][data-v-ffe046bc]{box-shadow:0 -2px 0 0 var(--md-primary)}.rail__item[data-drop=after][data-v-ffe046bc]{box-shadow:0 2px 0 0 var(--md-primary)}.rail__item[data-v-ffe046bc]:hover{background:var(--state-hover)}.rail__item[aria-selected=true][data-v-ffe046bc]{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}.rail__icon[data-v-ffe046bc]{flex:none;display:block;width:36px;height:36px;border-radius:10px}.rail__gear[data-v-ffe046bc]{flex:none;display:grid;place-items:center;width:36px;height:36px;color:var(--md-on-surface-variant)}.rail__label[data-v-ffe046bc]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500;opacity:0;transition:opacity .12s ease}.rail:hover .rail__label[data-v-ffe046bc],.rail:has(:focus-visible) .rail__label[data-v-ffe046bc]{opacity:1}.rail__badge[data-v-ffe046bc]{position:absolute;top:2px;left:30px;box-sizing:border-box;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--md-primary);color:var(--md-on-primary);font-size:10px;font-weight:700;line-height:18px;text-align:center}.rail:hover .rail__badge[data-v-ffe046bc],.rail:has(:focus-visible) .rail__badge[data-v-ffe046bc]{position:static;flex:none}.rail__warn[data-v-ffe046bc]{position:absolute;left:26px;top:26px;display:grid;place-items:center;width:14px;height:14px;border-radius:50%;background:var(--md-error);color:var(--md-on-error);font-size:10px;font-weight:800;line-height:1}.rail__dot[data-v-ffe046bc]{position:absolute;top:6px;left:28px;box-sizing:border-box;width:10px;height:10px;border:2px solid var(--md-surface);border-radius:50%;background:var(--md-primary)}.rail__spacer[data-v-ffe046bc]{flex:1}.ai-button[data-v-46197bdc]{position:relative;display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;cursor:pointer;color:var(--md-primary);background:rgb(var(--md-state),.06);vertical-align:middle;transition:background .12s ease,transform .12s ease}.ai-button__icon[data-v-46197bdc]{width:15px;height:15px}.ai-button__badge[data-v-46197bdc]{position:absolute;right:-3px;top:-3px;width:12px;height:12px}.ai-button[data-v-46197bdc]:hover{background:var(--md-secondary-container);transform:scale(1.08)}.ai-button[data-v-46197bdc]:focus-visible{outline:var(--focus-ring);outline-offset:1px}.ai-button.ai-button--sent[data-v-46197bdc]{background:var(--md-tertiary-container);color:var(--md-on-tertiary-container)}.ai-button.ai-button--failed[data-v-46197bdc]{background:var(--md-error-container);color:var(--md-on-error-container)}.ai-button--big[data-v-46197bdc]{width:32px;height:32px;background:rgb(var(--glass),.7)}.ai-button--big .ai-button__icon[data-v-46197bdc]{width:18px;height:18px}.update-chip[data-v-c5c2c37f]{display:inline-flex;gap:8px;align-items:center;height:26px;padding:0 12px;font:inherit;color:var(--md-on-primary-container);white-space:nowrap;cursor:pointer;background:var(--md-primary-container);border:0;border-radius:var(--md-r-chip)}.update-chip--busy[data-v-c5c2c37f]{cursor:default}.update-chip--ready[data-v-c5c2c37f]{color:var(--md-on-primary);background:var(--md-primary)}.update-chip--failed[data-v-c5c2c37f]{color:var(--md-on-error-container);background:var(--md-error-container)}.update-chip__spinner[data-v-c5c2c37f]{width:12px;height:12px;border:2px solid currentcolor;border-top-color:transparent;border-radius:50%;animation:update-chip-spin-c5c2c37f .9s linear infinite}@media(prefers-reduced-motion:reduce){.update-chip__spinner[data-v-c5c2c37f]{animation:none}}.update-chip__link[data-v-c5c2c37f]{padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer;background:none;border:0}@keyframes update-chip-spin-c5c2c37f{to{transform:rotate(360deg)}}.notifications-toggle[data-v-6704e5f1]{gap:6px;height:26px;padding:0 12px;font-size:12px}.notifications-toggle--off[data-v-6704e5f1]{color:var(--md-on-error-container);background:var(--md-error-container)}.notifications-toggle__icon[data-v-6704e5f1]{width:16px;height:16px}.status-bar[data-v-940c94f2]{display:flex;align-items:center;gap:10px;margin:0 4px 8px;font-family:var(--md-font);font-size:12px;color:var(--md-on-surface-variant)}.status-bar__btn[data-v-940c94f2]{height:26px;padding:0 12px;font-size:12px;text-decoration:none}.status-bar__btn--busy[data-v-940c94f2]{opacity:.6;pointer-events:none}.status-bar__report[data-v-940c94f2]{gap:6px}.status-bar__icon[data-v-940c94f2]{width:16px;height:16px}.status-bar__live[data-v-940c94f2]{width:8px;height:8px;border-radius:50%;background:var(--live-on);box-shadow:0 0 0 0 var(--live-pulse-rest);animation:status-bar-pulse-940c94f2 2s infinite}.status-bar__live--off[data-v-940c94f2]{background:var(--live-off);animation:none}.status-bar__live--warn[data-v-940c94f2]{background:var(--live-warn);animation:none}.status-bar__notice[data-v-940c94f2]{color:var(--live-off)}.status-bar__ai-hint[data-v-940c94f2]{margin-left:-4px}@keyframes status-bar-pulse-940c94f2{0%{box-shadow:0 0 0 0 var(--live-pulse-from)}70%{box-shadow:0 0 0 8px var(--live-pulse-to)}to{box-shadow:0 0 0 0 var(--live-pulse-to)}}@media(prefers-reduced-motion:reduce){.status-bar__live[data-v-940c94f2]{animation:none}}.workspace-header[data-v-3421a7f0]{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,2fr) 32px;gap:8px;padding:8px;background:linear-gradient(135deg,var(--blob-1),var(--blob-2));color:var(--header-ink, var(--md-on-primary-container))}@media(prefers-reduced-transparency:reduce){.workspace-header[data-v-3421a7f0]{background:var(--md-s-low)}}.workspace-header__title[data-v-3421a7f0]{display:grid;align-content:center;gap:4px;padding:12px 16px}.workspace-header__name[data-v-3421a7f0]{margin:0;font-size:28px;font-weight:400;line-height:36px;color:var(--md-on-primary-container)}.workspace-header__line[data-v-3421a7f0]{margin:0;font-size:14px;opacity:.85}.workspace-header__count[data-v-3421a7f0]{font-weight:700;font-variant-numeric:tabular-nums}.workspace-header__give[data-v-3421a7f0]{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:8px;white-space:nowrap}.workspace-header__links[data-v-3421a7f0]{display:inline-flex;gap:6px}.workspace-header__links a[data-v-3421a7f0]{display:inline-flex;align-items:center;height:24px;padding:0 10px;border:1px solid var(--glass-edge);border-radius:999px;background:rgb(var(--glass),.55);color:inherit;font-size:12px;font-weight:500}.workspace-header__links a[data-v-3421a7f0]:hover{background:rgb(var(--glass),.85)}.workspace-header__fold[data-v-3421a7f0]{grid-row:1;grid-column:3;place-self:center center;margin:0;color:inherit}.workspace-header__tiles[data-v-3421a7f0]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.workspace-header__tile[data-v-3421a7f0]{display:grid;align-content:start;gap:4px;padding:12px 16px;border:1px solid var(--glass-edge);border-radius:var(--md-r-card);background:rgb(var(--glass),calc(var(--glass-a) + .1));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--md-on-surface)}@media(prefers-reduced-transparency:reduce){.workspace-header__tile[data-v-3421a7f0]{background:var(--md-s-low);-webkit-backdrop-filter:none;backdrop-filter:none}}.workspace-header__tile-label[data-v-3421a7f0]{color:var(--md-on-surface-variant);font-size:12px;font-weight:500;line-height:16px;letter-spacing:.03em}.workspace-header__tile-value[data-v-3421a7f0]{min-height:40px;font-size:32px;font-weight:400;line-height:40px;font-variant-numeric:tabular-nums}.workspace-header__tile--you[data-v-3421a7f0]{border-color:transparent;background:var(--md-primary);color:var(--md-on-primary)}.workspace-header__tile--you .workspace-header__tile-label[data-v-3421a7f0]{color:var(--md-on-primary);opacity:.85}.workspace-header__tile--fail .workspace-header__tile-value[data-v-3421a7f0]{color:var(--md-error)}.workspace-header--collapsed[data-v-3421a7f0]{grid-template-columns:minmax(0,1fr) 32px;padding:4px 8px}.workspace-header--collapsed .workspace-header__title[data-v-3421a7f0]{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;padding:4px 8px}.workspace-header--collapsed .workspace-header__name[data-v-3421a7f0]{font-size:18px;line-height:28px}.workspace-header--collapsed .workspace-header__tiles[data-v-3421a7f0],.workspace-header--collapsed .workspace-header__give[data-v-3421a7f0]{display:none}.workspace-header--collapsed .workspace-header__fold[data-v-3421a7f0]{grid-column:2}.workspace-header--collapsed .workspace-header__strip[data-v-3421a7f0]{font-size:13px}@media(max-width:900px){.workspace-header[data-v-3421a7f0],.workspace-header--collapsed[data-v-3421a7f0]{grid-template-columns:minmax(0,1fr) 32px}.workspace-header__fold[data-v-3421a7f0]{grid-column:2}.workspace-header__tiles[data-v-3421a7f0]{grid-column:1 / -1}}@media(max-width:640px){.workspace-header__tiles[data-v-3421a7f0]{grid-template-columns:repeat(2,minmax(0,1fr))}}.chevron[data-v-a14fa9ba]{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;color:var(--md-on-surface-variant);cursor:pointer;-webkit-user-select:none;user-select:none}.chevron[data-v-a14fa9ba]:before{content:"";width:7px;height:7px;border-right:2px solid currentcolor;border-bottom:2px solid currentcolor;transform:translate(-1px) rotate(-45deg);transition:transform .15s ease}.chevron--open[data-v-a14fa9ba]:before{transform:translateY(-2px) rotate(45deg)}.chevron[data-v-a14fa9ba]:hover{background:var(--state-hover)}.chevron[data-v-a14fa9ba]:focus-visible{outline:var(--focus-ring)}.resize-handle[data-v-8e637688]{position:absolute;z-index:2;touch-action:none;border-radius:4px}.resize-handle[data-v-8e637688]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;border-radius:2px;background:var(--md-outline-variant);opacity:0;transition:opacity .15s ease}.resize-handle[data-v-8e637688]:hover:after,.resize-handle[data-v-8e637688]:focus-visible:after{opacity:1}.resize-handle[data-v-8e637688]:focus-visible{outline:var(--focus-ring)}.resize-handle--y[data-v-8e637688]{right:0;bottom:0;left:0;height:10px;cursor:row-resize}.resize-handle--y.resize-handle--top[data-v-8e637688]{top:0;bottom:auto}.resize-handle--y[data-v-8e637688]:after{width:40px;height:4px}.resize-handle--x[data-v-8e637688]{top:0;bottom:0;left:0;width:10px;cursor:col-resize}.resize-handle--x[data-v-8e637688]:after{width:4px;height:40px}@media(max-width:900px){.resize-handle[data-v-8e637688]{display:none}}.island__head[data-v-53a904f0]{display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 20px 12px 12px}.island__title[data-v-53a904f0]{flex:none;margin:0;font-size:16px;line-height:24px;font-weight:500;letter-spacing:.01em;white-space:nowrap}.island__note[data-v-53a904f0]{display:flex;flex:1 1 auto;align-items:center;justify-content:flex-end;gap:6px;min-width:0;margin:0;overflow:visible;color:var(--md-on-surface-variant);font-size:12px;line-height:16px;letter-spacing:.03em;text-align:right;white-space:nowrap;text-overflow:ellipsis}.island__note-text[data-v-53a904f0]{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.island__body[data-v-53a904f0]{padding:0 20px 12px}.island--column .island__head[data-v-53a904f0]{gap:4px}.island--column .island__body[data-v-53a904f0]{display:flex;flex-direction:column;min-height:0;padding-top:4px}.island.island--collapsed .island__body[data-v-53a904f0]{display:none}@media(min-width:901px){.dashboard--fit .dashboard__main .island__body[data-v-53a904f0]{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;padding-bottom:0}.dashboard--fit .dashboard__main .island.island--collapsed .island__body[data-v-53a904f0]{display:none}}.segmented[data-v-201d5e2f]{display:inline-flex;overflow:hidden;border:1px solid var(--md-outline);border-radius:999px;vertical-align:middle}.segmented--chips[data-v-201d5e2f]{flex:none;align-self:flex-start;background:rgb(var(--glass),.4)}.segmented__option[data-v-201d5e2f]{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 11px;border-left:1px solid var(--md-outline);font-size:12px;font-weight:500;color:var(--md-on-surface);cursor:pointer;-webkit-user-select:none;user-select:none}.segmented__option[data-v-201d5e2f]:first-child{border-left:0}.segmented__option[aria-pressed=true][data-v-201d5e2f]{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}.segmented__option[data-v-201d5e2f]:focus-visible{outline:var(--focus-ring);outline-offset:-2px}.segmented--chips .segmented__option[data-v-201d5e2f]{gap:normal;height:32px;padding:0 14px;font-family:var(--md-font);font-size:14px;letter-spacing:.01em}.segmented--chips .segmented__option[data-v-201d5e2f]:hover{background:var(--state-hover)}.segmented--chips .segmented__option[aria-pressed=true][data-v-201d5e2f]{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}.ticket-cell__summary[data-v-e2d11a0b]{display:block;max-width:44ch;margin-top:2px;color:var(--md-on-surface-variant);font-size:12px;line-height:16px;letter-spacing:.03em}.pr-cell[data-v-6078ccbd]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.pr-cell__link[data-v-6078ccbd]{max-width:100%;overflow-wrap:anywhere}.recently-done[data-v-68a4b78e]{position:relative;display:flex;flex:0 1 auto;flex-direction:column;min-height:33px;margin:0 -20px;padding:0 20px;overflow:hidden;border-top:1px solid var(--md-outline-variant)}.recently-done[open][data-v-68a4b78e]{min-height:128px}.recently-done__summary[data-v-68a4b78e]{display:flex;flex:none;align-items:center;gap:4px;min-height:40px;list-style:none;color:var(--md-on-surface-variant);font-size:14px;font-weight:500;cursor:pointer}.recently-done__summary[data-v-68a4b78e]::-webkit-details-marker{display:none}.recently-done__list[data-v-68a4b78e]{flex:1 1 auto;min-height:0;max-height:min(30vh,240px);margin:0 -20px;padding-bottom:8px;overflow:auto}.row-scroll[data-v-e7f699d1]{overflow-x:auto;margin:0 -20px}@media(min-width:901px){.dashboard--fit .dashboard__main .row-scroll[data-v-e7f699d1]{flex:1 1 auto;min-height:0;overflow:auto;scroll-padding-top:40px}.dashboard--fit .row-scroll[data-v-e7f699d1]::-webkit-scrollbar{width:8px;height:8px}.dashboard--fit .row-scroll[data-v-e7f699d1]::-webkit-scrollbar-thumb{border-radius:4px;background:var(--md-outline-variant)}}.dashboard--fit .dashboard__main .row-scroll--floor[data-v-e7f699d1]{min-height:5rem}.row-scroll__more[data-v-e7f699d1]{flex:none;display:block;margin:0 -20px;padding:4px 20px 6px;border-top:1px solid var(--md-outline-variant);color:var(--md-primary);font-size:13px;font-weight:500;cursor:pointer}.row-scroll__more[data-v-e7f699d1]:hover{background:rgb(var(--md-state),.06)}.row-scroll__more[data-v-e7f699d1]:focus-visible{outline:var(--focus-ring);outline-offset:-2px}.your-move__undo[data-v-3a6ca0d0]{margin:0;padding:4px 0;color:var(--md-on-surface-variant);font-size:13px}.your-move__undo-btn[data-v-3a6ca0d0]{color:var(--md-primary);font-weight:500;cursor:pointer}.your-move__view[data-v-3a6ca0d0]{margin-left:10px}.your-move__next[data-v-3a6ca0d0]{font-weight:500}.your-move__line-cell[data-v-3a6ca0d0]{max-width:0;padding-top:0}.your-move__line[data-v-3a6ca0d0]{display:flex;align-items:center;gap:8px;box-sizing:border-box;width:100%;min-width:0;height:24px;padding:0 10px 0 8px;border-left:2px solid var(--md-outline);border-radius:0 6px 6px 0;background:var(--md-s-high);color:var(--md-on-surface-variant);font-size:12px;line-height:16px;text-align:left;cursor:pointer}.your-move__line[data-v-3a6ca0d0]:hover{background:var(--md-s-highest)}.your-move__line[data-v-3a6ca0d0]:focus-visible{outline:var(--focus-ring);outline-offset:1px}.your-move__arrow[data-v-3a6ca0d0]{flex:none}.your-move__outcome[data-v-3a6ca0d0]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.your-move__time[data-v-3a6ca0d0]{flex:none;margin-left:auto;font-variant-numeric:tabular-nums}.your-move__quote[data-v-3a6ca0d0]{max-width:48ch;color:var(--md-on-surface-variant);font-size:12px;line-height:16px}.your-move__quote a[data-v-3a6ca0d0]{color:var(--md-on-surface-variant)}.your-move__problem[data-v-3a6ca0d0]{margin:4px 0 0;padding:4px 10px;font-size:12px}.your-move__mark[data-v-3a6ca0d0]{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:1px solid var(--md-outline);border-radius:999px;color:var(--md-on-surface);font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.your-move__mark[data-v-3a6ca0d0]:hover{background:var(--state-hover)}.your-move__mark[data-v-3a6ca0d0]:before{content:"";width:9px;height:5px;border-bottom:2px solid currentcolor;border-left:2px solid currentcolor;transform:translateY(-2px) rotate(-45deg)}.your-move__mark--undo[data-v-3a6ca0d0]:before{display:none}.your-move__mark[data-v-3a6ca0d0]:focus-visible{outline:var(--focus-ring);outline-offset:2px}.your-move__row--lined td[data-v-3a6ca0d0]{border-bottom:0;padding-bottom:8px}.your-move__row--handled td[data-v-3a6ca0d0],.your-move__line-row--handled td[data-v-3a6ca0d0]{opacity:.55}.your-move__row--handled .your-move__next[data-v-3a6ca0d0]{text-decoration:line-through;text-decoration-color:var(--md-outline)}.your-move__row--handled .table__actions[data-v-3a6ca0d0]{opacity:1}.todos__view[data-v-6dbdbb66]{margin-left:10px}.todos__add[data-v-6dbdbb66]{display:flex;align-items:center;gap:8px;padding:8px 0}.todos__input[data-v-6dbdbb66]{flex:1;min-width:0;height:32px;padding:0 12px;background:rgb(var(--md-state),.04);font-size:14px}.todos__list[data-v-6dbdbb66]{margin:0 -20px;padding:0;overflow-y:auto;list-style:none}.todos__item[data-v-6dbdbb66]{display:grid;grid-template-columns:20px minmax(0,1fr) auto 20px 20px;align-items:center;gap:10px;padding:7px 20px;border-top:1px solid var(--md-outline-variant)}.todos__item[data-v-6dbdbb66]:first-child{border-top:0}.todos__item[data-v-6dbdbb66]:hover{background:rgb(var(--md-state),.06)}.todos__text[data-v-6dbdbb66]{overflow-wrap:anywhere}.todos__item--done .todos__text[data-v-6dbdbb66]{color:var(--md-on-surface-variant);text-decoration:line-through}.todos__empty[data-v-6dbdbb66]{display:block;padding:6px 20px 10px}.todos__check[data-v-6dbdbb66]{box-sizing:border-box;display:grid;place-items:center;width:18px;height:18px;border:2px solid var(--md-outline);border-radius:5px;cursor:pointer}.todos__check--on[data-v-6dbdbb66]{border-color:var(--md-primary);background:var(--md-primary)}.todos__check--on[data-v-6dbdbb66]:after{content:"";width:8px;height:4px;border-bottom:2px solid var(--md-on-primary);border-left:2px solid var(--md-on-primary);transform:translateY(-1px) rotate(-45deg)}.todos__meta[data-v-6dbdbb66]{color:var(--md-on-surface-variant);font-size:11px;white-space:nowrap}.todos__edit[data-v-6dbdbb66]{min-width:0;height:28px;padding:0 8px;font-size:14px}.todos__undo[data-v-6dbdbb66]{margin:0;padding:4px 0;color:var(--md-on-surface-variant);font-size:13px}.todos__undo-btn[data-v-6dbdbb66]{color:var(--md-primary);font-weight:500;cursor:pointer}.todos__pencil[data-v-6dbdbb66],.todos__delete[data-v-6dbdbb66]{color:var(--md-on-surface-variant);font-size:16px;line-height:1;text-align:center;cursor:pointer;opacity:0}.todos__pencil[data-v-6dbdbb66]:focus-visible,.todos__delete[data-v-6dbdbb66]:focus-visible{opacity:1}.todos__item:hover .todos__pencil[data-v-6dbdbb66],.todos__item:hover .todos__delete[data-v-6dbdbb66]{opacity:1}@media(min-width:901px){.dashboard--fit .dashboard__todo .todos__list[data-v-6dbdbb66]{flex:1 1 auto;min-height:0}.dashboard--fit .dashboard__todo .todos__list[data-v-6dbdbb66]:not(:has(.todos__item)){display:none}}.waiting__table[data-v-90e8bf77]{table-layout:fixed}.waiting__col--ticket[data-v-90e8bf77]{width:22%}.waiting__col--status[data-v-90e8bf77],.waiting__col--with[data-v-90e8bf77]{width:6.5rem}.waiting__col--pr[data-v-90e8bf77]{width:4.5rem}.waiting__col--actions[data-v-90e8bf77]{width:2rem}.waiting__reason[data-v-90e8bf77]{display:block;min-width:0;max-width:44ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-item[data-v-8cc9dc10]{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:start;gap:12px;padding:10px 20px;cursor:default}.feed-item[data-v-8cc9dc10]:hover{background:var(--state-hover)}.feed-item.feed-item--open[data-v-8cc9dc10]{background:rgb(var(--md-state),.05)}.feed-item.feed-item--new[data-v-8cc9dc10]{background:var(--new-bg);box-shadow:inset 4px 0 0 var(--new),inset 0 0 0 1px var(--new-edge)}.feed-item.feed-item--flash[data-v-8cc9dc10]{box-shadow:inset 0 0 0 2px var(--md-primary)}.feed-item__icon[data-v-8cc9dc10]{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--md-s-highest);color:var(--md-on-surface-variant);font-size:11px;font-weight:700;letter-spacing:.02em}.feed-item__icon--jira[data-v-8cc9dc10]{background:var(--md-primary-container);color:var(--md-on-primary-container)}.feed-item__icon--bad[data-v-8cc9dc10]{background:var(--md-error-container);color:var(--md-on-error-container)}.feed-item__icon--ok[data-v-8cc9dc10]{background:var(--md-tertiary-container);color:var(--md-on-tertiary-container)}.feed-item__body[data-v-8cc9dc10]{display:grid;gap:2px;min-width:0}.feed-item__top[data-v-8cc9dc10]{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:14px}.feed-item__right[data-v-8cc9dc10]{flex:none;display:inline-flex;align-items:center;gap:4px;margin-left:auto}.feed-item__kind[data-v-8cc9dc10]{font-weight:500}.feed-item__kind--bad[data-v-8cc9dc10]{color:var(--md-error)}.feed-item__who[data-v-8cc9dc10]{color:var(--md-on-surface-variant)}.feed-item__text[data-v-8cc9dc10]{display:-webkit-box;overflow:hidden;color:var(--md-on-surface-variant);font-size:12px;line-height:16px;letter-spacing:.03em;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical}.feed-item__full[data-v-8cc9dc10]{max-height:16rem;margin-top:6px;padding:10px 12px;overflow:auto;border:1px solid var(--glass-edge);border-radius:var(--md-r-chip);background:rgb(var(--glass),.55);color:var(--md-on-surface);font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.feed-item__actions[data-v-8cc9dc10]{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.feed-item--new .feed-item__kind[data-v-8cc9dc10]{color:var(--md-on-surface);font-weight:700}.feed-item--new .feed-item__text[data-v-8cc9dc10]{color:var(--md-on-surface)}.feed-item--new .feed-item__icon[data-v-8cc9dc10]{box-shadow:0 0 0 2px var(--new)}.feed-item--new .feed-item__when[data-v-8cc9dc10]:before{content:"NEW";display:inline-block;margin-right:6px;padding:1px 6px;border-radius:4px;background:var(--new);color:var(--new-ink);font-size:10px;font-weight:800;letter-spacing:.06em;vertical-align:1px}.feed-item:not(.feed-item--new) .feed-item__body[data-v-8cc9dc10]{opacity:.78}@media(max-width:1500px){.feed[data-v-bbacc3b6] .island__note-text{display:none}}.feed__undo[data-v-bbacc3b6]{margin:0 0 4px;color:var(--md-on-surface-variant);font-size:13px}.feed__undo-btn[data-v-bbacc3b6]{color:var(--md-primary);font-weight:500;cursor:pointer}.feed__bar[data-v-bbacc3b6]{display:flex;flex:none;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}.feed__new-count[data-v-bbacc3b6]{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;background:var(--new);color:var(--new-ink);box-shadow:0 0 12px var(--new-glow);font-size:12px;font-weight:800}.feed__mark-read[data-v-bbacc3b6]{flex:none;padding:4px 8px;border-radius:999px;color:var(--md-primary);font-size:13px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none}.feed__mark-read[data-v-bbacc3b6]:hover{background:var(--state-hover)}.feed__mark-read[data-v-bbacc3b6]:focus-visible{outline:var(--focus-ring)}.feed__search[data-v-bbacc3b6]{display:flex;flex:none;align-items:center;gap:8px;margin:0 0 8px}.feed__search-input[data-v-bbacc3b6]{flex:1;min-width:0;height:30px;padding:0 10px;font-size:13px}.feed__search-count[data-v-bbacc3b6]{flex:none;color:var(--md-on-surface-variant);font-size:12px}.feed__list[data-v-bbacc3b6]{flex:1 1 auto;min-height:12rem;margin:0 -20px;padding:0 0 4px;overflow-y:auto;list-style:none}.feed__group[data-v-bbacc3b6]{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:0;padding:0;cursor:default}.feed__group[data-v-bbacc3b6]:hover{background:var(--state-hover)}.feed__group.feed__group--open[data-v-bbacc3b6]{background:rgb(var(--md-state),.05)}.feed__group.feed__group--new[data-v-bbacc3b6]{background:var(--new-bg);box-shadow:inset 4px 0 0 var(--new),inset 0 0 0 1px var(--new-edge)}.feed__group-head[data-v-bbacc3b6]{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 20px;cursor:pointer}.feed__group-copy[data-v-bbacc3b6]{opacity:.55}.feed__group-head:hover .feed__group-copy[data-v-bbacc3b6]{opacity:1}.feed__group-head[data-v-bbacc3b6]:hover{background:var(--state-hover)}.feed__group--new>.feed__group-head[data-v-bbacc3b6]{background:var(--new-bg);box-shadow:inset 4px 0 0 var(--new)}.feed__group--move[data-v-bbacc3b6],.feed__group--move>.feed__group-head[data-v-bbacc3b6]{box-shadow:inset 4px 0 0 var(--move)}.feed__group.feed__group--new.feed__group--move[data-v-bbacc3b6]{box-shadow:inset 4px 0 0 var(--move),inset 0 0 0 1px var(--new-edge)}.feed__group-text[data-v-bbacc3b6]{min-width:0}.feed__group-key[data-v-bbacc3b6]{display:flex;align-items:baseline;gap:8px;font-size:14px}.feed__group-ticket[data-v-bbacc3b6]{flex:none;font-weight:600}.feed__group-sum[data-v-bbacc3b6]{overflow:hidden;color:var(--md-on-surface-variant);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.feed__group-meta[data-v-bbacc3b6]{display:flex;align-items:center;gap:8px;margin-top:2px;color:var(--md-on-surface-variant);font-size:12px}.feed__group-kinds[data-v-bbacc3b6]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed__group-when[data-v-bbacc3b6]{margin-left:auto}.feed__group-count[data-v-bbacc3b6]{flex:none;display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:999px;background:var(--md-s-highest);color:var(--md-on-surface-variant);font-size:11px;font-weight:700}.feed__group-count--new[data-v-bbacc3b6]{background:var(--new);color:var(--new-ink)}.feed__children[data-v-bbacc3b6]{margin:0 0 0 31px;padding:0 0 4px;border-left:2px solid var(--md-outline-variant);list-style:none}.feed__children .feed-item[data-v-bbacc3b6]{padding-left:14px}@media(min-width:901px){.dashboard--fit .feed__list[data-v-bbacc3b6]::-webkit-scrollbar{width:8px;height:8px}.dashboard--fit .feed__list[data-v-bbacc3b6]::-webkit-scrollbar-thumb{border-radius:4px;background:var(--md-outline-variant)}}@media(max-width:900px){.feed__list[data-v-bbacc3b6]{max-height:28rem}}.first-run[data-v-84359c2d]{display:grid;place-self:start center;gap:14px;width:min(640px,100%);padding:28px 32px}.first-run__title[data-v-84359c2d]{margin:0;font-size:22px;font-weight:400;line-height:28px}.first-run__text[data-v-84359c2d]{margin:0;color:var(--md-on-surface-variant)}.first-run__actions[data-v-84359c2d]{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.first-run__ai[data-v-84359c2d]{font-size:13px}.markdown-view[data-v-dcf42e95]{padding:16px 20px 20px;overflow:auto;overflow-wrap:anywhere;font-size:14px;line-height:1.6}.markdown-view[data-v-dcf42e95] h4,.markdown-view[data-v-dcf42e95] h5{margin:16px 0 6px;font-weight:600}.markdown-view[data-v-dcf42e95] h4{font-size:16px}.markdown-view[data-v-dcf42e95] h5{font-size:14px}.markdown-view[data-v-dcf42e95] p{margin:0 0 10px}.markdown-view[data-v-dcf42e95] ul,.markdown-view[data-v-dcf42e95] ol{margin:0 0 10px;padding-left:22px}.markdown-view[data-v-dcf42e95] li{margin:2px 0}.markdown-view[data-v-dcf42e95] code{padding:1px 5px;border-radius:4px;background:rgb(var(--md-state),.1);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.markdown-view[data-v-dcf42e95] pre{margin:0 0 12px;padding:12px 14px;overflow:auto;border-radius:8px;background:#00000047}.markdown-view[data-v-dcf42e95] pre code{padding:0;background:none;font-size:12.5px;line-height:1.5;white-space:pre}.markdown-view[data-v-dcf42e95] blockquote{margin:0 0 10px;padding:4px 12px;border-left:3px solid var(--md-primary);color:var(--md-on-surface-variant)}.markdown-view[data-v-dcf42e95] strong{font-weight:600}.markdown-view[data-v-dcf42e95] .markdown-view__mention{color:var(--md-primary);font-weight:500}.modal__body[data-v-f2f8cfc9]{display:flex;flex-direction:column;gap:12px;padding:16px 20px;overflow:auto}.modal__body--flush[data-v-f2f8cfc9]{gap:0;padding:0}.modal__foot[data-v-f2f8cfc9]{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--md-outline-variant)}.note-modal__summary[data-v-6fc1670a]{margin:0;color:var(--md-on-surface-variant);font-size:13px}.note-modal__facts[data-v-6fc1670a]{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0;font-size:13px}.note-modal__facts dt[data-v-6fc1670a]{color:var(--md-on-surface-variant)}.note-modal__facts dd[data-v-6fc1670a]{margin:0;overflow-wrap:anywhere}.note-modal__author[data-v-6fc1670a]{font-weight:500}.note-modal__label[data-v-6fc1670a]{color:var(--md-on-surface-variant);font-size:12px}.note-modal__text[data-v-6fc1670a]{width:100%;box-sizing:border-box;resize:vertical}.feedback-sheet__card[data-v-a76221de]{width:min(640px,100%)}.feedback-sheet__text[data-v-a76221de]{min-height:7rem;resize:vertical}.feedback-sheet__note[data-v-a76221de]{margin:0;color:var(--md-on-surface-variant);font-size:12px}.feedback-sheet__report[data-v-a76221de]{display:flex;align-items:baseline;gap:8px;padding:4px 0;border-top:1px solid var(--md-outline-variant);font-size:13px}.feedback-sheet__report-title[data-v-a76221de]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-row[data-v-33714840]{display:grid;grid-template-columns:170px minmax(0,1fr);align-items:center;gap:4px 14px}.field-row__label[data-v-33714840]{color:var(--md-on-surface);font-size:13px}.field-row__hint[data-v-33714840]{grid-column:2;color:var(--md-on-surface-variant);font-size:11px}.field-row__error[data-v-33714840]{grid-column:2;color:var(--md-error);font-size:12px}.field-row__check[data-v-33714840]{display:flex;align-items:center;gap:8px;color:var(--md-on-surface-variant);font-size:11px}.field-row__colour[data-v-33714840]{width:44px;height:30px;padding:2px}.field-row__inline[data-v-33714840]{display:flex;align-items:center;gap:8px}.settings-sheet__card[data-v-8253a01a]{width:min(1040px,100%);height:min(760px,100%)}.settings-sheet__dirty[data-v-8253a01a]{color:var(--md-error);font-size:12px;font-weight:600}.settings-sheet__confirm[data-v-8253a01a]{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 20px 0;padding:8px 12px;border-radius:10px;background:var(--md-warn-container);color:var(--md-on-warn-container);font-size:13px}.settings-sheet__confirm-text[data-v-8253a01a]{flex:1}.settings-sheet__alert[data-v-8253a01a]{margin:12px 20px 0}.settings-sheet__body[data-v-8253a01a]{display:grid;flex:1;grid-template-columns:220px minmax(0,1fr);gap:0;min-height:0}.settings-sheet__list[data-v-8253a01a]{display:flex;flex-direction:column;gap:4px;margin:0;padding:12px;overflow:auto;border-right:1px solid var(--md-outline-variant);list-style:none}.settings-sheet__workspace[data-v-8253a01a]{box-sizing:border-box;display:block;width:100%;padding:8px 12px;overflow:hidden;border-radius:10px;font-size:14px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.settings-sheet__workspace[data-v-8253a01a]:hover{background:var(--state-hover)}.settings-sheet__workspace[aria-current=true][data-v-8253a01a]{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}.settings-sheet__workspace[data-v-8253a01a]:focus-visible{outline:var(--focus-ring);outline-offset:-2px}.settings-sheet__workspace--add[data-v-8253a01a]{color:var(--md-primary);font-weight:500}.settings-sheet__connector[data-v-8253a01a]{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--md-outline-variant);border-radius:12px;background:rgb(var(--glass),.35)}.settings-sheet__connector-head[data-v-8253a01a]{display:flex;align-items:center;gap:10px}.settings-sheet__connector-name[data-v-8253a01a]{flex:1;font-weight:600}.settings-sheet__actions[data-v-8253a01a]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.settings-sheet__rules[data-v-8253a01a]{display:flex;flex-direction:column;gap:6px;margin:0;padding:0 0 0 28px;font-size:13px}.settings-sheet__rule[data-v-8253a01a]{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:12px;padding:4px 0;border-bottom:1px solid var(--md-outline-variant)}.settings-sheet__rule-when[data-v-8253a01a]{color:var(--md-on-surface-variant);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow-wrap:anywhere}.settings-sheet__rule-then[data-v-8253a01a]{overflow-wrap:anywhere}.settings-sheet__rules-note[data-v-8253a01a]{margin:0;color:var(--md-on-surface-variant)}.settings-sheet__rules-warning[data-v-8253a01a]{margin:0;padding:6px 10px;border-radius:8px;background:var(--md-warn-container);color:var(--md-on-warn-container)}.whats-new__version[data-v-78394e08]{padding:16px 0 4px;border-bottom:1px solid var(--md-outline-variant)}.whats-new__version[data-v-78394e08]:last-child{border-bottom:0}.whats-new__head[data-v-78394e08]{display:flex;gap:10px;align-items:baseline;padding:0 20px}.whats-new__name[data-v-78394e08]{margin:0;font-size:16px;font-weight:600}.whats-new__date[data-v-78394e08]{font-size:12px;color:var(--md-on-surface-variant)}.whats-new__tag[data-v-78394e08]{padding:1px 8px;font-size:11px;font-weight:600;color:var(--md-on-primary);background:var(--md-primary);border-radius:var(--md-r-chip)}.whats-new__tag--running[data-v-78394e08]{color:var(--md-on-secondary-container);background:var(--md-secondary-container)}.whats-new__empty[data-v-78394e08]{margin:6px 20px 14px;font-size:13px;color:var(--md-on-surface-variant)}.app__shell[data-v-580c2b4a]{box-sizing:border-box;display:flex;flex-direction:column;height:100%;padding:12px 12px 12px 72px}.app__shell>.dashboard[data-v-580c2b4a]{flex:1 1 auto;min-height:0}@media(min-width:901px){.app__shell>.dashboard.dashboard--fit[data-v-580c2b4a]{height:auto}}@media(max-width:900px){.app__shell[data-v-580c2b4a]{height:auto}}
@@ -0,0 +1,7 @@
1
+ import{w as J,t as at,r as lt,s as As,c as E,n as _e,a as kt,b as B,d as q,o as i,e as c,F as W,f as X,g as ee,u as _,h as L,i as a,j as v,k as x,_ as j,l as it,m as G,p as N,q as K,v as Ms,x as Ue,y as Ne,z as me,A as Vt,B as et,C as te,D as Ts,E as be,G as ge,H as $e,I as zs,J as Wt,K as Is}from"./_plugin-vue_export-helper-DeQjDyQ9.js";import{s as Os,m as rt,u as Ut,a as Ht,r as Lt,p as Bs,b as Ds,i as bt,l as qt,c as Ns,M as ne,d as Be,e as Te,f as Ps,g as Ce,h as we,j as Fs,k as He,n as Vs,o as Ws,q as Us,t as ct,v as Hs,w as Ls,x as qs,y as js,z as Ys,A as $t,B as Ks}from"./scheme-BdlolNvz.js";import{g as Ee,r as Xs,a as Gs,e as Zs,w as jt,p as ie,b as ce,T as tt,S as xe,c as dt,d as re,h as Js,s as ut,i as Yt,m as Re,f as Qs,j as Kt,k as Le,l as en,n as ht,o as tn,y as sn,q as Xt,t as nn,u as on,v as an}from"./bem-CST_YFrc.js";const ke=Os(Lt),xt=(e,t)=>{const s=ne,n=new Float32Array(s*s);for(let l=0;l<n.length;l+=1)n[l]=e[l]===t?1e6:0;const o=(l,r,d)=>{n[r]+d<n[l]&&(n[l]=n[r]+d)};for(let l=0;l<s;l+=1)for(let r=0;r<s;r+=1){const d=l*s+r;r>0&&o(d,d-1,1),l>0&&o(d,d-s,1),r>0&&l>0&&o(d,d-s-1,Math.SQRT2),r<s-1&&l>0&&o(d,d-s+1,Math.SQRT2)}for(let l=s-1;l>=0;l-=1)for(let r=s-1;r>=0;r-=1){const d=l*s+r;r<s-1&&o(d,d+1,1),l<s-1&&o(d,d+s,1),r<s-1&&l<s-1&&o(d,d+s+1,Math.SQRT2),r>0&&l<s-1&&o(d,d+s-1,Math.SQRT2)}return n},Ge=e=>{const t=String(e||"").trim(),s=/^#([0-9a-f]{6})$/i.exec(t);if(s)return[0,2,4].map(o=>parseInt(s[1].slice(o,o+2),16));const n=t.match(/[\d.]+/g);return n&&n.length>=3?n.slice(0,3).map(Number):null},ln=e=>{const t=getComputedStyle(e),s=Ge(t.getPropertyValue("--md-primary"))||[44,86,151],n=Ge(t.getPropertyValue("--md-on-primary-container"))||s;return{core:bt()?s:s.map((o,l)=>qt(o,n[l],.35)),rim:Ge(t.getPropertyValue("--blob-3"))||[23,223,220],strength:bt()?.9:1}},rn=(e,t,s)=>({size:e.range(.85,1.05)*Math.min(t,s),right:e.chance(.4),bottom:e.chance(.7),overflowX:e.range(-.02,.06),overflowY:e.range(-.02,.04)}),cn=e=>{const t={minX:ne,maxX:0,minY:ne,maxY:0};for(let n=0;n<e.length;n+=1)if(e[n]){const o=n%ne,l=Math.floor(n/ne);t.minX=Math.min(t.minX,o),t.maxX=Math.max(t.maxX,o),t.minY=Math.min(t.minY,l),t.maxY=Math.max(t.maxY,l)}const s=n=>(n-ne/2)/Be;return{minX:s(t.minX),maxX:s(t.maxX),minY:s(t.minY),maxY:s(t.maxY)}},dn=(e,t,s,n)=>{const o=t.maxX-t.minX,l=t.maxY-t.minY,r=Math.min(e.size,2*s*.95/o,2*n*.98/l),d=r/2,w=-e.overflowX*r,f=-e.overflowY*r;return{size:r,centerX:e.right?s-w-t.maxX*d:w-t.minX*d,centerY:e.bottom?n-f-t.maxY*d:f-t.minY*d}},un=(e,t,s)=>"rgba("+e.core.map((o,l)=>Math.round(qt(o,e.rim[l],t))).join(",")+","+s.toFixed(3)+")",hn=(e,t,s)=>{const n=[],o=t.size/62,l=t.size/2/Be,r=t.size*Ps/4,d=o*.866;for(let w=0,f=t.centerY-r;f<t.centerY+r;w+=1,f+=d)for(let p=t.centerX-r+w%2*o/2;p<t.centerX+r;p+=o){const k=p+e.range(-.3,.3)*o,u=f+e.range(-.3,.3)*o,h=Math.floor((k-t.centerX)/l+ne/2),m=Math.floor((u-t.centerY)/l+ne/2);if(h<0||m<0||h>=ne||m>=ne)continue;const R=m*ne+h,P=e.next(),Y=e.range(.75,1.25),$=e.range(-.15,.15);if(s.inside[R]){const y=s.depth[R]/Be,C=Te(y/.035),A=Te(y/.3);if(P>.5+.5*C)continue;n.push({x:k,y:u,radius:o*.5*(.45+.55*C)*(.95+.3*A)*Y,alpha:.5+.25*C+.25*A,tint:Te(.65-.65*A+$)})}else{const y=s.gap[R]/Be;if(P>.14*Math.exp(-y/.05)+.004)continue;n.push({x:k,y:u,radius:o*e.range(.1,.24),alpha:.35,tint:Te(.8+$)})}}return n},pn=()=>document.getElementById("wt"),_n=()=>document.getElementById("backdrop"),Gt=()=>Math.floor(Math.random()*4294967296),ze={},H={workspace:"",seed:Gt(),species:"",wantedSpecies:"",wantedPose:"",built:null},fn=(e,t)=>{const s=Ns(H.seed),n=ke[Math.floor(s.next()*ke.length)];H.species=ke.includes(H.wantedSpecies)?H.wantedSpecies:n;const o=rn(s,e,t),l={facing:o.right?-1:1,tilt:s.range(-.07,.07),stretchX:s.range(.92,1.08),stretchY:s.range(.92,1.08)};s.chance(.25)&&(l.facing=-l.facing);const r=Bs(Ds(Lt,H.species,s,{pose:H.wantedPose}).shapes,l),d={inside:r,depth:xt(r,1),gap:xt(r,0)},w=dn(o,cn(r),e,t);return{key:H.seed+":"+H.species+":"+e+"x"+t,dots:hn(s,w,d)}},Pe=()=>{const e=_n();if(!e)return;const t=e.clientWidth,s=e.clientHeight,n=window.devicePixelRatio||1,o=Math.round(t*n),l=Math.round(s*n);(e.width!==o||e.height!==l)&&(e.width=o,e.height=l);const r=e.getContext("2d");if(!r||(r.setTransform(n,0,0,n,0,0),r.clearRect(0,0,t,s),!t||!s))return;const d=H.seed+":"+(H.wantedSpecies||"?")+":"+t+"x"+s;(!H.built||H.built.key.split(":")[0]!==String(H.seed)||!H.built.key.endsWith(t+"x"+s)||H.wantedSpecies&&H.species!==H.wantedSpecies)&&(H.built=fn(t,s));const w=pn();if(!w)return d;const f=ln(w);return H.built.dots.forEach(p=>{r.fillStyle=un(f,p.tint,p.alpha*f.strength),r.beginPath(),r.arc(p.x,p.y,p.radius,0,Math.PI*2),r.fill()}),d};window.whoseTurnBackdrop={species:ke.slice(),seeded:rt,get current(){return{workspace:H.workspace,species:H.species,seed:H.seed}},show:e=>{const t=e||{},s=String(t.workspace||"");ze[s]||(ze[s]=Gt());const n=t.seed!==void 0?Number(t.seed)>>>0:ze[s];ze[s]=n;const o=t.species&&ke.includes(t.species)?t.species:"",l=String(t.pose||"");return s===H.workspace&&n===H.seed&&o===H.wantedSpecies&&l===H.wantedPose&&H.built||(H.workspace=s,H.seed=n,H.wantedSpecies=o,H.wantedPose=l,H.built=null,Pe()),window.whoseTurnBackdrop.current},repaint:Pe};J(Ce,Pe);Ut(window,"resize",Ht(Pe,200));const{show:Zt,repaint:vn,seeded:jc}=window.whoseTurnBackdrop,mn="[data-tip-click]",St=e=>e instanceof Element?e.closest(mn):null,gn=e=>e.isConnected&&e.getClientRects().length>0,yn=()=>{if(!window.tippy)return()=>{};const e=new Set;let t=!1;const s=new Set,n=new MutationObserver(()=>k());let o=!1;const l=()=>{e.size&&!o?n.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class","hidden"]}):!e.size&&o&&n.disconnect(),o=e.size>0},r=$=>{e.add($),l()},d=$=>{e.delete($),l()},w=$=>{s.delete($),$.hide()},f=$=>e.forEach(y=>{y.reference!==$&&w(y)}),p=()=>f(null),k=()=>{e.forEach($=>{$.reference.isConnected?gn($.reference)||w($):(d($),$.destroy())})},u=$=>{const y=St($.target);t=!y,f(y)},h=$=>{const y=St($.target),C=y==null?void 0:y._tippy;C&&(s.has(C)?w(C):(s.add(C),C.show()))},m=$=>{$.key==="Escape"&&p()},R=()=>{t=!1};window.tippy.delegate(document.body,{target:"[data-tip]",content:$=>$.dataset.tip||"",trigger:"mouseenter focus",delay:[0,80],duration:[120,80],interactive:!0,hideOnClick:!1,maxWidth:440,placement:"top",theme:"wt",appendTo:()=>document.body,onShow:$=>{if(t)return!1;r($)},onHide:$=>s.has($)?!1:void 0,onHidden:d,onDestroy:$=>{d($),s.delete($)}});const P=new ResizeObserver(p);P.observe(document.body);const Y=[[document,"pointerdown",u,!0],[document,"pointerup",R,!0],[document,"click",h,!0],[document,"keydown",m,!0],[document,"pointercancel",R,!0],[document,"dragstart",p,!0],[document,"scroll",p,!0],[window,"resize",p,!1]];return Y.forEach(([$,y,C,A])=>$.addEventListener(y,C,A)),()=>{n.disconnect(),P.disconnect(),Y.forEach(([$,y,C,A])=>$.removeEventListener(y,C,A))}},wn=()=>{let e=0;return{next:()=>++e,accepts:t=>t===e}},Ct=e=>{const t=structuredClone(at(e)),s=t.connectors||{},n=t.rules||{};return n.statuses=n.statuses||{},{...t,connectors:Array.isArray(s)?s:Object.entries(s).map(([o,l])=>({type:o,...l})),rules:n,theme:t.theme||{}}},kn=e=>{const t=structuredClone(at(e));return t.theme&&!Object.keys(t.theme).length&&delete t.theme,t.rules&&!Object.keys(t.rules.statuses||{}).length&&delete t.rules.statuses,t.rules&&!Object.keys(t.rules).length&&delete t.rules,t},Et=new WeakMap;let bn=0;const Ie=e=>{const t=at(e);let s=Et.get(t);return s||(s=++bn,Et.set(t,s)),s},Rt=e=>JSON.stringify(e),$n=(e,t)=>{const s=[];return e.forEach(n=>n.connectors.forEach(o=>{const l=t.get(o)||{};Object.keys(l).forEach(r=>{l[r]&&s.push({ws:n.id,connector:o.id||o.type,key:r,value:l[r]})})})),s},ue=(e,t,s)=>{typeof s=="boolean"||s&&s.length?e[t]=s:delete e[t]},xn=(e,t)=>{const s=n=>{const o=t.indexOf(n.id);return o<0?t.length:o};return[...e].sort((n,o)=>s(n)-s(o))},Sn=(e,t,s,n)=>{const o=e.filter(l=>l!==t);return o.splice(o.indexOf(s)+(n?0:1),0,t),o},Cn={backlog:"in the backlog",passed:"passed",code_review:"in review",qa:"in testing",on_hold:"on hold",todo:"to do",in_progress:"in progress",done:"done"},Jt=e=>Cn[e]||`in ${e.replace(/_/g," ")}`,En={you:"your move",reviewer:"the reviewer's move",qa:"the tester's move",them:"waiting on others"},pe=(e,t)=>{var s;return((s=e[t])==null?void 0:s.name)||t.replace(/[._]/g," ")},Rn=(e,t,s)=>e?t:s,An={approved:"the PR is approved",changes_requested:"changes are requested on the PR",none:"the PR has no review"},Mn=(e,t,s)=>{switch(t){case"ticket.status":return`the ticket is ${Jt(String(s))}`;case"ticket.assignee":return s==="me"?"the ticket is on you":`the ticket is assigned to ${s}`;case"pr.checks":return s==="none"?"the PR has no checks":`the PR checks are ${s}`;case"pr.review":return An[String(s)]||`the PR review is ${s}`;case"pr.base":return`the PR goes into ${s}`;default:return`${pe(e,t)} is ${s}`}},Tn=(e,t,s,n)=>{if(s==="present")return Rn(n,`${pe(e,t)} is given`,`${pe(e,t)} is missing`);if(s==="prefix")return t==="pr.base"?`the PR goes into a branch starting with ${n}`:`${pe(e,t)} starts with ${n}`;if(t==="unanswered_count"){const l=Number(n);return`${{gt:`more than ${l}`,gte:`at least ${l}`,lt:`fewer than ${l}`,lte:`at most ${l}`}[s]} mentions of you wait for an answer`}const o={gt:"more than",gte:"at least",lt:"less than",lte:"at most"};return`${pe(e,t)} is ${o[s]} ${n}`},zn=(e,t,s)=>{var o;if(Array.isArray(s))return t==="ticket.status"?`the ticket is ${s.map(l=>Jt(String(l))).join(" or ")}`:`${pe(e,t)} is ${s.join(" or ")}`;if(s&&typeof s=="object")return Object.entries(s).map(([l,r])=>Tn(e,t,l,r)).join(" and ");const n=(o=e[t])==null?void 0:o.says;return typeof s=="boolean"&&n?n[s?0:1]:Mn(e,t,s)},In=(e,t)=>t.replace(/\{([\w.]+)\}/g,(s,n)=>`{${pe(e,n)}}`),On=(e,t={})=>{const s=Object.entries(e.when).map(([o,l])=>zn(t,o,l)),n=e.then.whose==="hidden"?"not shown":`${En[e.then.whose]||e.then.whose}, "${In(t,e.then.next||"")}"`;return{when:s.length?`When ${s.join(" and ")}:`:"In every other case:",then:n}},Bn=e=>e.modal?"modal":e.note?"note":e.settings?"settings":e.feedback?"feedback":e.whatsNew?"whatsNew":null,Dn=(e,t)=>{const s=new URLSearchParams(e).get("mode");return s==="app"||s==="tab"?s:t==="app"?"app":"tab"},Nn=e=>"/?mode=tab"+(e?"&ws="+encodeURIComponent(e):""),Pn=e=>({width:e.outerWidth,height:e.outerHeight}),Qt={writeDefaults:!1},es=we("wt-ws","",Qt),ts=Fs("wt-mode","",Qt),g=As({workspaces:[],workspace:{id:"",name:"",connectors:[],links:[],key_pattern:"",theme:null},turn:[],feed:[],marks:{seen:[],base:0,handled:{},info:{}},counts:{mine:0,others:0,failing:0,done:0},todos:[],errors:{},health:{ok:!0,stale:!1,fresh_at:"",failing:[],alerts:[]},problems:[],polled_at:"",update:{current:"",latest:"",available:!1,state:"idle"},notifications:{desktop:!0}}),S=lt({ws:new URLSearchParams(location.search).get("ws")||es.value,open:new Set,mode:Dn(location.search,ts.value),live:!1,reconnects:0,status:"Connecting…",modal:null,note:"",feedback:!1,whatsNew:!1,settings:!1,settingsDirty:!1,settingsAsk:!1,settingsAt:"",focusFeed:""});ts.value=S.mode;const Fe=He("",6e3),de=(e,t)=>{const s=ce(e,t);return s&&(Fe.value=s),!s},Fn=()=>{S.mode==="app"&&Ut(window,"resize",Ht(()=>ie("/api/window",Pn(window)).catch(de),600))},ss={resume:()=>{}},fe=Ws({scheduler:e=>{const t=Us(e,3e4,{immediate:!1});return ss.resume=t.resume,t}}),Ze=E(()=>{const e=g.workspace.theme;return e&&e.light&&e.dark?e[Ce.value?"dark":"light"]:{}}),ae=E(()=>g.counts),At=E(()=>{const e=g.workspace.name,t=e?e+": ":"",s=Object.entries(g.errors||{}),n=g.health.failing||[],o=d=>n.find(({source:w})=>d===w||d.startsWith(w+".")),l=n.map(({source:d,polls:w})=>{const f=s.filter(([p])=>{var k;return((k=o(p))==null?void 0:k.source)===d}).map(([,p])=>p);return`Source ${d}: ${f.join(", ")||"failing"}, failed ${w} polls in a row`}),r=new Set(n.map(({source:d})=>"failing:"+d));return[...g.problems||[],...g.health.alerts.filter(d=>!r.has(d.id||"")).map(d=>d.text),...l,...s.filter(([d])=>!o(d)).map(([d,w])=>t+d+": "+w)]}),ns=(e="")=>{S.settingsAt=e,S.settings=!0},os=E(()=>Bn(S)),Vn=()=>{const e=os.value;if(e==="modal"&&(S.modal=null),e==="note"&&(S.note=""),e==="feedback"&&(S.feedback=!1),e==="whatsNew"&&(S.whatsNew=!1),e==="settings"){if(S.settingsDirty){S.settingsAsk=!0;return}S.settings=!1}},st=new Map,Wn=(e,t)=>{t&&st.set(e,document.activeElement)},Un=(e,t)=>{if(t)return;const s=st.get(e);st.delete(e),s instanceof HTMLElement&&s.focus()},Hn={modal:()=>!!S.modal,note:()=>!!S.note,settings:()=>S.settings,feedback:()=>S.feedback,whatsNew:()=>S.whatsNew};J(()=>g.turn.some(e=>e.row_id===S.note),e=>{e||(S.note="")},{flush:"sync"});Object.entries(Hn).forEach(([e,t])=>{J(t,s=>Wn(e,s),{flush:"sync"}),J(t,s=>Un(e,s),{flush:"post"})});let Ve=-1,nt=0;const Mt=wn(),Ae=(e=S.ws)=>{const t=Mt.next();return Ee("/api/state"+(e?"?ws="+encodeURIComponent(e):"")).then(s=>Mt.accepts(t)?s.error?Xs(s.error)!=="NO_SUCH_WORKSPACE"||!Gs(e)?(S.status=Zs(s.error,"Could not load"),g):Ae(""):(Object.assign(g,s),S.ws=g.workspace.id,S.status="",Zt({workspace:g.workspace.id}),document.title="Whose Turn · "+g.workspace.name,g):g)},as=()=>(Ve=-1,Ae()),Se=Vs("/api/stream",[],{immediate:!1,autoConnect:!1,autoReconnect:!0,serializer:{read:e=>JSON.parse(e||"null")}});J(Se.status,e=>{S.live=e==="OPEN",S.live&&(S.status="",S.reconnects++)},{flush:"sync"});J(Se.error,e=>{e&&(S.status="Disconnected from the local server, retrying…")},{flush:"sync"});J(Se.data,e=>{if(e){if("update"in e){g.update=e.update;return}typeof e.open_moves=="number"&&(g.workspaces=jt(g.workspaces,e.ws,e.open_moves)),!(g.workspace.id&&e.ws!==g.workspace.id)&&(S.status="",e.version!==Ve?(Ve=e.version,nt===0&&Ae()):g.polled_at=e.polled_at)}},{flush:"sync"});const Ln=()=>{Se.eventSource.value||Se.open()},qn=()=>(ss.resume(),Ae().then(Ln)),jn=e=>e===g.workspace.id?Promise.resolve():(Ve=-1,nt++,Ae(e).then(()=>{S.ws===e&&(es.value=S.ws,S.open.clear())},()=>{Fe.value=xe+"; staying on "+g.workspace.name+"."}).finally(()=>{nt--})),ls=(e,t)=>ie(e,{ws:g.workspace.id,...t}),ye=e=>ls("/api/marks",e).then(t=>{const s=ce(t);return s||(Object.assign(g,{marks:t.marks,turn:t.turn,counts:t.counts}),g.workspaces=jt(g.workspaces,g.workspace.id,t.counts.mine)),s},t=>ce(t)),Yn=e=>{S.focusFeed=e},Kn=e=>ls("/api/todos",e).then(t=>{const s=ce(t,{unreachable:tt});return!s&&Array.isArray(t)&&(g.todos=t),s},t=>ce(t,{unreachable:tt})),Tt=e=>Ee("/api/config").then(t=>ie("/api/config",{workspaces:xn(t.workspaces,e),secrets:[]})).then(t=>{de(t,{refused:"The order was not saved"})&&as()},t=>de(t,{refused:"The order was not saved"})),zt=()=>{S.status="Checking now…",ie("/api/refresh").catch(e=>{S.status="",de(e)}),Zt({workspace:g.workspace.id,seed:Math.floor(Math.random()*4294967296)})},Xn="M12 2.5l1.9 5.6 5.6 1.9-5.6 1.9L12 17.5l-1.9-5.6L4.5 10l5.6-1.9L12 2.5zM5 15l.9 2.6 2.6.9-2.6.9L5 22l-.9-2.6-2.6-.9 2.6-.9L5 15zm14-2l.7 2 2 .7-2 .7-.7 2-.7-2-2-.7 2-.7.7-2z",Gn="M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16h-9V7h9v14z",Zn="M19.4 13a7.6 7.6 0 0 0 0-2l2-1.5-2-3.4-2.4 1a7.5 7.5 0 0 0-1.7-1L15 3.5H9l-.3 2.6a7.5 7.5 0 0 0-1.7 1l-2.4-1-2 3.4 2 1.5a7.6 7.6 0 0 0 0 2l-2 1.5 2 3.4 2.4-1a7.5 7.5 0 0 0 1.7 1l.3 2.6h6l.3-2.6a7.5 7.5 0 0 0 1.7-1l2.4 1 2-3.4-2-1.5zM12 15.5a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7z",Jn="M23 12l-2.4-2.8.3-3.7-3.6-.8-1.9-3.2L12 3 8.6 1.5 6.7 4.7l-3.6.8.3 3.7L1 12l2.4 2.8-.3 3.7 3.6.8 1.9 3.2L12 21l3.4 1.5 1.9-3.2 3.6-.8-.3-3.7L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7h2v6z",Qn="M19 8h-1.8a5.9 5.9 0 0 0-1.3-1.9l1.6-1.6-1.4-1.4-1.9 1.9A5.7 5.7 0 0 0 12 4.5a5.7 5.7 0 0 0-2.2.5L7.9 3.1 6.5 4.5l1.6 1.6A5.9 5.9 0 0 0 6.8 8H5v2h1.2a7 7 0 0 0 0 1v1H5v2h1.3a6 6 0 0 0 11.4 0H19v-2h-1.2v-1a7 7 0 0 0 0-1H19V8zm-7 10a4 4 0 0 1-4-4v-3a4 4 0 0 1 8 0v3a4 4 0 0 1-4 4zm-1-7h2v5h-2z",eo=e=>{let t=2166136261;for(let s=0;s<e.length;s+=1)t^=e.charCodeAt(s),t=Math.imul(t,16777619);return t>>>0},is=e=>{const t=String(e||"").trim().split(/[\s_-]+/).filter(Boolean);return(t.length>=2?t.slice(0,3).map(n=>n.charAt(0)):(t[0]||"?").slice(0,2).split("")).join("").toUpperCase()},to=e=>({1:17,2:14,3:11})[e.length]||11,rs=(e,t)=>{const s=t(eo(e.id)),n=[],o=3+Math.floor(s()*3);for(let r=0;r<o;r+=1){const d=s()*Math.PI*2,w=9+s()*7;n.push({cx:(18+Math.cos(d)*w).toFixed(1),cy:(18+Math.sin(d)*w).toFixed(1),r:(1.6+s()*2.2).toFixed(1),opacity:(.35+s()*.4).toFixed(2)})}const l=is(e.name||e.id);return{dots:n,glyph:l,fontSize:to(l)}},so=(e,t)=>{const s=e.dots.map(l=>`<circle cx="${l.cx}" cy="${l.cy}" r="${l.r}" fill="${t.dot}" opacity="${l.opacity}"/>`).join(""),n=e.fontSize>=17?24:23,o=e.glyph.replace(/[&<>]/g,"");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><rect width="36" height="36" rx="10" fill="${t.fill}"/>${s}<text x="18" y="${n}" text-anchor="middle" font-size="${e.fontSize}" font-weight="700" letter-spacing="-0.5" font-family="Roboto, Inter, system-ui, sans-serif" fill="${t.ink}">${o}</text></svg>`},no="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z",oo="M20 18.69L7.84 6.14 5.27 3.49 4 4.76l2.8 2.8v.01c-.52.99-.8 2.16-.8 3.42v5l-2 2v1h13.73l2 2L21 19.72l-1-1.03zM12 22c1.11 0 2-.89 2-2h-4c0 1.11.89 2 2 2zm6-7.32V11c0-3.08-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.15.03-.29.08-.42.12-.1.03-.2.07-.3.11h-.01c-.01 0-.01 0-.02.01-.23.09-.46.2-.68.31 0 0-.01 0-.01.01L18 14.68z",It='a[href], button:not([disabled]), input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"])',ao="input, textarea, select, [contenteditable]",lo=(e,t,s)=>{if(!e.length)return null;const n=s?e[0]:e[e.length-1];return t===n||!e.some(o=>o===t)?s?e[e.length-1]:e[0]:null},io=e=>{let t=null;J(e,s=>{s?(t=document.activeElement,_e(()=>{var l;const n=document.querySelectorAll(".modal"),o=n[n.length-1];o&&!o.contains(document.activeElement)&&((l=o.querySelector(It))==null||l.focus())})):(t==null||t.focus(),t=null)}),ct("Tab",s=>{if(!e.value)return;const n=document.querySelectorAll(".modal"),o=n[n.length-1],l=o?[...o.querySelectorAll(It)]:[],r=lo(l,document.activeElement,s.shiftKey);r&&(s.preventDefault(),r.focus())},{target:document})},Ot={"/":".feed__search-input",t:".todos__input"},ro=e=>ct(Object.keys(Ot),t=>{const s=t.target;if(e.value||t.metaKey||t.ctrlKey||t.altKey||s!=null&&s.closest(ao))return;const n=document.querySelector(Ot[t.key]);n&&(t.preventDefault(),n.focus())},{target:document}),co=30,Bt=(e,t,s)=>Math.round(Math.max(t,Math.min(s,e))),uo=(e,t)=>Math.ceil(e+(t>1?co:0)),ho=(e,t,s)=>e-t*s.length-s.reduce((n,o)=>n+(o.collapsed?o.height:o.floor),0),pt=e=>{const t=we("wt-panel-sizes",{},{writeDefaults:!1});return{size:E(()=>t.value[kt(e)]??null),set:o=>{const l=kt(e);if(!l)return;const{[l]:r,...d}=t.value;t.value=o===null?d:{...d,[l]:o}}}},po="Unreleased",_o=(e,t,s)=>{const n=e.filter(r=>r.version!==po),o=n.findIndex(r=>r.version===s);if(!t||o<0||t===s)return[];const l=n.findIndex(r=>r.version===t);return n.slice(o,l<0?o+1:l)},fo=e=>e.sections.map(t=>`### ${t.kind}
2
+ ${t.items.map(s=>`- ${s}`).join(`
3
+ `)}`).join(`
4
+
5
+ `),vo="wt-seen-version",_t=Hs(()=>{const e=we(vo,""),t=B(null),s=B(""),n=E(()=>t.value?_o(t.value.versions,e.value,t.value.current):[]);return{changelog:t,problem:s,unseen:n,load:async()=>{s.value="";try{const r=await Ee("/api/changelog");if(r.error){s.value=dt(r.error).join(" · ");return}t.value=r,e.value||(e.value=r.current)}catch{s.value=xe}},markSeen:()=>{t.value&&(e.value=t.value.current)}}}),mo={class:"rail","aria-label":"Workspaces"},go=["data-drop","href","aria-label","aria-selected","onClick","onKeydown","onDragstart","onDragover","onDrop"],yo={viewBox:"0 0 36 36",class:"rail__icon","aria-hidden":"true"},wo=["fill"],ko=["cx","cy","r","fill","opacity"],bo=["y","font-size","fill"],$o={class:"rail__label"},xo={key:0,class:"rail__warn",title:"A source of this workspace fails"},So={key:1,class:"rail__badge"},Co={viewBox:"0 0 24 24",class:"rail__gear","aria-hidden":"true"},Eo=["d"],Ro={key:0,class:"rail__dot",title:"Unseen changes"},Ao={viewBox:"0 0 24 24",class:"rail__gear","aria-hidden":"true"},Mo=["d"],To=q({__name:"Rail",emits:["settings","whatsNew"],setup(e,{emit:t}){const s=t,{unseen:n}=_t(),o=E(()=>Object.fromEntries(g.workspaces.map(y=>[y.id,rs(y,rt)]))),l=E(()=>Object.fromEntries(g.workspaces.map(y=>{const C=y.theme?y.theme[Ce.value?"dark":"light"]:null;return[y.id,{fill:C?C["--md-primary-container"]:"var(--md-primary-container)",ink:C?C["--md-on-primary-container"]:"var(--md-on-primary-container)",dot:C?C["--md-primary"]:"var(--md-primary)"}]}))),r=y=>y.id===g.workspace.id?Object.keys(g.errors||{}).length>0:!!y.failing_sources,d=y=>{y.detail>0&&y.currentTarget.blur()},w=(y,C)=>{d(y),jn(C)},f=y=>{s("settings"),d(y)},p=y=>{s("whatsNew"),d(y)},k=async(y,C)=>{const A=y.key==="ArrowUp"?-1:y.key==="ArrowDown"?1:0,D=g.workspaces.map(U=>U.id),b=D.indexOf(C.id);if(!y.altKey||!A||b+A<0||b+A>=D.length)return;y.preventDefault();const F=y.currentTarget;D.splice(b+A,0,...D.splice(b,1)),await Tt(D),await _e(),F.focus()},u=B(""),h=B({}),m=y=>{const C=y.currentTarget;return y.clientY-C.getBoundingClientRect().top<C.offsetHeight/2},R=(y,C)=>{u.value=C.id,y.dataTransfer&&(y.dataTransfer.effectAllowed="move",y.dataTransfer.setData("text/plain",C.id))},P=()=>{u.value="",h.value={}},Y=(y,C)=>{if(!u.value||u.value===C.id)return;y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="move");const A=m(y)?"before":"after";(h.value.id!==C.id||h.value.side!==A)&&(h.value={id:C.id,side:A})},$=(y,C)=>{if(!u.value||u.value===C.id)return;y.preventDefault();const A=Sn(g.workspaces.map(D=>D.id),u.value,C.id,m(y));h.value={},Tt(A)};return(y,C)=>(i(),c("nav",mo,[(i(!0),c(W,null,X(_(g).workspaces,A=>(i(),c("a",{key:A.id,class:L(["rail__item",{"rail__item--dragging":u.value===A.id}]),"data-drop":h.value.id===A.id?h.value.side:null,href:"?ws="+encodeURIComponent(A.id),"aria-label":A.name,"aria-selected":A.id===_(g).workspace.id,draggable:"true",onClick:ee(D=>w(D,A.id),["prevent"]),onKeydown:D=>k(D,A),onDragstart:D=>R(D,A),onDragend:P,onDragover:D=>Y(D,A),onDragleave:C[0]||(C[0]=D=>h.value={}),onDrop:D=>$(D,A)},[(i(),c("svg",yo,[a("rect",{x:"0",y:"0",width:"36",height:"36",rx:"10",fill:l.value[A.id].fill},null,8,wo),(i(!0),c(W,null,X(o.value[A.id].dots,(D,b)=>(i(),c("circle",{key:b,cx:D.cx,cy:D.cy,r:D.r,fill:l.value[A.id].dot,opacity:D.opacity},null,8,ko))),128)),a("text",{x:"18",y:o.value[A.id].fontSize>=17?24:23,"text-anchor":"middle","font-size":o.value[A.id].fontSize,"font-weight":"700","letter-spacing":"-0.5","font-family":"Roboto, Inter, system-ui, sans-serif",fill:l.value[A.id].ink},v(o.value[A.id].glyph),9,bo)])),a("span",$o,v(A.name),1),r(A)?(i(),c("span",xo,"!")):x("",!0),A.open_moves?(i(),c("span",So,v(A.open_moves),1)):x("",!0)],42,go))),128)),C[3]||(C[3]=a("span",{class:"rail__spacer"},null,-1)),a("a",{class:"rail__item",href:"#whats-new","aria-label":"What's new",onClick:ee(p,["prevent"])},[(i(),c("svg",Co,[a("path",{d:_(Jn),fill:"currentColor"},null,8,Eo)])),C[1]||(C[1]=a("span",{class:"rail__label"},"What's new",-1)),_(n).length?(i(),c("span",Ro)):x("",!0)]),a("a",{class:"rail__item",href:"#settings","aria-label":"Settings",onClick:ee(f,["prevent"])},[(i(),c("svg",Ao,[a("path",{d:_(Zn),fill:"currentColor"},null,8,Mo)])),C[2]||(C[2]=a("span",{class:"rail__label"},"Settings",-1))])]))}}),zo=j(To,[["__scopeId","data-v-ffe046bc"]]),Je=" · checks every minute",cs=(e,t,s,n)=>{const o=e.failing.map(r=>r.source),l=t?re(t):"—";return o.length&&o.length>=s?{dot:"off",text:"No data: "+o.join(", ")+" failing · last data "+re(e.fresh_at),failing:o,noData:!0}:e.stale?{dot:"off",text:"Stale · last data "+re(e.fresh_at)+Je,failing:o,noData:!1}:o.length?{dot:n?"warn":"off",text:o.join(", ")+" failing · last check "+l+Je,failing:o,noData:!1}:{dot:n?"ok":"off",text:"Live · last check "+l+Je,failing:o,noData:!1}},Io=["data-tip"],Oo={class:"ai-button__icon",viewBox:"0 0 24 24","aria-hidden":"true"},Bo=["d"],Do={class:"ai-button__badge",viewBox:"0 0 24 24","aria-hidden":"true"},No=["d"],Po=q({__name:"AiButton",props:{query:{},big:{type:Boolean}},setup(e){const t=e,s={"":"Copy for AI: this with its context as text, ready to paste into Claude or any other assistant",sent:"Copied",failed:"Could not copy"},n=He("",1600),o=E(()=>s[n.value]),l=B(null);J(o,d=>{var w,f;return(f=(w=l.value)==null?void 0:w._tippy)==null?void 0:f.setContent(d)});const r=()=>Js(t.query).then(d=>navigator.clipboard.writeText(d)).then(()=>{n.value="sent"},()=>{n.value="failed"});return(d,w)=>(i(),c("button",{ref_key:"button",ref:l,type:"button",class:L(["ai-button",{"ai-button--big":e.big,"ai-button--sent":_(n)==="sent","ai-button--failed":_(n)==="failed"}]),"aria-label":"Copy for AI","data-tip":o.value,onClick:ee(r,["stop"])},[(i(),c("svg",Oo,[a("path",{d:_(Gn),fill:"currentColor"},null,8,Bo)])),(i(),c("svg",Do,[a("path",{d:_(Xn),fill:"currentColor"},null,8,No)]))],10,Io))}}),ve=j(Po,[["__scopeId","data-v-46197bdc"]]),ot="wt-updated-to",Fo=()=>window.location.reload(),Vo=e=>{try{sessionStorage.setItem(ot,e)}catch{}},Wo=()=>{try{const e=sessionStorage.getItem(ot)||"";return sessionStorage.removeItem(ot),e}catch{return""}},Uo={key:2,class:"update-chip update-chip--busy",role:"status"},Ho=["title"],Lo=15e3,qo=9e4,jo=q({__name:"UpdateChip",setup(e){const t=B("");let s="";const n=B(""),o=B(!1),l=He("",Lo),r=E(()=>g.update),d=E(()=>r.value.state==="restarting"||!!t.value&&!S.live),w=E(()=>!n.value&&(r.value.state==="installing"||d.value||!!t.value)),{start:f,stop:p}=Ls(()=>o.value=!0,qo,{immediate:!1});it(()=>{l.value=Wo()}),J(()=>r.value.current,h=>{if(h){if(!s){s=h;return}h!==s&&(n.value=h,t.value="",p())}},{immediate:!0});const k=()=>{if(w.value)return;o.value=!1,t.value=r.value.latest,f();const h=m=>{if(!de(m,{refused:"The update did not start"})){t.value="",p();return}g.update=m.update};ie("/api/update").then(h,h)},u=()=>{n.value&&Vo(n.value),Fo()};return(h,m)=>_(l)?(i(),c("button",{key:0,type:"button",class:"update-chip update-chip--done",title:"See what changed",onClick:m[0]||(m[0]=R=>_(S).whatsNew=!0)}," Updated to "+v(_(l)),1)):n.value?(i(),c("button",{key:1,type:"button",class:"update-chip update-chip--ready",title:"Reload the window to apply the changes",onClick:u}," Updated to "+v(n.value)+" · Reload ",1)):w.value?(i(),c("span",Uo,[m[1]||(m[1]=a("span",{class:"update-chip__spinner","aria-hidden":"true"},null,-1)),G(v(d.value?"Restarting…":`Installing ${t.value||r.value.latest}…`),1),o.value?(i(),c("button",{key:0,type:"button",class:"update-chip__link",title:"The restart is taking longer than usual",onClick:u}," Reload ")):x("",!0)])):r.value.available&&r.value.state==="failed"?(i(),c("button",{key:3,type:"button",class:"update-chip update-chip--failed",title:r.value.reason,onClick:k}," Update failed · Retry ",8,Ho)):r.value.available?(i(),c("button",{key:4,type:"button",class:"update-chip",onClick:k},v(r.value.latest)+" is out · Update ",1)):x("",!0)}}),Yo=j(jo,[["__scopeId","data-v-c5c2c37f"]]),Ko=["aria-checked","data-tip"],Xo={class:"notifications-toggle__icon",viewBox:"0 0 24 24","aria-hidden":"true"},Go=["d"],Zo=q({__name:"NotificationsToggle",setup(e){const t=E(()=>g.notifications.desktop),s=B(!1),n=async()=>{if(s.value)return;s.value=!0;const o=g.notifications;g.notifications={desktop:!o.desktop};const l=r=>{de(r,{refused:"The notification setting was not saved"})||(g.notifications=o)};await ie("/api/notifications",{desktop:g.notifications.desktop}).then(l,l),s.value=!1};return(o,l)=>(i(),c("button",{type:"button",role:"switch",class:L(["btn notifications-toggle",{"notifications-toggle--off":!t.value}]),"aria-checked":t.value,"data-tip":t.value?"Desktop notifications are on for every workspace. Click to turn them all off; the window and Claude's session summary keep updating.":"Desktop notifications are off for every workspace. The window and Claude's session summary still update. Click to turn them back on.",onClick:n},[(i(),c("svg",Xo,[a("path",{d:t.value?_(no):_(oo),fill:"currentColor"},null,8,Go)])),G(v(t.value?"Notifications on":"Notifications off"),1)],10,Ko))}}),Jo=j(Zo,[["__scopeId","data-v-6704e5f1"]]),Qo={class:"status-bar"},ea={class:"status-bar__icon",viewBox:"0 0 24 24","aria-hidden":"true"},ta=["d"],sa={key:0,class:"status-bar__notice",role:"alert"},na=["href"],oa=["aria-disabled"],aa=5e3,la=q({__name:"StatusBar",emits:["report"],setup(e,{emit:t}){const s=t,n=E(()=>(fe.value,cs(g.health,g.polled_at,g.workspace.connectors.length,S.live))),o=B(!1),l=B(!1),r=E(()=>l.value?"Opened in the app window. You can close this tab.":S.status||n.value.text),d=f=>de(f,{refused:"The app window did not open"}),w=()=>{if(o.value)return;o.value=!0,setTimeout(()=>o.value=!1,aa);const f=p=>{d(p),l.value=!ce(p)};ie("/api/open",{mode:"app"}).then(f,f)};return(f,p)=>(i(),c("div",Qo,[a("button",{type:"button",class:"btn status-bar__btn status-bar__report",title:"A bug or a wish about this monitor, straight to its backlog",onClick:p[0]||(p[0]=k=>s("report"))},[(i(),c("svg",ea,[a("path",{d:_(Qn),fill:"currentColor"},null,8,ta)])),p[2]||(p[2]=G("Report ",-1))]),a("span",{class:L(["status-bar__live",{"status-bar__live--off":n.value.dot==="off","status-bar__live--warn":n.value.dot==="warn"}])},null,2),a("span",null,v(r.value),1),_(Fe)?(i(),c("span",sa,v(_(Fe)),1)):x("",!0),N(Yo),N(Jo),a("button",{type:"button",class:"btn status-bar__btn",onClick:p[1]||(p[1]=(...k)=>_(zt)&&_(zt)(...k))},"Refresh now"),_(S).mode==="app"?(i(),c("a",{key:1,class:"btn status-bar__btn",href:_(Nn)(_(S).ws),target:"_blank",rel:"noopener"},"Open in browser",8,na)):(i(),c("button",{key:2,type:"button",class:L(["btn status-bar__btn",{"status-bar__btn--busy":o.value}]),"aria-disabled":o.value,onClick:w},v(o.value?"Opening…":"Open as app"),11,oa)),N(ve,{query:{all:"1"}}),p[3]||(p[3]=a("span",{class:"ai-hint status-bar__ai-hint"},"Copy for AI: everything",-1))]))}}),ia=j(la,[["__scopeId","data-v-940c94f2"]]),ds=e=>{const t=we("wt-collapsed",[],{writeDefaults:!1}),s=E(()=>t.value.includes(e));return{collapsed:s,toggle:()=>{t.value=s.value?t.value.filter(o=>o!==e):[...t.value,e]}}},ra=["href"],ca={key:1},le=q({__name:"ExtLink",props:{text:{default:""},url:{default:""}},setup(e){const t=e,s=E(()=>ut(t.url));return(n,o)=>s.value?(i(),c("a",{key:0,href:s.value,target:"_blank",rel:"noopener"},v(e.text),9,ra)):(i(),c("span",ca,v(e.text),1))}}),da={class:"workspace-header__title"},ua={class:"workspace-header__name"},ha={key:0,class:"workspace-header__line workspace-header__strip"},pa={class:"workspace-header__count"},_a={class:"workspace-header__count"},fa={class:"workspace-header__count"},va={class:"workspace-header__count"},ma={class:"workspace-header__line workspace-header__give"},ga={class:"workspace-header__links"},ya={class:"workspace-header__tiles"},wa={class:"workspace-header__tile-value"},ka={class:"workspace-header__tile"},ba={class:"workspace-header__tile-value"},$a={class:"workspace-header__tile-value"},xa={class:"workspace-header__tile"},Sa={class:"workspace-header__tile-value"},Ca=q({__name:"WorkspaceHeader",setup(e){const{collapsed:t,toggle:s}=ds("header");return(n,o)=>(i(),c("header",{id:"summary",class:L(["island workspace-header",{"workspace-header--collapsed":_(t)}])},[a("div",da,[a("h1",ua,v(_(g).workspace.name||"Whose Turn"),1),_(t)?(i(),c("p",ha,[o[1]||(o[1]=G(" Your move ",-1)),a("b",pa,v(_(ae).mine),1),o[2]||(o[2]=G(" · Waiting on others ",-1)),a("b",_a,v(_(ae).others),1),o[3]||(o[3]=G(" · Failing ",-1)),a("b",fa,v(_(ae).failing),1),o[4]||(o[4]=G(" · Done ",-1)),a("b",va,v(_(ae).done),1)])):x("",!0),a("p",ma,[N(ve,{query:{ws:_(g).workspace.id,kind:"workspace"},big:""},null,8,["query"]),o[5]||(o[5]=a("span",{class:"ai-hint"},"Copy for AI: this workspace",-1)),a("span",ga,[(i(!0),c(W,null,X(_(g).workspace.links||[],l=>(i(),K(le,{key:l.url,text:l.label,url:l.url,title:l.url},null,8,["text","url","title"]))),128))])])]),a("button",{type:"button",class:L(["fold-toggle workspace-header__fold",{"fold-toggle--folded":_(t)}]),"aria-label":"Fold the header","data-tip":"Fold the header; it stays folded until you open it again",onClick:o[0]||(o[0]=ee((...l)=>_(s)&&_(s)(...l),["stop"]))}," ▾ ",2),a("div",ya,[a("div",{class:L(["workspace-header__tile",{"workspace-header__tile--you":_(ae).mine>0}])},[o[6]||(o[6]=a("span",{class:"workspace-header__tile-label"},"Your move",-1)),a("strong",wa,v(_(ae).mine),1)],2),a("div",ka,[o[7]||(o[7]=a("span",{class:"workspace-header__tile-label"},"Waiting on others",-1)),a("strong",ba,v(_(ae).others),1)]),a("div",{class:L(["workspace-header__tile",{"workspace-header__tile--fail":_(ae).failing}])},[o[8]||(o[8]=a("span",{class:"workspace-header__tile-label"},"Open PRs with failing checks",-1)),a("strong",$a,v(_(ae).failing),1)],2),a("div",xa,[o[9]||(o[9]=a("span",{class:"workspace-header__tile-label"},"Done in the last 30 days",-1)),a("strong",Sa,v(_(ae).done),1)])])],2))}}),Ea=j(Ca,[["__scopeId","data-v-3421a7f0"]]),ft=e=>{J(()=>S.reconnects,e)},Ra=q({__name:"Chevron",props:{open:{type:Boolean},tag:{default:"button"}},setup(e){return(t,s)=>(i(),K(Ms(e.tag),{class:L(["chevron",{"chevron--open":e.open}]),type:e.tag==="button"?"button":void 0,"aria-expanded":e.tag==="button"?e.open:void 0},null,8,["class","type","aria-expanded"]))}}),qe=j(Ra,[["__scopeId","data-v-a14fa9ba"]]),Aa=["aria-orientation","aria-label"],Dt=16,Ma=q({__name:"ResizeHandle",props:{label:{},axis:{},bounds:{type:Function},grow:{},top:{type:Boolean}},emits:["resize","reset"],setup(e,{emit:t}){const s=e,n=t,o=s.grow??1;let l={pointer:0,size:0,min:0,max:0};const r=p=>s.axis==="y"?p.clientY:p.clientX,d=p=>{const{current:k,min:u,max:h}=s.bounds();l={pointer:r(p),size:k,min:u,max:h},p.currentTarget.setPointerCapture(p.pointerId)},w=p=>{if(!p.currentTarget.hasPointerCapture(p.pointerId))return;const k=(r(p)-l.pointer)*o;n("resize",Bt(l.size+k,l.min,l.max))},f=p=>{const k=s.axis==="y"?"ArrowDown":"ArrowRight",u=s.axis==="y"?"ArrowUp":"ArrowLeft";if(p.key!==k&&p.key!==u)return;p.preventDefault();const{current:h,min:m,max:R}=s.bounds(),P=(p.key===k?Dt:-Dt)*o;n("resize",Bt(h+P,m,R))};return(p,k)=>(i(),c("div",{class:L(["resize-handle",["resize-handle--"+e.axis,{"resize-handle--top":e.top}]]),role:"separator",tabindex:"0","aria-orientation":e.axis==="y"?"horizontal":"vertical","aria-label":e.label,"data-tip":"Drag to resize; double click to reset",onPointerdown:ee(d,["prevent"]),onPointermove:w,onKeydown:f,onDblclick:k[0]||(k[0]=u=>n("reset"))},null,42,Aa))}}),us=j(Ma,[["__scopeId","data-v-8e637688"]]),Ta=["id"],za={class:"island__head"},Ia={class:"island__title"},Oa={class:"island__note"},Ba={class:"island__note-text"},Da=["aria-label","data-tip"],Na={class:"island__body"},Pa=280,Fa=360,Va=q({__name:"Island",props:{id:{},sizeKey:{default:""},title:{},note:{default:""},tip:{default:""},column:{type:Boolean},resize:{default:"height"}},setup(e){const t=e,{collapsed:s,toggle:n}=ds(t.id),{size:o,set:l}=pt(()=>t.sizeKey),r=Ue("root"),d=B(0),w=B(!0),f=$=>parseFloat($)||0,p=($,y)=>{let C=0;for(let A=$.parentElement;A&&A!==y;A=A.parentElement)C+=A.scrollTop;return C},k=($,y)=>{const C=[...$.children].find(D=>D.contains(y));return(C?[...$.children].slice([...$.children].indexOf(C)+1):[]).filter(D=>!D.classList.contains("row-scroll__more")).reduce((D,b)=>{const F=b;return D+(f(getComputedStyle(F).minHeight)||F.offsetHeight)},0)},u=()=>{const $=r.value,y=$==null?void 0:$.querySelector(".island__body");if(!$||!y||s.value||t.resize!=="height")return;const C=y.querySelectorAll("tbody > tr, .todos__list > li"),A=w.value;w.value=C.length>0;const D=$.getBoundingClientRect().top,b=f(getComputedStyle(y).paddingBottom);if(!C.length){d.value=A?0:Math.ceil(y.offsetTop+y.scrollHeight);return}const F=C[0].getBoundingClientRect().bottom-D+p(C[0],$);d.value=uo(F+k(y,C[0])+b+2,C.length)};let h=0;const m=()=>{cancelAnimationFrame(h),h=requestAnimationFrame(u)};it(()=>{var y;const $=(y=r.value)==null?void 0:y.querySelector(".island__body");$&&(qs($,m,{childList:!0,subtree:!0}),js($,m)),m()});const R=E(()=>o.value!==null&&t.resize==="height"&&w.value),P=$=>{var y;return[...((y=$.parentElement)==null?void 0:y.children)??[]].filter(C=>C!==$&&C instanceof HTMLElement).map(C=>({collapsed:C.classList.contains("island--collapsed"),height:C.offsetHeight,floor:f(C.style.getPropertyValue("--island-floor"))}))},Y=()=>{const $=r.value;if(u(),t.resize==="width"){const A=$.parentElement,D=f(getComputedStyle(A).columnGap);return{current:$.offsetWidth,min:Pa,max:A.clientWidth-D-Fa}}const y=$.parentElement,C=f(getComputedStyle(y).rowGap);return{current:$.offsetHeight,min:d.value,max:Math.max(ho(y.clientHeight,C,P($)),y.clientHeight)}};return($,y)=>(i(),c("section",{id:e.id,ref_key:"root",ref:r,class:L(["island",{"island--collapsed":_(s),"island--column":e.column,"island--sized":R.value}]),style:Ne(e.resize==="height"?{"--island-floor":d.value+"px","--island-height":(R.value?_(o):0)+"px"}:void 0)},[a("div",za,[N(qe,{open:!_(s),"aria-label":"Fold "+e.title,"data-tip":"Fold this panel; it stays folded until you open it again",onClick:ee(_(n),["stop"])},null,8,["open","aria-label","onClick"]),a("h2",Ia,[G(v(e.title)+" ",1),me($.$slots,"head",{},void 0)]),a("p",Oa,[a("span",Ba,v(e.note),1),e.tip?(i(),c("button",{key:0,type:"button",class:"hint-icon","aria-label":"About "+e.title,"data-tip":e.tip,"data-tip-click":""}," ? ",8,Da)):x("",!0)])]),a("div",Na,[me($.$slots,"default",{},void 0)]),_(s)?x("",!0):(i(),K(us,{key:0,label:"Resize "+e.title,axis:e.resize==="width"?"x":"y",grow:e.resize==="width"?-1:1,bounds:Y,onResize:_(l),onReset:y[0]||(y[0]=C=>_(l)(null))},null,8,["label","axis","grow","onResize"]))],14,Ta))}}),je=j(Va,[["__scopeId","data-v-53a904f0"]]),Wa=["aria-label"],Ua=["aria-pressed","onClick"],Ha={key:0,class:"count"},La=q({__name:"Segmented",props:et({options:{},label:{default:""},chips:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Vt(e,"modelValue");return(s,n)=>(i(),c("span",{class:L(["segmented",{"segmented--chips":e.chips}]),role:"group","aria-label":e.label},[(i(!0),c(W,null,X(e.options,o=>(i(),c("button",{key:o.id,type:"button",class:"segmented__option","aria-pressed":t.value===o.id,onClick:l=>t.value=o.id},[G(v(o.label),1),o.count!==void 0?(i(),c("b",Ha,v(o.count),1)):x("",!0)],8,Ua))),128))],10,Wa))}}),We=j(La,[["__scopeId","data-v-201d5e2f"]]),qa={class:"ticket-cell"},ja={class:"ticket-cell__summary"},Ya=q({__name:"TicketCell",props:{row:{}},setup(e){return(t,s)=>(i(),c("td",qa,[N(le,{text:e.row.key,url:_(Yt)(e.row)?e.row.pr_url:e.row.ticket_url,class:"ticket-key"},null,8,["text","url"]),a("span",ja,v(e.row.summary),1)]))}}),vt=j(Ya,[["__scopeId","data-v-e2d11a0b"]]),Ka={key:0,class:"pr-cell"},Xa={key:1,class:"pill"},Ga=q({__name:"PrCell",props:{row:{}},setup(e){return(t,s)=>(i(),c("td",null,[e.row.pr&&!_(Yt)(e.row)?(i(),c("span",Ka,[N(le,{text:e.row.pr,url:e.row.pr_url,class:"pr-cell__link"},null,8,["text","url"]),e.row.pr_state==="OPEN"&&e.row.checks?(i(),c("span",{key:0,class:L(["pill",_(Re)("pill",_(Qs)(e.row.checks))])},v(e.row.checks),3)):e.row.pr_state?(i(),c("span",Xa,v(e.row.pr_state.toLowerCase()),1)):x("",!0)])):x("",!0)]))}}),hs=j(Ga,[["__scopeId","data-v-6078ccbd"]]),Za=["open"],Ja={class:"recently-done__summary"},Qa={class:"count"},el={class:"table"},tl=["data-tip"],sl={class:"table__actions"},nl=480,ol=q({__name:"RecentlyDone",setup(e){const{size:t,set:s}=pt(()=>`${g.workspace.id}:recently-done`),n=Ue("list"),o=f=>{var k;const p=(k=f.closest(".island__body"))==null?void 0:k.querySelector(".row-scroll");return p?Math.max(0,p.clientHeight-(parseFloat(getComputedStyle(p).minHeight)||0)):0},l=()=>{const f=n.value,k=(f.querySelector("tbody > tr")??f).getBoundingClientRect().bottom-f.getBoundingClientRect().top,u=parseFloat(getComputedStyle(f).paddingBottom)||0;return{current:f.offsetHeight,min:Math.ceil(k+f.scrollTop+u),max:Math.min(nl,f.offsetHeight+o(f))}},r=we("wt-recent-open",!1,{writeDefaults:!1,serializer:{read:f=>f==="1",write:f=>f?"1":"0"}}),d=f=>{r.value=f.target.open},w=E(()=>(fe.value,en(g.turn).map(f=>({row:f,since:ht(f.status_since||f.updated)}))));return(f,p)=>w.value.length?(i(),c("details",{key:0,class:"recently-done",open:_(r),onToggle:d},[a("summary",Ja,[N(qe,{tag:"span",open:_(r)},null,8,["open"]),p[1]||(p[1]=G(" Recently done ",-1)),a("span",Qa,v(w.value.length),1)]),a("div",{ref_key:"list",ref:n,class:"recently-done__list",style:Ne(_(t)===null?void 0:{maxHeight:_(t)+"px",height:_(t)+"px"})},[a("table",el,[p[2]||(p[2]=a("thead",null,[a("tr",null,[a("th",null,"Ticket"),a("th",null,"Status"),a("th",null,"Done"),a("th",{class:"table__actions-col"},[a("span",{class:"visually-hidden"},"Copy for AI")])])],-1)),a("tbody",null,[(i(!0),c(W,null,X(w.value,({row:k,since:u})=>(i(),c("tr",{key:k.row_id},[N(vt,{row:k},null,8,["row"]),a("td",null,[a("span",{class:L(["pill",_(Re)("pill",_(Kt)(k.status_group))])},v(k.status),3)]),a("td",null,[a("span",{class:"age","data-tip":"Done "+_(Le)(k.status_since||k.updated)},v(u.text),9,tl)]),a("td",sl,[N(ve,{class:"table__ai",query:{ws:_(g).workspace.id,kind:"row",ref:k.row_id}},null,8,["query"])])]))),128))])])],4),_(r)?(i(),K(us,{key:0,label:"Resize Recently done",axis:"y",top:"",grow:-1,bounds:l,onResize:_(s),onReset:p[0]||(p[0]=k=>_(s)(null))},null,8,["onResize"])):x("",!0)],40,Za)):x("",!0)}}),al=j(ol,[["__scopeId","data-v-68a4b78e"]]),ll=13,il=q({__name:"RowScroll",props:{floor:{type:Boolean}},setup(e){const t=B(null),s=B(null),{y:n}=Ys(t),{height:o}=$t(t),{height:l}=$t(s),r=()=>{var u,h,m;return[...((m=(h=(u=s.value)==null?void 0:u.querySelector("table"))==null?void 0:h.tBodies[0])==null?void 0:m.rows)||[]]},d=()=>r().filter(u=>!("rowTail"in u.dataset)),w=u=>{const h=u.nextElementSibling;return((h==null?void 0:h.dataset.rowTail)!==void 0?h:u).getBoundingClientRect().bottom},f=()=>{const u=t.value;return u?u.getBoundingClientRect().top+u.clientTop+u.clientHeight:0},p=E(()=>(n.value,o.value,l.value,tn(d().map(w),f(),ll))),k=()=>{var Y,$;const u=t.value,h=d(),m=h[h.length-p.value];if(!u||!m)return;const P=(($=(Y=s.value)==null?void 0:Y.querySelector("thead"))==null?void 0:$.getBoundingClientRect().bottom)??u.getBoundingClientRect().top;u.scrollBy({top:m.getBoundingClientRect().top-P,behavior:"smooth"})};return(u,h)=>(i(),c(W,null,[a("div",{ref_key:"scroller",ref:t,class:L(["row-scroll",{"row-scroll--floor":e.floor}])},[a("div",{ref_key:"content",ref:s},[me(u.$slots,"default",{},void 0)],512)],2),p.value?(i(),c("button",{key:0,type:"button",class:"row-scroll__more",onClick:k}," +"+v(p.value)+" more ",1)):x("",!0)],64))}}),ps=j(il,[["__scopeId","data-v-e7f699d1"]]),rl=B("open"),cl=()=>rl,dl={key:0,class:"your-move__undo",role:"status"},ul={class:"table"},hl={key:0},pl={key:1,class:"hide-narrow"},_l={class:"hint-row"},fl={class:"your-move__next"},vl=["data-tip"],ml=["data-tip"],gl=["data-tip"],yl={key:0,class:"alert alert--inline your-move__problem",role:"alert"},wl={class:"table__actions"},kl=["aria-label","onClick"],bl={colspan:"99",class:"your-move__line-cell"},$l=["onClick"],xl={class:"your-move__outcome"},Sl={class:"your-move__time"},Cl={key:1,class:"empty"},El=q({__name:"YourMove",setup(e){const t=cl(),s=E(()=>{fe.value;const u=sn(g.turn,t.value,g.marks.info,S.note),h=u.rows.map(m=>{const R=g.marks.info[m.row.row_id],P=!!(R!=null&&R.auto);return{...m,age:ht(m.row.activity_at),auto:P,lined:P||!!(R!=null&&R.note),line:(P?R==null?void 0:R.outcome:R==null?void 0:R.note)||""}});return{...u,rows:h}}),n=E(()=>Xt(s.value.rows.map(u=>u.row))),o=E(()=>s.value.rows.some(u=>u.row.comment)),l=E(()=>[{id:"open",label:"Open",count:s.value.open},{id:"handled",label:"Handled",count:s.value.handled}]),r=E(()=>{if(t.value==="handled")return"Nothing marked as handled.";const{noData:u,failing:h}=cs(g.health,g.polled_at,g.workspace.connectors.length,S.live);return u?"No data: "+h.join(", ")+(h.length===1?" is":" are")+" failing. Check Settings.":"Nothing is waiting on you."}),d=lt(new Map);ft(()=>d.clear());const w=u=>new Date(g.marks.handled[u.row.row_id]||"").toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"}),f=async u=>{const h=u.row.row_id,m=!u.handled,R=await ye({handled:{[h]:m?new Date().toISOString():null}});R?d.set(h,R):(d.delete(h),p.value=m?h:"",S.note=m?h:"")},p=He("",8e3),k=()=>{const u=p.value;return p.value="",ye({handled:{[u]:null}})};return(u,h)=>(i(),K(je,{id:"your-move","size-key":`${_(g).workspace.id}:your-move`,title:"Your move",note:"Next step is yours",tip:"Each row is something where the next step is yours. Ticket, PR and comment open in a new tab."},{head:te(()=>[N(We,{modelValue:_(t),"onUpdate:modelValue":h[0]||(h[0]=m=>Ts(t)?t.value=m:null),options:l.value,label:"Show",class:"your-move__view"},null,8,["modelValue","options"])]),default:te(()=>[_(p)?(i(),c("p",dl,[h[1]||(h[1]=G(" Marked handled. ",-1)),a("button",{type:"button",class:"your-move__undo-btn",onClick:k},"Undo")])):x("",!0),N(ps,{floor:""},{default:te(()=>[a("table",ul,[a("thead",null,[a("tr",null,[h[2]||(h[2]=a("th",null,"Ticket",-1)),h[3]||(h[3]=a("th",null,"Next step",-1)),n.value?(i(),c("th",hl,"PR")):x("",!0),o.value?(i(),c("th",pl,"Last comment")):x("",!0),h[4]||(h[4]=a("th",{class:"table__actions-col"},[a("span",{class:"visually-hidden"},"Mark")],-1))])]),a("tbody",null,[(i(!0),c(W,null,X(s.value.rows,m=>(i(),c(W,{key:m.row.row_id},[a("tr",{class:L(["your-move__row",{"your-move__row--handled":m.handled,"your-move__row--lined":m.lined}])},[N(vt,{row:m.row},null,8,["row"]),a("td",null,[a("span",_l,[a("span",fl,v(m.row.next),1),m.age.text?(i(),c("span",{key:0,class:L(["age",{"age--old":m.age.old}]),"data-tip":"Waiting since "+_(Le)(m.row.activity_at)},v(m.age.text),11,vl)):x("",!0),m.row.why?(i(),c("button",{key:1,type:"button",class:"hint-label","aria-label":"Why this is your move","data-tip":m.row.why,"data-tip-click":""}," why ",8,ml)):x("",!0),m.handled&&!m.auto?(i(),c("span",{key:2,class:"handled-chip","data-tip":"Marked "+_(re)(_(g).marks.handled[m.row.row_id]||"")+". Comes back in 7 days if it is still open, or sooner when something new happens."},"handled",8,gl)):x("",!0)]),d.get(m.row.row_id)?(i(),c("p",yl,v(d.get(m.row.row_id)),1)):x("",!0)]),n.value?(i(),K(hs,{key:0,row:m.row},null,8,["row"])):x("",!0),o.value?(i(),c("td",{key:1,class:L(["hide-narrow",{"your-move__quote":m.row.comment}])},[m.row.comment?(i(),K(le,{key:0,text:m.row.comment,url:m.row.comment_url},null,8,["text","url"])):x("",!0)],2)):x("",!0),a("td",wl,[N(ve,{class:"table__ai",query:{ws:_(g).workspace.id,kind:"row",ref:m.row.row_id}},null,8,["query"]),m.auto?x("",!0):(i(),c("button",{key:0,type:"button",class:L(["your-move__mark",{"your-move__mark--undo":m.handled}]),"aria-label":(m.handled?"Move back to open: ":"Mark as handled: ")+m.row.key,onClick:ee(R=>f(m),["stop"])},v(m.handled?"Undo":"Handled"),11,kl))])],2),m.lined?(i(),c("tr",{key:0,"data-row-tail":"",class:L(["your-move__line-row",{"your-move__line-row--handled":m.handled}])},[a("td",bl,[a("button",{type:"button",class:"your-move__line","data-tip":"Open the full text and edit the note",onClick:R=>_(S).note=m.row.row_id},[h[5]||(h[5]=a("span",{class:"your-move__arrow","aria-hidden":"true"},"→",-1)),a("span",xl,v(m.line),1),a("time",Sl,v(w(m)),1)],8,$l)])],2)):x("",!0)],64))),128))])])]),_:1}),s.value.rows.length?x("",!0):(i(),c("p",Cl,v(r.value),1)),_(t)==="open"?(i(),K(al,{key:2})):x("",!0)]),_:1},8,["size-key"]))}}),Rl=j(El,[["__scopeId","data-v-3a6ca0d0"]]),Al=B(!1),Ml=()=>Al,Tl={class:"todos__add"},zl={key:0,class:"alert alert--inline",role:"alert"},Il={key:1,class:"todos__undo",role:"status"},Ol={class:"todos__list"},Bl=["aria-checked","aria-label","onClick"],Dl=["onKeydown"],Nl=["onDblclick"],Pl={class:"todos__meta"},Fl=["onClick"],Vl=["onClick"],Wl={key:0,class:"empty todos__empty"},Ul=q({__name:"Todos",setup(e){const t=Ml(),s=B(""),n=E(()=>(g.todos||[]).filter(b=>!b.done)),o=E(()=>(g.todos||[]).filter(b=>b.done)),l=E(()=>new RegExp(g.workspace.key_pattern||"(?!)","g")),r=b=>{const F=[];let U=0;const se=b.text;for(const z of se.matchAll(l.value))z.index>U&&F.push({text:se.slice(U,z.index)}),F.push({text:z[0],url:z[0]===b.key?b.ticket_url:""}),U=z.index+z[0].length;return U<se.length&&F.push({text:se.slice(U)}),F},d=E(()=>(fe.value,(t.value?n.value.concat(o.value):n.value).map(b=>({todo:b,parts:r(b),meta:(b.by&&b.by!=="you"?b.by+" · ":"")+re(b.created)})))),w=B("");ft(()=>{w.value=""});const f=async b=>(w.value=await Kn(b),!w.value),p=async()=>{const b=s.value.trim();b&&await f({action:"add",text:b})&&s.value.trim()===b&&(s.value="")},k=b=>f({action:b.done?"undo":"done",id:b.id}),u=B(null),h=async b=>{await f({action:"delete",id:b.id})&&(u.value=b)},m=async()=>{const b=u.value;if(u.value=null,b&&await f({action:"add",text:b.text})&&b.done){const F=(g.todos||[]).find(U=>U.text===b.text&&!U.done);F&&await f({action:"done",id:F.id})}},R=B(""),P=B(""),Y=Ue("editBox"),$=async b=>{var F,U;R.value=b.id,P.value=b.text,await _e(),(U=(F=Y.value)==null?void 0:F[0])==null||U.focus()},y=()=>{R.value=""},C=async b=>{const F=P.value.trim();if(!F||F===b.text)return y();await f({action:"edit",id:b.id,text:F})&&y()},A=E({get:()=>t.value?"done":"open",set:b=>{t.value=b==="done"}}),D=E(()=>[{id:"open",label:"Open",count:n.value.length},{id:"done",label:"Done",count:o.value.length}]);return(b,F)=>(i(),K(je,{id:"todo","size-key":`${_(g).workspace.id}:todo`,title:"To do",note:"Your own notes",tip:'Your personal to-dos, kept on this machine. Add here, or ask Claude: "add to my to-do: …". A ticket key like PROJ-123 in the text becomes a link.'},{head:te(()=>[N(We,{modelValue:A.value,"onUpdate:modelValue":F[0]||(F[0]=U=>A.value=U),options:D.value,label:"Show",class:"todos__view"},null,8,["modelValue","options"])]),default:te(()=>[a("div",Tl,[be(a("input",{"onUpdate:modelValue":F[1]||(F[1]=U=>s.value=U),class:"input todos__input",type:"text",placeholder:"Add a to-do and press Enter","aria-label":"New to-do",autocomplete:"off",onKeydown:ge(p,["enter"])},null,544),[[$e,s.value]]),a("button",{type:"button",class:"btn btn--tonal",onClick:p},"Add")]),w.value?(i(),c("p",zl,v(w.value),1)):x("",!0),u.value?(i(),c("p",Il,[F[3]||(F[3]=G(" To-do deleted. ",-1)),a("button",{type:"button",class:"todos__undo-btn",onClick:m},"Undo")])):x("",!0),a("ul",Ol,[(i(!0),c(W,null,X(d.value,({todo:U,parts:se,meta:z})=>(i(),c("li",{key:U.id,class:L(["todos__item",{"todos__item--done":U.done}])},[a("button",{type:"button",class:L(["todos__check",{"todos__check--on":U.done}]),role:"checkbox","aria-checked":!!U.done,"aria-label":U.done?"Mark not done":"Mark done",onClick:V=>k(U)},null,10,Bl),R.value===U.id?be((i(),c("input",{key:0,ref_for:!0,ref_key:"editBox",ref:Y,"onUpdate:modelValue":F[2]||(F[2]=V=>P.value=V),class:"input todos__edit",type:"text",maxlength:"500","aria-label":"Edit to-do",autocomplete:"off",onKeydown:[ge(V=>C(U),["enter"]),ge(y,["esc"])],onBlur:y},null,40,Dl)),[[$e,P.value]]):(i(),c("span",{key:1,class:"todos__text",onDblclick:V=>$(U)},[(i(!0),c(W,null,X(se,(V,O)=>(i(),c(W,{key:O},[V.url!==void 0?(i(),K(le,{key:0,text:V.text,url:V.url},null,8,["text","url"])):(i(),c(W,{key:1},[G(v(V.text),1)],64))],64))),128))],40,Nl)),a("span",Pl,v(z),1),a("button",{type:"button",class:"todos__pencil","aria-label":"Edit to-do",onClick:V=>$(U)}," ✎ ",8,Fl),a("button",{type:"button",class:"todos__delete","aria-label":"Delete to-do",onClick:V=>h(U)}," × ",8,Vl)],2))),128)),d.value.length?x("",!0):(i(),c("span",Wl,v(_(t)?"Nothing here yet.":"Nothing to do. Add one above, or ask Claude."),1))])]),_:1},8,["size-key"]))}}),Hl=j(Ul,[["__scopeId","data-v-6dbdbb66"]]),Ll={key:0,class:"count"},ql={key:0,class:"empty"},jl={class:"table waiting__table"},Yl={key:0,class:"hide-narrow"},Kl={key:1,class:"waiting__col waiting__col--pr"},Xl=["data-tip"],Gl={key:0,class:"hide-narrow"},Zl={key:0,class:"hint-row"},Jl=["data-tip"],Ql={class:"table__actions"},ei=q({__name:"Waiting",setup(e){const t=E(()=>(fe.value,nn(g.turn).map(l=>({row:l,since:l.status_since?ht(l.status_since):null,own:l.status_group==="backlog"})))),s=E(()=>Xt(t.value.map(({row:l})=>l))),n=E(()=>t.value.some(({row:l,own:r})=>l.hold_url||!r&&l.next)),o=E(()=>t.value.length&&t.value.every(({own:l})=>l)?"Your backlog":"Someone else holds the next step");return(l,r)=>(i(),K(je,{id:"waiting","size-key":`${_(g).workspace.id}:waiting`,title:"Waiting on others",note:o.value,tip:"Tickets you touched in the last 30 days where someone else holds the next step: a reviewer, QA, or a new owner."},{head:te(()=>[t.value.length?(i(),c("span",Ll,v(t.value.length),1)):x("",!0)]),default:te(()=>[t.value.length?(i(),K(ps,{key:1},{default:te(()=>[a("table",jl,[a("thead",null,[a("tr",null,[r[0]||(r[0]=a("th",{class:"waiting__col waiting__col--ticket"},"Ticket",-1)),r[1]||(r[1]=a("th",{class:"waiting__col waiting__col--status"},"Status",-1)),r[2]||(r[2]=a("th",{class:"waiting__col waiting__col--with"},"With",-1)),n.value?(i(),c("th",Yl,"Waiting for")):x("",!0),s.value?(i(),c("th",Kl,"PR")):x("",!0),r[3]||(r[3]=a("th",{class:"table__actions-col waiting__col waiting__col--actions"},[a("span",{class:"visually-hidden"},"Copy for AI")],-1))])]),a("tbody",null,[(i(!0),c(W,null,X(t.value,({row:d,since:w,own:f})=>(i(),c("tr",{key:d.row_id},[N(vt,{row:d},null,8,["row"]),a("td",null,[a("span",{class:L(["pill",_(Re)("pill",_(Kt)(d.status_group))])},v(d.status),3)]),a("td",null,[G(v(f?"you":d.whose)+" ",1),w?(i(),c("span",{key:0,class:L(["age",{"age--old":w.hours>=72}]),"data-tip":d.status+" since "+_(Le)(d.status_since)},v(w.text),11,Xl)):x("",!0)]),n.value?(i(),c("td",Gl,[d.hold_url?(i(),c("span",Zl,[N(le,{text:d.next,url:d.hold_url,class:"waiting__reason"},null,8,["text","url"]),a("button",{type:"button",class:"hint-label","aria-label":"Full reason","data-tip":d.hold_full||d.next}," full ",8,Jl)])):f?x("",!0):(i(),c(W,{key:1},[G(v(d.next),1)],64))])):x("",!0),s.value?(i(),K(hs,{key:1,row:d},null,8,["row"])):x("",!0),a("td",Ql,[N(ve,{class:"table__ai",query:{ws:_(g).workspace.id,kind:"row",ref:d.row_id}},null,8,["query"])])]))),128))])])]),_:1})):(i(),c("p",ql,"Nothing is waiting on someone else."))]),_:1},8,["size-key","note"]))}}),ti=j(ei,[["__scopeId","data-v-90e8bf77"]]),si=(e,t)=>e.seen instanceof Set?e.seen.has(t):e.seen.includes(t),_s=(e,t)=>new Date(e.at).getTime()>(t.base||0)&&!si(t,e.id),ni=(e,t)=>{const s=String(t||"").toLowerCase().split(/\s+/).filter(Boolean);if(!s.length)return!0;const n=[e.ref,e.key,e.title,e.kind,e.who,e.text,e.body].join(" ").toLowerCase();return s.every(o=>n.includes(o))},oi=e=>e.key||e.ref||e.id,ai=(e,t)=>{const s=new Map;for(const n of e){const o=oi(n),l=s.get(o)||{id:o,items:[],newest:n.at,unread:0,title:""};s.set(o,l),l.items.push(n),l.title||(l.title=n.title||""),n.at>l.newest&&(l.newest=n.at),_s(n,t)&&(l.unread+=1)}return[...s.values()].sort((n,o)=>String(o.newest).localeCompare(String(n.newest)))},li=e=>new Set(e.filter(t=>t.group==="you"&&!t.handled).map(t=>t.key)),ii=(e,t=2)=>{const s=[...new Set(e.map(o=>o.kind))],n=s.length-t;return s.slice(0,t).join(" · ")+(n>0?` +${n}`:"")},ri=e=>/fail|changes/.test(e)?"bad":/approved|merged|passed/.test(e)?"ok":"",ci=e=>/comment|approved|changes|mentioned|review requested/.test(e.kind)&&String(e.body||"").trim()!=="",fs=e=>e.ref!==e.key&&(e.key||e.title)||"",di=e=>[fs(e),e.text===e.title?"":e.text].filter(Boolean).join(" · "),ui=e=>e.type==="github"&&e.label==="GitHub"?"GH":is(e.label),hi=["id"],pi={class:"feed-item__body"},_i={class:"feed-item__top"},fi={key:1,class:"feed-item__who"},vi={key:2,class:"at-you"},mi={class:"feed-item__right"},gi={class:"timestamp feed-item__when"},yi={key:0,class:"feed-item__text"},wi={class:"feed-item__full"},ki={class:"feed-item__actions"},bi={key:1,class:"feed-item__text"},$i=q({__name:"FeedItem",props:{item:{},source:{},fresh:{type:Boolean},flash:{type:Boolean},expanded:{type:Boolean}},emits:["open","toggle","seen"],setup(e,{emit:t}){const s=e,n=t,o=E(()=>ui(s.source)),l=E(()=>fs(s.item)),r=E(()=>di(s.item)),d=E(()=>ri(s.item.kind)),w=E(()=>d.value||(s.source.type==="github"?"":"jira")),f=E(()=>ci(s.item)),p=E(()=>f.value&&s.expanded),k=E(()=>(fe.value,re(s.item.at))),u=()=>{s.fresh&&n("seen",s.item.id)},h=()=>{n("toggle",s.item.id),u()};return(m,R)=>(i(),c("li",{id:"feed-"+e.item.id,class:L(["feed-item",{"feed-item--new":e.fresh,"feed-item--open":p.value,"feed-item--flash":e.flash}]),onClick:u},[a("span",{class:L(["feed-item__icon",_(Re)("feed-item__icon",w.value)])},v(o.value),3),a("div",pi,[a("div",_i,[f.value?(i(),K(qe,{key:0,open:p.value,"aria-label":p.value?"Collapse":"Expand",onClick:ee(h,["stop"])},null,8,["open","aria-label"])):x("",!0),N(le,{text:e.item.ref,url:e.item.url},null,8,["text","url"]),a("span",{class:L(["feed-item__kind",{"feed-item__kind--bad":d.value==="bad"}])},v(e.item.kind),3),e.item.who?(i(),c("span",fi,v(e.item.who),1)):x("",!0),e.item.mention?(i(),c("span",vi,"@you")):x("",!0),a("span",mi,[a("span",gi,v(k.value),1)])]),p.value?(i(),c(W,{key:0},[l.value?(i(),c("span",yi,v(l.value),1)):x("",!0),a("div",wi,v(e.item.body),1),a("div",ki,[a("button",{type:"button",class:"btn btn--tonal",onClick:R[0]||(R[0]=ee(P=>n("open",e.item),["stop"]))}," Open formatted "),N(ve,{query:{ws:_(g).workspace.id,kind:"feed",ref:e.item.id}},null,8,["query"]),N(le,{text:"Open in "+e.source.label,url:e.item.url,class:"btn"},null,8,["text","url"])])],64)):r.value?(i(),c("span",bi,v(r.value),1)):x("",!0)])],10,hi))}}),Nt=j($i,[["__scopeId","data-v-8cc9dc10"]]),xi=lt({source:"all",view:we("wt-feed-view","ticket",{writeDefaults:!1}),query:"",openGroups:new Set}),Si=()=>xi,Ci={key:0,class:"feed__new-count"},Ei={class:"feed__bar"},Ri={key:0,class:"alert alert--inline",role:"alert"},Ai={key:1,class:"feed__undo",role:"status"},Mi={class:"feed__search"},Ti={class:"feed__search-count"},zi={key:2,class:"empty"},Ii={key:3,class:"feed__list"},Oi=["title","onClick"],Bi={class:"feed__group-text"},Di={class:"feed__group-key"},Ni={key:0,class:"feed__group-sum"},Pi={class:"feed__group-meta"},Fi={class:"feed__group-kinds"},Vi={class:"timestamp feed__group-when"},Wi={key:0,class:"feed__children"},Ui=2500,Hi=q({__name:"Feed",emits:["open"],setup(e,{emit:t}){const s=t,n=Si(),o=[{id:"ticket",label:"By ticket"},{id:"flat",label:"Flat"}],l=E(()=>g.workspace.connectors||[]),r=E(()=>Object.fromEntries(l.value.map(z=>[z.id,z]))),d=z=>r.value[z]||{id:z,type:z,label:z},w=E(()=>l.value.length>1?[{id:"all",label:"All"}].concat(l.value.map(z=>({id:z.id,label:z.label}))):[]),f=E({get:()=>w.value.some(z=>z.id===n.source)?n.source:"all",set:z=>{n.source=z}});J(()=>g.workspace.id,()=>{n.query=""});const p=B("");J(()=>S.focusFeed,async z=>{var O;const V=g.feed.find(Q=>Q.id===z);S.focusFeed="",V&&(n.source="all",n.query="",n.openGroups.add(V.key||V.ref||V.id),p.value=z,await _e(),(O=document.getElementById(`feed-${z}`))==null||O.scrollIntoView({block:"center"}),setTimeout(()=>{p.value=""},Ui))});const k=E(()=>({base:g.marks.base,seen:new Set(g.marks.seen)})),u=z=>_s(z,k.value),h=E(()=>g.feed.filter(u).length),m=E(()=>g.feed.filter(z=>f.value==="all"||z.source===f.value)),R=E(()=>m.value.filter(z=>ni(z,n.query)).slice(0,200)),P=E(()=>new Map(g.turn.map(z=>[z.key,z]))),Y=E(()=>li(g.turn)),$=E(()=>(fe.value,ai(R.value,k.value).map(z=>({...z,row:P.value.get(z.id),move:Y.value.has(z.id),when:re(z.newest),kinds:ii(z.items),open:n.openGroups.has(z.id)||!!n.query})))),y=(z,V)=>{z.has(V)?z.delete(V):z.add(V)},C=z=>y(n.openGroups,z.id),A=z=>y(S.open,z),D=z=>ye({seen:[z]}).then(de),b=B("");ft(()=>{b.value=""});const F=B(null),U=async()=>{const z=new Set(g.marks.seen),V={base:g.marks.base,added:g.feed.map(O=>O.id).filter(O=>!z.has(O))};b.value=await ye({seen:g.feed.map(O=>O.id),base:Date.now()}),F.value=b.value?null:V},se=async()=>{const z=F.value;F.value=null,z&&(b.value=await ye({unseen:z.added,base:z.base}))};return(z,V)=>(i(),K(je,{id:"feed","size-key":`${_(g).workspace.id}:feed`,title:"What changed",note:"Newest first, every source",tip:"Newest first: comments, reviews, merges and failed checks on your PRs, and ticket changes. Each item opens where it happened.",class:"feed",column:"",resize:"width"},{head:te(()=>[h.value?(i(),c("span",Ci,v(h.value)+" new",1)):x("",!0)]),default:te(()=>[a("div",Ei,[w.value.length?(i(),K(We,{key:0,modelValue:f.value,"onUpdate:modelValue":V[0]||(V[0]=O=>f.value=O),options:w.value,label:"Feed source"},null,8,["modelValue","options"])):x("",!0),N(We,{modelValue:_(n).view,"onUpdate:modelValue":V[1]||(V[1]=O=>_(n).view=O),options:o,label:"Feed view"},null,8,["modelValue"])]),b.value?(i(),c("p",Ri,v(b.value),1)):x("",!0),F.value?(i(),c("p",Ai,[V[5]||(V[5]=G(" Marked all read. ",-1)),a("button",{type:"button",class:"feed__undo-btn",onClick:se},"Undo")])):x("",!0),a("div",Mi,[be(a("input",{"onUpdate:modelValue":V[2]||(V[2]=O=>_(n).query=O),class:"input feed__search-input",type:"search",placeholder:"Search the feed: key, author, words…","aria-label":"Search the feed",autocomplete:"off"},null,512),[[$e,_(n).query,void 0,{trim:!0}]]),a("span",Ti,v(_(n).query?R.value.length+" of "+m.value.length:""),1),a("button",{type:"button",class:"feed__mark-read",onClick:U},"Mark all read")]),_(g).feed.length?(i(),c("ol",Ii,[_(n).view==="ticket"?(i(!0),c(W,{key:0},X($.value,O=>(i(),c("li",{key:O.id,class:L(["feed__group",{"feed__group--new":O.unread,"feed__group--open":O.open,"feed__group--move":O.move}])},[a("div",{class:"feed__group-head",title:O.move?"Your move on this ticket":void 0,onClick:Q=>C(O)},[N(qe,{open:O.open,"aria-label":"Fold "+O.id},null,8,["open","aria-label"]),a("div",Bi,[a("div",Di,[N(le,{text:O.id,url:O.row?O.row.ticket_url:O.items[0].url,class:"ticket-key feed__group-ticket"},null,8,["text","url"]),O.row||O.title?(i(),c("span",Ni,v(O.row?O.row.summary:O.title),1)):x("",!0)]),a("div",Pi,[a("span",{class:L(["feed__group-count",{"feed__group-count--new":O.unread}])},v(O.unread?O.unread+" new":O.items.length+(O.items.length===1?" event":" events")),3),a("span",Fi,v(O.kinds),1),a("span",Vi,v(O.when),1)])]),N(ve,{class:"feed__group-copy",query:{ws:_(g).workspace.id,kind:"thread",ref:O.id}},null,8,["query"])],8,Oi),O.open?(i(),c("ul",Wi,[(i(!0),c(W,null,X(O.items,Q=>(i(),K(Nt,{key:Q.id,item:Q,source:d(Q.source),fresh:u(Q),flash:p.value===Q.id,expanded:_(S).open.has(Q.id),onOpen:V[3]||(V[3]=Ye=>s("open",Ye)),onToggle:A,onSeen:D},null,8,["item","source","fresh","flash","expanded"]))),128))])):x("",!0)],2))),128)):(i(!0),c(W,{key:1},X(R.value,O=>(i(),K(Nt,{key:O.id,item:O,source:d(O.source),fresh:u(O),flash:p.value===O.id,expanded:_(S).open.has(O.id),onOpen:V[4]||(V[4]=Q=>s("open",Q)),onToggle:A,onSeen:D},null,8,["item","source","fresh","flash","expanded"]))),128))])):(i(),c("p",zi," No changes yet. New comments, reviews and status changes show up here. "))]),_:1},8,["size-key"]))}}),Li=j(Hi,[["__scopeId","data-v-bbacc3b6"]]),qi={id:"first-run",class:"island first-run","aria-labelledby":"first-run-title"},ji={class:"first-run__text"},Yi=q({__name:"FirstRun",setup(e){const t=()=>ns("connectors");return(s,n)=>(i(),c("section",qi,[n[1]||(n[1]=a("h2",{id:"first-run-title",class:"first-run__title"}," Whose Turn watches your tickets and pull requests and shows what is waiting on you. ",-1)),a("p",ji,[a("b",null,v(_(g).workspace.name),1),n[0]||(n[0]=G(" has no sources yet, so there is nothing to watch. Connect a repository or a tracker. ",-1))]),a("div",{class:"first-run__actions"},[a("button",{type:"button",class:"btn btn--tonal",onClick:t},"Add a source")]),n[2]||(n[2]=a("p",{class:"first-run__text first-run__ai"},' Or ask Claude: "add my GitHub repository to Whose Turn." ',-1))]))}}),Ki=j(Yi,[["__scopeId","data-v-84359c2d"]]),Xi=new RegExp("(`[^`]{1,500}`)|(\\*\\*[^*]{1,500}\\*\\*)|(\\[[^\\]]{1,300}\\]\\(https?:\\/\\/[^)\\s]{1,2000}\\))|(https?:\\/\\/[^\\s<>()]{1,2000})|(@[A-Za-z0-9-]+(?: [A-Z][a-z]+)?)|((?<![A-Za-z0-9])\\*[^*\\s][^*]{0,500}\\*(?![A-Za-z0-9])|(?<![A-Za-z0-9])_[^_\\s][^_]{0,500}_(?![A-Za-z0-9]))","g"),Pt=(e,t)=>{const s=ut(t);return s?{type:"link",text:e,href:s}:{type:"text",text:e}},Gi=e=>{const t=e[0];if(e[1])return{type:"code",text:t.slice(1,-1)};if(e[2])return{type:"strong",text:t.slice(2,-2)};if(e[3]){const s=t.indexOf("](");return Pt(t.slice(1,s),t.slice(s+2,-1))}return e[4]?Pt(t,t):e[5]?{type:"mention",text:t}:{type:"em",text:t.slice(1,-1)}},Oe=e=>{const t=new RegExp(Xi),s=[];let n=0,o;for(;o=t.exec(e);)o.index>n&&s.push({type:"text",text:e.slice(n,o.index)}),s.push(Gi(o)),n=o.index+o[0].length;return n<e.length&&s.push({type:"text",text:e.slice(n)}),s},Zi=e=>{const t=String(e||"").replace(/<!--[\s\S]*?-->/g,"").split(`
6
+ `),s=[];let n=[],o=null;const l=()=>{n.length&&(s.push({type:"paragraph",lines:n.map(Oe)}),n=[]),o=null};for(let r=0;r<t.length;r++){const d=t[r];if(/^\s*```/.test(d)){l();const k=[];for(r++;r<t.length&&!/^\s*```/.test(t[r]);r++)k.push(t[r]);s.push({type:"fence",text:k.join(`
7
+ `)});continue}const w=d.match(/^(#{1,6})\s+(.*)$/);if(w){l(),s.push({type:"heading",level:w[1].length<=2?4:5,inline:Oe(w[2])});continue}const f=d.match(/^>\s?(.*)$/);if(f){l(),s.push({type:"quote",inline:Oe(f[1])});continue}const p=d.match(/^\s*([-*+]|\d+[.)])\s+(.*)$/);if(p){const k=o;n.length&&(l(),o=k);const u=/\d/.test(p[1]),h=o,m=h&&h.ordered===u?h:{type:"list",ordered:u,items:[]};m!==h&&s.push(m),o=m,m.items.push(Oe(p[2]));continue}if(!d.trim()){l();continue}o=null,n.push(d)}return l(),s},De=(e,t,s="")=>{const n=document.createElement(e);return n.textContent=t,s&&(n.className=s),n},Ji=e=>{if(e.type==="text")return document.createTextNode(e.text);if(e.type==="link"){const t=De("a",e.text);return t.setAttribute("href",e.href),t.setAttribute("target","_blank"),t.setAttribute("rel","noopener"),t}return e.type==="mention"?De("span",e.text,"markdown-view__mention"):De(e.type,e.text)},vs=(e,t)=>{e.forEach(s=>t.append(Ji(s)))},Qe=(e,t)=>{const s=document.createElement(e);return vs(t,s),s},Qi=e=>{if(e.type==="fence"){const s=document.createElement("pre");return s.append(De("code",e.text)),s}if(e.type==="heading")return Qe(`h${e.level}`,e.inline);if(e.type==="quote")return Qe("blockquote",e.inline);if(e.type==="list"){const s=document.createElement(e.ordered?"ol":"ul");return e.items.forEach(n=>s.append(Qe("li",n))),s}const t=document.createElement("p");return e.lines.forEach((s,n)=>{n&&t.append(document.createElement("br")),vs(s,t)}),t},er=e=>{const t=document.createDocumentFragment();return Zi(e).forEach(s=>t.append(Qi(s))),t},tr=q({__name:"MarkdownView",props:{source:{default:""}},setup(e){const t=e,s=B(null);return zs(()=>{s.value&&s.value.replaceChildren(er(t.source))}),(n,o)=>(i(),c("div",{ref_key:"host",ref:s,class:"markdown-view"},null,512))}}),ms=j(tr,[["__scopeId","data-v-dcf42e95"]]),sr={class:"modal__card"},nr={class:"modal__head"},or={id:"modal-title",class:"modal__title"},ar=["href"],lr=q({__name:"CommentModal",setup(e){const t=E(()=>S.modal),s=E(()=>t.value?[t.value.ref,t.value.kind,t.value.who].filter(Boolean).join(" · "):""),n=E(()=>t.value?ut(t.value.url):""),o=E(()=>{var d;const r=(g.workspace.connectors||[]).find(w=>{var f;return w.id===((f=t.value)==null?void 0:f.source)});return"Open in "+(r?r.label:(d=t.value)==null?void 0:d.source)}),l=()=>{S.modal=null};return(r,d)=>t.value?(i(),c("div",{key:0,class:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"modal-title",onClick:ee(l,["self"])},[a("div",sr,[a("div",nr,[a("h3",or,v(s.value),1),n.value?(i(),c("a",{key:0,class:"btn",href:n.value,target:"_blank",rel:"noopener"},v(o.value),9,ar)):x("",!0),a("button",{type:"button",class:"btn",onClick:l},"Close")]),N(ms,{source:t.value.body||t.value.text||""},null,8,["source"])])])):x("",!0)}}),ir=["aria-labelledby"],rr={class:"modal__card"},cr={class:"modal__head"},dr=["id"],ur={key:0,class:"modal__foot"},hr=q({__name:"Modal",props:{title:{},labelId:{},flush:{type:Boolean}},emits:["close"],setup(e,{emit:t}){const s=t;return(n,o)=>(i(),c("div",{class:"modal",role:"dialog","aria-modal":"true","aria-labelledby":e.labelId,onClick:o[1]||(o[1]=ee(l=>s("close"),["self"]))},[a("div",rr,[a("div",cr,[a("h3",{id:e.labelId,class:"modal__title"},v(e.title),9,dr),me(n.$slots,"head",{},void 0),a("button",{type:"button",class:"btn",onClick:o[0]||(o[0]=l=>s("close"))},"Close")]),a("div",{class:L(["modal__body",{"modal__body--flush":e.flush}])},[me(n.$slots,"default",{},void 0)],2),n.$slots.footer?(i(),c("div",ur,[me(n.$slots,"footer",{},void 0)])):x("",!0)])],8,ir))}}),gs=j(hr,[["__scopeId","data-v-f2f8cfc9"]]),pr={class:"note-modal__summary"},_r={key:0,class:"note-modal__facts"},fr={class:"note-modal__author"},vr={class:"note-modal__label",for:"note-text"},mr=["onKeydown"],gr={key:1,class:"alert alert--inline",role:"alert"},yr=q({__name:"NoteModal",setup(e){const t=E(()=>g.turn.find(u=>u.row_id===S.note)),s=E(()=>g.marks.info[S.note]),n=E(()=>{var u;return((u=s.value)==null?void 0:u.note)||""}),o=B(""),l=B(""),r=B(null);J(()=>S.note,async u=>{var h;u&&(o.value=n.value,l.value="",await _e(),(h=r.value)==null||h.focus())},{immediate:!0,flush:"post"});const d=()=>{S.note=""},w=async()=>{const u=o.value.replace(/\s+/g," ").trim();if(u===n.value){d();return}l.value=await ye({notes:{[S.note]:u}}),l.value||d()},f=()=>{var h;const u=((h=s.value)==null?void 0:h.event)||"";d(),Yn(u)},p=E(()=>{var u;return(u=s.value)==null?void 0:u.detail}),k=E(()=>{var u,h;return((u=p.value)==null?void 0:u.what)||((h=s.value)==null?void 0:h.outcome)||""});return(u,h)=>{var m,R;return _(S).note&&t.value?(i(),K(gs,{key:0,title:t.value.key+" · "+((m=s.value)!=null&&m.auto?"Passed on":"Handled"),"label-id":"note-title",onClose:d},Wt({footer:te(()=>[a("button",{type:"button",class:"btn",onClick:d},v(n.value?"Cancel":"Skip"),1),a("button",{type:"button",class:"btn btn--tonal",onClick:w},"Save")]),default:te(()=>{var P,Y,$,y,C,A;return[a("p",pr,v(t.value.summary),1),(P=s.value)!=null&&P.auto?(i(),c("dl",_r,[h[5]||(h[5]=a("dt",null,"What happened",-1)),a("dd",null,v(k.value),1),(Y=p.value)!=null&&Y.assignee?(i(),c(W,{key:0},[h[1]||(h[1]=a("dt",null,"Assignee",-1)),a("dd",null,v(p.value.assignee),1)],64)):x("",!0),($=p.value)!=null&&$.status?(i(),c(W,{key:1},[h[2]||(h[2]=a("dt",null,"Status",-1)),a("dd",null,v(p.value.status),1)],64)):x("",!0),(y=p.value)!=null&&y.summary?(i(),c(W,{key:2},[h[3]||(h[3]=a("dt",null,"Event",-1)),a("dd",null,v(p.value.summary),1)],64)):x("",!0),(C=p.value)!=null&&C.comment?(i(),c(W,{key:3},[h[4]||(h[4]=a("dt",null,"Comment",-1)),a("dd",null,[a("span",fr,v(p.value.comment.author)+":",1),G(" "+v(p.value.comment.text),1)])],64)):x("",!0),h[6]||(h[6]=a("dt",null,"When",-1)),a("dd",null,v(_(Le)(_(g).marks.handled[_(S).note]||"")),1)])):x("",!0),a("label",vr,v((A=s.value)!=null&&A.auto?"Your note on top":"Note")+" (optional)",1),be(a("textarea",{id:"note-text",ref_key:"field",ref:r,"onUpdate:modelValue":h[0]||(h[0]=D=>o.value=D),class:"input note-modal__text",rows:"3",maxlength:"200",placeholder:"Add a note…",onKeydown:ge(ee(w,["prevent"]),["enter"])},null,40,mr),[[$e,o.value]]),l.value?(i(),c("p",gr,v(l.value),1)):x("",!0)]}),_:2},[(R=s.value)!=null&&R.auto?{name:"head",fn:te(()=>[s.value.event?(i(),c("button",{key:0,type:"button",class:"btn",onClick:f},"Open in feed")):x("",!0)]),key:"0"}:void 0]),1032,["title"])):x("",!0)}}}),wr=j(yr,[["__scopeId","data-v-6fc1670a"]]),kr={"Google Chrome":"Chrome","Microsoft Edge":"Edge",Opera:"Opera",Brave:"Brave",Chromium:"Chromium"},br=[[/Edg(?:e|A|iOS)?\/(\d+)/,"Edge"],[/OPR\/(\d+)/,"Opera"],[/(?:Firefox|FxiOS)\/(\d+)/,"Firefox"],[/(?:Chrome|CriOS)\/(\d+)/,"Chrome"],[/Version\/(\d+)[^]*Safari/,"Safari"]],Ft=e=>{var t;return((t=/^\d{1,6}/.exec(e))==null?void 0:t[0])??""},$r=e=>{var n;const t=(((n=e.userAgentData)==null?void 0:n.brands)??[]).filter(o=>!/^not.?a.?brand/i.test(o.brand.replace(/[^\w ]/g,""))),s=t.find(o=>o.brand!=="Chromium")??t[0];if(s&&Ft(s.version))return{name:kr[s.brand]??"Other",version:Ft(s.version)};for(const[o,l]of br){const r=o.exec(e.userAgent);if(r)return{name:l,version:r[1]}}return null},xr=e=>({browser:$r(e.navigator),display:{width:e.screen.width,height:e.screen.height,scale:e.devicePixelRatio,viewport:[e.innerWidth,e.innerHeight]},locale:e.navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,theme:e.dark?"dark":"light",mode:e.mode}),Sr={class:"modal__card feedback-sheet__card"},Cr={class:"modal__head"},Er=["aria-disabled"],Rr={key:0,class:"alert"},Ar={class:"sheet-form"},Mr=["onKeydown"],Tr={key:0,class:"empty"},zr=["href"],Ir={key:1,class:"feedback-sheet__reports"},Or=["href"],Br={class:"feedback-sheet__report-title"},Dr={class:"timestamp"},Nr=q({__name:"FeedbackSheet",setup(e){const t=B(""),s=B(null),n=B(!1),o=B([]),l=B(null),r=B([]),d=k=>"/report?id="+encodeURIComponent(k),w=()=>Ee("/api/feedback").then(k=>{r.value=k.reports||[]},()=>{o.value=[xe+"; past reports cannot be loaded."]}),f=()=>{S.feedback=!1},p=()=>{if(n.value)return;const k=t.value.trim();if(!k){o.value=["Write at least one line."];return}n.value=!0,ie("/api/feedback",{text:k,from:"the window",ws:g.workspace.id,client:xr({navigator,screen,devicePixelRatio,innerWidth,innerHeight,dark:Ce.value,mode:S.mode})}).then(u=>{if(n.value=!1,u.error){o.value=dt(u.error);return}l.value=u.issue||null,t.value="",r.value=u.reports||r.value}).catch(u=>{n.value=!1,o.value=[ce(u,{refused:"Not sent",unreachable:tt})]})};return J(()=>S.feedback,k=>{k&&(o.value=[],l.value=null,w().then(()=>_e(()=>{var u;return(u=s.value)==null?void 0:u.focus()})))}),(k,u)=>_(S).feedback?(i(),c("div",{key:0,class:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"feedback-title",onClick:ee(f,["self"])},[a("div",Sr,[a("div",Cr,[u[1]||(u[1]=a("h3",{id:"feedback-title",class:"modal__title"},"Report a problem or a wish",-1)),a("button",{type:"button",class:"btn btn--tonal","aria-disabled":n.value,onClick:p},v(n.value?"Composing…":"Send"),9,Er),a("button",{type:"button",class:"btn",onClick:f},"Close")]),o.value.length?(i(),c("div",Rr,v(o.value.join(" · ")),1)):x("",!0),a("div",Ar,[be(a("textarea",{ref_key:"field",ref:s,"onUpdate:modelValue":u[0]||(u[0]=h=>t.value=h),class:"input feedback-sheet__text",rows:"5",placeholder:"Describe the problem or the wish in your own words. Cmd+Enter sends.",autocomplete:"off",onKeydown:[ge(ee(p,["meta","prevent"]),["enter"]),ge(ee(p,["ctrl","prevent"]),["enter"])]},null,40,Mr),[[$e,t.value]]),u[4]||(u[4]=a("p",{class:"feedback-sheet__note"}," Only what you write, the monitor version and a description of your system are sent: OS and processor type, Node version, how the monitor was installed, browser, screen and window size, language, time zone, light or dark, app or tab, and which kinds of source you use. ",-1)),l.value?(i(),c("p",Tr,[u[2]||(u[2]=G(" Filed as ",-1)),a("a",{href:d(l.value.identifier),target:"_blank",rel:"noopener"},v(l.value.identifier),9,zr),G(" · "+v(l.value.title),1)])):x("",!0),r.value.length?(i(),c("div",Ir,[u[3]||(u[3]=a("h4",{class:"sheet-form__heading"},"Your reports",-1)),(i(!0),c(W,null,X(r.value,h=>(i(),c("div",{key:h.id,class:"feedback-sheet__report"},[a("a",{href:d(h.id),target:"_blank",rel:"noopener"},v(h.id),9,Or),a("span",Br,v(h.title),1),a("span",{class:L(["pill",_(Re)("pill",_(on)(h.outcome))])},v(h.state||"filed"),3),a("span",Dr,v(_(re)(h.changed_at||h.filed_at)),1)]))),128))])):x("",!0)])])])):x("",!0)}}),Pr=j(Nr,[["__scopeId","data-v-a76221de"]]),Fr={class:"field-row"},Vr={class:"field-row__label"},Wr={key:0,class:"field-row__check"},Ur=["checked"],Hr=["aria-invalid","value"],Lr={key:0,value:""},qr=["value"],jr=["value"],Yr={key:3,class:"field-row__inline"},Kr=["value"],Xr=["value"],Gr=["aria-invalid","value"],Zr=["aria-invalid","placeholder","value"],Jr={key:6,class:"field-row__error",role:"alert"},Qr={key:7,class:"field-row__hint"},ec=q({__name:"FieldRow",props:et({spec:{},placeholder:{default:""},hint:{default:""},error:{default:""}},{modelValue:{type:[String,Array,Boolean]},modelModifiers:{}}),emits:et(["secret"],["update:modelValue"]),setup(e,{emit:t}){const s=e,n=t,o=Vt(e,"modelValue"),l=/^#[0-9a-f]{6}$/i,r=()=>String(o.value??""),d=()=>o.value||[],w=h=>{o.value=h},f=()=>o.value??s.spec.default??!1,p=h=>{o.value=h===(s.spec.default??!1)?void 0:h},k=h=>h.target.value,u=h=>w(h.split(",").map(m=>m.trim()).filter(Boolean));return(h,m)=>(i(),c("div",Fr,[a("label",Vr,v(e.spec.label)+v(e.spec.required?" *":""),1),e.spec.boolean?(i(),c("label",Wr,[a("input",{type:"checkbox",checked:f(),onChange:m[0]||(m[0]=R=>p(R.target.checked))},null,40,Ur),G(" "+v(e.hint||e.spec.hint),1)])):e.spec.choices?(i(),c("select",{key:1,class:"input","aria-invalid":!!e.error,value:r(),onChange:m[1]||(m[1]=R=>w(k(R)))},[!e.spec.required&&!e.spec.choices.includes(r())?(i(),c("option",Lr,"(default)")):x("",!0),r()&&!e.spec.choices.includes(r())?(i(),c("option",{key:1,value:r()},v(r()),9,qr)):x("",!0),(i(!0),c(W,null,X(e.spec.choices,R=>(i(),c("option",{key:R,value:R},v(R),9,jr))),128))],40,Hr)):e.spec.secret?(i(),c("input",{key:2,class:"input",type:"password",placeholder:"paste to replace",autocomplete:"off",onInput:m[2]||(m[2]=R=>n("secret",e.spec.key,k(R)))},null,32)):e.spec.colour?(i(),c("div",Yr,[a("input",{class:"input field-row__colour",type:"color",value:l.test(r())?r():"#888888",onInput:m[3]||(m[3]=R=>w(k(R)))},null,40,Kr),a("input",{class:"input",type:"text",placeholder:"#rrggbb",value:r(),onInput:m[4]||(m[4]=R=>w(k(R)))},null,40,Xr),a("button",{type:"button",class:"btn",onClick:m[5]||(m[5]=R=>w(""))},"None")])):e.spec.list?(i(),c("input",{key:4,class:"input",type:"text","aria-invalid":!!e.error,value:d().join(", "),onInput:m[6]||(m[6]=R=>u(k(R)))},null,40,Gr)):(i(),c("input",{key:5,class:"input",type:"text","aria-invalid":!!e.error,placeholder:e.placeholder,value:r(),onInput:m[7]||(m[7]=R=>w(k(R)))},null,40,Zr)),e.error?(i(),c("small",Jr,v(e.error),1)):x("",!0),!e.spec.boolean&&(e.hint||e.spec.hint)?(i(),c("small",Qr,v(e.hint||e.spec.hint),1)):x("",!0)]))}}),he=j(ec,[["__scopeId","data-v-33714840"]]),tc={class:"modal__card settings-sheet__card"},sc={class:"modal__head"},nc={class:"modal__meta"},oc={key:0,class:"settings-sheet__dirty"},ac={key:0,class:"settings-sheet__confirm",role:"alertdialog"},lc={class:"settings-sheet__confirm-text"},ic={key:1,class:"alert settings-sheet__alert",role:"alert"},rc={key:2,class:"alert settings-sheet__alert"},cc={key:3,class:"settings-sheet__body"},dc={class:"settings-sheet__list"},uc=["aria-current","onClick"],hc={class:"sheet-form"},pc={key:0,class:"empty"},_c={ref:"connectors-head",class:"sheet-form__heading"},fc={class:"settings-sheet__connector-head"},vc={class:"settings-sheet__connector-name"},mc=["onClick"],gc={class:"settings-sheet__actions"},yc=["onClick"],wc={key:0,class:"settings-sheet__rules"},kc={class:"settings-sheet__rule-when"},bc={class:"settings-sheet__rule-then"},$c={key:1,class:"empty"},xc=q({__name:"SettingsSheet",setup(e){const t=B([]),s=B(0),n=B([]),o=B({workspace:[],theme:[],rules:[],statuses:[]}),l=B(""),r=B([]),d=B({}),w=new Map,f=B({}),p=B({}),k=B({}),u=Ue("connectors-head"),h=new Map,m=B(0),R=B(""),P=B(null),Y=B(""),$=E(()=>S.settings&&!Y.value&&(m.value>0||Rt(t.value)!==R.value)),y=M=>d.value[`workspaces[${s.value}].${M}`]||"",C=E(()=>{const M=b.value&&w.get(Ie(b.value));return M&&b.value&&M!==b.value.id?`Its to-dos and marks stay under the old id "${M}"; they do not follow the rename.`:""}),A={key:"id",label:"Source id"},D={key:"label",label:"Label"},b=E(()=>t.value[s.value]),F=E(()=>(b.value&&p.value[b.value.id]||[]).map(M=>On(M,f.value))),U=E(()=>b.value&&k.value[b.value.id]||[]),se=M=>n.value.find(I=>I.type===M.type)||{type:M.type,label:M.type,fields:[]},z=E(()=>t.value.map((M,I)=>({uid:Ie(M),label:M.name||M.id||"Workspace "+(I+1)}))),V=E(()=>{var M;return(((M=b.value)==null?void 0:M.connectors)||[]).map(I=>({entry:I,uid:Ie(I),spec:se(I)}))}),O=M=>{var T;const I=(T=g.workspaces.find(Z=>Z.id===M))==null?void 0:T.theme_seed;return I?`empty: ${I}, derived from the workspace id`:"empty derives one from the workspace id"},Q=(M,I)=>M[I],Ye=(M,I,T)=>{h.set(M,Object.assign(h.get(M)||{},{[I]:T})),m.value+=1},ys=(M,I,T)=>I==="id"?M.id=String(T??""):ue(M,I,T),ws=()=>{t.value.push(Ct({id:"new-"+(t.value.length+1),name:"New workspace"})),s.value=t.value.length-1},ks=()=>{t.value.splice(s.value,1),s.value=Math.max(0,s.value-1)},bs=()=>{b.value&&(P.value={text:`Delete ${b.value.name||b.value.id}? Its to-dos and marks stay on disk.`,yes:"Delete",no:"Keep",run:ks})},$s=M=>{var I;return(I=b.value)==null?void 0:I.connectors.push({type:M.type})},xs=M=>{b.value&&(h.delete(b.value.connectors[M]),b.value.connectors.splice(M,1))},Ss=M=>{if(!b.value)return;const I=se(b.value.connectors[M]).label;P.value={text:`Remove the ${I} source from ${b.value.name||b.value.id}?`,yes:"Remove",no:"Keep",run:()=>xs(M)}},Cs=()=>Ee("/api/config").then(M=>{Y.value="",t.value=(M.workspaces||[]).map(Ct),n.value=M.connectors||[],o.value=M.fields,h.clear(),m.value=0,P.value=null,s.value=Math.max(0,t.value.findIndex(I=>I.id===g.workspace.id)),l.value=M.config_file||"",r.value=M.problems||[],d.value={},w.clear(),t.value.forEach(I=>w.set(Ie(I),I.id)),f.value=M.facts||{},p.value=M.tables||{},k.value=M.table_warnings||{},R.value=Rt(t.value)}).catch(()=>{Y.value=xe+"; settings cannot be loaded."}).then(_e).then(()=>{var M;S.settingsAt==="connectors"&&((M=u.value)==null||M.scrollIntoView({block:"start"})),S.settingsAt=""}),Ke=()=>{S.settings=!1},mt=()=>{P.value={text:"Discard changes?",yes:"Discard",no:"Keep editing",run:Ke}},gt=()=>$.value?mt():Ke(),yt=M=>{const I=P.value;P.value=null,M&&(I==null||I.run())},Es=async()=>{try{const M=await ie("/api/config",{workspaces:t.value.map(I=>kn(I)),secrets:$n(t.value,h)});if(M.error){const I=an(M.error);d.value=Object.fromEntries(I.filter(T=>T.field!=="workspaces").map(T=>[T.field,T.description])),r.value=I.length?I.filter(T=>T.field==="workspaces").map(T=>T.description):dt(M.error),I.length&&!r.value.length&&(r.value=["Fix the marked fields; nothing was saved."]);return}Ke(),as()}catch(M){r.value=[ce(M,{unreachable:xe+"; your changes are kept, save again."})]}};return J($,M=>{S.settingsDirty=M},{immediate:!0}),J(()=>S.settingsAsk,M=>{M&&(S.settingsAsk=!1,mt())}),J(()=>S.settings,M=>{M&&Cs()}),(M,I)=>_(S).settings?(i(),c("div",{key:0,class:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"settings-title",onClick:ee(gt,["self"])},[a("div",tc,[a("div",sc,[I[2]||(I[2]=a("h3",{id:"settings-title",class:"modal__title"},"Settings",-1)),a("span",nc,v(l.value),1),$.value?(i(),c("span",oc,"Unsaved changes")):x("",!0),Y.value?x("",!0):(i(),c("button",{key:1,type:"button",class:"btn btn--tonal",onClick:Es},"Save")),a("button",{type:"button",class:"btn",onClick:gt},"Close")]),P.value?(i(),c("div",ac,[a("span",lc,v(P.value.text),1),a("button",{type:"button",class:"btn btn--danger",onClick:I[0]||(I[0]=T=>yt(!0))},v(P.value.yes),1),a("button",{type:"button",class:"btn",onClick:I[1]||(I[1]=T=>yt(!1))},v(P.value.no),1)])):x("",!0),Y.value?(i(),c("div",ic,v(Y.value),1)):r.value.length?(i(),c("div",rc,v(r.value.join(" · ")),1)):x("",!0),Y.value?x("",!0):(i(),c("div",cc,[a("ul",dc,[(i(!0),c(W,null,X(z.value,(T,Z)=>(i(),c("li",{key:T.uid},[a("button",{type:"button",class:"settings-sheet__workspace","aria-current":Z===s.value,onClick:Me=>s.value=Z},v(T.label),9,uc)]))),128)),a("li",null,[a("button",{type:"button",class:"settings-sheet__workspace settings-sheet__workspace--add",onClick:ws}," + Add workspace ")])]),a("div",hc,[b.value?(i(),c(W,{key:1},[I[3]||(I[3]=a("h4",{class:"sheet-form__heading"},"Workspace",-1)),(i(!0),c(W,null,X(o.value.workspace,T=>(i(),K(he,{key:T.key,spec:T,hint:T.key==="id"?C.value:"",error:y(T.key),"model-value":Q(b.value,T.key),"onUpdate:modelValue":Z=>ys(b.value,T.key,Z)},null,8,["spec","hint","error","model-value","onUpdate:modelValue"]))),128)),I[4]||(I[4]=a("h4",{class:"sheet-form__heading"},"Theme",-1)),(i(!0),c(W,null,X(o.value.theme,T=>{var Z;return i(),K(he,{key:T.key,spec:T,hint:T.key==="seed"&&!((Z=b.value.theme)!=null&&Z.seed)?O(b.value.id):"","model-value":Q(b.value.theme,T.key),"onUpdate:modelValue":Me=>_(ue)(b.value.theme,T.key,Me)},null,8,["spec","hint","model-value","onUpdate:modelValue"])}),128)),a("h4",_c,"Sources",512),(i(!0),c(W,null,X(V.value,({entry:T,spec:Z,uid:Me},wt)=>(i(),c("div",{key:Me,class:"settings-sheet__connector"},[a("div",fc,[a("strong",vc,v(Z.label),1),a("button",{type:"button",class:"btn btn--danger",onClick:oe=>Ss(wt)}," Remove ",8,mc)]),N(he,{spec:A,placeholder:Z.type,hint:"only needed when one type appears twice","model-value":Q(T,"id"),"onUpdate:modelValue":oe=>_(ue)(T,"id",oe)},null,8,["placeholder","model-value","onUpdate:modelValue"]),N(he,{spec:D,placeholder:Z.label,hint:"its name in the feed","model-value":Q(T,"label"),"onUpdate:modelValue":oe=>_(ue)(T,"label",oe)},null,8,["placeholder","model-value","onUpdate:modelValue"]),(i(!0),c(W,null,X(Z.fields,oe=>(i(),K(he,{key:oe.key,spec:oe,error:y("connectors["+wt+"]."+oe.key),"model-value":Q(T,oe.key),"onUpdate:modelValue":Xe=>_(ue)(T,oe.key,Xe),onSecret:(Xe,Rs)=>Ye(T,Xe,Rs)},null,8,["spec","error","model-value","onUpdate:modelValue","onSecret"]))),128))]))),128)),a("div",gc,[(i(!0),c(W,null,X(n.value,T=>(i(),c("button",{key:T.type,type:"button",class:"btn",onClick:Z=>$s(T)}," + Add "+v(T.label)+" source ",9,yc))),128))]),I[5]||(I[5]=a("h4",{class:"sheet-form__heading"},"Rules",-1)),(i(!0),c(W,null,X(o.value.rules,T=>(i(),K(he,{key:T.key,spec:T,error:y("rules."+T.key),"model-value":Q(b.value.rules,T.key),"onUpdate:modelValue":Z=>_(ue)(b.value.rules,T.key,Z)},null,8,["spec","error","model-value","onUpdate:modelValue"]))),128)),(i(!0),c(W,null,X(o.value.statuses,T=>(i(),K(he,{key:T.key,spec:T,"model-value":Q(b.value.rules.statuses,T.key),"onUpdate:modelValue":Z=>_(ue)(b.value.rules.statuses,T.key,Z)},null,8,["spec","model-value","onUpdate:modelValue"]))),128)),I[6]||(I[6]=a("h4",{class:"sheet-form__heading"},"Whose turn table",-1)),I[7]||(I[7]=a("p",{class:"settings-sheet__rules-note"}," The rows in force, top to bottom: the first one that fits decides. Read-only here: ask Claude to change them. ",-1)),(i(!0),c(W,null,X(U.value,T=>(i(),c("p",{key:T,class:"settings-sheet__rules-warning"},v(T),1))),128)),F.value.length?(i(),c("ol",wc,[(i(!0),c(W,null,X(F.value,(T,Z)=>(i(),c("li",{key:Z,class:"settings-sheet__rule"},[a("span",kc,v(T.when),1),a("span",bc,v(T.then),1)]))),128))])):(i(),c("p",$c,"Save the workspace to see its rows.")),a("div",{class:"settings-sheet__actions"},[a("button",{type:"button",class:"btn btn--danger",onClick:bs}," Delete workspace ")])],64)):(i(),c("p",pc,"No workspaces yet. Add one on the left."))])]))])])):x("",!0)}}),Sc=j(xc,[["__scopeId","data-v-8253a01a"]]),Cc={class:"modal__meta"},Ec={key:0,class:"alert",role:"alert"},Rc={class:"whats-new__head"},Ac={class:"whats-new__name"},Mc={key:0,class:"whats-new__date"},Tc={key:1,class:"whats-new__tag whats-new__tag--running"},zc={key:2,class:"whats-new__tag"},Ic={key:1,class:"whats-new__empty"},Oc=q({__name:"WhatsNewSheet",setup(e){const{changelog:t,problem:s,unseen:n,load:o,markSeen:l}=_t(),r=B([]),d=()=>{S.whatsNew=!1};return J(()=>S.whatsNew,async w=>{w&&(t.value||await o(),r.value=n.value.map(f=>f.version),l())}),(w,f)=>_(S).whatsNew?(i(),K(gs,{key:0,title:"What's new","label-id":"whats-new-title",flush:"",onClose:d},Wt({default:te(()=>{var p;return[_(s)?(i(),c("div",Ec,v(_(s)),1)):x("",!0),(i(!0),c(W,null,X((p=_(t))==null?void 0:p.versions,k=>{var u;return i(),c("article",{key:k.version,class:"whats-new__version"},[a("header",Rc,[a("h4",Ac,v(k.version),1),k.date?(i(),c("span",Mc,v(k.date),1)):x("",!0),k.version===((u=_(t))==null?void 0:u.current)?(i(),c("span",Tc,"Running")):x("",!0),r.value.includes(k.version)?(i(),c("span",zc,"New")):x("",!0)]),k.sections.length?(i(),K(ms,{key:0,source:_(fo)(k)},null,8,["source"])):(i(),c("p",Ic,"No notes for this version."))])}),128))]}),_:2},[_(t)?{name:"head",fn:te(()=>[a("span",Cc,"Running "+v(_(t).current),1)]),key:"0"}:void 0]),1024)):x("",!0)}}),Bc=j(Oc,[["__scopeId","data-v-78394e08"]]),Dc={class:"app__shell"},Nc=["inert"],Pc={id:"wt",class:"dashboard dashboard--fit"},Fc=["inert"],Vc={class:"dashboard__main"},Wc=q({__name:"App",setup(e){const t=E(()=>!!g.workspace.id&&!g.workspace.connectors.length),{size:s}=pt(()=>`${g.workspace.id}:feed`),n=E(()=>s.value===null?void 0:{"--feed-width":s.value+"px"}),o=_t(),l=E(()=>os.value!==null);io(l),ro(l),J(Ze,vn,{flush:"post"});const r={light:{fill:"#d8e2ff",ink:"#001a41",dot:"#2c5697"},dark:{fill:"#2b4678",ink:"#d8e2ff",dot:"#adc6ff"}},d=E(()=>{const{id:w,name:f}=g.workspace;if(!w)return null;const p=Ze.value,k=r[Ce.value?"dark":"light"],u={fill:p["--md-primary-container"]||k.fill,ink:p["--md-on-primary-container"]||k.ink,dot:p["--md-primary"]||k.dot};return"data:image/svg+xml,"+encodeURIComponent(so(rs({id:w,name:f},rt),u))});return Ks(d),ct("Escape",Vn,{target:document}),it(()=>{Fn(),o.load()}),(w,f)=>(i(),c("div",{class:"app",style:Ne(_(Ze))},[N(zo,{inert:l.value,onSettings:f[0]||(f[0]=p=>_(S).settings=!0),onWhatsNew:f[1]||(f[1]=p=>_(S).whatsNew=!0)},null,8,["inert"]),a("div",Dc,[N(ia,{inert:l.value,onReport:f[2]||(f[2]=p=>_(S).feedback=!0)},null,8,["inert"]),_(At).length?(i(),c("div",{key:0,class:"alert",inert:l.value},[G(v(_(At).join(" · "))+" ",1),a("button",{type:"button",class:"alert__action",onClick:f[3]||(f[3]=p=>_(ns)())},"Open Settings")],8,Nc)):x("",!0),a("div",Pc,[f[5]||(f[5]=a("canvas",{id:"backdrop",class:"dashboard__backdrop","aria-hidden":"true"},null,-1)),N(Ea,{inert:l.value},null,8,["inert"]),t.value?(i(),K(Ki,{key:0,inert:l.value},null,8,["inert"])):(i(),c("div",{key:1,class:"dashboard__layout",style:Ne(n.value),inert:l.value},[a("div",Vc,[N(Rl,{class:"dashboard__move"}),N(Hl,{class:"dashboard__todo"}),N(ti,{class:"dashboard__waiting"})]),N(Li,{class:"dashboard__feed",onOpen:f[4]||(f[4]=p=>_(S).modal=p)})],12,Fc)),N(Pr),N(Sc),N(Bc),N(lr),N(wr)])])],4))}}),Uc=j(Wc,[["__scopeId","data-v-580c2b4a"]]);Is(Uc).mount("#app");qn();yn();
@@ -1 +1 @@
1
- import{d as v,l as w,o as s,b as o,i as a,F as c,h as t,g as f,u as p,m as u,j as h,e as k,k as g,_ as y,J as x}from"./_plugin-vue_export-helper-BxUUR8De.js";import{g as N,S as b,m as R,t as C,j as d}from"./bem-HybmjowO.js";const B={class:"app report-page"},S={key:0,class:"report-page__note"},T={class:"report-page__head"},V={class:"report-page__id"},E={class:"report-page__title"},L={class:"report-page__meta"},P={class:"report-page__section"},W={class:"report-page__text"},j={class:"report-page__section"},A={key:0,class:"report-page__unanswered"},D={key:1,class:"empty"},F={class:"report-page__answer-meta"},I={class:"report-page__text"},J=v({__name:"ReportPage",setup(z){const n=new URLSearchParams(location.search).get("id")||"",e=g(null),i=g(n?"Loading…":"No report id in the link.");return w(()=>{n&&(document.title=n+" · Your report · Whose Turn",N("/api/feedback?id="+encodeURIComponent(n)).then(l=>{e.value=l.report||null,i.value=l.report?"":"No report "+n+" was filed from this machine."}).catch(()=>{i.value=b+"; reload this page once it is back."}))}),(l,r)=>(s(),o("main",B,[e.value?(s(),o(c,{key:1},[t("header",T,[t("span",V,a(e.value.id),1),t("h1",E,a(e.value.title),1),t("span",{class:f(["pill",p(R)("pill",p(C)(e.value.outcome))])},a(e.value.state||"filed, not yet seen"),3)]),t("p",L,[u(a(e.value.kind||"report")+" · filed "+a(p(d)(e.value.filed_at)),1),e.value.changed_at?(s(),o(c,{key:0},[u(" · last change "+a(p(d)(e.value.changed_at)),1)],64)):h("",!0)]),t("section",P,[r[0]||(r[0]=t("h2",{class:"report-page__heading"},"What you reported",-1)),t("p",W,a(e.value.body||"(no text kept)"),1)]),t("section",j,[r[1]||(r[1]=t("h2",{class:"report-page__heading"},"Answers",-1)),e.value.unanswered?(s(),o("p",A," Closed without an answer. The maintainer owes you a reason; this page will show it once it is written. ")):e.value.answers.length?h("",!0):(s(),o("p",D,"No answer yet.")),(s(!0),o(c,null,k(e.value.answers,(_,m)=>(s(),o("article",{key:m,class:"report-page__answer"},[t("p",F,a(_.by||"maintainer")+" · "+a(p(d)(_.at)),1),t("p",I,a(_.text),1)]))),128))])],64)):(s(),o("p",S,a(i.value),1)),r[2]||(r[2]=t("a",{class:"report-page__back",href:"/"},"Back to the window",-1))]))}}),U=y(J,[["__scopeId","data-v-16ea9dee"]]);x(U).mount("#app");
1
+ import{d as v,l as f,o as s,e as o,j as a,F as c,i as t,h as k,u as p,m as u,k as h,f as w,b as g,_ as y,K as x}from"./_plugin-vue_export-helper-DeQjDyQ9.js";import{g as N,S as b,m as R,u as C,k as d}from"./bem-CST_YFrc.js";const B={class:"app report-page"},S={key:0,class:"report-page__note"},T={class:"report-page__head"},V={class:"report-page__id"},E={class:"report-page__title"},L={class:"report-page__meta"},P={class:"report-page__section"},W={class:"report-page__text"},A={class:"report-page__section"},D={key:0,class:"report-page__unanswered"},F={key:1,class:"empty"},I={class:"report-page__answer-meta"},U={class:"report-page__text"},j=v({__name:"ReportPage",setup(J){const n=new URLSearchParams(location.search).get("id")||"",e=g(null),i=g(n?"Loading…":"No report id in the link.");return f(()=>{n&&(document.title=n+" · Your report · Whose Turn",N("/api/feedback?id="+encodeURIComponent(n)).then(l=>{e.value=l.report||null,i.value=l.report?"":"No report "+n+" was filed from this machine."}).catch(()=>{i.value=b+"; reload this page once it is back."}))}),(l,r)=>(s(),o("main",B,[e.value?(s(),o(c,{key:1},[t("header",T,[t("span",V,a(e.value.id),1),t("h1",E,a(e.value.title),1),t("span",{class:k(["pill",p(R)("pill",p(C)(e.value.outcome))])},a(e.value.state||"filed, not yet seen"),3)]),t("p",L,[u(a(e.value.kind||"report")+" · filed "+a(p(d)(e.value.filed_at)),1),e.value.changed_at?(s(),o(c,{key:0},[u(" · last change "+a(p(d)(e.value.changed_at)),1)],64)):h("",!0)]),t("section",P,[r[0]||(r[0]=t("h2",{class:"report-page__heading"},"What you reported",-1)),t("p",W,a(e.value.body||"(no text kept)"),1)]),t("section",A,[r[1]||(r[1]=t("h2",{class:"report-page__heading"},"Answers",-1)),e.value.unanswered?(s(),o("p",D," Closed without an answer. The maintainer owes you a reason; this page will show it once it is written. ")):e.value.answers.length?h("",!0):(s(),o("p",F,"No answer yet.")),(s(!0),o(c,null,w(e.value.answers,(_,m)=>(s(),o("article",{key:m,class:"report-page__answer"},[t("p",I,a(_.by||"maintainer")+" · "+a(p(d)(_.at)),1),t("p",U,a(_.text),1)]))),128))])],64)):(s(),o("p",S,a(i.value),1)),r[2]||(r[2]=t("a",{class:"report-page__back",href:"/"},"Back to the window",-1))]))}}),z=y(j,[["__scopeId","data-v-16ea9dee"]]);x(z).mount("#app");
@@ -0,0 +1 @@
1
+ import{w as P,M as J,a as Y,N as _,O as we,P as xe,Q as He,b as _e,n as ke,R as ne,S as Se,T as Ce,U as Le,l as We,V as Ne,W as Pe,D as $e,I as Ie,c as x,u as ze,r as pe}from"./_plugin-vue_export-helper-DeQjDyQ9.js";function N(e,t){return Le()?(Ne(e,t),!0):!1}const Z=new WeakMap,Fe=(...e)=>{var t;const a=e[0],n=(t=ne())===null||t===void 0?void 0:t.proxy,i=n??Le();if(i==null&&!Se())throw new Error("injectLocal must be called in setup");return i&&Z.has(i)&&a in Z.get(i)?Z.get(i)[a]:Ce(...e)},F=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Be=e=>e!=null,Ve=Object.prototype.toString,qe=e=>Ve.call(e)==="[object Object]",A=()=>{};function ie(...e){if(e.length!==1)return xe(...e);const t=e[0];return typeof t=="function"?He(we(()=>({get:t,set:A}))):_e(t)}function oe(e,t){function a(...n){return new Promise((i,o)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(i).catch(o)})}return"cancel"in e&&Object.assign(a,{cancel:e.cancel,flush:e.flush,isPending:e.isPending}),a}const Ee=e=>e();function Je(e,t={}){let a,n,i=A,o=A;const s=_(!1),r=c=>{clearTimeout(c),i(),i=A};let l;return Object.assign(c=>{const u=Y(e),d=Y(t.maxWait);return a&&r(a),u<=0||d!==void 0&&d<=0?(n&&(r(n),n=void 0),s.value=!1,Promise.resolve(c())):(s.value=!0,new Promise((g,p)=>{i=t.rejectOnCancel?p:g,o=g,l=c,d&&!n&&(n=setTimeout(()=>{a&&r(a),n=void 0,s.value=!1,g(l())},d)),a=setTimeout(()=>{n&&r(n),n=void 0,s.value=!1,g(c())},u)}))},{cancel:()=>{a&&(r(a),a=void 0),n&&(r(n),n=void 0),s.value=!1,o=A},flush:()=>{if(s.value){a&&(clearTimeout(a),a=void 0),n&&(clearTimeout(n),n=void 0),s.value=!1;const c=o;i=A,o=A,c(l())}},isPending:J(s)})}function Ke(...e){let t=0,a,n=!0,i=A,o,s,r,l,h;!$e(e[0])&&typeof e[0]=="object"?{delay:s,trailing:r=!0,leading:l=!0,rejectOnCancel:h=!1}=e[0]:[s,r=!0,l=!0,h=!1]=e;const c=()=>{a&&(clearTimeout(a),a=void 0,i(),i=A)};return d=>{const g=Y(s),p=Date.now()-t,b=()=>o=d();return c(),g<=0?(t=Date.now(),b()):(p>g?(t=Date.now(),(l||!n)&&b()):r&&(o=new Promise((v,R)=>{i=h?R:v,a=setTimeout(()=>{t=Date.now(),n=!0,v(b()),c()},Math.max(0,g-p))})),!l&&!a&&(a=setTimeout(()=>n=!0,g)),n=!1,o)}}function Ue(e=Ee,t={}){const{initialState:a="active"}=t,n=ie(a==="active");function i(){n.value=!1}function o(){n.value=!0}const s=(...r)=>{n.value&&e(...r)};return{isActive:J(n),pause:i,resume:o,eventFilter:s}}function fe(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function q(e){return Array.isArray(e)?e:[e]}function Ge(e){return ne()}function ta(e){if(!F)return e;let t=0,a,n;const i=()=>{t-=1,n&&t<=0&&(n.stop(),a=void 0,n=void 0)};return((...o)=>(t+=1,n||(n=Pe(!0),a=n.run(()=>e(...o))),N(i),a))}function aa(e,t=1e4){return we((a,n)=>{let i=Y(e),o;const s=()=>setTimeout(()=>{i=Y(e),n()},Y(t));return N(()=>{clearTimeout(o)}),{get(){return a(),i},set(r){i=r,n(),clearTimeout(o),o=s()}}})}function Qe(e,t=200,a={}){return oe(Je(t,a),e)}function Ze(e,t=200,a=!0,n=!0,i=!1){return oe(Ke(t,a,n,i),e)}function et(e,t,a={}){const{eventFilter:n=Ee,...i}=a;return P(e,oe(n,t),i)}function tt(e,t,a={}){const{eventFilter:n,initialState:i="active",...o}=a,{eventFilter:s,pause:r,resume:l,isActive:h}=Ue(n,{initialState:i});return{stop:et(e,t,{...o,eventFilter:s}),pause:r,resume:l,isActive:h}}function se(e,t=!0,a){Ge()?We(e,a):t?e():ke(e)}function na(e,t=1e3,a={}){const{immediate:n=!0,immediateCallback:i=!1}=a;let o=null;const s=_(!1);function r(){o&&(clearInterval(o),o=null)}function l(){s.value=!1,r()}function h(){const c=Y(t);c<=0||(s.value=!0,i&&e(),r(),s.value&&(o=setInterval(e,c)))}return n&&F&&h(),($e(t)||typeof t=="function")&&N(P(t,()=>{s.value&&F&&h()})),N(l),{isActive:J(s),pause:l,resume:h}}function ia(e,t,a={}){const{immediate:n=!0,immediateCallback:i=!1}=a,o=_(!1);let s;function r(){s&&(clearTimeout(s),s=void 0)}function l(){o.value=!1,r()}function h(...c){i&&e(),r(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=void 0,e(...c)},Y(t))}return n&&(o.value=!0,F&&h()),N(l),{isPending:J(o),start:h,stop:l}}function at(e,t,a){return P(e,t,{...a,immediate:!0})}const $=F?window:void 0,nt=F?window.document:void 0;function C(e){var t;const a=Y(e);return(t=a==null?void 0:a.$el)!==null&&t!==void 0?t:a}function V(...e){const t=(n,i,o,s)=>(n.addEventListener(i,o,s),()=>n.removeEventListener(i,o,s)),a=x(()=>{const n=q(Y(e[0])).filter(i=>i!=null);return n.every(i=>typeof i!="string")?n:void 0});return at(()=>{var n,i;return[(n=(i=a.value)===null||i===void 0?void 0:i.map(o=>C(o)))!==null&&n!==void 0?n:[$].filter(o=>o!=null),q(Y(a.value?e[1]:e[0])),q(ze(a.value?e[2]:e[1])),Y(a.value?e[3]:e[2])]},([n,i,o,s],r,l)=>{if(!(n!=null&&n.length)||!(i!=null&&i.length)||!(o!=null&&o.length))return;const h=qe(s)?{...s}:s,c=n.flatMap(u=>i.flatMap(d=>o.map(g=>t(u,d,g,h))));l(()=>{c.forEach(u=>u())})},{flush:"post"})}function it(){const e=_(!1),t=ne();return t&&We(()=>{e.value=!0},t),e}function re(e){const t=it();return x(()=>(t.value,!!e()))}function ot(e,t,a={}){const{window:n=$,...i}=a;let o;const s=re(()=>n&&"MutationObserver"in n),r=()=>{o&&(o.disconnect(),o=void 0)},l=x(()=>{const d=Y(e),g=q(d).map(C).filter(Be);return new Set(g)}),h=P(l,d=>{r(),s.value&&d.size&&(o=new MutationObserver(t),d.forEach(g=>o.observe(g,i)))},{immediate:!0,flush:"post"}),c=()=>o==null?void 0:o.takeRecords(),u=()=>{h(),r()};return N(u),{isSupported:s,stop:u,takeRecords:c}}function st(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function oa(...e){let t,a,n={};e.length===3?(t=e[0],a=e[1],n=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,a=e[0],n=e[1]):(t=e[0],a=e[1]):(t=!0,a=e[0]);const{target:i=$,eventName:o="keydown",passive:s=!1,dedupe:r=!1}=n,l=st(t);return V(i,o,c=>{c.repeat&&Y(r)||l(c)&&a(c)},s)}function rt(e,t={}){const{immediate:a=!0,fpsLimit:n=null,window:i=$,once:o=!1}=t,s=_(!1),r=x(()=>{const g=Y(n);return g?1e3/g:null});let l=0,h=null;function c(g){if(!s.value||!i)return;l||(l=g);const p=g-l;if(r.value&&p<r.value){h=i.requestAnimationFrame(c);return}if(l=g,e({delta:p,timestamp:g}),o){s.value=!1,h=null;return}h=i.requestAnimationFrame(c)}function u(){!s.value&&i&&(s.value=!0,l=0,h=i.requestAnimationFrame(c))}function d(){s.value=!1,h!=null&&i&&(i.cancelAnimationFrame(h),h=null)}return a&&u(),N(d),{isActive:J(s),pause:d,resume:u}}const lt=Symbol("vueuse-ssr-width");function dt(){const e=Se()?Fe(lt,null):null;return typeof e=="number"?e:void 0}function ut(e,t={}){const{window:a=$,ssrWidth:n=dt()}=t,i=re(()=>a&&"matchMedia"in a&&typeof a.matchMedia=="function"),o=_(typeof n=="number"),s=_(),r=_(!1),l=h=>{r.value=h.matches};return Ie(()=>{if(o.value){o.value=!i.value;const h=Y(e).split(",");r.value=h.some(c=>{const u=c.includes("not all"),d=c.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),g=c.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let p=!!(d||g);return d&&p&&(p=n>=fe(d[1])),g&&p&&(p=n<=fe(g[1])),u?!p:p});return}i.value&&(s.value=a.matchMedia(Y(e)),r.value=s.value.matches)}),V(s,"change",l,{passive:!0}),x(()=>r.value)}const K=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},U="__vueuse_ssr_handlers__",ct=ht();function ht(){return U in K||(K[U]=K[U]||{}),K[U]}function gt(e,t){return ct[e]||t}function pt(e){return ut("(prefers-color-scheme: dark)",e)}function ft(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const bt={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},be="vueuse-storage";function je(e,t,a,n={}){var i;const{flush:o="pre",deep:s=!0,listenToStorageChanges:r=!0,writeDefaults:l=!0,mergeDefaults:h=!1,shallow:c,window:u=$,eventFilter:d,onError:g=f=>{console.error(f)},initOnMounted:p}=n,b=(c?_:_e)(typeof t=="function"?t():t),v=x(()=>Y(e));if(!a)try{a=gt("getDefaultStorage",()=>$==null?void 0:$.localStorage)()}catch(f){g(f)}if(!a)return b;const R=Y(t),w=ft(R),X=(i=n.serializer)!==null&&i!==void 0?i:bt[w],{pause:k,resume:H}=tt(b,f=>T(f),{flush:o,deep:s,eventFilter:d});P(v,()=>D(),{flush:o});let W=!1;const E=f=>{p&&!W||D(f)},j=f=>{p&&!W||I(f)};u&&r&&(a instanceof Storage?V(u,"storage",E,{passive:!0}):V(u,be,j)),p?se(()=>{W=!0,D()}):D();function y(f,m){if(u){const S={key:v.value,oldValue:f,newValue:m,storageArea:a};u.dispatchEvent(a instanceof Storage?new StorageEvent("storage",S):new CustomEvent(be,{detail:S}))}}function T(f){try{const m=a.getItem(v.value);if(f==null)y(m,null),a.removeItem(v.value);else{const S=X.write(f);m!==S&&(a.setItem(v.value,S),y(m,S))}}catch(m){g(m)}}function L(f){const m=f?f.newValue:a.getItem(v.value);if(m==null)return l&&R!=null&&a.setItem(v.value,X.write(R)),R;if(!f&&h){const S=X.read(m);return typeof h=="function"?h(S,R):w==="object"&&!Array.isArray(S)?{...R,...S}:S}else return typeof m!="string"?m:X.read(m)}function D(f){if(!(f&&f.storageArea!==a)){if(f&&f.key==null){b.value=R;return}if(!(f&&f.key!==v.value)){k();try{const m=X.write(b.value);(f===void 0||(f==null?void 0:f.newValue)!==m)&&(b.value=L(f))}catch(m){g(m)}finally{f?ke(H):H()}}}}function I(f){D(f.detail)}return b}function yt(e,t,a={}){const{window:n=$,...i}=a;let o;const s=re(()=>n&&"ResizeObserver"in n),r=()=>{o&&(o.disconnect(),o=void 0)},l=x(()=>{const u=Y(e);return Array.isArray(u)?u.map(d=>C(d)):[C(u)]}),h=P(l,u=>{if(r(),s.value&&n){o=new ResizeObserver(t);for(const d of u)d instanceof Element&&o.observe(d,i)}},{immediate:!0,flush:"post"}),c=()=>{r(),h()};return N(c),{isSupported:s,stop:c}}function sa(e,t={width:0,height:0},a={}){const{window:n=$,box:i="content-box"}=a,o=x(()=>{var u;return(u=C(e))===null||u===void 0||(u=u.namespaceURI)===null||u===void 0?void 0:u.includes("svg")}),s=_(t.width),r=_(t.height),{stop:l}=yt(e,([u])=>{const d=i==="border-box"?u.borderBoxSize:i==="content-box"?u.contentBoxSize:u.devicePixelContentBoxSize;if(n&&o.value){const g=C(e);if(g){const p=g.getBoundingClientRect();s.value=p.width,r.value=p.height}}else if(d){const g=q(d);s.value=g.reduce((p,{inlineSize:b})=>p+b,0),r.value=g.reduce((p,{blockSize:b})=>p+b,0)}else s.value=u.contentRect.width,r.value=u.contentRect.height},a);se(()=>{const u=C(e);if(u&&"offsetWidth"in u)if(i==="content-box"&&n){const d=n.getComputedStyle(u),g=Number.parseFloat(d.paddingLeft)+Number.parseFloat(d.paddingRight),p=Number.parseFloat(d.paddingTop)+Number.parseFloat(d.paddingBottom),b=Number.parseFloat(d.borderLeftWidth)+Number.parseFloat(d.borderRightWidth),v=Number.parseFloat(d.borderTopWidth)+Number.parseFloat(d.borderBottomWidth);s.value=u.offsetWidth-g-b,r.value=u.offsetHeight-p-v}else s.value=u.offsetWidth,r.value=u.offsetHeight;else u&&(s.value=t.width,r.value=t.height)});const h=P(()=>C(e),u=>{s.value=u?t.width:0,r.value=u?t.height:0});function c(){l(),h()}return{width:s,height:r,stop:c}}function mt(e){return e===!0?{}:e}const vt="message";function ra(e,t=[],a={}){const n=_(null),i=_(null),o=_("CONNECTING"),s=_(null),r=_(null),l=ie(e),h=_(null);let c=!1,u=0;const{withCredentials:d=!1,immediate:g=!0,autoConnect:p=!0,autoReconnect:b,serializer:v={read:k=>k}}=a,R=()=>{F&&s.value&&(s.value.close(),s.value=null,o.value="CLOSED",c=!0)},w=()=>{if(c||typeof l.value>"u")return;const k=new EventSource(l.value,{withCredentials:d});o.value="CONNECTING",s.value=k,k.onopen=()=>{o.value="OPEN",r.value=null},k.onerror=H=>{if(o.value="CLOSED",r.value=H,k.readyState===2&&!c&&b){k.close();const{retries:W=-1,delay:E=1e3,onFailed:j}=mt(b);u+=1,typeof W=="number"&&(W<0||u<W)||typeof W=="function"&&W()?setTimeout(w,E):j==null||j()}},t=t.length>0?t:[vt];for(const H of t)V(k,H,W=>{var E,j;n.value=H,i.value=(E=v.read(W.data))!==null&&E!==void 0?E:null,h.value=(j=W.lastEventId)!==null&&j!==void 0?j:null},{passive:!0})},X=()=>{F&&(R(),c=!1,u=0,w())};return g&&X(),p&&P(l,X),N(R),{eventSource:s,event:n,data:i,status:o,error:r,open:X,close:R,lastEventId:h}}function la(e=null,t={}){const{baseUrl:a="",rel:n="icon",document:i=nt}=t,o=ie(e),s=r=>{const l=i==null?void 0:i.head.querySelectorAll(`link[rel*="${n}"]`);if(!l||l.length===0){const h=i==null?void 0:i.createElement("link");h&&(h.rel=n,h.href=`${a}${r}`,h.type=`image/${r.split(".").pop()}`,i==null||i.head.append(h));return}l==null||l.forEach(h=>h.href=`${a}${r}`)};return P(o,(r,l)=>{typeof r=="string"&&r!==l&&s(r)},{immediate:!0}),o}const ye=1;function da(e,t={}){const{throttle:a=0,idle:n=200,onStop:i=A,onScroll:o=A,offset:s={left:0,right:0,top:0,bottom:0},observe:r={mutation:!1},eventListenerOptions:l={capture:!1,passive:!0},behavior:h="auto",window:c=$,onError:u=y=>{console.error(y)}}=t,d=typeof r=="boolean"?{mutation:r}:r,g=_(0),p=_(0),b=x({get(){return g.value},set(y){R(y,void 0)}}),v=x({get(){return p.value},set(y){R(void 0,y)}});function R(y,T){var L,D,I,f;if(!c)return;const m=Y(e);if(!m)return;(L=m instanceof Document?c.document.body:m)===null||L===void 0||L.scrollTo({top:(D=Y(T))!==null&&D!==void 0?D:v.value,left:(I=Y(y))!==null&&I!==void 0?I:b.value,behavior:Y(h)});const S=(m==null||(f=m.document)===null||f===void 0?void 0:f.documentElement)||(m==null?void 0:m.documentElement)||m;b!=null&&(g.value=S.scrollLeft),v!=null&&(p.value=S.scrollTop)}const w=_(!1),X=pe({left:!0,right:!1,top:!0,bottom:!1}),k=pe({left:!1,right:!1,top:!1,bottom:!1}),H=y=>{w.value&&(w.value=!1,k.left=!1,k.right=!1,k.top=!1,k.bottom=!1,i(y))},W=Qe(H,a+n),E=y=>{var T;if(!c)return;const L=(y==null||(T=y.document)===null||T===void 0?void 0:T.documentElement)||(y==null?void 0:y.documentElement)||C(y),{display:D,flexDirection:I,direction:f}=c.getComputedStyle(L),m=f==="rtl"?-1:1,S=L.scrollLeft;k.left=S<g.value,k.right=S>g.value;const ue=Math.abs(S*m)<=(s.left||0),ce=Math.abs(S*m)+L.clientWidth>=L.scrollWidth-(s.right||0)-ye;D==="flex"&&I==="row-reverse"?(X.left=ce,X.right=ue):(X.left=ue,X.right=ce),g.value=S;let B=L.scrollTop;y===c.document&&!B&&(B=c.document.body.scrollTop),k.top=B<p.value,k.bottom=B>p.value;const he=Math.abs(B)<=(s.top||0),ge=Math.abs(B)+L.clientHeight>=L.scrollHeight-(s.bottom||0)-ye;D==="flex"&&I==="column-reverse"?(X.top=ge,X.bottom=he):(X.top=he,X.bottom=ge),p.value=B},j=y=>{var T;if(!c)return;const L=(T=y.target.documentElement)!==null&&T!==void 0?T:y.target;E(L),w.value=!0,W(y),o(y)};return V(e,"scroll",a?Ze(j,a,!0,!1):j,l),se(()=>{try{const y=Y(e);if(!y)return;E(y)}catch(y){u(y)}}),d!=null&&d.mutation&&e!=null&&e!==c&&e!==document&&ot(e,()=>{const y=Y(e);y&&E(y)},{attributes:!0,childList:!0,subtree:!0}),V(e,"scrollend",H,l),{x:b,y:v,isScrolling:w,arrivedState:X,directions:k,measure(){const y=Y(e);c&&y&&E(y)}}}function ua(e,t,a={}){const{window:n=$}=a;return je(e,t,n==null?void 0:n.localStorage,a)}function ca(e={}){const{controls:t=!1,scheduler:a=rt}=e,n=_(new Date),o=a(()=>n.value=new Date);return t?{now:n,...o}:n}function ha(e,t,a={}){const{window:n=$}=a;return je(e,t,n==null?void 0:n.sessionStorage,a)}const Yt=e=>{let t=e>>>0;return()=>{t=t+1831565813>>>0;let a=t;return a=Math.imul(a^a>>>15,a|1),a^=a+Math.imul(a^a>>>7,a|61),((a^a>>>14)>>>0)/4294967296}},ga=e=>{const t=Yt(e),a=(n,i)=>n+(i-n)*t();return{next:t,range:a,int:(n,i)=>Math.floor(a(n,i+1)),chance:n=>t()<n,vary:(n,i=.12)=>n*a(1-i,1+i)}},De=(e,t=0,a=1)=>Math.min(a,Math.max(t,e)),Te=(e,t,a)=>e+(t-e)*a,G=/\s*(?:(\d+\.?\d*(?:e[+-]?\d+)?|\.\d+)|([A-Za-z_]\w*)|(<=|>=|==|!=|[-+*/%<>(),[\]]))/iy,Rt=e=>{const t=e.trim(),a=[];for(G.lastIndex=0;G.lastIndex<t.length;){const n=G.exec(t);if(!n)throw new Error(`cannot read "${t.slice(G.lastIndex).trim()}" in expression "${t}"`);a.push(n[1]!==void 0?{number:Number(n[1])}:n[2]!==void 0?{name:n[2]}:{op:n[3]})}return a},ee={"<":[1,(e,t)=>e<t],">":[1,(e,t)=>e>t],"<=":[1,(e,t)=>e<=t],">=":[1,(e,t)=>e>=t],"==":[1,(e,t)=>e===t],"!=":[1,(e,t)=>e!==t],"+":[2,(e,t)=>e+t],"-":[2,(e,t)=>e-t],"*":[3,(e,t)=>e*t],"/":[3,(e,t)=>e/t],"%":[3,(e,t)=>e%t]},Xt={range:(e,t,a)=>e.random.range(t,a),int:(e,t,a)=>e.random.int(t,a),chance:(e,t)=>e.random.chance(t),vary:(e,t,a)=>e.random.vary(t,a),cos:(e,t)=>Math.cos(t),sin:(e,t)=>Math.sin(t),sqrt:(e,t)=>Math.sqrt(t),abs:(e,t)=>Math.abs(t),hypot:(e,...t)=>Math.hypot(...t),min:(e,...t)=>Math.min(...t),max:(e,...t)=>Math.max(...t),lerp:(e,t,a,n)=>Te(t,a,n),clamp:(e,t,a,n)=>De(t,a,n),len:(e,t)=>t.length},me=new Map,wt=e=>{const t=me.get(e);if(t)return t;const a=Rt(e);let n=0;const i=()=>a[n],o=()=>a[n++],s=d=>{const g=o();if(!g||g.op!==d)throw new Error(`expected "${d}" in expression "${e}"`)},r=()=>{const d=[];if(i()&&i().op===")")return o(),d;do d.push(c(0));while(i()&&i().op===","&&o());return s(")"),d},l=()=>{const d=o();if(!d)throw new Error(`expression "${e}" ends early`);const g=d.number;if(g!==void 0)return()=>g;if(d.op==="-"){const p=h();return(b,v)=>-p(b,v)}if(d.op==="("){const p=c(0);return s(")"),p}if(d.name!==void 0){const p=d.name;if(i()&&i().op==="("){o();const b=r();if(p==="if")return(R,w)=>b[0](R,w)?b[1](R,w):b[2](R,w);const v=Xt[p];if(!v)throw new Error(`unknown function "${p}" in expression "${e}"`);return(R,w)=>v(w,...b.map(X=>X(R,w)))}return p==="PI"?()=>Math.PI:b=>{if(!(p in b))throw new Error(`unknown name "${p}" in expression "${e}"`);return b[p]}}throw new Error(`unexpected "${d.op}" in expression "${e}"`)},h=()=>{let d=l();for(;i()&&i().op==="[";){o();const g=c(0);s("]");const p=d;d=(b,v)=>p(b,v)[g(b,v)]}return d},c=d=>{let g=h();for(;i()&&ee[i().op??""]&&ee[i().op??""][0]>=d;){const[p,b]=ee[o().op??""],v=c(p+1),R=g;g=(w,X)=>b(R(w,X),v(w,X))}return g},u=c(0);if(n<a.length)throw new Error(`unexpected "${JSON.stringify(a[n])}" in expression "${e}"`);return me.set(e,u),u},te=e=>Object.create(e),z=(e,t,a)=>{const n=Object.keys(e).filter(i=>!t.includes(i));if(n.length)throw new Error(`${a} has unknown key "${n[0]}"`)},M=(e,t,a)=>{if(typeof e=="number")return e;if(typeof e=="string")return wt(e)(t,a);if(Array.isArray(e))return e.map(n=>M(n,t,a));if(e&&typeof e=="object"&&"if"in e)return z(e,["if","then","else"],"value {if}"),M(M(e.if,t,a)?e.then:e.else,t,a);if(e&&typeof e=="object"&&e.map){const n=e.map;return z(n,["count","values","as","let","value"],"value {map}"),Oe(n,t,a).map(i=>(le(n.let,i,a),M(n.value,i,a)))}throw new Error(`cannot evaluate ${JSON.stringify(e)}`)},le=(e,t,a)=>{Object.entries(e||{}).forEach(([n,i])=>{t[n]=M(i,t,a)})},Oe=(e,t,a)=>(e.values!==void 0?M(e.values,t,a):Array.from({length:M(e.count,t,a)},(i,o)=>o)).map((i,o)=>{const s=te(t);return s.index=o,e.as&&(s[e.as]=i),s}),ve={ellipse:e=>{const[t,a,n,i,o=0]=e;return{kind:"ellipse",x:t,y:a,radiusX:n,radiusY:i,angle:o}},circle:e=>{const[t,a,n]=e;return{kind:"ellipse",x:t,y:a,radiusX:n,radiusY:n,angle:0}},polygon:e=>({kind:"polygon",points:e}),blob:e=>({kind:"blob",points:e}),tube:(e,t,a,n)=>({kind:"tube",points:e,radii:[].concat(M(t.radii,a,n))})},Q=(e,t,a,n)=>{e.forEach(i=>{const o=Object.keys(ve).find(s=>s in i);if(o){z(i,[o,"radii","cut","part"],`shape {${o}}`);const s=ve[o](M(i[o],t,a),i,t,a);n.push(i.cut?Object.assign({},s,{cut:!0}):s)}else if("let"in i)z(i,["let","part"],"statement {let}"),le(i.let,t,a);else if("repeat"in i){z(i,["repeat","part"],"statement {repeat}");const s=i.repeat;z(s,["count","values","as","body"],"repeat"),Oe(s,t,a).forEach(r=>Q(s.body||[],r,a,n))}else if("if"in i)z(i,["if","then","else","part"],"statement {if}"),Q((M(i.if,t,a)?i.then:i.else)||[],te(t),a,n);else if("use"in i){z(i,["use","with","part"],"statement {use}");const s=a.defs[i.use];if(!s)throw new Error(`unknown def "${i.use}"`);const r=te(t);Object.entries(i.with||{}).forEach(([l,h])=>{r[l]=M(h,t,a)}),Q(s,r,a,n)}else throw new Error(`unknown statement ${JSON.stringify(i)}`)})},_t=(e,t)=>{const a={...e};return Object.entries(t||{}).forEach(([n,i])=>{const o=a[n]||{};a[n]={...o,...i,params:{...o.params,...i.params},drop:[...o.drop||[],...i.drop||[]],body:[...o.body||[],...i.body||[]]}}),a},Ye=new WeakMap,de=(e,t,a=[])=>{const n=Ye.get(e)||new Map;Ye.set(e,n);const i=n.get(t);if(i)return i;const o=e[t];if(!o)throw new Error(`unknown species "${t}"`);if(a.includes(t))throw new Error(`species "${t}" extends itself through ${a.join(" > ")}`);const s=o.extends?de(e,o.extends,[...a,t]):{params:{},defs:{},body:[],poses:{}},r={name:t,params:{...s.params,...o.params},defs:{...s.defs,...o.defs},body:[...s.body.filter(l=>!(o.drop||[]).includes(l.part??"")),...o.body||[]],poses:_t(s.poses,o.poses)};return n.set(t,r),r},Ae=e=>Object.entries(e.poses).map(([t,a])=>[t,a.weight===void 0?1:a.weight]).filter(([,t])=>t>0),kt=(e,t)=>{if(e.length<2)return e.length?e[0][0]:"";let a=t.next()*e.reduce((i,[,o])=>i+o,0);return(e.find(([,i])=>(a-=i,a<0))||e[e.length-1])[0]},pa=(e,t,a,n={})=>{const i=de(e,t),o=Ae(i),s=n.pose&&o.some(([d])=>d===n.pose)?n.pose:kt(o,a),r=i.poses[s]||{},l=new Set(r.drop||[]),h={random:a,defs:i.defs},c={},u=[];try{le({...i.params,...r.params},c,h),Q([...i.body.filter(d=>!l.has(d.part??"")),...r.body||[]],c,h,u)}catch(d){throw new Error(`species "${t}"${s?` (pose ${s})`:""}: ${d.message}`,{cause:d})}return{shapes:u,pose:s}},fa=e=>Object.keys(e).filter(t=>!e[t].abstract),ba=(e,t)=>{const a=Ae(de(e,t)).map(([n])=>n);return a.length?a:[""]},O=256,ae=2.6,Re=O/ae,St=(e,t,a,n,i)=>{const o=i*i,s=o*i,r=l=>.5*(2*t[l]+(-e[l]+a[l])*i+(2*e[l]-5*t[l]+4*a[l]-n[l])*o+(-e[l]+3*t[l]-3*a[l]+n[l])*s);return[r(0),r(1)]},Xe=(e,t,a)=>{const n=e.length,i=r=>t?e[(r+n)%n]:e[De(r,0,n-1)],o=t?n:n-1,s=[];for(let r=0;r<o;r+=1)for(let l=0;l<a;l+=1)s.push(St(i(r-1),i(r),i(r+1),i(r+2),l/a));return t||s.push(e[n-1]),s},Lt=(e,t)=>{if(e.length===1)return e[0];const a=t*(e.length-1),n=Math.min(e.length-2,Math.floor(a));return Te(e[n],e[n+1],a-n)},Me=(e,t)=>{if(e.globalCompositeOperation=t.cut?"destination-out":"source-over",e.beginPath(),t.kind==="ellipse")e.ellipse(t.x,t.y,t.radiusX,t.radiusY,t.angle,0,Math.PI*2),e.fill();else if(t.kind==="polygon"||t.kind==="blob")(t.kind==="blob"?Xe(t.points,!0,12):t.points).forEach(([n,i],o)=>o===0?e.moveTo(n,i):e.lineTo(n,i)),e.closePath(),e.fill();else if(t.kind==="tube"){const a=Xe(t.points,!1,24);a.forEach(([n,i],o)=>{const s=Lt(t.radii,o/Math.max(1,a.length-1));e.moveTo(n+s,i),e.arc(n,i,s,0,Math.PI*2)}),e.fill()}},ya=(e,t)=>{const a=document.createElement("canvas");a.width=O,a.height=O;const n=a.getContext("2d",{willReadFrequently:!0});if(!n)return new Uint8Array(O*O);n.translate(O/2,O/2),n.scale(Re*t.facing*t.stretchX,Re*t.stretchY),n.rotate(t.tilt),n.fillStyle="#000",e.forEach(s=>Me(n,s));const i=n.getImageData(0,0,O,O).data,o=new Uint8Array(O*O);for(let s=0;s<o.length;s+=1)o[s]=i[s*4+3]>127?1:0;return o},ma=(e,t,a)=>{const n=e.getContext("2d");n&&(n.clearRect(0,0,e.width,e.height),n.save(),n.translate(e.width/2,e.height/2),n.scale(e.width/ae,e.width/ae),n.fillStyle=a,t.forEach(i=>Me(n,i)),n.restore())},Wt=!0,$t={groundY:.8,bodyRadiusX:"range(0.4, 0.46)",bodyRadiusY:"range(0.27, 0.32)",bodyAngle:-.45,legLength:"range(0.28, 0.34)",bodyY:"groundY - legLength - bodyRadiusY",headRadius:"range(0.15, 0.18)",headX:"bodyRadiusX * 0.55",headY:"bodyY - bodyRadiusY * 0.95 - headRadius * 0.4",neckWidth:"headRadius * 0.85",beakLength:"range(0.17, 0.23)",beakHeight:.09,tailLength:"range(0.3, 0.4)",tailSpread:.14,tailDrop:.18,legWidth:.022,wingWidth:.12},Et=[{ellipse:[0,"bodyY","bodyRadiusX","bodyRadiusY","bodyAngle"],part:"body"},{tube:[["bodyRadiusX * 0.25","bodyY - bodyRadiusY * 0.4"],["headX","headY + headRadius * 0.4"]],radii:["bodyRadiusY * 0.7","neckWidth"],part:"neck"},{circle:["headX","headY","headRadius"],part:"head"},{polygon:[["headX + headRadius * 0.7","headY - beakHeight * 0.6"],["headX + headRadius + beakLength","headY + beakHeight * 0.3"],["headX + headRadius * 0.7","headY + beakHeight * 0.7"]],part:"head"},{circle:["headX + headRadius * 0.3","headY - headRadius * 0.15",.025],cut:!0,part:"eye"},{polygon:[["-bodyRadiusX * 0.6","bodyY - tailSpread * 0.4"],["-bodyRadiusX * 0.6 - tailLength","bodyY + tailDrop - tailSpread"],["-bodyRadiusX * 0.6 - tailLength * 0.95","bodyY + tailDrop + tailSpread * 0.4"],["-bodyRadiusX * 0.3","bodyY + tailSpread * 0.6"]],part:"tail"},{tube:[["-bodyRadiusX * 0.55","bodyY - bodyRadiusY * 0.15"],["-bodyRadiusX * 0.1","bodyY + bodyRadiusY * 0.3"],["bodyRadiusX * 0.35","bodyY - bodyRadiusY * 0.05"]],radii:.012,cut:!0,part:"wing"},{repeat:{values:[-.08,.1],as:"legShift",body:[{tube:[["legShift","bodyY + bodyRadiusY * 0.6"],["legShift","groundY"]],radii:"legWidth"},{ellipse:["legShift + 0.05","groundY",.07,.02]}]},part:"legs"}],jt={perched:{weight:3},sleeping:{weight:1,params:{headX:"bodyRadiusX * 0.35",headY:"bodyY - bodyRadiusY * 0.55",beakLength:.1,bodyAngle:-.2},drop:["neck","eye","wing"],body:[{tube:[["headX + headRadius * 0.4","headY - headRadius * 0.1"],["headX + headRadius * 0.65","headY - headRadius * 0.05"]],radii:.012,cut:!0}]},front:{weight:1,params:{headX:0,headY:"bodyY - bodyRadiusX * 0.8 - headRadius * 0.2"},drop:["body","neck","head","eye","tail","wing","legs"],body:[{ellipse:[0,"bodyY - 0.02","bodyRadiusY * 1.25","bodyRadiusX * 0.95"]},{circle:["headX","headY","headRadius * 1.1"]},{polygon:[["headX - beakHeight","headY + headRadius * 0.15"],["headX + beakHeight","headY + headRadius * 0.15"],["headX","headY + headRadius * 0.15 + beakLength * 0.6"]]},{repeat:{values:[-1,1],as:"side",body:[{circle:["headX + side * headRadius * 0.45","headY - headRadius * 0.2",.027],cut:!0},{ellipse:["side * bodyRadiusY * 1.15","bodyY + 0.02","wingWidth * 0.9","bodyRadiusX * 0.6","side * -0.15"]},{tube:[["side * 0.1","groundY - legLength"],["side * 0.1","groundY"]],radii:"legWidth"},{ellipse:["side * 0.12","groundY",.07,.02]}]}}]}},Dt={abstract:Wt,params:$t,body:Et,poses:jt},Tt=!0,Ot={groundY:.7,bodyRadiusX:"range(0.5, 0.56)",bodyRadiusY:"range(0.26, 0.31)",legLength:"range(0.4, 0.5)",legWidth:.07,stride:0,bodyY:"groundY - bodyRadiusY - legLength",headRadiusX:"range(0.19, 0.22)",headRadiusY:"range(0.16, 0.18)",headX:"bodyRadiusX * 0.95",headY:"bodyY - bodyRadiusY * 0.8",neckWidth:"headRadiusY * 0.9",snoutLength:.16,snoutRadius:.08,earHeight:"range(0.16, 0.22)",earWidth:.09,earSpread:"range(0.1, 0.3)",eyeSize:.028,tailLength:"range(0.35, 0.45)",tailLift:"range(0.05, 0.2)",tailWidth:.06},At={ears:[{repeat:{values:[-.5,.3],as:"shift",body:[{polygon:[["headX + headRadiusX * shift - earWidth","headY - headRadiusY * 0.5"],["headX + headRadiusX * shift - earWidth * 0.2","headY - headRadiusY * 0.75 - earHeight"],["headX + headRadiusX * shift + earWidth","headY - headRadiusY * 0.7"]]}]}}]},Mt=[{ellipse:[0,"bodyY","bodyRadiusX","bodyRadiusY"],part:"body"},{tube:[["bodyRadiusX * 0.5","bodyY - bodyRadiusY * 0.2"],["headX - headRadiusX * 0.3","headY + headRadiusY * 0.2"]],radii:["bodyRadiusY * 0.8","neckWidth"],part:"neck"},{ellipse:["headX","headY","headRadiusX","headRadiusY"],part:"head"},{ellipse:["headX + headRadiusX * 0.75","headY + headRadiusY * 0.35","snoutLength","snoutRadius"],part:"head"},{use:"ears",part:"head"},{circle:["headX + headRadiusX * 0.4","headY - headRadiusY * 0.15","eyeSize"],cut:!0,part:"eye"},{tube:[["-bodyRadiusX * 0.85","bodyY - bodyRadiusY * 0.2"],["-bodyRadiusX * 0.85 - tailLength * 0.5","bodyY - bodyRadiusY * 0.2 - tailLift * 0.5"],["-bodyRadiusX * 0.85 - tailLength","bodyY - bodyRadiusY * 0.2 - tailLift"]],radii:["tailWidth","tailWidth * 0.9","tailWidth * 0.6"],part:"tail"},{repeat:{values:[-.72,-.5,.4,.68],as:"along",body:[{let:{swing:"if(index % 2 == 0, stride, -stride)",legX:"along * bodyRadiusX",hipY:"bodyY + bodyRadiusY * 0.5"}},{tube:[["legX","hipY"],["legX + swing","(hipY + groundY) / 2"],["legX + swing * 1.2","groundY"]],radii:["legWidth * 1.25","legWidth * 0.9","legWidth * 0.8"]}]},part:"legs"}],xt={standing:{weight:3},walking:{weight:2,params:{stride:"range(0.06, 0.14)"}},sleeping:{weight:1,params:{legLength:.02,headX:"bodyRadiusX * 0.8",headY:"groundY - headRadiusY",tailLift:.02},drop:["legs","eye","neck"],body:[{ellipse:["bodyRadiusX * 0.55","groundY - 0.05","bodyRadiusX * 0.28",.06]},{tube:[["headX + headRadiusX * 0.2","headY - headRadiusY * 0.1"],["headX + headRadiusX * 0.4","headY"],["headX + headRadiusX * 0.6","headY - headRadiusY * 0.1"]],radii:.012,cut:!0}]},sitting:{weight:1,params:{headX:"bodyRadiusY * 0.5",headY:"groundY - bodyRadiusX * 1.55 - headRadiusY * 0.4"},drop:["body","neck","legs","tail"],body:[{ellipse:["bodyRadiusY * 0.2","groundY - bodyRadiusX * 0.85","bodyRadiusY * 1.05","bodyRadiusX * 0.9",.12]},{ellipse:["-bodyRadiusY * 0.55","groundY - bodyRadiusY * 0.55","bodyRadiusY * 1.2","bodyRadiusY * 0.62"]},{tube:[["bodyRadiusY * 0.75","groundY - bodyRadiusX * 1.0"],["bodyRadiusY * 0.8","groundY"]],radii:"legWidth * 1.1"},{tube:[["-bodyRadiusY * 1.2","groundY - 0.05"],["-bodyRadiusY * 1.2 - tailLength","groundY - 0.03"]],radii:["tailWidth","tailWidth * 0.6"]}]},front:{weight:1,params:{headX:0,headY:"groundY - bodyRadiusX * 1.1 - headRadiusY * 0.9"},drop:["body","neck","head","eye","legs","tail"],body:[{ellipse:[0,"groundY - bodyRadiusX * 0.7","bodyRadiusY * 1.25","bodyRadiusX * 0.75"]},{ellipse:["headX","headY","headRadiusX * 1.15","headRadiusY * 1.1"]},{ellipse:["headX","headY + headRadiusY * 0.45","snoutRadius * 1.5","snoutRadius"]},{repeat:{values:[-1,1],as:"side",body:[{polygon:[["headX + side * headRadiusX * 1.05","headY - headRadiusY * 0.3"],["headX + side * headRadiusX * (0.75 + earSpread)","headY - headRadiusY * 0.8 - earHeight"],["headX + side * headRadiusX * 0.3","headY - headRadiusY * 1.0"]]},{circle:["headX + side * headRadiusX * 0.5","headY - headRadiusY * 0.15","eyeSize * 1.2"],cut:!0},{tube:[["side * bodyRadiusY * 0.55","groundY - bodyRadiusX * 0.4"],["side * bodyRadiusY * 0.55","groundY"]],radii:"legWidth * 1.3"}]}},{circle:["headX","headY + headRadiusY * 0.3","snoutRadius * 0.35"],cut:!0}]}},Ht={abstract:Tt,params:Ot,defs:At,body:Mt,poses:xt},Ct=!0,Nt={length:"range(0.85, 0.95)",height:"range(0.36, 0.42)",arch:0,dorsalHeight:"range(0.2, 0.28)",finLength:.22,flukeSpan:.32,eyeX:.58,eyeSize:.035},Pt=[{blob:[["length","arch * 0.6"],["length * 0.55","-height * 0.8 - arch * 0.2"],["-length * 0.2","-height * 0.7 - arch * 0.2"],["-length * 0.75","-height * 0.12 + arch * 0.6"],["-length * 0.75","height * 0.12 + arch * 0.6"],["-length * 0.2","height * 0.8 - arch * 0.4"],["length * 0.5","height * 0.75 - arch * 0.2"]]},{polygon:[["-length * 0.7","arch * 0.6"],["-length - flukeSpan * 0.55","arch * 0.6 - flukeSpan"],["-length - flukeSpan * 0.3","arch * 0.6"],["-length - flukeSpan * 0.55","arch * 0.6 + flukeSpan"]],part:"fluke"},{polygon:[["length * 0.3","-height * 0.75 - arch * 0.2"],["-length * 0.2","-height * 0.7 - arch * 0.2 - dorsalHeight"],["-length * 0.35","-height * 0.65 - arch * 0.2"]]},{ellipse:["length * 0.2","height * 0.6 - arch * 0.3","finLength",.06,.6]},{circle:["length * eyeX","-height * 0.1 + arch * 0.4","eyeSize"],cut:!0}],It={cruising:{weight:3},leaping:{weight:0,params:{arch:.38}}},zt={abstract:Ct,params:Nt,body:Pt,poses:It},Ft=[{let:{humpHeight:"range(0.18, 0.3)",headDrop:"range(-0.08, 0.12)",legLength:"range(0.68, 0.8)"}},{ellipse:[-.1,0,"vary(0.62, 0.06)","vary(0.38, 0.06)"]},{ellipse:[.2,-.12,.32,"humpHeight + 0.1"]},{ellipse:[.62,"-0.02 + headDrop",.27,.23,.15]},{ellipse:[.82,"0.08 + headDrop",.12,.09,.5]},{circle:[.5,"-0.24 + headDrop",.1]},{circle:[.68,"-0.26 + headDrop",.09]},{circle:[-.72,-.08,.07]},{circle:[.7,"-0.04 + headDrop",.03],cut:!0},{repeat:{values:[-.55,-.3,.15,.36],as:"legX",body:[{tube:[["legX",.15],["legX + range(-0.04, 0.04)","legLength"]],radii:[.14,.12]},{ellipse:["legX + 0.06","legLength + 0.03",.14,.06]}]}}],Bt={body:Ft},Vt={sitting:{weight:.55,body:[{let:{headX:"range(0.12, 0.28)",headY:"range(-0.58, -0.45)",earHeight:"range(0.26, 0.4)",earTilt:"range(-0.08, 0.08)",curlsForward:"chance(0.5)",tailPoints:{if:"curlsForward",then:[[-.5,.78],[-.2,.92],[.25,.9],["range(0.45, 0.6)","range(0.7, 0.85)"]],else:[[-.55,.7],[-.88,.62],["-range(0.9, 1.05)",.3],["-range(0.75, 0.95)","range(-0.05, 0.15)"]]}}},{ellipse:[-.15,.45,"vary(0.48)","vary(0.4)"]},{ellipse:[.1,.05,"vary(0.3)",.5,-.15]},{ellipse:["headX","headY","vary(0.27, 0.08)","vary(0.23, 0.08)"]},{polygon:[["headX - 0.25","headY - 0.04"],["headX - 0.2 + earTilt","headY - 0.12 - earHeight"],["headX - 0.02","headY - 0.18"]]},{polygon:[["headX + 0.04","headY - 0.18"],["headX + 0.22 + earTilt","headY - 0.12 - earHeight"],["headX + 0.27","headY - 0.03"]]},{tube:[[.14,.3],[.16,.86]],radii:.07},{tube:[[.3,.3],[.33,.86]],radii:.065},{tube:"tailPoints",radii:[.075,.07,.065,.055]},{ellipse:["headX - 0.1","headY - 0.01",.045,.03],cut:!0},{ellipse:["headX + 0.1","headY - 0.01",.045,.03],cut:!0}]},walking:{weight:.45,body:[{let:{tailHeight:"range(0.6, 0.95)",tailHook:"range(-0.25, 0.15)",stride:"range(0.05, 0.16)",headY:"range(-0.32, -0.18)"}},{ellipse:[-.05,.05,"vary(0.58, 0.08)","vary(0.22)"]},{ellipse:[.62,"headY",.21,.19]},{polygon:[[.45,"headY - 0.08"],[.47,"headY - 0.38"],[.6,"headY - 0.17"]]},{polygon:[[.64,"headY - 0.17"],[.76,"headY - 0.38"],[.8,"headY - 0.06"]]},{tube:[[-.45,.1],["-0.45 - stride",.42],["-0.42 - stride",.68]],radii:[.08,.055,.05]},{tube:[[-.25,.12],["-0.22 + stride",.45],["-0.2 + stride",.68]],radii:[.07,.05,.05]},{tube:[[.3,.12],["0.3 + stride",.45],["0.32 + stride",.68]],radii:[.07,.05,.05]},{tube:[[.42,.12],["0.42 - stride",.45],["0.43 - stride",.68]],radii:[.07,.05,.05]},{tube:[[-.58,-.02],[-.85,-.25],[-.85,"-tailHeight + 0.2"],["-0.7 + tailHook","-tailHeight"]],radii:[.06,.055,.05,.045]},{ellipse:[.68,"headY - 0.02",.035,.022],cut:!0}]}},qt={poses:Vt},Jt={antler:[{let:{height:"range(0.42, 0.6)"}},{let:{beam:[["rootX","rootY"],["rootX - 0.1 * spread","rootY - height * 0.4"],["rootX - 0.06 * spread","rootY - height * 0.8"],["rootX + 0.08 * spread","rootY - height"]]}},{tube:"beam",radii:[.04,.036,.032,.026]},{repeat:{count:"int(2, 4)",body:[{let:{anchor:"beam[min(3, index + 1)]",length:"range(0.12, 0.2)"}},{tube:["anchor",["anchor[0] + length * 0.7 * spread","anchor[1] - length"]],radii:[.03,.024]}]}}]},Kt=[{let:{neckLean:"range(0.4, 0.55)",headY:"range(-0.55, -0.42)",legLength:"range(0.85, 0.95)",headX:"neckLean + 0.08"}},{ellipse:[-.1,.05,"vary(0.48, 0.06)","vary(0.21, 0.08)"]},{tube:[[.25,0],["neckLean - 0.05",-.25],["neckLean","headY + 0.05"]],radii:[.13,.09,.075]},{ellipse:["headX","headY",.14,.09,.4]},{ellipse:["headX + 0.13","headY + 0.07",.09,.06,.4]},{ellipse:["headX - 0.13","headY - 0.06",.1,.035,-.5]},{ellipse:[-.58,-.04,.07,.04,-.5]},{tube:[[-.45,.12],[-.5,.5],[-.42,"legLength"]],radii:[.055,.035,.03]},{tube:[[-.32,.14],[-.34,.5],[-.3,"legLength"]],radii:[.05,.035,.03]},{tube:[[.2,.15],[.22,.55],[.2,"legLength"]],radii:[.045,.035,.03]},{tube:[[.32,.12],[.36,.52],[.33,"legLength"]],radii:[.045,.035,.03]},{circle:["headX + 0.02","headY - 0.02",.025],cut:!0},{use:"antler",with:{rootX:"headX - 0.06",rootY:"headY - 0.06",spread:-.8}},{use:"antler",with:{rootX:"headX + 0.04",rootY:"headY - 0.06",spread:1.3}}],Ut={defs:Jt,body:Kt},Gt={length:"range(0.8, 0.88)",height:"range(0.2, 0.25)",dorsalHeight:.2,flukeSpan:.36,finLength:.2,eyeX:.62,eyeSize:.025},Qt=["fluke"],Zt=[{ellipse:["-length * 0.85","arch * 0.6 - flukeSpan * 0.45","flukeSpan * 0.55",.07,-.95],part:"fluke"},{ellipse:["-length * 0.85","arch * 0.6 + flukeSpan * 0.45","flukeSpan * 0.55",.07,.95],part:"fluke"},{ellipse:["length + 0.03","height * 0.35 + arch * 0.6",.15,.06,.12]}],e0={leaping:{weight:1}},t0={extends:"swimmer",params:Gt,drop:Qt,body:Zt,poses:e0},a0={bodyRadiusX:"range(0.5, 0.56)",bodyRadiusY:"range(0.27, 0.3)",bodyAngle:-.1,legLength:.16,headRadius:.15,headX:"bodyRadiusX * 0.7",headY:"bodyY - bodyRadiusY - 0.12",neckWidth:.1,beakLength:.17,beakHeight:.07,tailLength:.2,tailSpread:.1,tailDrop:-.12,wingWidth:.15},n0={extends:"bird",params:a0},i0=[{let:{earSize:"range(0.9, 1.15)",trunkCurl:"range(-0.1, 0.25)",headY:"range(-0.32, -0.2)",legLength:"range(0.76, 0.86)"}},{ellipse:[-.15,0,"vary(0.6, 0.06)","vary(0.4, 0.06)"]},{ellipse:[.45,"headY",.3,.3]},{tube:[[-.73,-.1],[-.8,.15],[-.8,.38]],radii:[.025,.02,.035]},{repeat:{values:[-.6,-.36,.05,.26],as:"legX",body:[{tube:[["legX",.2],["legX","legLength"]],radii:.12}]}},{tube:[[.6,"headY + 0.28"],[.78,"headY + 0.38"],[.92,"headY + 0.3"]],radii:.035,cut:!0},{tube:[[.68,"headY - 0.02"],[.84,"headY + 0.25"],[.86,"headY + 0.6"],["0.9 + trunkCurl","headY + 0.92"],["1.02 + trunkCurl","headY + 0.85"]],radii:[.12,.1,.075,.055,.045]},{let:{earPoints:{map:{values:[[.12,-.52],[.38,-.6],[.48,-.22],[.38,.16],[.14,.1],[.02,-.2]],as:"point",value:["0.27 + (point[0] - 0.27) * earSize","headY + 0.05 + (point[1] + 0.2) * earSize"]}}}},{blob:"earPoints"},{tube:["earPoints[1]","earPoints[2]","earPoints[3]"],radii:.022,cut:!0},{circle:[.58,"headY - 0.04",.035],cut:!0}],o0={body:i0},s0={height:"range(0.4, 0.48)",dorsalHeight:.22,eyeX:.62,eyeSize:.05},r0={extends:"swimmer",params:s0},l0=["neck"],d0={bodyRadiusX:"range(0.3, 0.34)",bodyRadiusY:.2,bodyAngle:-.12,legLength:"range(0.75, 0.85)",headRadius:.07,headX:"range(0.38, 0.48)",headY:"bodyY - bodyRadiusY - range(0.7, 0.8)",beakLength:.12,beakHeight:.05,tailLength:.12,tailSpread:.06,tailDrop:.02,legWidth:.026,wingWidth:.08},u0=[{tube:[["bodyRadiusX * 0.55","bodyY - bodyRadiusY * 0.4"],["bodyRadiusX * 0.9","bodyY - bodyRadiusY - 0.28"],["headX - 0.14","headY + 0.3"],["headX - 0.02","headY + 0.08"]],radii:[.075,.04,.035,.03],part:"neck"}],c0={sleeping:{weight:0},front:{weight:0}},h0={extends:"bird",drop:l0,params:d0,body:u0,poses:c0},g0=[{let:{earHeight:"range(0.28, 0.4)",snout:"range(0.95, 1.1)",tailDroop:"range(-0.15, 0.25)",tailBush:"range(0.13, 0.19)",legLength:"range(0.6, 0.72)"}},{ellipse:[-.05,.05,"vary(0.48, 0.08)","vary(0.19)"]},{ellipse:[.35,0,.18,.22]},{blob:[[.28,-.12],[.52,-.32],[.72,-.28],["snout",-.12],[.75,-.04],[.48,.14]]},{polygon:[[.48,-.26],[.5,"-0.28 - earHeight"],[.63,-.31]]},{polygon:[[.6,-.3],[.7,"-0.28 - earHeight * 0.95"],[.75,-.25]]},{tube:[[-.45,.02],[-.75,"0.12 + tailDroop * 0.5"],[-1,"0.08 + tailDroop"],[-1.15,"-0.06 + tailDroop"]],radii:[.06,"tailBush","tailBush * 0.85",.025]},{ellipse:[.7,-.17,.035,.022,-.3],cut:!0},{repeat:{values:[-.4,-.25,.28,.4],as:"legX",body:[{let:{step:"if(index % 2 == 0, range(-0.08, 0.08), 0)"}},{tube:[["legX",.12],["legX + step","legLength"]],radii:[.05,.035]}]}}],p0={body:g0},f0=[{let:{bodyY:"range(0.05, 0.15)",bodyRadiusX:"range(0.6, 0.72)",bodyRadiusY:"range(0.3, 0.38)",spikeCount:"int(11, 17)",spikeLength:"range(0.3, 0.45)",sweep:"range(0.2, 0.55)",frontAngle:"PI * range(1.62, 1.75)"}},{ellipse:[0,"bodyY","bodyRadiusX","bodyRadiusY"]},{repeat:{count:"spikeCount",body:[{let:{angle:"lerp(PI * 0.88, frontAngle, index / (spikeCount - 1)) + range(-0.04, 0.04)",baseX:"cos(angle) * bodyRadiusX * 0.9",baseY:"bodyY + sin(angle) * bodyRadiusY * 0.9",directionX:"cos(angle) - sweep",directionY:"sin(angle) * 1.2",directionLength:"hypot(directionX, directionY)",length:"spikeLength * range(0.7, 1.25)",halfWidth:"range(0.07, 0.1)",tangentX:"-directionY / directionLength",tangentY:"directionX / directionLength"}},{polygon:[["baseX - tangentX * halfWidth","baseY - tangentY * halfWidth"],["baseX + directionX / directionLength * (length + 0.08)","baseY + directionY / directionLength * (length + 0.08)"],["baseX + tangentX * halfWidth","baseY + tangentY * halfWidth"]]}]}},{let:{snoutX:"bodyRadiusX * 0.85",snoutReach:"range(0.28, 0.42)"}},{ellipse:["snoutX - 0.05","bodyY + 0.12",.3,.2,.3]},{polygon:[["snoutX - 0.05","bodyY - 0.02"],["snoutX + snoutReach","bodyY + 0.25"],["snoutX - 0.1","bodyY + 0.3"]]},{circle:["snoutX + snoutReach - 0.02","bodyY + 0.25",.055]},{repeat:{values:[-.42,-.15,.22,.45],as:"legX",body:[{tube:[["legX","bodyY + bodyRadiusY * 0.7"],["legX + 0.04","bodyY + bodyRadiusY + range(0.08, 0.14)"]],radii:.06}]}},{circle:["snoutX + 0.04","bodyY + 0.08",.04],cut:!0}],b0={body:f0},y0=["neck"],m0={bodyRadiusX:"range(0.6, 0.68)",bodyRadiusY:"range(0.3, 0.34)",legLength:"range(0.6, 0.7)",legWidth:.055,headRadiusX:.17,headRadiusY:.14,headX:"bodyRadiusX * 0.95 + 0.22",headY:"bodyY - bodyRadiusY - 0.32",neckWidth:.1,snoutLength:.24,snoutRadius:.09,earHeight:.1,earWidth:.05,tailLength:.3,tailLift:"range(-0.6, -0.4)",tailWidth:.07},v0=[{tube:[["bodyRadiusX * 0.55","bodyY - bodyRadiusY * 0.9"],["bodyRadiusX * 0.7","bodyY - bodyRadiusY - 0.2"],["headX - 0.06","headY - headRadiusY * 0.8"]],radii:[.1,.075,.045],part:"neck"}],Y0={sitting:{weight:0},front:{weight:0}},R0={extends:"quadruped",drop:y0,params:m0,body:v0,poses:Y0},X0=[{let:{mantleRadius:"range(0.38, 0.46)",mantleLift:"range(0.35, 0.5)",armCount:"int(7, 8)",sway:"range(0.2, 0.5)"}},{ellipse:[0,"-mantleLift","mantleRadius","mantleRadius * 1.25"]},{ellipse:[0,.05,"mantleRadius * 1.1",.3]},{repeat:{count:"armCount",body:[{let:{spread:"lerp(-0.65, 0.65, index / (armCount - 1))",wave:"if(index % 2 == 0, sway, -sway) * range(0.6, 1.2)",reach:"range(0.5, 0.7)"}},{tube:[["spread * 0.45",.1],["spread * 0.9 + wave * 0.3","reach * 0.5"],["spread * 1.2 + wave","reach"],["spread * 1.1 + wave * 1.4","reach + 0.18"]],radii:[.1,.075,.05,.02]}]}},{circle:["-mantleRadius * 0.4","-mantleLift + 0.15",.07],cut:!0},{circle:["mantleRadius * 0.4","-mantleLift + 0.15",.07],cut:!0}],w0={body:X0},_0={bodyRadiusX:"range(0.56, 0.62)",bodyRadiusY:"range(0.2, 0.24)",legLength:"range(0.16, 0.22)",legWidth:.075,headRadiusX:.17,headRadiusY:.15,headX:"bodyRadiusX + 0.02",headY:"bodyY - bodyRadiusY * 0.7",neckWidth:"bodyRadiusY * 0.8",snoutLength:.11,snoutRadius:.07,earHeight:.04,earWidth:.05,tailLength:"range(0.5, 0.62)",tailLift:"range(-0.1, 0.05)",tailWidth:.11},k0={extends:"quadruped",params:_0},S0=[{let:{tuftHeight:"range(0.3, 0.5)",eyeSize:"range(0.13, 0.17)",lookX:"range(-0.04, 0.04)"}},{ellipse:[0,.15,"vary(0.46, 0.08)","vary(0.6, 0.06)"]},{ellipse:[0,-.4,.44,.33]},{polygon:[[-.42,-.5],[-.5,"-0.5 - tuftHeight"],[-.16,-.66]]},{polygon:[[.42,-.5],[.5,"-0.5 - tuftHeight"],[.16,-.66]]},{ellipse:[-.42,.2,.15,.42,.18]},{ellipse:[.42,.2,.15,.42,-.18]},{tube:[[-1.15,.82],[0,.8],[1.15,"range(0.78, 0.88)"]],radii:.05},{tube:[[-.14,.7],[-.16,.82]],radii:.045},{tube:[[.14,.7],[.16,.82]],radii:.045},{circle:[-.2,-.4,"eyeSize"],cut:!0},{circle:[.2,-.4,"eyeSize"],cut:!0},{circle:["-0.2 + lookX",-.4,"eyeSize * 0.42"]},{circle:["0.2 + lookX",-.4,"eyeSize * 0.42"]},{polygon:[[-.05,-.27],[.05,-.27],[0,-.14]],cut:!0},{repeat:{count:3,as:"row",body:[{repeat:{values:[-1,0,1],as:"column",body:[{let:{featherX:"column * 0.16 + (row % 2) * 0.08 - 0.04",featherY:"0.05 + row * 0.15"}},{tube:[["featherX - 0.05","featherY"],["featherX","featherY + 0.04"],["featherX + 0.05","featherY"]],radii:.014,cut:!0}]}}]}}],L0={body:S0},W0=["wing"],$0={bodyRadiusX:"range(0.55, 0.62)",bodyRadiusY:"range(0.3, 0.34)",bodyAngle:"-PI / 2",legLength:.06,headRadius:.17,headX:.04,headY:"bodyY - bodyRadiusX * 0.85",neckWidth:.15,beakLength:.15,beakHeight:.06,tailLength:.12,tailSpread:.08,tailDrop:.1,wingWidth:.07},E0=[{ellipse:["-bodyRadiusY * 0.95","bodyY + 0.02",.08,"bodyRadiusX * 0.6",.15],part:"flipper"},{ellipse:["bodyRadiusY * 0.95","bodyY + 0.02",.08,"bodyRadiusX * 0.6",-.15],part:"flipper"}],j0={sleeping:{weight:0}},D0={extends:"bird",drop:W0,params:$0,body:E0,poses:j0},T0={bodyRadiusX:"range(0.56, 0.62)",bodyRadiusY:"range(0.36, 0.4)",legLength:"range(0.2, 0.26)",legWidth:.08,headRadiusX:.25,headRadiusY:.23,headX:"bodyRadiusX * 0.95",headY:"bodyY + 0.02",neckWidth:.22,snoutLength:.12,snoutRadius:.12,earHeight:.1,earWidth:.1,earSpread:.1,tailLength:.14,tailLift:"range(0.15, 0.25)",tailWidth:.035},O0={sitting:{weight:0}},A0={extends:"quadruped",params:T0,poses:O0},M0={ear:[{ellipse:["baseX + sin(angle) * length","baseY - cos(angle) * length",.085,"length","angle"]}]},x0=[{let:{earLength:"range(0.38, 0.52)",earLean:"range(-0.5, 0.05)",floppy:"chance(0.3)",headX:"range(0.36, 0.46)",headY:"range(-0.18, -0.05)"}},{ellipse:[-.2,.35,"vary(0.46, 0.08)","vary(0.38, 0.08)"]},{ellipse:[.08,.22,.38,.33]},{ellipse:["headX","headY",.24,.2,.2]},{use:"ear",with:{baseX:"headX - 0.06",baseY:"headY - 0.12",angle:"earLean",length:"earLength"}},{use:"ear",with:{baseX:"headX + 0.04",baseY:"headY - 0.1",angle:"earLean + if(floppy, 1.2, 0.25)",length:"earLength * if(floppy, 0.85, 0.95)"}},{circle:[-.68,.2,"range(0.11, 0.15)"]},{ellipse:[-.08,.72,.3,.07]},{tube:[[.3,.35],[.36,.72]],radii:.06},{circle:["headX + 0.06","headY - 0.04",.035],cut:!0}],H0={defs:M0,body:x0},C0=[{let:{hornLength:"range(0.62, 0.85)",hornLean:"range(-0.12, 0.02)",headDrop:"range(0, 0.12)",legLength:"range(0.68, 0.82)"}},{ellipse:[-.15,.05,"vary(0.62, 0.06)","vary(0.36, 0.08)"]},{ellipse:[.15,-.1,.34,.3]},{blob:[[.3,-.2],[.68,"-0.02 + headDrop"],[1.02,"0.24 + headDrop"],[.98,"0.42 + headDrop"],[.62,"0.42 + headDrop"],[.36,.3]]},{polygon:[[.8,"0.24 + headDrop"],[.84,"0.1 + headDrop"],["0.96 + hornLean","0.24 + headDrop - hornLength"],[1.05,"0.3 + headDrop"]]},{polygon:[[.66,"0.1 + headDrop"],["0.74 + hornLean","0.08 + headDrop - hornLength * 0.45"],[.82,"0.16 + headDrop"]]},{polygon:[[.34,-.14],["range(0.28, 0.34)",-.46],[.48,-.12]]},{tube:[[-.74,-.02],[-.84,.12],[-.83,.28]],radii:.025},{circle:[.6,"0.18 + headDrop",.03],cut:!0},{repeat:{values:[-.56,-.32,.08,.3],as:"legX",body:[{tube:[["legX",.2],["legX + range(-0.03, 0.03)","legLength"]],radii:.12}]}}],N0={body:C0},P0={length:"range(0.85, 0.92)",height:"range(0.2, 0.24)",dorsalHeight:"range(0.35, 0.42)",finLength:.3,flukeSpan:.4,eyeX:.68,eyeSize:.022},I0={extends:"swimmer",params:P0},z0=[{let:{shellRadius:"range(0.48, 0.6)",shellX:"range(-0.25, -0.1)",shellY:"0.55 - shellRadius - range(0.02, 0.08)",turns:"range(2.6, 3.4)",stalk:"range(0.3, 0.42)"}},{let:{spiral:{map:{count:49,as:"step",let:{angle:"step / 48 * turns * PI * 2",radius:"shellRadius * 0.86 * (step / 48)"},value:["shellX + cos(angle) * radius","shellY + sin(angle) * radius"]}}}},{blob:[[-.95,.66],[-.5,.56],[.4,.56],[.68,.38],[.82,.08],[.95,.02],[1.02,.18],[.96,.5],[.8,.7],[-.88,.76]]},{circle:["shellX","shellY","shellRadius"]},{tube:"spiral",radii:.026,cut:!0},{tube:[[.88,.08],["0.95 + range(0, 0.08)","0.08 - stalk"]],radii:.024},{circle:["0.95 + 0.04","0.08 - stalk - 0.02",.05]},{tube:[[.82,.1],[.78,"0.1 - stalk * 0.8"]],radii:.022},{circle:[.78,"0.1 - stalk * 0.8 - 0.02",.045]}],F0={body:z0},B0=[{let:{shellHeight:"range(0.45, 0.6)",shellWidth:"range(0.66, 0.76)",neckReach:"range(0.85, 1.0)",dome:{map:{count:25,as:"step",let:{angle:"PI + (step / 24) * PI"},value:["cos(angle) * shellWidth","0.25 + sin(angle) * shellHeight"]}},scuteY:"0.25 - shellHeight * 0.45"}},{polygon:"dome"},{ellipse:[0,.27,"shellWidth + 0.07",.08]},{tube:[["shellWidth - 0.1",.24],["neckReach - 0.15",.1]],radii:.09},{ellipse:["neckReach",.08,.17,.12,-.1]},{ellipse:["-shellWidth * 0.62",.42,.12,.16,.3]},{ellipse:["shellWidth * 0.6",.42,.12,.16,-.3]},{polygon:[["-shellWidth - 0.02",.22],["-shellWidth - 0.2",.3],["-shellWidth - 0.02",.3]]},{tube:[["-shellWidth * 0.95",.2],["-shellWidth * 0.5","scuteY"],["shellWidth * 0.5","scuteY"],["shellWidth * 0.95",.2]],radii:.015,cut:!0},{tube:[["-shellWidth * 0.25","scuteY"],["-shellWidth * 0.3",.2]],radii:.015,cut:!0},{tube:[["shellWidth * 0.25","scuteY"],["shellWidth * 0.3",.2]],radii:.015,cut:!0},{tube:[["-shellWidth * 0.2","scuteY"],[0,"0.25 - shellHeight * 0.95"]],radii:.014,cut:!0},{tube:[["shellWidth * 0.2","scuteY"],[0,"0.25 - shellHeight * 0.95"]],radii:.014,cut:!0},{circle:["neckReach + 0.06",.04,.028],cut:!0}],V0={body:B0},q0=[{let:{belly:"range(0.24, 0.34)",back:"range(-0.42, -0.32)",tailLift:"range(-0.35, 0.05)",spout:"chance(0.75)"}},{blob:[[.9,-.02],[.72,"back + 0.1"],[.3,"back"],[-.2,"back + 0.12"],[-.6,"-0.08 + tailLift * 0.4"],[-.88,"tailLift * 0.8"],[-.62,"0.12 + tailLift * 0.3"],[-.1,"belly"],[.5,"belly + 0.02"],[.84,.18]]},{ellipse:[-1,"tailLift - 0.16","vary(0.28)",.075,-.85]},{ellipse:[-1,"tailLift + 0.13","vary(0.28)",.075,.85]},{ellipse:[.22,"belly + 0.08","vary(0.24)",.065,.55]},{tube:[[.88,.1],[.6,.16],[.32,.12]],radii:.018,cut:!0},{circle:[.42,.04,.035],cut:!0},{if:"spout",then:[{tube:[[.55,"back - 0.06"],[.56,"back - 0.3"],[.44,"back - 0.5"]],radii:[.035,.03,.02]},{tube:[[.56,"back - 0.3"],[.7,"back - 0.48"]],radii:[.03,.02]},{circle:[.38,"back - 0.48",.03]},{circle:[.76,"back - 0.42",.025]},{circle:[.6,"back - 0.6",.025]}]}],J0={body:q0},K0={bodyRadiusX:"range(0.58, 0.66)",bodyRadiusY:"range(0.26, 0.3)",legLength:"range(0.52, 0.62)",legWidth:.06,headRadiusX:.2,headRadiusY:.16,snoutLength:.24,snoutRadius:.07,earHeight:"range(0.2, 0.26)",tailLength:"range(0.4, 0.5)",tailLift:"range(-0.25, -0.05)",tailWidth:.09},U0={extends:"quadruped",params:K0},G0=Object.assign({"./base/bird.json":Dt,"./base/quadruped.json":Ht,"./base/swimmer.json":zt,"./bear.json":Bt,"./cat.json":qt,"./deer.json":Ut,"./dolphin.json":t0,"./duck.json":n0,"./elephant.json":o0,"./fish.json":r0,"./flamingo.json":h0,"./fox.json":p0,"./hedgehog.json":b0,"./horse.json":R0,"./octopus.json":w0,"./otter.json":k0,"./owl.json":L0,"./penguin.json":D0,"./pig.json":A0,"./rabbit.json":H0,"./rhino.json":N0,"./shark.json":I0,"./snail.json":F0,"./turtle.json":V0,"./whale.json":J0,"./wolf.json":U0}),va=Object.fromEntries(Object.entries(G0).map(([e,t])=>[e.replace(/^.*\//,"").replace(/\.json$/,""),t])),Q0=pt(),Z0=()=>Q0.value,Ya=x(Z0);export{sa as A,la as B,ma as C,ba as D,O as M,Qe as a,pa as b,ga as c,Re as d,De as e,ae as f,Ya as g,ua as h,Z0 as i,ha as j,aa as k,Te as l,Yt as m,ra as n,ca as o,ya as p,na as q,va as r,fa as s,oa as t,V as u,ta as v,ia as w,ot as x,yt as y,da as z};
@@ -1 +1 @@
1
- import{d as M,I,o as t,b as l,i,h as a,k as c,c as k,_ as N,l as T,w as U,m as d,E as h,K as w,u as C,F as g,e as f,H as $,j as E,q as F,y as P,J as q}from"./_plugin-vue_export-helper-BxUUR8De.js";import{B as A,b as D,r as y,c as L,s as j,C as z,g as H}from"./scheme-BtoCLyX6.js";const J={class:"species-cell"},K={key:0,class:"species-cell__error"},O={class:"species-cell__seed"},R=M({__name:"SpeciesCell",props:{name:{},pose:{},seed:{},ink:{}},setup(m){const o=m,n=c(null),r=k(()=>{try{return{shapes:D(y,o.name,L(o.seed),{pose:o.pose}).shapes,error:""}}catch(u){return{shapes:[],error:u.message}}});return I(()=>{n.value&&!r.value.error&&o.ink&&A(n.value,r.value.shapes,o.ink)}),(u,_)=>(t(),l("figure",J,[r.value.error?(t(),l("p",K,i(r.value.error),1)):(t(),l("canvas",{key:1,ref_key:"canvas",ref:n,class:"species-cell__canvas",width:"260",height:"260"},null,512)),a("figcaption",O,i(m.seed),1)]))}}),G=N(R,[["__scopeId","data-v-220e2a5a"]]),Q={class:"sheet-page__head"},W={class:"sheet-page__field"},X={value:""},Y=["value"],Z={class:"sheet-page__field"},ee={class:"sheet-page__field"},se={class:"sheet-page__label"},ae={key:0,class:"sheet-page__pose"},te=M({__name:"SheetPage",setup(m){const o=new URLSearchParams(location.search),n=c(Math.min(12,Math.max(1,Number(o.get("seeds"))||6))),r=c(Number(o.get("from"))||1),u=c(o.get("species")||""),_=j(y),V=k(()=>Array.from({length:n.value},(p,e)=>r.value+e)),B=k(()=>_.filter(p=>!u.value||p===u.value).flatMap(p=>z(y,p).map(e=>({name:p,pose:e,key:`${p}:${e}`})))),v=c(null),b=c(""),S=()=>{v.value&&(b.value=getComputedStyle(v.value).color)};return T(S),U(H,S),(p,e)=>(t(),l("main",{ref_key:"page",ref:v,class:"app sheet-page"},[a("header",Q,[e[6]||(e[6]=a("h1",{class:"sheet-page__title"},"Species sheet",-1)),a("label",W,[e[3]||(e[3]=d("Species ",-1)),h(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>u.value=s)},[a("option",X,"all ("+i(C(_).length)+")",1),(t(!0),l(g,null,f(C(_),s=>(t(),l("option",{key:s,value:s},i(s),9,Y))),128))],512),[[w,u.value]])]),a("label",Z,[e[4]||(e[4]=d("Seeds ",-1)),h(a("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>n.value=s),class:"sheet-page__number",type:"number",min:"1",max:"12"},null,512),[[$,n.value,void 0,{number:!0}]])]),a("label",ee,[e[5]||(e[5]=d("From seed ",-1)),h(a("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>r.value=s),class:"sheet-page__number",type:"number",min:"0"},null,512),[[$,r.value,void 0,{number:!0}]])])]),(t(!0),l(g,null,f(B.value,s=>(t(),l("section",{key:s.key,class:"sheet-page__row"},[a("h2",se,[d(i(s.name),1),s.pose?(t(),l("small",ae,i(s.pose),1)):E("",!0)]),a("div",{class:"sheet-page__cells",style:P({gridTemplateColumns:`repeat(${n.value}, minmax(0, 1fr))`})},[(t(!0),l(g,null,f(V.value,x=>(t(),F(G,{key:x,name:s.name,pose:s.pose,seed:x,ink:b.value},null,8,["name","pose","seed","ink"]))),128))],4)]))),128))],512))}}),le=N(te,[["__scopeId","data-v-b4daa75a"]]);q(le).mount("#app");
1
+ import{d as M,I,o as t,e as l,j as i,i as a,b as c,c as k,_ as N,l as T,w as U,m as d,E as h,L as w,u as C,F as g,f,H as $,k as D,q as E,y as F,K as L}from"./_plugin-vue_export-helper-DeQjDyQ9.js";import{C as P,b as q,r as y,c as A,s as j,D as z,g as H}from"./scheme-BdlolNvz.js";const K={class:"species-cell"},O={key:0,class:"species-cell__error"},R={class:"species-cell__seed"},G=M({__name:"SpeciesCell",props:{name:{},pose:{},seed:{},ink:{}},setup(m){const o=m,n=c(null),r=k(()=>{try{return{shapes:q(y,o.name,A(o.seed),{pose:o.pose}).shapes,error:""}}catch(u){return{shapes:[],error:u.message}}});return I(()=>{n.value&&!r.value.error&&o.ink&&P(n.value,r.value.shapes,o.ink)}),(u,_)=>(t(),l("figure",K,[r.value.error?(t(),l("p",O,i(r.value.error),1)):(t(),l("canvas",{key:1,ref_key:"canvas",ref:n,class:"species-cell__canvas",width:"260",height:"260"},null,512)),a("figcaption",R,i(m.seed),1)]))}}),J=N(G,[["__scopeId","data-v-220e2a5a"]]),Q={class:"sheet-page__head"},W={class:"sheet-page__field"},X={value:""},Y=["value"],Z={class:"sheet-page__field"},ee={class:"sheet-page__field"},se={class:"sheet-page__label"},ae={key:0,class:"sheet-page__pose"},te=M({__name:"SheetPage",setup(m){const o=new URLSearchParams(location.search),n=c(Math.min(12,Math.max(1,Number(o.get("seeds"))||6))),r=c(Number(o.get("from"))||1),u=c(o.get("species")||""),_=j(y),V=k(()=>Array.from({length:n.value},(p,e)=>r.value+e)),B=k(()=>_.filter(p=>!u.value||p===u.value).flatMap(p=>z(y,p).map(e=>({name:p,pose:e,key:`${p}:${e}`})))),v=c(null),b=c(""),S=()=>{v.value&&(b.value=getComputedStyle(v.value).color)};return T(S),U(H,S),(p,e)=>(t(),l("main",{ref_key:"page",ref:v,class:"app sheet-page"},[a("header",Q,[e[6]||(e[6]=a("h1",{class:"sheet-page__title"},"Species sheet",-1)),a("label",W,[e[3]||(e[3]=d("Species ",-1)),h(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>u.value=s)},[a("option",X,"all ("+i(C(_).length)+")",1),(t(!0),l(g,null,f(C(_),s=>(t(),l("option",{key:s,value:s},i(s),9,Y))),128))],512),[[w,u.value]])]),a("label",Z,[e[4]||(e[4]=d("Seeds ",-1)),h(a("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>n.value=s),class:"sheet-page__number",type:"number",min:"1",max:"12"},null,512),[[$,n.value,void 0,{number:!0}]])]),a("label",ee,[e[5]||(e[5]=d("From seed ",-1)),h(a("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>r.value=s),class:"sheet-page__number",type:"number",min:"0"},null,512),[[$,r.value,void 0,{number:!0}]])])]),(t(!0),l(g,null,f(B.value,s=>(t(),l("section",{key:s.key,class:"sheet-page__row"},[a("h2",se,[d(i(s.name),1),s.pose?(t(),l("small",ae,i(s.pose),1)):D("",!0)]),a("div",{class:"sheet-page__cells",style:F({gridTemplateColumns:`repeat(${n.value}, minmax(0, 1fr))`})},[(t(!0),l(g,null,f(V.value,x=>(t(),E(J,{key:x,name:s.name,pose:s.pose,seed:x,ink:b.value},null,8,["name","pose","seed","ink"]))),128))],4)]))),128))],512))}}),le=N(te,[["__scopeId","data-v-b4daa75a"]]);L(le).mount("#app");
package/dist/index.html CHANGED
@@ -6,12 +6,12 @@
6
6
  <title>Whose Turn</title>
7
7
  <script src="/vendor/popper.min.js"></script>
8
8
  <script src="/vendor/tippy-bundle.umd.min.js"></script>
9
- <script type="module" crossorigin src="/assets/index-oEi3SjBF.js"></script>
10
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BxUUR8De.js">
11
- <link rel="modulepreload" crossorigin href="/assets/scheme-BtoCLyX6.js">
12
- <link rel="modulepreload" crossorigin href="/assets/bem-HybmjowO.js">
9
+ <script type="module" crossorigin src="/assets/index-DsQ_5Y-x.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-DeQjDyQ9.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/scheme-BdlolNvz.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/bem-CST_YFrc.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/_plugin-vue_export-helper-aQHODzfZ.css">
14
- <link rel="stylesheet" crossorigin href="/assets/index-C4WWZEBZ.css">
14
+ <link rel="stylesheet" crossorigin href="/assets/index-CEB3_bQv.css">
15
15
  </head>
16
16
  <body class="page">
17
17
  <div id="app" class="page__mount"></div>
package/dist/report.html CHANGED
@@ -4,9 +4,9 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Your report · Whose Turn</title>
7
- <script type="module" crossorigin src="/assets/report-GgVB1dt8.js"></script>
8
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BxUUR8De.js">
9
- <link rel="modulepreload" crossorigin href="/assets/bem-HybmjowO.js">
7
+ <script type="module" crossorigin src="/assets/report-Bar3ULi6.js"></script>
8
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-DeQjDyQ9.js">
9
+ <link rel="modulepreload" crossorigin href="/assets/bem-CST_YFrc.js">
10
10
  <link rel="stylesheet" crossorigin href="/assets/_plugin-vue_export-helper-aQHODzfZ.css">
11
11
  <link rel="stylesheet" crossorigin href="/assets/report-D7II0AfP.css">
12
12
  </head>
package/dist/sheet.html CHANGED
@@ -4,9 +4,9 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Species sheet · Whose Turn</title>
7
- <script type="module" crossorigin src="/assets/sheet-CXZ1EA3c.js"></script>
8
- <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BxUUR8De.js">
9
- <link rel="modulepreload" crossorigin href="/assets/scheme-BtoCLyX6.js">
7
+ <script type="module" crossorigin src="/assets/sheet-q2RQEgOf.js"></script>
8
+ <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-DeQjDyQ9.js">
9
+ <link rel="modulepreload" crossorigin href="/assets/scheme-BdlolNvz.js">
10
10
  <link rel="stylesheet" crossorigin href="/assets/_plugin-vue_export-helper-aQHODzfZ.css">
11
11
  <link rel="stylesheet" crossorigin href="/assets/sheet-DYpaJaXO.css">
12
12
  </head>