@industry-theme/file-city-panel 0.5.76 → 0.5.78

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.
@@ -108,13 +108,24 @@ export interface TrailRequestIntroModalProps {
108
108
  */
109
109
  notedBy?: string[];
110
110
  /**
111
- * Display names of visitors who have opened the trail but have
112
- * neither signed off nor left a note. Rendered as the `VISITED BY`
113
- * avatar strip its own row, below `REVIEWED BY` and `NOTES BY`.
114
- * The panel is responsible for filtering out anyone already
115
- * present in the other two rosters before passing the list in.
111
+ * Visit roster for the `VISITED BY` row.
112
+ *
113
+ * - `verified`: display names of identified visitors rendered as
114
+ * the `VISITED BY` avatar strip below the modal. The panel is
115
+ * responsible for filtering out anyone already present in the
116
+ * other two rosters before passing the list in.
117
+ * - `anonymousCount`: aggregate count of unverified visits — no
118
+ * per-visitor identity is surfaced.
119
+ *
120
+ * The aggregate (`verified.length + anonymousCount`) is shown in
121
+ * the modal header next to the relative-time stamp (e.g.
122
+ * `3d ago · 14 visits`); the strip itself only lists verified
123
+ * visitors so anonymous identities aren't fabricated as avatars.
116
124
  */
117
- visitedBy?: string[];
125
+ visitedBy?: {
126
+ verified: string[];
127
+ anonymousCount: number;
128
+ };
118
129
  /**
119
130
  * Optional `author → markerIds[]` map. When present, avatars in
120
131
  * either strip become clickable: clicking one opens the manifest
@@ -1 +1 @@
1
- {"version":3,"file":"TrailRequestIntroModal.d.ts","sourceRoot":"","sources":["../../../../src/panels/FileCityTrailExplorerPanel/overlays/TrailRequestIntroModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAmCzD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAClE,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA0pBxE,CAAC;AA0JF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;uDAGmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8BAC0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CA6CA,CAAC"}
1
+ {"version":3,"file":"TrailRequestIntroModal.d.ts","sourceRoot":"","sources":["../../../../src/panels/FileCityTrailExplorerPanel/overlays/TrailRequestIntroModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAmCzD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAClE,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA2qBxE,CAAC;AA6JF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;uDAGmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;8BAC0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CA6CA,CAAC"}
@@ -258336,6 +258336,7 @@ const TrailRequestIntroModal = ({
258336
258336
  React.useEffect(() => {
258337
258337
  if (!showManifest) setNoteAuthorFilter(null);
258338
258338
  }, [showManifest]);
258339
+ const visitTotal = ((visitedBy == null ? void 0 : visitedBy.verified.length) ?? 0) + ((visitedBy == null ? void 0 : visitedBy.anonymousCount) ?? 0);
258339
258340
  const [selectedMode, setSelectedMode] = React.useState(
258340
258341
  defaultMode
258341
258342
  );
@@ -258533,7 +258534,18 @@ const TrailRequestIntroModal = ({
258533
258534
  " ",
258534
258535
  /* @__PURE__ */ jsx("span", { style: { color: theme2.colors.textSecondary }, children: author })
258535
258536
  ] }) : null,
258536
- dateStamp ? /* @__PURE__ */ jsx("span", { children: dateStamp }) : null
258537
+ dateStamp ? /* @__PURE__ */ jsx("span", { children: dateStamp }) : null,
258538
+ visitTotal > 0 ? /* @__PURE__ */ jsxs(
258539
+ "span",
258540
+ {
258541
+ title: visitedBy ? `${visitedBy.verified.length} verified · ${visitedBy.anonymousCount} anonymous` : void 0,
258542
+ children: [
258543
+ visitTotal,
258544
+ " ",
258545
+ visitTotal === 1 ? "visit" : "visits"
258546
+ ]
258547
+ }
258548
+ ) : null
258537
258549
  ]
258538
258550
  }
258539
258551
  )
@@ -258955,12 +258967,12 @@ ${s2.comment}` : ""}${hasNotes ? "\n(click to highlight their notes on the manif
258955
258967
  })
258956
258968
  }
258957
258969
  ) : null,
258958
- visitedBy && visitedBy.length > 0 ? /* @__PURE__ */ jsx(
258970
+ visitedBy && visitedBy.verified.length > 0 ? /* @__PURE__ */ jsx(
258959
258971
  AvatarStrip,
258960
258972
  {
258961
258973
  theme: theme2,
258962
258974
  label: "VISITED BY",
258963
- entries: visitedBy.map((name2) => ({
258975
+ entries: visitedBy.verified.map((name2) => ({
258964
258976
  key: name2,
258965
258977
  name: name2,
258966
258978
  tooltip: name2
@@ -260897,6 +260909,7 @@ const FileCityTrailSequenceLayout = ({
260897
260909
  return Array.from(noteAuthors);
260898
260910
  })(),
260899
260911
  visitedBy: (() => {
260912
+ if (!trail2.visitors) return void 0;
260900
260913
  const signers = new Set(
260901
260914
  (trail2.signOffs ?? []).map((s2) => s2.author)
260902
260915
  );
@@ -260904,16 +260917,19 @@ const FileCityTrailSequenceLayout = ({
260904
260917
  for (const n of trail2.notes ?? []) {
260905
260918
  if (n.author) noteAuthors.add(n.author);
260906
260919
  }
260907
- const visited = [];
260920
+ const verified = [];
260908
260921
  const dedupe = /* @__PURE__ */ new Set();
260909
- for (const v of trail2.visitors ?? []) {
260922
+ for (const v of trail2.visitors.named) {
260910
260923
  if (!v || v === trail2.author) continue;
260911
260924
  if (signers.has(v) || noteAuthors.has(v)) continue;
260912
260925
  if (dedupe.has(v)) continue;
260913
260926
  dedupe.add(v);
260914
- visited.push(v);
260927
+ verified.push(v);
260915
260928
  }
260916
- return visited;
260929
+ return {
260930
+ verified,
260931
+ anonymousCount: Math.max(0, trail2.visitors.anonymousCount | 0)
260932
+ };
260917
260933
  })(),
260918
260934
  notesByAuthor: (() => {
260919
260935
  const map2 = /* @__PURE__ */ new Map();