@growth-labs/cms 0.8.23 → 0.8.26

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.
Files changed (49) hide show
  1. package/dist/engine/foundry-dispatch.d.ts +1 -0
  2. package/dist/engine/foundry-dispatch.d.ts.map +1 -1
  3. package/dist/engine/foundry-dispatch.js +1 -1
  4. package/dist/engine/foundry-dispatch.js.map +1 -1
  5. package/dist/engine/index.d.ts +1 -0
  6. package/dist/engine/index.d.ts.map +1 -1
  7. package/dist/engine/index.js +2 -0
  8. package/dist/engine/index.js.map +1 -1
  9. package/dist/engine/published-content.d.ts.map +1 -1
  10. package/dist/engine/published-content.js +9 -3
  11. package/dist/engine/published-content.js.map +1 -1
  12. package/dist/providers/types.d.ts +7 -1
  13. package/dist/providers/types.d.ts.map +1 -1
  14. package/dist/providers/types.js.map +1 -1
  15. package/dist/schema/migrations.d.ts.map +1 -1
  16. package/dist/schema/migrations.js +7 -4
  17. package/dist/schema/migrations.js.map +1 -1
  18. package/dist/surveys/readout.d.ts +69 -0
  19. package/dist/surveys/readout.d.ts.map +1 -0
  20. package/dist/surveys/readout.js +157 -0
  21. package/dist/surveys/readout.js.map +1 -0
  22. package/dist/surveys/schema.d.ts +1 -0
  23. package/dist/surveys/schema.d.ts.map +1 -1
  24. package/dist/surveys/schema.js +1 -1
  25. package/dist/surveys/schema.js.map +1 -1
  26. package/dist/ui/screens/PodcastListeningScreen.d.ts.map +1 -1
  27. package/dist/ui/screens/PodcastListeningScreen.js +16 -2
  28. package/dist/ui/screens/PodcastListeningScreen.js.map +1 -1
  29. package/dist/ui/screens/SurveyResponsesScreen.d.ts +19 -1
  30. package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -1
  31. package/dist/ui/screens/SurveyResponsesScreen.js +203 -96
  32. package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -1
  33. package/dist/ui/screens/podcast-listening-data.d.ts +1 -1
  34. package/dist/ui/screens/podcast-listening-data.d.ts.map +1 -1
  35. package/dist/ui/screens/podcast-listening-data.js +26 -1
  36. package/dist/ui/screens/podcast-listening-data.js.map +1 -1
  37. package/dist/ui/styles/broadsheet.css +135 -0
  38. package/package.json +2 -3
  39. package/src/engine/foundry-dispatch.ts +1 -1
  40. package/src/engine/index.ts +5 -0
  41. package/src/engine/published-content.ts +11 -3
  42. package/src/providers/types.ts +7 -1
  43. package/src/schema/migrations.ts +7 -4
  44. package/src/surveys/readout.ts +243 -0
  45. package/src/surveys/schema.ts +1 -1
  46. package/src/ui/screens/PodcastListeningScreen.tsx +30 -0
  47. package/src/ui/screens/SurveyResponsesScreen.tsx +769 -290
  48. package/src/ui/screens/podcast-listening-data.ts +33 -1
  49. package/src/ui/styles/broadsheet.css +135 -0
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useCallback, useEffect, useMemo, useState } from 'react';
3
3
  import { canLabelSurveyAnswers, canViewSurveyVerbatims } from '../../surveys/access.js';
4
4
  import { isSurveyErrorCode, SURVEY_ERROR_CODE_HEADER, SURVEY_ERROR_DEFINITIONS, } from '../../surveys/errors.js';
5
- import { SurveyResultsSchema, } from '../../surveys/schema.js';
5
+ import { answerValue, compareQuestion, formatAverage, groupResponses, headlineScale, MEMBERSHIP_SPLIT, optionRows, percent, questionTakeaway, scaleMood, share, splitQuestions, summarizeScale, } from '../../surveys/readout.js';
6
+ import { MAX_FREE_TEXT_ENTRIES, SurveyResultsSchema, } from '../../surveys/schema.js';
6
7
  import { useWorkspace } from '../workspace-context.js';
7
8
  export function parseSurveyResultsPayload(value) {
8
9
  const parsed = SurveyResultsSchema.safeParse(value);
@@ -32,10 +33,13 @@ export async function classifySurveyResultsResponse(response) {
32
33
  return { kind: 'retryable' };
33
34
  }
34
35
  const PAGE_SIZE = 100;
36
+ // Five groups is as many as a reader can tell apart by color; more fold into a note.
37
+ const MAX_GROUPS = 5;
35
38
  export function SurveyResponsesScreen({ surveyId }) {
36
39
  const [state, setState] = useState({ kind: 'loading' });
37
40
  const [offset, setOffset] = useState(0);
38
41
  const [labelSaveFailed, setLabelSaveFailed] = useState(false);
42
+ const [everyone, setEveryone] = useState({ kind: 'idle' });
39
43
  const load = useCallback(async (nextOffset) => {
40
44
  setState({ kind: 'loading' });
41
45
  try {
@@ -46,6 +50,30 @@ export function SurveyResponsesScreen({ surveyId }) {
46
50
  setState({ kind: 'retryable' });
47
51
  }
48
52
  }, [surveyId]);
53
+ // Group comparisons are worked out in the browser, so they read every page
54
+ // first: a comparison over one page of 100 would sit beside survey-wide
55
+ // totals while describing different people. Pages load one after another
56
+ // to keep the reporting upstream's load flat; any failed page fails the
57
+ // whole comparison rather than quietly comparing a subset.
58
+ const loadEveryone = useCallback(async (total) => {
59
+ setEveryone({ kind: 'loading' });
60
+ const responses = new Map();
61
+ try {
62
+ for (let pageOffset = 0; pageOffset < total; pageOffset += PAGE_SIZE) {
63
+ const page = await classifySurveyResultsResponse(await fetch(`/admin/api/surveys/${encodeURIComponent(surveyId)}?offset=${pageOffset}`));
64
+ if (page.kind !== 'ready') {
65
+ setEveryone({ kind: 'failed' });
66
+ return;
67
+ }
68
+ for (const response of page.data.responses)
69
+ responses.set(response.id, response);
70
+ }
71
+ setEveryone({ kind: 'ready', responses: [...responses.values()] });
72
+ }
73
+ catch {
74
+ setEveryone({ kind: 'failed' });
75
+ }
76
+ }, [surveyId]);
49
77
  // Owner-only classification toggle: on success the label is applied to the
50
78
  // already-loaded page (no refetch); on failure the toggle stays honest on
51
79
  // its old value and a note says the save did not land.
@@ -76,7 +104,7 @@ export function SurveyResponsesScreen({ surveyId }) {
76
104
  void load(offset);
77
105
  }, [load, offset]);
78
106
  const { state: workspace } = useWorkspace();
79
- return (_jsx(SurveyResponsesBody, { surveyId: surveyId, state: state, offset: offset, role: workspace.user?.role ?? null, onRetry: () => void load(offset), onOffsetChange: setOffset, onSetLabel: setLabel, labelSaveFailed: labelSaveFailed }));
107
+ return (_jsx(SurveyResponsesBody, { surveyId: surveyId, state: state, offset: offset, role: workspace.user?.role ?? null, onRetry: () => void load(offset), onOffsetChange: setOffset, onSetLabel: setLabel, labelSaveFailed: labelSaveFailed, everyone: everyone, onLoadEveryone: (total) => void loadEveryone(total) }));
80
108
  }
81
109
  function withAnswerLabel(data, responseId, questionId, label) {
82
110
  return {
@@ -88,7 +116,7 @@ function withAnswerLabel(data, responseId, questionId, label) {
88
116
  : entry),
89
117
  };
90
118
  }
91
- export function SurveyResponsesBody({ surveyId, state, offset = 0, role = null, onRetry, onOffsetChange, onSetLabel, labelSaveFailed = false, }) {
119
+ export function SurveyResponsesBody({ surveyId, state, offset = 0, role = null, onRetry, onOffsetChange, onSetLabel, labelSaveFailed = false, everyone = { kind: 'idle' }, onLoadEveryone, compareBy = '', commentMood = '', }) {
92
120
  const canSeeVerbatims = canViewSurveyVerbatims(role);
93
121
  const canLabel = canLabelSurveyAnswers(role);
94
122
  if (state.kind === 'loading')
@@ -106,27 +134,91 @@ export function SurveyResponsesBody({ surveyId, state, offset = 0, role = null,
106
134
  if (state.kind === 'retryable')
107
135
  return (_jsx(StatusPage, { title: "Survey responses could not be loaded.", detail: "The request did not reach the reporting upstream, or it failed before replying.", retry: onRetry }));
108
136
  const { data } = state;
109
- const shown = data.responses.length;
110
137
  const total = data.survey.responseCount;
111
- const rangeStart = total === 0 ? 0 : offset + 1;
112
- const rangeEnd = offset + shown;
113
- const hasMore = rangeEnd < total;
114
- return (_jsxs("div", { className: "page page-wide fade-in", style: { maxWidth: 1340 }, children: [_jsxs("div", { className: "page-head", children: [_jsxs("div", { children: [_jsx("h1", { className: "page-title", children: data.survey.title }), _jsxs("div", { className: "page-sub", children: [total === 0
115
- ? 'No responses yet'
116
- : `Showing ${rangeStart}–${rangeEnd} of ${total} ${total === 1 ? 'response' : 'responses'}`, ' ', "\u00B7 ", data.survey.status] })] }), _jsx("a", { className: "btn", href: `/admin/api/surveys/${encodeURIComponent(surveyId)}/responses.csv`, children: "Export CSV" })] }), total === 0 ? (_jsxs("div", { className: "card", role: "status", children: [_jsx("h2", { className: "card-title", children: "No responses yet" }), _jsx("p", { className: "page-sub", children: "Aggregates and answers will appear after submission." })] })) : (_jsxs(_Fragment, { children: [_jsx(HeadlineScale, { questions: data.questions }), canSeeVerbatims ? (_jsxs(_Fragment, { children: [canLabel && (data.unlabeledCount ?? 0) > 0 ? (_jsx("p", { className: "page-sub", role: "status", style: { marginTop: 24 }, children: unlabeledAnswersNotice(data.unlabeledCount ?? 0) })) : null, canLabel && (data.personalDetailsCount ?? 0) > 0 ? (_jsx("p", { className: "page-sub", role: "status", style: { marginTop: 24 }, children: personalDetailsNotice(data.personalDetailsCount ?? 0) })) : null, labelSaveFailed && canLabel ? (_jsx("p", { className: "page-sub", role: "alert", style: { marginTop: 24 }, children: "The last label change could not be saved. Try again." })) : null, _jsx(VerbatimFeed, { data: data, canLabel: canLabel, onSetLabel: onSetLabel })] })) : (_jsxs("div", { className: "card", role: "status", style: { marginTop: 24 }, children: [_jsx("h2", { className: "card-title", children: "Individual answers are restricted" }), _jsx("p", { className: "page-sub", children: "Aggregates below are available to your role. Verbatim answers and respondent attribution require owner or senior editor." })] })), _jsx(Aggregates, { data: data }), (offset > 0 || hasMore) && onOffsetChange ? (_jsxs("div", { className: "page-head", style: { marginTop: 24 }, children: [_jsx("button", { className: "btn", type: "button", disabled: offset === 0, onClick: () => onOffsetChange(Math.max(offset - PAGE_SIZE, 0)), children: "Previous" }), _jsx("button", { className: "btn", type: "button", disabled: !hasMore, onClick: () => onOffsetChange(offset + PAGE_SIZE), children: "Next" })] })) : null] }))] }));
138
+ const headline = headlineScale(data.questions);
139
+ return (_jsxs("div", { className: "page page-wide fade-in svy", style: { maxWidth: 1340 }, children: [_jsxs("div", { className: "page-head", children: [_jsxs("div", { children: [_jsx("div", { className: "kicker", children: "Survey results" }), _jsx("h1", { className: "page-title", children: data.survey.title }), _jsx("div", { className: "page-sub", children: total === 0
140
+ ? 'No responses yet'
141
+ : `${total} ${total === 1 ? 'response' : 'responses'} · ${surveyStatusLabel(data.survey.status)}` })] }), _jsx("a", { className: "btn", href: `/admin/api/surveys/${encodeURIComponent(surveyId)}/responses.csv`, children: "Export CSV" })] }), total === 0 ? (_jsxs("div", { className: "card", role: "status", children: [_jsx("h2", { className: "card-title", children: "No responses yet" }), _jsx("p", { className: "page-sub", children: "Charts and comments will appear after the first submission." })] })) : (_jsxs(_Fragment, { children: [headline && headline.answerCount > 0 ? _jsx(Headline, { question: headline }) : null, _jsx(Results, { data: data, everyone: everyone, onLoadEveryone: onLoadEveryone, initialCompareBy: compareBy }), canSeeVerbatims ? (_jsx(Comments, { data: data, offset: offset, canLabel: canLabel, onSetLabel: onSetLabel, labelSaveFailed: labelSaveFailed, onOffsetChange: onOffsetChange, everyone: everyone, onLoadEveryone: onLoadEveryone, initialMood: commentMood })) : (_jsxs("div", { className: "card svy-section", role: "status", children: [_jsx("h2", { className: "card-title", children: "Individual answers are restricted" }), _jsx("p", { className: "page-sub", children: "The charts above are available to your role. What readers wrote, and who wrote it, requires owner or senior editor." })] }))] }))] }));
117
142
  }
143
+ // ── Headline ────────────────────────────────────────────────────────────
118
144
  // The first scale question is the survey's headline number. Leading with the
119
- // distribution keeps one harsh verbatim from setting the tone of a readout.
120
- function HeadlineScale({ questions }) {
121
- const scale = questions.find((question) => question.kind === 'scale');
122
- if (scale?.kind !== 'scale' || scale.answerCount === 0)
123
- return null;
124
- const midpoint = (scale.options.min + scale.options.max) / 2;
125
- const favourable = Object.entries(scale.distribution)
126
- .filter(([value]) => Number(value) > midpoint)
127
- .reduce((sum, [, count]) => sum + count, 0);
128
- const share = Math.round((favourable / scale.answerCount) * 100);
129
- return (_jsxs("section", { className: "card", "aria-labelledby": "survey-headline", style: { marginTop: 24 }, children: [_jsx("div", { className: "kicker", children: scale.prompt }), _jsxs("h2", { className: "card-title", id: "survey-headline", children: [share, "% rate ", midpoint.toFixed(1), " or better \u00B7 average", ' ', scale.average === null ? '—' : scale.average.toFixed(2)] }), _jsx(CountTable, { values: scale.distribution })] }));
145
+ // distribution keeps one harsh comment from setting the tone of a readout.
146
+ function Headline({ question }) {
147
+ const summary = summarizeScale(question.options, question.distribution);
148
+ return (_jsxs("section", { className: "card svy-headline", "aria-labelledby": "survey-headline", children: [_jsx("div", { className: "kicker", children: `Headline · Q${question.position + 1} · ${summary.answered} answered` }), _jsx("h2", { className: "svy-headline-prompt", id: "survey-headline", children: question.prompt }), _jsxs("div", { className: "svy-headline-body", children: [_jsxs("div", { children: [_jsx("div", { className: "svy-big", children: percent(summary.happy, summary.answered) }), _jsx("div", { className: "svy-big-label", children: `are happy — they rated it ${summary.happyRange} out of ${summary.max}` }), _jsxs("dl", { className: "svy-facts", children: [_jsxs("div", { children: [_jsxs("dt", { children: [_jsx("span", { className: "svy-swatch mood-unhappy", "aria-hidden": "true" }), `Unhappy (${summary.unhappyRange})`] }), _jsx("dd", { children: `${percent(summary.unhappy, summary.answered)} · ${people(summary.unhappy)}` })] }), summary.neutralValue !== null ? (_jsxs("div", { children: [_jsxs("dt", { children: [_jsx("span", { className: "svy-swatch mood-neutral", "aria-hidden": "true" }), `In the middle (${summary.neutralValue})`] }), _jsx("dd", { children: `${percent(summary.neutral, summary.answered)} · ${people(summary.neutral)}` })] })) : null, _jsxs("div", { children: [_jsxs("dt", { children: [_jsx("span", { className: "svy-swatch mood-happy", "aria-hidden": "true" }), `Happy (${summary.happyRange})`] }), _jsx("dd", { children: `${percent(summary.happy, summary.answered)} · ${people(summary.happy)}` })] }), _jsxs("div", { children: [_jsx("dt", { children: "Average" }), _jsx("dd", { children: `${formatAverage(summary.average)} out of ${summary.max}` })] })] })] }), _jsx(ScaleColumns, { question: question })] })] }));
149
+ }
150
+ function ScaleColumns({ question }) {
151
+ const { min, max } = question.options;
152
+ const summary = summarizeScale(question.options, question.distribution);
153
+ const values = Array.from({ length: max - min + 1 }, (_, index) => min + index);
154
+ const peak = Math.max(1, ...values.map((value) => question.distribution[String(value)] ?? 0));
155
+ const columns = { gridTemplateColumns: `repeat(${values.length}, minmax(0, 1fr))` };
156
+ return (_jsxs("figure", { className: "svy-cols", "aria-label": `How people rated it, from ${min} to ${max}`, children: [_jsx("div", { className: "svy-cols-plot", style: columns, children: values.map((value) => {
157
+ const count = question.distribution[String(value)] ?? 0;
158
+ return (_jsxs("div", { className: "svy-col", title: `Rated ${value}: ${people(count)} (${percent(count, summary.answered)})`, children: [_jsx("span", { className: "svy-col-value", children: percent(count, summary.answered) }), _jsx("span", { className: `svy-col-bar mood-${scaleMood(value, min, max)}`, style: { height: `${(count / peak) * 100}%` } })] }, value));
159
+ }) }), _jsx("div", { className: "svy-cols-axis", style: columns, children: values.map((value) => (_jsx("span", { children: value }, value))) }), summary.average !== null ? (_jsx("div", { className: "svy-cols-avg", children: _jsx("span", { style: { left: `${((summary.average - min + 0.5) / values.length) * 100}%` }, children: `▲ average ${formatAverage(summary.average)}` }) })) : null, _jsxs("figcaption", { className: "svy-cols-caption", children: [_jsx("span", { children: `${min} = lowest` }), _jsx("span", { children: `highest = ${max}` })] })] }));
160
+ }
161
+ // ── Results by question ─────────────────────────────────────────────────
162
+ function Results({ data, everyone, onLoadEveryone, initialCompareBy, }) {
163
+ const [compareBy, setCompareBy] = useState(initialCompareBy);
164
+ const total = data.survey.responseCount;
165
+ // Comparing by an answer needs each person's answers. A provider that sends
166
+ // none can still compare members with non-members, so only that is offered.
167
+ const hasAnswers = data.responses.some((response) => (response.answers ?? []).length > 0);
168
+ const candidates = hasAnswers ? splitQuestions(data.questions) : [];
169
+ useEffect(() => {
170
+ if (compareBy && everyone.kind === 'idle')
171
+ onLoadEveryone?.(total);
172
+ }, [compareBy, everyone.kind, onLoadEveryone, total]);
173
+ const allGroups = useMemo(() => compareBy && everyone.kind === 'ready'
174
+ ? groupResponses(everyone.responses, compareBy, data.questions)
175
+ : null, [compareBy, everyone, data.questions]);
176
+ const groups = allGroups?.slice(0, MAX_GROUPS) ?? null;
177
+ const headlineId = headlineScale(data.questions)?.id;
178
+ const gridQuestions = data.questions.filter((question) => groups || question.id !== headlineId);
179
+ return (_jsxs("section", { "aria-labelledby": "survey-results", className: "svy-section", children: [_jsxs("div", { className: "page-head svy-section-head", children: [_jsxs("div", { children: [_jsx("h2", { className: "page-title svy-h2", id: "survey-results", children: "What readers told us" }), _jsx("p", { className: "page-sub", children: `Each chart covers all ${total} responses. Percentages are of the people who answered that question.` })] }), _jsxs("label", { className: "svy-control", children: [_jsx("span", { className: "kicker", children: "Compare" }), _jsxs("select", { className: "selectbox", value: compareBy, onChange: (event) => setCompareBy(event.target.value), children: [_jsx("option", { value: "", children: "Everyone together" }), _jsx("option", { value: MEMBERSHIP_SPLIT, children: "Members vs non-members" }), candidates.map((question) => (_jsx("option", { value: question.id, children: question.kind === 'scale'
180
+ ? `Happy vs unhappy — ${question.prompt}`
181
+ : `By answer — ${question.prompt}` }, question.id)))] })] })] }), compareBy ? (_jsx(CompareStatus, { everyone: everyone, total: total, groups: groups, hiddenGroups: (allGroups?.length ?? 0) - (groups?.length ?? 0), onRetry: onLoadEveryone ? () => onLoadEveryone(total) : undefined })) : null, _jsx("div", { className: "svy-grid", children: gridQuestions.map((question) => (_jsx(QuestionCard, { question: question, total: total, groups: groups, isSplit: question.id === compareBy }, question.id))) })] }));
182
+ }
183
+ function CompareStatus({ everyone, total, groups, hiddenGroups, onRetry, }) {
184
+ if (everyone.kind === 'failed') {
185
+ return (_jsxs("div", { className: "svy-callout is-alert", role: "alert", children: ["Not every response could be loaded, so groups are not compared \u2014 a partial comparison would describe the wrong people.", ' ', onRetry ? (_jsx("button", { className: "btn sm", type: "button", onClick: onRetry, children: "Retry" })) : null] }));
186
+ }
187
+ if (everyone.kind !== 'ready' || !groups) {
188
+ return (_jsx("p", { className: "page-sub svy-compare-status", role: "status", children: `Loading all ${total} responses to compare groups…` }));
189
+ }
190
+ if (groups.length === 0) {
191
+ return (_jsx("p", { className: "svy-callout", role: "status", children: "Nobody has answered that question yet, so there are no groups to compare." }));
192
+ }
193
+ return (_jsxs("div", { className: "svy-legend", role: "status", children: [_jsx("span", { className: "page-sub", children: `Comparing all ${everyone.responses.length} responses:` }), groups.map((group, index) => (_jsxs("span", { className: "svy-legend-item", children: [_jsx("span", { className: `svy-swatch ${groupTone(group, index)}`, "aria-hidden": "true" }), `${group.label} · ${people(group.responses.length)}`] }, group.key))), hiddenGroups > 0 ? (_jsx("span", { className: "page-sub", children: `+${hiddenGroups} smaller ${hiddenGroups === 1 ? 'group' : 'groups'} not shown` })) : null] }));
194
+ }
195
+ function QuestionCard({ question, total, groups, isSplit, }) {
196
+ const comparison = groups && groups.length > 0 && !isSplit ? compareQuestion(question, groups) : null;
197
+ return (_jsxs("article", { className: "card svy-q", children: [_jsx("div", { className: "kicker", children: `Q${question.position + 1} · ${questionAudienceLabel(question.audience)} · ${question.answerCount} answered` }), _jsx("h3", { className: "svy-q-prompt", children: question.prompt }), _jsx("p", { className: "svy-takeaway", children: questionTakeaway(question, total) }), comparison && comparison.kind === 'choice' && groups ? (_jsx(GroupedBars, { rows: comparison.rows, groups: groups })) : comparison && comparison.kind === 'scale' && groups ? (_jsx(MoodBars, { summaries: comparison.byGroup, groups: groups })) : question.kind === 'single_choice' || question.kind === 'multi_choice' ? (_jsx(BarList, { rows: optionRows(question), of: question.answerCount })) : question.kind === 'scale' ? (_jsx(ScaleColumns, { question: question })) : (_jsx(BarList, { rows: [{ option: 'Wrote an answer', count: question.answerCount }], of: total })), question.kind === 'multi_choice' ? (_jsx("p", { className: "svy-note", children: "People could pick more than one, so these add up to more than 100%." })) : null, isSplit && groups ? (_jsx("p", { className: "svy-note", children: "The groups being compared come from this question." })) : null, comparison?.kind === 'none' ? (_jsx("p", { className: "svy-note", children: "Written answers are not split into groups \u2014 read them below." })) : null] }));
198
+ }
199
+ function BarList({ rows, of }) {
200
+ const top = Math.max(0, ...rows.map((row) => row.count));
201
+ return (_jsx("ul", { className: "svy-bars", children: rows.map((row) => (_jsxs("li", { className: "svy-bar", title: `${row.option}: ${row.count} of ${of} (${percent(row.count, of)})`, children: [_jsx("span", { className: "svy-bar-label", children: row.option }), _jsxs("span", { className: "svy-bar-value", children: [_jsx("strong", { children: percent(row.count, of) }), _jsx("span", { className: "svy-count", children: String(row.count) })] }), _jsx("span", { className: "svy-track", children: _jsx("span", { className: `svy-fill${top > 0 && row.count === top ? ' is-top' : ''}`, style: { width: `${share(row.count, of) * 100}%` } }) })] }, row.option))) }));
202
+ }
203
+ function GroupedBars({ rows, groups, }) {
204
+ return (_jsx("ul", { className: "svy-bars", children: rows.map((row, rowIndex) => (_jsxs("li", { className: "svy-bar is-grouped", children: [_jsx("span", { className: "svy-bar-label", children: row.option }), _jsx("span", { className: "svy-gbars", children: row.byGroup.map((cell, index) => {
205
+ const group = groups[index];
206
+ return (_jsxs("span", { className: "svy-gbar", title: `${group.label}: ${cell.count} of ${cell.answered} (${percent(cell.count, cell.answered)})`, children: [_jsx("span", { className: "svy-track sm", children: _jsx("span", { className: `svy-fill ${groupTone(group, index)}`, style: { width: `${share(cell.count, cell.answered) * 100}%` } }) }), _jsx("span", { className: "svy-gbar-value", children: rowIndex === 0
207
+ ? `${percent(cell.count, cell.answered)} ${group.label}`
208
+ : percent(cell.count, cell.answered) })] }, group.key));
209
+ }) })] }, row.option))) }));
210
+ }
211
+ function people(count) {
212
+ return `${count} ${count === 1 ? 'person' : 'people'}`;
213
+ }
214
+ function groupTone(group, index) {
215
+ return group.mood ? `mood-${group.mood}` : `g${index}`;
216
+ }
217
+ function MoodBars({ summaries, groups }) {
218
+ return (_jsx("ul", { className: "svy-bars", children: summaries.map((summary, index) => {
219
+ const group = groups[index];
220
+ return (_jsxs("li", { className: "svy-bar", title: `${group.label}: ${summary.happy} happy, ${summary.neutral} in the middle, ${summary.unhappy} unhappy of ${summary.answered}`, children: [_jsx("span", { className: "svy-bar-label", children: group.label }), _jsxs("span", { className: "svy-bar-value", children: [_jsx("strong", { children: `${percent(summary.happy, summary.answered)} happy` }), _jsx("span", { className: "svy-count", children: `avg ${formatAverage(summary.average)}` })] }), _jsx("span", { className: "svy-track svy-stack", children: ['unhappy', 'neutral', 'happy'].map((mood) => summary[mood] > 0 ? (_jsx("span", { className: `svy-seg mood-${mood}`, style: { width: `${share(summary[mood], summary.answered) * 100}%` } }, mood)) : null) })] }, group.key));
221
+ }) }));
130
222
  }
131
223
  // The owner's loud surface for answers auto-labeling has not placed yet
132
224
  // (publishing #24): everything unlabeled is hidden from the team, so he sees
@@ -143,82 +235,88 @@ function personalDetailsNotice(count) {
143
235
  ? '1 answer contains personal details and needs your label.'
144
236
  : `${count} answers contain personal details and need your label.`;
145
237
  }
146
- function VerbatimFeed({ data, canLabel, onSetLabel, }) {
238
+ function Comments({ data, offset, canLabel, onSetLabel, labelSaveFailed, onOffsetChange, everyone, onLoadEveryone, initialMood, }) {
147
239
  const [labelFilter, setLabelFilter] = useState('all');
148
- const textQuestionIds = new Set(data.questions.filter((question) => question.kind === 'text').map((question) => question.id));
240
+ const [moodFilter, setMoodFilter] = useState(initialMood);
241
+ const total = data.survey.responseCount;
242
+ const shown = data.responses.length;
243
+ const rangeStart = total === 0 ? 0 : offset + 1;
244
+ const rangeEnd = offset + shown;
245
+ const hasMore = rangeEnd < total;
246
+ const headline = headlineScale(data.questions);
247
+ const textQuestions = data.questions.filter((question) => question.kind === 'text');
248
+ const textQuestionIds = new Set(textQuestions.map((question) => question.id));
149
249
  const promptById = new Map(data.questions.map((question) => [question.id, question.prompt]));
250
+ const ratingOf = (response) => {
251
+ if (!headline)
252
+ return null;
253
+ const value = answerValue(response, headline.id);
254
+ return typeof value === 'number' ? value : null;
255
+ };
256
+ const moodOf = (response) => {
257
+ const rating = ratingOf(response);
258
+ return rating === null || !headline
259
+ ? null
260
+ : scaleMood(rating, headline.options.min, headline.options.max);
261
+ };
262
+ const canFilterByMood = data.responses.some((response) => ratingOf(response) !== null);
263
+ const moodRanges = headline ? summarizeScale(headline.options, {}) : null;
150
264
  // Non-owners never receive technical or unlabeled entries (the route filters
151
265
  // server-side), so for them this feed is already the general thread.
152
266
  const visibleFreeText = labelFilter === 'all' ? data.freeText : data.freeText.filter((e) => e.label === labelFilter);
153
- const freeTextByResponse = new Map();
267
+ const writtenByResponse = new Map();
154
268
  for (const entry of visibleFreeText) {
155
- const entries = freeTextByResponse.get(entry.responseId) ?? [];
269
+ const entries = writtenByResponse.get(entry.responseId) ?? [];
156
270
  entries.push(entry);
157
- freeTextByResponse.set(entry.responseId, entries);
271
+ writtenByResponse.set(entry.responseId, entries);
158
272
  }
159
- return (_jsxs("section", { "aria-labelledby": "survey-verbatims", style: { marginTop: 24 }, children: [_jsxs("div", { className: "page-head", children: [_jsx("h2", { className: "page-title", id: "survey-verbatims", style: { fontSize: 22 }, children: "Responses" }), canLabel ? (
160
- // biome-ignore lint/a11y/useSemanticElements: chip-row is a flex div throughout the admin UI; a fieldset would import UA border/padding with no reset in the publication CSS, while role="group" + aria-label keeps the grouping semantics
161
- _jsx("div", { className: "chip-row", role: "group", "aria-label": "Filter written answers", children: ['all', 'general', 'technical'].map((option) => (_jsx("button", { className: "chip", type: "button", "aria-pressed": labelFilter === option, onClick: () => setLabelFilter(option), children: option === 'all' ? 'All' : option === 'general' ? 'General' : 'Technical' }, option))) })) : null] }), _jsx("div", { style: { marginTop: 12 }, children: data.responses.map((response) => {
162
- const written = freeTextByResponse.get(response.id) ?? [];
163
- const choices = (response.answers ?? []).filter((answer) => !textQuestionIds.has(answer.questionId));
164
- return (_jsxs("article", { className: "card", style: { marginTop: 12 }, children: [_jsxs("div", { className: "kicker", children: [_jsx("time", { dateTime: response.submittedAt, children: formatTime(response.submittedAt) }), " \u00B7", ' ', segmentLabel(response.respondentSegment), " \u00B7 ", respondentLabel(response)] }), written.length === 0 ? (_jsx("p", { className: "page-sub", children: "No written answer." })) : (written.map((entry) => (_jsxs("div", { children: [_jsx("blockquote", { children: entry.value }), canLabel && onSetLabel ? (
273
+ const wroteSomething = new Set(data.freeText.map((entry) => entry.responseId));
274
+ // A filter answers "what do unhappy readers say", so it searches every
275
+ // response, never just the page on screen. The written answers already
276
+ // arrive for the whole survey; each response's rating and details come
277
+ // from loading every page, exactly as the group comparison does.
278
+ const filtering = moodFilter !== '' || labelFilter !== 'all';
279
+ useEffect(() => {
280
+ if (filtering && everyone.kind === 'idle')
281
+ onLoadEveryone?.(total);
282
+ }, [filtering, everyone.kind, onLoadEveryone, total]);
283
+ const pool = !filtering
284
+ ? data.responses
285
+ : everyone.kind === 'ready'
286
+ ? everyone.responses
287
+ : null;
288
+ const visible = (pool ?? []).filter((response) => (writtenByResponse.get(response.id) ?? []).length > 0 &&
289
+ (!moodFilter || moodOf(response) === moodFilter));
290
+ const silent = filtering
291
+ ? []
292
+ : data.responses.filter((response) => !wroteSomething.has(response.id));
293
+ const freeTextCapped = data.freeText.length >= MAX_FREE_TEXT_ENTRIES;
294
+ return (_jsxs("section", { "aria-labelledby": "survey-verbatims", className: "svy-section", children: [_jsxs("div", { className: "page-head svy-section-head", children: [_jsxs("div", { children: [_jsx("h2", { className: "page-title svy-h2", id: "survey-verbatims", children: "What readers wrote" }), textQuestions.length > 0 ? (_jsx("p", { className: "page-sub", children: textQuestions.map((q) => `“${q.prompt}”`).join(' · ') })) : null, _jsx("p", { className: "page-sub", children: !filtering
295
+ ? `Showing ${rangeStart}–${rangeEnd} of ${total} ${total === 1 ? 'response' : 'responses'}`
296
+ : pool
297
+ ? `${visible.length} ${visible.length === 1 ? 'comment matches' : 'comments match'} these filters, searched across all ${pool.length} responses`
298
+ : `Loading all ${total} responses to search every comment…` })] }), _jsxs("div", { className: "svy-filters", children: [canFilterByMood && moodRanges ? (_jsxs("label", { className: "svy-control", children: [_jsx("span", { className: "kicker", children: "From" }), _jsxs("select", { className: "selectbox", value: moodFilter, onChange: (event) => setMoodFilter(event.target.value), children: [_jsx("option", { value: "", children: "All readers" }), _jsx("option", { value: "unhappy", children: `Unhappy readers (${moodRanges.unhappyRange})` }), moodRanges.neutralValue !== null ? (_jsx("option", { value: "neutral", children: `Readers in the middle (${moodRanges.neutralValue})` })) : null, _jsx("option", { value: "happy", children: `Happy readers (${moodRanges.happyRange})` })] })] })) : null, canLabel ? (
299
+ // biome-ignore lint/a11y/useSemanticElements: chip-row is a flex div throughout the admin UI; a fieldset would import UA border/padding with no reset in the publication CSS, while role="group" + aria-label keeps the grouping semantics
300
+ _jsx("div", { className: "chip-row", role: "group", "aria-label": "Filter written answers", children: ['all', 'general', 'technical'].map((option) => (_jsx("button", { className: "chip", type: "button", "aria-pressed": labelFilter === option, onClick: () => setLabelFilter(option), children: option === 'all' ? 'All' : option === 'general' ? 'General' : 'Technical' }, option))) })) : null] })] }), canLabel && (data.unlabeledCount ?? 0) > 0 ? (_jsx("p", { className: "svy-callout", role: "status", children: unlabeledAnswersNotice(data.unlabeledCount ?? 0) })) : null, canLabel && (data.personalDetailsCount ?? 0) > 0 ? (_jsx("p", { className: "svy-callout", role: "status", children: personalDetailsNotice(data.personalDetailsCount ?? 0) })) : null, labelSaveFailed && canLabel ? (_jsx("p", { className: "svy-callout is-alert", role: "alert", children: "The last label change could not be saved. Try again." })) : null, filtering && everyone.kind === 'failed' ? (_jsxs("div", { className: "svy-callout is-alert", role: "alert", children: ["Not every response could be loaded, so the filter has nothing complete to search \u2014 a partial search would hide comments.", ' ', onLoadEveryone ? (_jsx("button", { className: "btn sm", type: "button", onClick: () => onLoadEveryone(total), children: "Retry" })) : null] })) : null, filtering && pool && freeTextCapped ? (_jsx("p", { className: "svy-callout", role: "status", children: `Only the newest ${MAX_FREE_TEXT_ENTRIES} written answers reach this screen, so older ones are not searched. Export CSV has every answer.` })) : null, !pool ? null : visible.length === 0 ? (_jsx("p", { className: "page-sub", children: filtering ? 'No comments match these filters.' : 'No comments on this page.' })) : (_jsx("div", { className: "svy-comments", children: visible.map((response) => {
301
+ const rating = ratingOf(response);
302
+ const mood = moodOf(response);
303
+ const others = (response.answers ?? []).filter((answer) => !textQuestionIds.has(answer.questionId) && answer.questionId !== headline?.id);
304
+ return (_jsxs("article", { className: "card svy-comment", children: [(writtenByResponse.get(response.id) ?? []).map((entry) => (_jsxs("div", { className: "svy-comment-entry", children: [textQuestions.length > 1 ? (_jsx("div", { className: "kicker", children: promptById.get(entry.questionId) })) : null, _jsx("blockquote", { className: "svy-quote", children: entry.value }), canLabel && onSetLabel ? (
165
305
  // biome-ignore lint/a11y/useSemanticElements: chip-row is a flex div throughout the admin UI; a fieldset would import UA border/padding with no reset in the publication CSS, while role="group" + aria-label keeps the grouping semantics
166
- _jsxs("div", { className: "chip-row", role: "group", "aria-label": `Classify the written answer from ${response.id}`, children: [_jsx("button", { className: "chip", type: "button", "aria-pressed": entry.label === 'technical', onClick: () => onSetLabel(entry.responseId, entry.questionId, 'technical'), children: "Technical" }), _jsx("button", { className: "chip", type: "button", "aria-pressed": entry.label === 'general', onClick: () => onSetLabel(entry.responseId, entry.questionId, 'general'), children: "General" }), entry.labelSource === 'auto' ? (_jsx("span", { className: "chip", title: "Labeled automatically \u2014 your choice overrides it", children: "auto" })) : null] })) : null] }, `${response.id}:${entry.questionId}`)))), _jsx("div", { className: "chip-row", children: choices.map((answer) => (_jsx("span", { className: "chip", title: promptById.get(answer.questionId) ?? answer.questionId, children: formatAnswerValue(answer.value) }, `${response.id}:${answer.questionId}`))) })] }, response.id));
167
- }) })] }));
168
- }
169
- function Aggregates({ data }) {
170
- // Flat counts cannot express the finding that matters most — how one cohort
171
- // differs from another — so every aggregate can be split by another question.
172
- const splitCandidates = data.questions.filter((question) => question.kind === 'single_choice' || question.kind === 'scale');
173
- const [splitBy, setSplitBy] = useState('');
174
- const splitQuestion = splitCandidates.find((question) => question.id === splitBy);
175
- const answersByResponse = useMemo(() => {
176
- const map = new Map();
177
- for (const response of data.responses) {
178
- map.set(response.id, new Map((response.answers ?? []).map((answer) => [answer.questionId, answer.value])));
179
- }
180
- return map;
181
- }, [data.responses]);
182
- const cohorts = useMemo(() => {
183
- if (!splitQuestion)
184
- return null;
185
- const buckets = new Map();
186
- for (const response of data.responses) {
187
- const value = answersByResponse.get(response.id)?.get(splitQuestion.id);
188
- if (value === undefined)
189
- continue;
190
- const key = formatAnswerValue(value);
191
- const ids = buckets.get(key) ?? [];
192
- ids.push(response.id);
193
- buckets.set(key, ids);
194
- }
195
- return buckets;
196
- }, [answersByResponse, data.responses, splitQuestion]);
197
- return (_jsxs("section", { "aria-labelledby": "survey-aggregates", style: { marginTop: 24 }, children: [_jsxs("div", { className: "page-head", children: [_jsx("h2", { className: "page-title", id: "survey-aggregates", style: { fontSize: 22 }, children: "Question aggregates" }), _jsxs("label", { children: [_jsx("span", { className: "page-sub", children: "Split by " }), _jsxs("select", { value: splitBy, onChange: (event) => setSplitBy(event.target.value), children: [_jsx("option", { value: "", children: "No split" }), splitCandidates.map((question) => (_jsx("option", { value: question.id, children: question.prompt }, question.id)))] })] })] }), _jsx("div", { className: "grid-split-wide", style: { alignItems: 'start', marginTop: 12 }, children: data.questions.map((question) => (_jsxs("article", { className: "card", children: [_jsxs("div", { className: "kicker", children: ["Q", question.position + 1, " \u00B7 ", questionAudienceLabel(question.audience)] }), _jsx("h3", { className: "card-title", children: question.prompt }), question.counts && _jsx(CountTable, { values: question.counts }), question.distribution && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "page-sub", children: ["Average: ", question.average === null ? '—' : question.average.toFixed(2)] }), _jsx(CountTable, { values: question.distribution })] })), question.kind === 'text' && (_jsxs("p", { className: "page-sub", children: [question.responseCount ?? 0, " written answers"] })), cohorts && splitQuestion && splitQuestion.id !== question.id ? (_jsx(CrossTab, { question: question, cohorts: cohorts, answersByResponse: answersByResponse })) : null] }, question.id))) })] }));
198
- }
199
- function CrossTab({ question, cohorts, answersByResponse, }) {
200
- const rows = [...cohorts.entries()].map(([cohort, responseIds]) => {
201
- const values = responseIds
202
- .map((id) => answersByResponse.get(id)?.get(question.id))
203
- .filter((value) => value !== undefined);
204
- if (question.kind === 'scale') {
205
- const numbers = values.filter((value) => typeof value === 'number');
206
- const average = numbers.length
207
- ? numbers.reduce((sum, value) => sum + value, 0) / numbers.length
208
- : null;
209
- return { cohort, n: values.length, summary: average === null ? '—' : average.toFixed(2) };
210
- }
211
- const counts = new Map();
212
- for (const value of values.flatMap((value) => (Array.isArray(value) ? value : [value]))) {
213
- const key = formatAnswerValue(value);
214
- counts.set(key, (counts.get(key) ?? 0) + 1);
215
- }
216
- const top = [...counts.entries()].sort((left, right) => right[1] - left[1])[0];
217
- return { cohort, n: values.length, summary: top ? `${top[0]} (${top[1]})` : '—' };
218
- });
219
- if (rows.length === 0)
220
- return null;
221
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "masthead-rule" }), _jsxs("table", { className: "tbl", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Cohort" }), _jsx("th", { children: "n" }), _jsx("th", { children: question.kind === 'scale' ? 'Average' : 'Most common' })] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { children: [_jsx("td", { children: row.cohort }), _jsx("td", { children: row.n }), _jsx("td", { children: row.summary })] }, row.cohort))) })] })] }));
306
+ _jsxs("div", { className: "chip-row", role: "group", "aria-label": `Classify the written answer from ${response.id}`, children: [_jsx("button", { className: "chip", type: "button", "aria-pressed": entry.label === 'technical', onClick: () => onSetLabel(entry.responseId, entry.questionId, 'technical'), children: "Technical" }), _jsx("button", { className: "chip", type: "button", "aria-pressed": entry.label === 'general', onClick: () => onSetLabel(entry.responseId, entry.questionId, 'general'), children: "General" }), entry.labelSource === 'auto' ? (_jsx("span", { className: "chip is-quiet", title: "Labeled automatically \u2014 your choice overrides it", children: "auto" })) : null] })) : null] }, `${response.id}:${entry.questionId}`))), _jsxs("div", { className: "svy-meta", children: [rating !== null && headline && mood ? (_jsxs("span", { className: "svy-rating", title: headline.prompt, children: [_jsx("span", { className: `svy-swatch mood-${mood}`, "aria-hidden": "true" }), `Rated ${rating} of ${headline.options.max}`] })) : null, _jsx("span", { children: segmentLabel(response.respondentSegment) }), _jsx("span", { children: respondentLabel(response) }), _jsx("time", { dateTime: response.submittedAt, title: formatTime(response.submittedAt), children: formatDate(response.submittedAt) })] }), others.length > 0 ? (_jsxs("details", { className: "svy-answers", children: [_jsx("summary", { children: "Their other answers" }), _jsx("dl", { children: others.map((answer) => (_jsxs("div", { children: [_jsx("dt", { children: promptById.get(answer.questionId) ?? answer.questionId }), _jsx("dd", { children: formatAnswerValue(answer.value) })] }, answer.questionId))) })] })) : null] }, response.id));
307
+ }) })), silent.length > 0 ? (_jsxs("details", { className: "svy-silent", children: [_jsx("summary", { children: `${silent.length} ${silent.length === 1 ? 'response' : 'responses'} on this page left no comment` }), _jsx("ul", { children: silent.map((response) => {
308
+ const rating = ratingOf(response);
309
+ return (_jsx("li", { children: [
310
+ formatDate(response.submittedAt),
311
+ segmentLabel(response.respondentSegment),
312
+ respondentLabel(response),
313
+ rating !== null && headline
314
+ ? `rated ${rating} of ${headline.options.max}`
315
+ : null,
316
+ ]
317
+ .filter(Boolean)
318
+ .join(' · ') }, response.id));
319
+ }) })] })) : null, !filtering && (offset > 0 || hasMore) && onOffsetChange ? (_jsxs("div", { className: "svy-pager", children: [_jsx("button", { className: "btn", type: "button", disabled: offset === 0, onClick: () => onOffsetChange(Math.max(offset - PAGE_SIZE, 0)), children: "Previous" }), _jsx("button", { className: "btn", type: "button", disabled: !hasMore, onClick: () => onOffsetChange(offset + PAGE_SIZE), children: "Next" })] })) : null] }));
222
320
  }
223
321
  async function readSurveyErrorCode(response) {
224
322
  const headerCode = response.headers.get(SURVEY_ERROR_CODE_HEADER);
@@ -243,7 +341,7 @@ function respondentLabel(response) {
243
341
  ? `${response.respondent.label} · ${response.respondent.detail}`
244
342
  : response.respondent.label;
245
343
  }
246
- return response.anonymous ? 'Anonymous' : 'Known respondent';
344
+ return response.anonymous ? 'Anonymous' : 'Signed-in reader';
247
345
  }
248
346
  function formatAnswerValue(value) {
249
347
  if (Array.isArray(value))
@@ -253,26 +351,35 @@ function formatAnswerValue(value) {
253
351
  function StatusPage({ title, detail, retry, }) {
254
352
  return (_jsxs("div", { className: "page", role: "status", children: [_jsx("h1", { className: "page-title", children: "Survey responses" }), _jsx("p", { className: "page-sub", children: title }), detail ? _jsx("p", { className: "page-sub", children: detail }) : null, retry ? (_jsx("button", { className: "btn", onClick: retry, type: "button", children: "Retry" })) : null] }));
255
353
  }
256
- function CountTable({ values }) {
257
- const total = Object.values(values).reduce((sum, count) => sum + count, 0);
258
- return (_jsx("dl", { className: "count-list", children: Object.entries(values).map(([label, count]) => (_jsxs("div", { children: [_jsx("dt", { children: label }), _jsxs("dd", { children: [count, total > 0 ? ` · ${Math.round((count / total) * 100)}%` : ''] })] }, label))) }));
354
+ function surveyStatusLabel(status) {
355
+ if (status === 'active')
356
+ return 'open';
357
+ if (status === 'closed')
358
+ return 'closed';
359
+ return 'draft';
259
360
  }
260
361
  function segmentLabel(segment) {
261
362
  if (segment === 'member')
262
363
  return 'Member';
263
364
  if (segment === 'non_member')
264
365
  return 'Non-member';
265
- return 'Unknown';
366
+ return 'Membership unknown';
266
367
  }
267
368
  function questionAudienceLabel(audience) {
268
369
  if (audience === 'member')
269
- return 'Members';
370
+ return 'asked members';
270
371
  if (audience === 'non_member')
271
- return 'Non-members';
272
- return 'Everyone';
372
+ return 'asked non-members';
373
+ return 'asked everyone';
273
374
  }
274
375
  function formatTime(value) {
275
376
  const date = new Date(value);
276
377
  return Number.isNaN(date.getTime()) ? value : date.toLocaleString();
277
378
  }
379
+ function formatDate(value) {
380
+ const date = new Date(value);
381
+ return Number.isNaN(date.getTime())
382
+ ? value
383
+ : date.toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' });
384
+ }
278
385
  //# sourceMappingURL=SurveyResponsesScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SurveyResponsesScreen.js","sourceRoot":"","sources":["../../../src/ui/screens/SurveyResponsesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEjE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GAExB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAIN,mBAAmB,GACnB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAYtD,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACvD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACnD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,QAAkB;IAElB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,yBAAyB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/E,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC7B,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACxF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,2BAA2B;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACjG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,yBAAyB;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAC/B,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAC/B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,CAAA;AAErB,MAAM,UAAU,qBAAqB,CAAC,EAAE,QAAQ,EAAwB;IACvE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC7E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,WAAW,CACvB,KAAK,EAAE,UAAkB,EAAE,EAAE;QAC5B,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7B,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC3B,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,WAAW,UAAU,EAAE,CACzE,CAAA;YACD,QAAQ,CAAC,MAAM,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxD,CAAC;QAAC,MAAM,CAAC;YACR,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QAChC,CAAC;IACF,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAA;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,QAAQ,GAAG,WAAW,CAC3B,KAAK,EAAE,UAAkB,EAAE,UAAkB,EAAE,KAAwB,EAAE,EAAE;QAC1E,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC3B,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,EAClE;gBACC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;aACvD,CACD,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBACxB,OAAM;YACP,CAAC;YACD,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CACrB,QAAQ,CAAC,IAAI,KAAK,OAAO;gBACxB,CAAC,CAAC;oBACA,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;iBACnE;gBACF,CAAC,CAAC,QAAQ,CACX,CAAA;QACF,CAAC;QAAC,MAAM,CAAC;YACR,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACF,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAElB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IAE3C,OAAO,CACN,KAAC,mBAAmB,IACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAChC,cAAc,EAAE,SAAS,EACzB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,eAAe,GAC/B,CACF,CAAA;AACF,CAAC;AAED,SAAS,eAAe,CACvB,IAAmB,EACnB,UAAkB,EAClB,UAAkB,EAClB,KAAwB;IAExB,OAAO;QACN,GAAG,IAAI;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACrC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU;YACjE,CAAC,CAAC,iEAAiE;gBAClE,iEAAiE;gBACjE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YAC1C,CAAC,CAAC,KAAK,CACR;KACD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EACnC,QAAQ,EACR,KAAK,EACL,MAAM,GAAG,CAAC,EACV,IAAI,GAAG,IAAI,EACX,OAAO,EACP,cAAc,EACd,UAAU,EACV,eAAe,GAAG,KAAK,GAUvB;IACA,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAE5C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,gCAA2B,GAAG,CAAA;IACrF,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAC7B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,sDAAsD,GAAG,CAAA;IACnF,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAC/B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,mDAAmD,GAAG,CAAA;IAChF,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAC/B,OAAO,CACN,KAAC,UAAU,IACV,KAAK,EAAC,yDAAoD,EAC1D,MAAM,EAAC,qFAAqF,EAC5F,KAAK,EAAE,OAAO,GACb,CACF,CAAA;IACF,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAC7B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,wCAAwC,EAAC,KAAK,EAAE,OAAO,GAAI,CAAA;IACrF,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAC7B,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,2CAA2C,GAAG,CAAA;IACxE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;QAC7B,OAAO,CACN,KAAC,UAAU,IACV,KAAK,EAAC,uCAAuC,EAC7C,MAAM,EAAC,iFAAiF,EACxF,KAAK,EAAE,OAAO,GACb,CACF,CAAA;IAEF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAA;IACvC,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAA;IAC/B,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAEhC,OAAO,CACN,eAAK,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAChE,eAAK,SAAS,EAAC,WAAW,aACzB,0BACC,aAAI,SAAS,EAAC,YAAY,YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAM,EAEnD,eAAK,SAAS,EAAC,UAAU,aACvB,KAAK,KAAK,CAAC;wCACX,CAAC,CAAC,kBAAkB;wCACpB,CAAC,CAAC,WAAW,UAAU,IAAI,QAAQ,OAAO,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,aAC9F,IAAI,CAAC,MAAM,CAAC,MAAM,IAChB,IACD,EACN,YACC,SAAS,EAAC,KAAK,EACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB,2BAGrE,IACC,EAEL,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,aAClC,aAAI,SAAS,EAAC,YAAY,iCAAsB,EAChD,YAAG,SAAS,EAAC,UAAU,qEAAyD,IAC3E,CACN,CAAC,CAAC,CAAC,CACH,8BACC,KAAC,aAAa,IAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAI,EAE3C,eAAe,CAAC,CAAC,CAAC,CAClB,8BACE,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7C,YAAG,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAC5D,sBAAsB,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,GAC9C,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACnD,YAAG,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAC5D,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC,GACnD,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,CAC9B,YAAG,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,qEAEzD,CACJ,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAI,IACtE,CACH,CAAC,CAAC,CAAC,CACH,eAAK,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAC3D,aAAI,SAAS,EAAC,YAAY,kDAAuC,EACjE,YAAG,SAAS,EAAC,UAAU,yIAGnB,IACC,CACN,EAED,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,GAAI,EAEzB,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAC5C,eAAK,SAAS,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAClD,iBACC,SAAS,EAAC,KAAK,EACf,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,MAAM,KAAK,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,yBAGtD,EACT,iBACC,SAAS,EAAC,KAAK,EACf,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,OAAO,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,qBAGzC,IACJ,CACN,CAAC,CAAC,CAAC,IAAI,IACN,CACH,IACI,CACN,CAAA;AACF,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,SAAS,aAAa,CAAC,EAAE,SAAS,EAA6C;IAC9E,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACrE,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnE,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;SACnD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;SAC7C,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAA;IAEhE,OAAO,CACN,mBAAS,SAAS,EAAC,MAAM,qBAAiB,iBAAiB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aACnF,cAAK,SAAS,EAAC,QAAQ,YAAE,KAAK,CAAC,MAAM,GAAO,EAC5C,cAAI,SAAS,EAAC,YAAY,EAAC,EAAE,EAAC,iBAAiB,aAC7C,KAAK,aAAS,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,+BAAsB,GAAG,EAC1D,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IACpD,EACL,KAAC,UAAU,IAAC,MAAM,EAAE,KAAK,CAAC,YAAY,GAAI,IACjC,CACV,CAAA;AACF,CAAC;AAID,wEAAwE;AACxE,6EAA6E;AAC7E,wDAAwD;AACxD,SAAS,sBAAsB,CAAC,KAAa;IAC5C,OAAO,GACN,KAAK,KAAK,CAAC;QACV,CAAC,CAAC,kDAAkD;QACpD,CAAC,CAAC,GAAG,KAAK,mDACZ,qIAAqI,CAAA;AACtI,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,SAAS,qBAAqB,CAAC,KAAa;IAC3C,OAAO,KAAK,KAAK,CAAC;QACjB,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,GAAG,KAAK,wDAAwD,CAAA;AACpE,CAAC;AAED,SAAS,YAAY,CAAC,EACrB,IAAI,EACJ,QAAQ,EACR,UAAU,GAKV;IACA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkC,KAAK,CAAC,CAAA;IACtF,MAAM,eAAe,GAAG,IAAI,GAAG,CAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC5F,CAAA;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5F,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,eAAe,GACpB,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAA;IAC7F,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAA;IAC7D,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,OAAO,CACN,sCAAyB,kBAAkB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aACnE,eAAK,SAAS,EAAC,WAAW,aACzB,aAAI,SAAS,EAAC,YAAY,EAAC,EAAE,EAAC,kBAAkB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,0BAEnE,EACJ,QAAQ,CAAC,CAAC,CAAC;oBACX,2OAA2O;oBAC3O,cAAK,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,gBAAY,wBAAwB,YACvE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC3D,iBACC,SAAS,EAAC,MAAM,EAEhB,IAAI,EAAC,QAAQ,kBACC,WAAW,KAAK,MAAM,EACpC,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,YAEpC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IALrE,MAAM,CAMH,CACT,CAAC,GACG,CACN,CAAC,CAAC,CAAC,IAAI,IACH,EACN,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAChC,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;oBACzD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CACnD,CAAA;oBACD,OAAO,CACN,mBAAS,SAAS,EAAC,MAAM,EAAmB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aACnE,eAAK,SAAS,EAAC,QAAQ,aACtB,eAAM,QAAQ,EAAE,QAAQ,CAAC,WAAW,YAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAQ,aAAG,GAAG,EACpF,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAK,eAAe,CAAC,QAAQ,CAAC,IAClE,EACL,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,YAAG,SAAS,EAAC,UAAU,mCAAuB,CAC9C,CAAC,CAAC,CAAC,CACH,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,0BACC,+BAAa,KAAK,CAAC,KAAK,GAAc,EACrC,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;oCACzB,2OAA2O;oCAC3O,eACC,SAAS,EAAC,UAAU,EACpB,IAAI,EAAC,OAAO,gBACA,oCAAoC,QAAQ,CAAC,EAAE,EAAE,aAE7D,iBACC,SAAS,EAAC,MAAM,EAChB,IAAI,EAAC,QAAQ,kBACC,KAAK,CAAC,KAAK,KAAK,WAAW,EACzC,OAAO,EAAE,GAAG,EAAE,CACb,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,0BAIpD,EACT,iBACC,SAAS,EAAC,MAAM,EAChB,IAAI,EAAC,QAAQ,kBACC,KAAK,CAAC,KAAK,KAAK,SAAS,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,wBAGhE,EACR,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAC/B,eACC,SAAS,EAAC,MAAM,EAChB,KAAK,EAAC,uDAAkD,qBAGlD,CACP,CAAC,CAAC,CAAC,IAAI,IACH,CACN,CAAC,CAAC,CAAC,IAAI,KApCC,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAqCxC,CACN,CAAC,CACF,EACD,cAAK,SAAS,EAAC,UAAU,YACvB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,eACC,SAAS,EAAC,MAAM,EAEhB,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,YAE5D,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,IAH3B,GAAG,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAIpC,CACP,CAAC,GACG,KA3DwB,QAAQ,CAAC,EAAE,CA4DhC,CACV,CAAA;gBACF,CAAC,CAAC,GACG,IACG,CACV,CAAA;AACF,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAA2B;IACpD,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC5C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAC5E,CAAA;IACD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAA;IAClD,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;IAEjF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgC,CAAA;QACnD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,CACN,QAAQ,CAAC,EAAE,EACX,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACpF,CAAA;QACF,CAAC;QACD,OAAO,GAAG,CAAA;IACX,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;QAC3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YACvE,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAQ;YACjC,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;YAClC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,OAAO,CAAA;IACf,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAA;IAEtD,OAAO,CACN,sCAAyB,mBAAmB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aACpE,eAAK,SAAS,EAAC,WAAW,aACzB,aAAI,SAAS,EAAC,YAAY,EAAC,EAAE,EAAC,mBAAmB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,oCAEpE,EACL,4BACC,eAAM,SAAS,EAAC,UAAU,0BAAiB,EAC3C,kBAAQ,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,aAC1E,iBAAQ,KAAK,EAAC,EAAE,yBAAkB,EACjC,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClC,iBAA0B,KAAK,EAAE,QAAQ,CAAC,EAAE,YAC1C,QAAQ,CAAC,MAAM,IADJ,QAAQ,CAAC,EAAE,CAEf,CACT,CAAC,IACM,IACF,IACH,EACN,cAAK,SAAS,EAAC,iBAAiB,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,YAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACjC,mBAAS,SAAS,EAAC,MAAM,aACxB,eAAK,SAAS,EAAC,QAAQ,kBACpB,QAAQ,CAAC,QAAQ,GAAG,CAAC,cAAK,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAC/D,EACN,aAAI,SAAS,EAAC,YAAY,YAAE,QAAQ,CAAC,MAAM,GAAM,EAChD,QAAQ,CAAC,MAAM,IAAI,KAAC,UAAU,IAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAI,EAC1D,QAAQ,CAAC,YAAY,IAAI,CACzB,8BACC,aAAG,SAAS,EAAC,UAAU,0BACZ,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IACpE,EACJ,KAAC,UAAU,IAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,GAAI,IAC3C,CACH,EACA,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAC5B,aAAG,SAAS,EAAC,UAAU,aAAE,QAAQ,CAAC,aAAa,IAAI,CAAC,wBAAqB,CACzE,EACA,OAAO,IAAI,aAAa,IAAI,aAAa,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAC/D,KAAC,QAAQ,IACR,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,iBAAiB,GACnC,CACF,CAAC,CAAC,CAAC,IAAI,KAvBsB,QAAQ,CAAC,EAAE,CAwBhC,CACV,CAAC,GACG,IACG,CACV,CAAA;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,EACjB,QAAQ,EACR,OAAO,EACP,iBAAiB,GAKjB;IACA,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,WAAW;aACxB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;QACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAA;YACpF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;gBAC7B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;gBACjE,CAAC,CAAC,IAAI,CAAA;YACP,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;QACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5C,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9E,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;IAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,CACN,8BACC,cAAK,SAAS,EAAC,eAAe,GAAG,EACjC,iBAAO,SAAS,EAAC,KAAK,aACrB,0BACC,yBACC,kCAAe,EACf,6BAAU,EACV,uBAAK,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,GAAM,IAC5D,GACE,EACR,0BACE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAClB,yBACC,uBAAK,GAAG,CAAC,MAAM,GAAM,EACrB,uBAAK,GAAG,CAAC,CAAC,GAAM,EAChB,uBAAK,GAAG,CAAC,OAAO,GAAM,KAHd,GAAG,CAAC,MAAM,CAId,CACL,CAAC,GACK,IACD,IACN,CACH,CAAA;AACF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,QAAkB;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACjE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/C,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;QAC/F,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACvE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAA;IAC1E,OAAO,IAAI,CAAC,KAAK,KAAK,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AACnF,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,QAA4C;IACpE,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM;YAChC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;YAChE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAA;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAA;AAC7D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,EACnB,KAAK,EACL,MAAM,EACN,KAAK,GAKL;IACA,OAAO,CACN,eAAK,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,aAClC,aAAI,SAAS,EAAC,YAAY,iCAAsB,EAChD,YAAG,SAAS,EAAC,UAAU,YAAE,KAAK,GAAK,EAClC,MAAM,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,UAAU,YAAE,MAAM,GAAK,CAAC,CAAC,CAAC,IAAI,EACpD,KAAK,CAAC,CAAC,CAAC,CACR,iBAAQ,SAAS,EAAC,KAAK,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,sBAE5C,CACT,CAAC,CAAC,CAAC,IAAI,IACH,CACN,CAAA;AACF,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,MAAM,EAAsC;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;IAC1E,OAAO,CACN,aAAI,SAAS,EAAC,YAAY,YACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAC/C,0BACC,uBAAK,KAAK,GAAM,EAChB,yBACE,KAAK,EACL,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACxD,KALI,KAAK,CAMT,CACN,CAAC,GACE,CACL,CAAA;AACF,CAAC;AAED,SAAS,YAAY,CAAC,OAA4C;IACjE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IACzC,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,YAAY,CAAA;IACjD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAyC;IACvE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,aAAa,CAAA;IACnD,OAAO,UAAU,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"SurveyResponsesScreen.js","sourceRoot":"","sources":["../../../src/ui/screens/SurveyResponsesScreen.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { PodcastListening, PodcastListeningEpisode } from '../../providers/types.js';
2
- export type PodcastSortKey = 'episode' | 'plays' | 'listeners' | 'reached10' | 'reached25' | 'reached50' | 'reached75' | 'reached90' | 'completes' | 'completionRate' | 'totalListeningSeconds';
2
+ export type PodcastSortKey = 'episode' | 'plays' | 'listeners' | 'reached10' | 'reached25' | 'reached50' | 'reached75' | 'reached90' | 'completes' | 'completionRate' | 'totalListeningSeconds' | 'avgListeningSecondsPerListener';
3
3
  /**
4
4
  * Normalize the GET /admin/api/analytics?type=podcastListening body. The route
5
5
  * returns the provider's PodcastListening verbatim; this keeps a malformed
@@ -1 +1 @@
1
- {"version":3,"file":"podcast-listening-data.d.ts","sourceRoot":"","sources":["../../../src/ui/screens/podcast-listening-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,OAAO,GACP,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,uBAAuB,CAAA;AAiC1B;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CA0BjF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,KAAK,GAAG,MAAM,GACjB,uBAAuB,EAAE,CAiB3B;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAG7F"}
1
+ {"version":3,"file":"podcast-listening-data.d.ts","sourceRoot":"","sources":["../../../src/ui/screens/podcast-listening-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,OAAO,GACP,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,uBAAuB,GACvB,gCAAgC,CAAA;AAmDnC;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAuCjF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,KAAK,GAAG,MAAM,GACjB,uBAAuB,EAAE,CAiB3B;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAG7F"}