@buoy-gg/network 7.0.15 → 7.0.17

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 (107) hide show
  1. package/lib/commonjs/index.web.js +395 -0
  2. package/lib/commonjs/network/components/DataViewer.web.js +879 -0
  3. package/lib/commonjs/network/components/NetworkCopyScreen.web.js +48 -0
  4. package/lib/commonjs/network/components/NetworkCopySettingsView.web.js +1242 -0
  5. package/lib/commonjs/network/components/NetworkDetailScreen.web.js +101 -0
  6. package/lib/commonjs/network/components/NetworkDetailStepper.web.js +296 -0
  7. package/lib/commonjs/network/components/NetworkEventDetailView.web.js +1498 -0
  8. package/lib/commonjs/network/components/NetworkEventItemCompact.web.js +802 -0
  9. package/lib/commonjs/network/components/NetworkFilterScreen.web.js +55 -0
  10. package/lib/commonjs/network/components/NetworkFilterViewV3.web.js +1310 -0
  11. package/lib/commonjs/network/components/NetworkHeaderLive.web.js +604 -0
  12. package/lib/commonjs/network/components/NetworkListScreen.js +2 -1
  13. package/lib/commonjs/network/components/NetworkListScreen.web.js +607 -0
  14. package/lib/commonjs/network/components/NetworkModal.js +12 -3
  15. package/lib/commonjs/network/components/NetworkNumberPrompt.web.js +232 -0
  16. package/lib/commonjs/network/components/NetworkOverrideEditor.web.js +942 -0
  17. package/lib/commonjs/network/components/NetworkOverrideHeaderButton.web.js +133 -0
  18. package/lib/commonjs/network/components/NetworkOverridesButton.web.js +143 -0
  19. package/lib/commonjs/network/components/NetworkOverridesScreen.js +160 -126
  20. package/lib/commonjs/network/components/NetworkOverridesScreen.web.js +830 -0
  21. package/lib/commonjs/network/components/NetworkSavedScreen.web.js +459 -0
  22. package/lib/commonjs/network/components/response-editor/Explorer.web.js +1136 -0
  23. package/lib/commonjs/network/hooks/useNetworkEventList.js +12 -2
  24. package/lib/commonjs/network/overrides/applyToXhr.js +276 -15
  25. package/lib/commonjs/network/utils/generateNetworkCopyText.js +32 -5
  26. package/lib/commonjs/network/utils/networkEventStore.js +12 -4
  27. package/lib/commonjs/network/utils/networkListener.js +1 -16
  28. package/lib/module/index.web.js +81 -0
  29. package/lib/module/network/components/DataViewer.web.js +875 -0
  30. package/lib/module/network/components/NetworkCopyScreen.web.js +44 -0
  31. package/lib/module/network/components/NetworkCopySettingsView.web.js +1237 -0
  32. package/lib/module/network/components/NetworkDetailScreen.web.js +97 -0
  33. package/lib/module/network/components/NetworkDetailStepper.web.js +294 -0
  34. package/lib/module/network/components/NetworkEventDetailView.web.js +1496 -0
  35. package/lib/module/network/components/NetworkEventItemCompact.web.js +800 -0
  36. package/lib/module/network/components/NetworkFilterScreen.web.js +51 -0
  37. package/lib/module/network/components/NetworkFilterViewV3.web.js +1306 -0
  38. package/lib/module/network/components/NetworkHeaderLive.web.js +598 -0
  39. package/lib/module/network/components/NetworkListScreen.js +2 -1
  40. package/lib/module/network/components/NetworkListScreen.web.js +605 -0
  41. package/lib/module/network/components/NetworkModal.js +12 -3
  42. package/lib/module/network/components/NetworkNumberPrompt.web.js +230 -0
  43. package/lib/module/network/components/NetworkOverrideEditor.web.js +939 -0
  44. package/lib/module/network/components/NetworkOverrideHeaderButton.web.js +131 -0
  45. package/lib/module/network/components/NetworkOverridesButton.web.js +141 -0
  46. package/lib/module/network/components/NetworkOverridesScreen.js +161 -127
  47. package/lib/module/network/components/NetworkOverridesScreen.web.js +826 -0
  48. package/lib/module/network/components/NetworkSavedScreen.web.js +457 -0
  49. package/lib/module/network/components/response-editor/Explorer.web.js +1133 -0
  50. package/lib/module/network/hooks/useNetworkEventList.js +12 -2
  51. package/lib/module/network/overrides/applyToXhr.js +275 -15
  52. package/lib/module/network/utils/generateNetworkCopyText.js +28 -1
  53. package/lib/module/network/utils/networkEventStore.js +12 -4
  54. package/lib/module/network/utils/networkListener.js +1 -16
  55. package/lib/typescript/index.web.d.ts +56 -0
  56. package/lib/typescript/index.web.d.ts.map +1 -0
  57. package/lib/typescript/network/components/DataViewer.web.d.ts +78 -0
  58. package/lib/typescript/network/components/DataViewer.web.d.ts.map +1 -0
  59. package/lib/typescript/network/components/NetworkCopyScreen.web.d.ts +27 -0
  60. package/lib/typescript/network/components/NetworkCopyScreen.web.d.ts.map +1 -0
  61. package/lib/typescript/network/components/NetworkCopySettingsView.web.d.ts +68 -0
  62. package/lib/typescript/network/components/NetworkCopySettingsView.web.d.ts.map +1 -0
  63. package/lib/typescript/network/components/NetworkDetailScreen.web.d.ts +45 -0
  64. package/lib/typescript/network/components/NetworkDetailScreen.web.d.ts.map +1 -0
  65. package/lib/typescript/network/components/NetworkDetailStepper.web.d.ts +40 -0
  66. package/lib/typescript/network/components/NetworkDetailStepper.web.d.ts.map +1 -0
  67. package/lib/typescript/network/components/NetworkEventDetailView.web.d.ts +67 -0
  68. package/lib/typescript/network/components/NetworkEventDetailView.web.d.ts.map +1 -0
  69. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts +58 -0
  70. package/lib/typescript/network/components/NetworkEventItemCompact.web.d.ts.map +1 -0
  71. package/lib/typescript/network/components/NetworkFilterScreen.web.d.ts +28 -0
  72. package/lib/typescript/network/components/NetworkFilterScreen.web.d.ts.map +1 -0
  73. package/lib/typescript/network/components/NetworkFilterViewV3.web.d.ts +74 -0
  74. package/lib/typescript/network/components/NetworkFilterViewV3.web.d.ts.map +1 -0
  75. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts +112 -0
  76. package/lib/typescript/network/components/NetworkHeaderLive.web.d.ts.map +1 -0
  77. package/lib/typescript/network/components/NetworkListScreen.d.ts.map +1 -1
  78. package/lib/typescript/network/components/NetworkListScreen.web.d.ts +63 -0
  79. package/lib/typescript/network/components/NetworkListScreen.web.d.ts.map +1 -0
  80. package/lib/typescript/network/components/NetworkModal.d.ts.map +1 -1
  81. package/lib/typescript/network/components/NetworkNumberPrompt.web.d.ts +38 -0
  82. package/lib/typescript/network/components/NetworkNumberPrompt.web.d.ts.map +1 -0
  83. package/lib/typescript/network/components/NetworkOverrideEditor.web.d.ts +43 -0
  84. package/lib/typescript/network/components/NetworkOverrideEditor.web.d.ts.map +1 -0
  85. package/lib/typescript/network/components/NetworkOverrideHeaderButton.web.d.ts +32 -0
  86. package/lib/typescript/network/components/NetworkOverrideHeaderButton.web.d.ts.map +1 -0
  87. package/lib/typescript/network/components/NetworkOverridesButton.web.d.ts +26 -0
  88. package/lib/typescript/network/components/NetworkOverridesButton.web.d.ts.map +1 -0
  89. package/lib/typescript/network/components/NetworkOverridesScreen.d.ts +9 -0
  90. package/lib/typescript/network/components/NetworkOverridesScreen.d.ts.map +1 -1
  91. package/lib/typescript/network/components/NetworkOverridesScreen.web.d.ts +69 -0
  92. package/lib/typescript/network/components/NetworkOverridesScreen.web.d.ts.map +1 -0
  93. package/lib/typescript/network/components/NetworkSavedScreen.web.d.ts +67 -0
  94. package/lib/typescript/network/components/NetworkSavedScreen.web.d.ts.map +1 -0
  95. package/lib/typescript/network/components/response-editor/Explorer.web.d.ts +56 -0
  96. package/lib/typescript/network/components/response-editor/Explorer.web.d.ts.map +1 -0
  97. package/lib/typescript/network/hooks/useNetworkEventList.d.ts +10 -0
  98. package/lib/typescript/network/hooks/useNetworkEventList.d.ts.map +1 -1
  99. package/lib/typescript/network/overrides/__tests__/applyToXhr.test.d.ts.map +1 -1
  100. package/lib/typescript/network/overrides/applyToXhr.d.ts +40 -14
  101. package/lib/typescript/network/overrides/applyToXhr.d.ts.map +1 -1
  102. package/lib/typescript/network/utils/generateNetworkCopyText.d.ts +34 -1
  103. package/lib/typescript/network/utils/generateNetworkCopyText.d.ts.map +1 -1
  104. package/lib/typescript/network/utils/networkEventStore.d.ts.map +1 -1
  105. package/lib/typescript/network/utils/networkListener.d.ts +0 -1
  106. package/lib/typescript/network/utils/networkListener.d.ts.map +1 -1
  107. package/package.json +2 -2
@@ -0,0 +1,68 @@
1
+ /**
2
+ * NetworkCopySettingsView.web — DOM twin of NetworkCopySettingsView.tsx.
3
+ *
4
+ * The COPY tab's configurator: quick presets (URLs / LLM / JSON / Full /
5
+ * Custom), the Include toggles, the output-format pick, and the collapsible
6
+ * live preview with its size warnings and copy action. Same preset configs,
7
+ * preset detection, option-change routing (`group::key` ids), mock-request
8
+ * fallback, size estimation and preview/copy text generation as the native
9
+ * file — all copied verbatim.
10
+ *
11
+ * Natively the chrome is shared-ui's `DynamicFilterView`; the web shim
12
+ * doesn't ship it, so this twin renders the exact subtree DynamicFilterView
13
+ * produces FOR THIS CONFIG (no tabs, no filter-summary, no pattern sections —
14
+ * those config branches are unused here), same precedent as
15
+ * NetworkFilterViewV3.web:
16
+ * 1. Facet-card sections — Presets (icon + label), Include (label-only
17
+ * toggles), Format (icon + label); single active-card treatment
18
+ * (primary fill + 2px ring + glow).
19
+ * 2. PREVIEW section — SectionHeader (Eye icon, title, header actions =
20
+ * status label + toolbar copy button) over the recessed content box;
21
+ * collapsed by default behind the Show Preview summary (request count +
22
+ * estimated size + large-payload warnings), exactly like native.
23
+ *
24
+ * shared-ui RN chrome replicated as DOM with provenance:
25
+ * - `buoyColors` / `macOSColors` — inlined verbatim subsets from
26
+ * shared/src/ui/gameUI/constants/ (DynamicFilterView + SectionHeader use
27
+ * buoyColors; the preview widgets use macOSColors directly).
28
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
29
+ * - `ToolbarCopyButton` — the DataViewer.web `CopyButton` twin at size 14
30
+ * (the native preset is exactly `CopyButton size={14}` with default
31
+ * colors); copies via navigator.clipboard with the same 1500ms feedback.
32
+ * - `DataViewer` (JSON-format preview) — the DataViewer.web twin.
33
+ * - `formatRelativeTime` — copied verbatim from
34
+ * shared/src/utils/time/formatRelativeTime.ts.
35
+ * - Native card glow (`shadowColor` primary, opacity 0.3, radius 8) → an
36
+ * equivalent CSS box-shadow.
37
+ *
38
+ * Intentional deviations (all logged):
39
+ * - License gating isn't part of the web port: native reads
40
+ * `useFeatureGate()` and wraps the view in a `ProFeatureBanner` for free
41
+ * users; here `isPro` is a constant true, so that branch never renders and
42
+ * is not ported. Copy is likewise ungated (native's CopyButton shows a
43
+ * Pro modal via @buoy-gg/license).
44
+ * - `useTickEveryMinute` (shared TickProvider context, 5s cadence as mounted
45
+ * by NetworkModal) → the same module-level shared 5s interval hook the
46
+ * compact row twin uses.
47
+ * - Native's `previewData` memo is dead code (computed, never read) and is
48
+ * dropped here — the host tsconfig runs `noUnusedLocals`.
49
+ * - `selectable={isPro}` on the preview text → `userSelect: "text"` (isPro
50
+ * is constant-true on web).
51
+ * - `CopySettings` / `DEFAULT_COPY_SETTINGS` are re-declared against the
52
+ * platform-free type in `generateNetworkCopyText` (the native module would
53
+ * drag react-native in); the shape is byte-identical.
54
+ *
55
+ * @platform React DOM Web
56
+ */
57
+ import type { NetworkEvent } from "../types";
58
+ import type { CopySettings } from "../utils/generateNetworkCopyText";
59
+ export type { CopySettings };
60
+ /** NetworkCopySettingsView.tsx `DEFAULT_COPY_SETTINGS`, verbatim. */
61
+ export declare const DEFAULT_COPY_SETTINGS: CopySettings;
62
+ export interface NetworkCopySettingsViewProps {
63
+ settings: CopySettings;
64
+ onSettingsChange: (settings: CopySettings) => void;
65
+ events?: NetworkEvent[];
66
+ }
67
+ export declare function NetworkCopySettingsView({ settings, onSettingsChange, events, }: NetworkCopySettingsViewProps): import("react").JSX.Element;
68
+ //# sourceMappingURL=NetworkCopySettingsView.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkCopySettingsView.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkCopySettingsView.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGrE,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,EAAE,YAenC,CAAC;AAsRF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,YAAY,CAAC;IACvB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IACnD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CACzB;AAyGD,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,gBAAgB,EAChB,MAAW,GACZ,EAAE,4BAA4B,+BAomB9B"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * NetworkDetailScreen.web — DOM twin of the `NetworkDetailScreen` screen
3
+ * component inside NetworkModal.tsx (the native detail screen is private to
4
+ * the modal; web hosts compose their own shell, so the screen is exported
5
+ * here as the reusable piece).
6
+ *
7
+ * Same rule4 contract and the same two-cursor render strategy as native:
8
+ *
9
+ * - Hooks run unconditionally; the component returns null when not visible.
10
+ * - The detail chrome renders at the IMMEDIATE selection
11
+ * (`useSelectedNetworkEventId`) — every step, no delay — while the
12
+ * expensive JSON body trees wait for the settled cursor
13
+ * (`useNetworkBodyEventId`): `showBodies` is false exactly while the
14
+ * prev/next cursor is still moving, so a burst of taps renders the request
15
+ * you land on and none of the ones you flew past.
16
+ * - The ID resolves through `useLiveNetworkEvent` so a request opened while
17
+ * pending picks up its response/error in place.
18
+ * - `reportRendered` still fires after the trees commit — benchmark
19
+ * instrumentation, same gating as native.
20
+ *
21
+ * All hooks and the selection store are the platform-free modules native
22
+ * uses — REUSED, not forked. Layout: the detail body scrolls, the stepper
23
+ * stays pinned under it (the body owns its scroll — see the native comment);
24
+ * the spacer holds the footer down when the ID resolves to nothing.
25
+ *
26
+ * @platform React DOM Web
27
+ */
28
+ import type { IgnoredPattern } from "@buoy-gg/shared-ui";
29
+ import type { NetworkFilter } from "../types";
30
+ export interface NetworkDetailScreenProps {
31
+ visible: boolean;
32
+ paused: boolean;
33
+ /** Pattern VALUES the detail's Filter Options section marks as ignored. */
34
+ ignoredPatternValues: Set<string>;
35
+ onTogglePattern: (value: string) => void;
36
+ isPro: boolean;
37
+ filter: NetworkFilter;
38
+ ignoredPatterns: readonly IgnoredPattern[];
39
+ /** Detail was opened from the Saved screen — step through THAT list. */
40
+ fromSaved: boolean;
41
+ savedSearch: string;
42
+ applySafeAreaInset: boolean;
43
+ }
44
+ export declare function NetworkDetailScreen({ visible, paused, ignoredPatternValues, onTogglePattern, isPro, filter, ignoredPatterns, fromSaved, savedSearch, applySafeAreaInset, }: NetworkDetailScreenProps): import("react").JSX.Element | null;
45
+ //# sourceMappingURL=NetworkDetailScreen.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkDetailScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkDetailScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAU9C,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,eAAe,EACf,KAAK,EACL,MAAM,EACN,eAAe,EACf,SAAS,EACT,WAAW,EACX,kBAAkB,GACnB,EAAE,wBAAwB,sCA4C1B"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * NetworkDetailStepper.web — DOM twin of NetworkDetailStepper.tsx.
3
+ *
4
+ * Previous/Next footer for the request DETAIL screen. The data layer is
5
+ * REUSED, not forked — `useNetworkEventList`, `useNetworkSaved`,
6
+ * `useNetworkCursor`, `networkSelectionStore`, `splitPinned` and
7
+ * `selectSavedEvents` are all platform-free — so the navigable order is
8
+ * EXACTLY what the list screen renders (`[...pinned, ...rest]`), re-scoped in
9
+ * place by the live filter, and detail opened from the Saved screen steps
10
+ * through the saved list instead. It is its own leaf for the same reason as
11
+ * native: it is the only part of the detail screen that needs the event LIST,
12
+ * so a request arriving re-renders this footer and nothing else.
13
+ *
14
+ * shared-ui RN chrome is replicated as DOM with provenance:
15
+ * - `EventStepperFooter` — inlined DOM twin below, values from
16
+ * shared/src/ui/components/EventStepperFooter.tsx (macOSColors verbatim;
17
+ * the native -2px shadow → an equivalent CSS box-shadow).
18
+ * - `applySafeAreaInset` maps `useSafeAreaInsets().bottom` →
19
+ * `env(safe-area-inset-bottom)` (0 on desktop webviews, the real inset on
20
+ * phone webviews).
21
+ *
22
+ * @platform React DOM Web
23
+ */
24
+ import type { IgnoredPattern } from "@buoy-gg/shared-ui";
25
+ import type { NetworkFilter } from "../types";
26
+ interface NetworkDetailStepperProps {
27
+ paused: boolean;
28
+ filter: NetworkFilter;
29
+ ignoredPatterns: readonly IgnoredPattern[];
30
+ isPro: boolean;
31
+ /** Detail was opened from the Saved screen — step through THAT list. */
32
+ fromSaved: boolean;
33
+ /** The Saved screen's search box (lifted to the host root so both agree). */
34
+ savedSearch: string;
35
+ /** Only a bottom-sheet-style host sits on the home indicator (native). */
36
+ applySafeAreaInset: boolean;
37
+ }
38
+ export declare const NetworkDetailStepper: import("react").NamedExoticComponent<NetworkDetailStepperProps>;
39
+ export {};
40
+ //# sourceMappingURL=NetworkDetailStepper.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkDetailStepper.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkDetailStepper.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AA4O5D,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAMD,eAAO,MAAM,oBAAoB,iEA+D/B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NetworkEventDetailView.web — DOM twin of NetworkEventDetailView.tsx.
3
+ *
4
+ * The request DETAIL inspector: method/status/duration header row, URL
5
+ * breakdown (with collapsible query parameters), error box, timing card
6
+ * (Started + Sent/Received + the two real timing-phase bars), collapsible
7
+ * Request/Response Headers, Request/Response Body (JSON trees, response
8
+ * expanded on arrival), and the Filter Options section — same section order,
9
+ * labels, defaults and styling as native. The data layer is REUSED, not
10
+ * forked: `useNetworkBodyResolver` (plain React context), `formatGraphQLDisplay`
11
+ * and the `NetworkEvent`/`NetworkTimings` types are the same modules native
12
+ * uses; `showBodies` carries the same settle-window contract (see the native
13
+ * file's prop doc) with the same fixed-height `BodyDeferred` stand-in.
14
+ *
15
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
16
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
17
+ * - `macOSColors` — inlined verbatim subset from
18
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
19
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
20
+ * - `formatBytes` / `formatDuration` — copied verbatim from
21
+ * shared/src/utils/formatting/dataFormatting.ts (not in the web shim).
22
+ * - `formatHttpStatus` — copied verbatim from
23
+ * shared/src/utils/formatting/httpFormatting.ts; its `gameUIColors` are the
24
+ * macOS theme, so the color table below carries the same resolved values.
25
+ * - `formatRelativeTime` — copied verbatim from
26
+ * shared/src/utils/time/formatRelativeTime.ts.
27
+ * - `DataViewer` / `InlineCopyButton` — DOM twins in ./DataViewer.web.
28
+ *
29
+ * Intentional deviations (all logged):
30
+ * - License gating isn't part of the web port: the view renders the Pro path
31
+ * (`isPro = true` everywhere native branches) — copy buttons are real
32
+ * clipboard copies, never upgrade prompts — and shared-ui's `UpgradeModal`
33
+ * is therefore not mounted (`useFeatureGate` lives behind @buoy-gg/license,
34
+ * outside the web port).
35
+ * - Copy affordances use `navigator.clipboard` via the CopyButton twin; the
36
+ * full-request copy keeps native's LAZY function value so no markdown is
37
+ * built per render.
38
+ * - Relative time ("12s ago") refreshes on re-render only — native mounts a
39
+ * `TickProvider` at the modal root; the web port's live-event subscription
40
+ * re-renders an open detail on every store update, which covers it in
41
+ * practice for in-flight requests.
42
+ *
43
+ * @platform React DOM Web
44
+ */
45
+ import type { NetworkEvent } from "../types";
46
+ interface NetworkEventDetailViewProps {
47
+ event: NetworkEvent;
48
+ ignoredPatterns?: Set<string>;
49
+ onTogglePattern?: (pattern: string) => void;
50
+ /**
51
+ * Mount the request/response BODY trees. False while the prev/next cursor is
52
+ * still moving — same settle-window contract as native (the body trees are
53
+ * the only part of this view that can't keep up with a thumb).
54
+ */
55
+ showBodies?: boolean;
56
+ }
57
+ /**
58
+ * Detailed inspector for a single network event — Sentry-style layout with
59
+ * collapsible sections and quick copy affordances.
60
+ *
61
+ * MEMOIZED for the same two render paths as native: `useLiveNetworkEvent`
62
+ * replays the same event object on re-subscribe, and host-root state changes
63
+ * re-render the shell with the detail body unchanged.
64
+ */
65
+ export declare const NetworkEventDetailView: import("react").NamedExoticComponent<NetworkEventDetailViewProps>;
66
+ export {};
67
+ //# sourceMappingURL=NetworkEventDetailView.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkEventDetailView.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventDetailView.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,UAAU,CAAC;AA8S7D,UAAU,2BAA2B;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuOD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,mEA+djC,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * NetworkEventItemCompact.web — DOM twin of NetworkEventItemCompact.tsx.
3
+ *
4
+ * Same row layout, prop contract, memoization and display logic as the native
5
+ * file: method badge + size indicators on the left, 2-line URL / GraphQL
6
+ * operation display in the middle (via the SAME pure `formatGraphQLDisplay`
7
+ * util), content-type badge + chevron on the right, absolute-positioned
8
+ * status/client chips top-right and duration/relative-time bottom-right, and
9
+ * the pinned/saved/overridden glyphs.
10
+ *
11
+ * Web consumers resolve `@buoy-gg/shared-ui` to a minimal shim (storage +
12
+ * JsModal + ignored-pattern helpers only), so the RN-only chrome the native
13
+ * row imports from shared-ui is replicated here as DOM with provenance:
14
+ * - `DevToolsCard` / `MethodBadge` / `TypeBadge` — inlined DOM twins, values
15
+ * copied from shared/src/ui/components/DevToolsCard.tsx and Badge.tsx
16
+ * (buoyColors palette inlined below).
17
+ * - `macOSColors` — inlined verbatim subset from
18
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
19
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports,
20
+ * 24×24 viewBox, strokeWidth 2).
21
+ * - `formatBytes` / `formatDuration` — copied verbatim from
22
+ * shared/src/utils/formatting/dataFormatting.ts (not in the web shim).
23
+ * - `formatRelativeTime` — copied verbatim from
24
+ * shared/src/utils/time/formatRelativeTime.ts.
25
+ *
26
+ * Intentional deviations (all logged):
27
+ * - `useTickEveryMinute` (shared-ui TickProvider context, 5s interval as
28
+ * mounted by NetworkModal) is replaced by a module-level shared 5s interval
29
+ * hook — the shim exposes no `useTick`, and one shared timer keeps the
30
+ * native "one clock for all rows" behavior.
31
+ * - `onLongPress` (pin toggle) fires after a 500ms pointer hold — the native
32
+ * TouchableOpacity default `delayLongPress`. The click that follows a long
33
+ * press is swallowed, matching native semantics.
34
+ * - `activeOpacity={0.8}` press feedback is a pointer-driven opacity state.
35
+ * - `numberOfLines={2}` → `-webkit-line-clamp: 2`.
36
+ * - The duration/relative-time separator is two literal spaces natively;
37
+ * `white-space: pre` preserves them (HTML would collapse to one).
38
+ *
39
+ * @platform React DOM Web
40
+ */
41
+ import type { NetworkEvent } from "../types";
42
+ interface NetworkEventItemCompactProps {
43
+ event: NetworkEvent;
44
+ onPress: (event: NetworkEvent) => void;
45
+ /**
46
+ * Pinned/saved markers. Deliberately GLYPHS, not buttons — same rationale as
47
+ * native (render cost + tap area). Toggling happens on long-press here and
48
+ * from the detail-view header.
49
+ */
50
+ pinned?: boolean;
51
+ saved?: boolean;
52
+ onLongPress?: (event: NetworkEvent) => void;
53
+ /** Rendered in the OVERRIDDEN strip — a rule covers this row right now. */
54
+ overridden?: boolean;
55
+ }
56
+ export declare const NetworkEventItemCompact: import("react").NamedExoticComponent<NetworkEventItemCompactProps>;
57
+ export {};
58
+ //# sourceMappingURL=NetworkEventItemCompact.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkEventItemCompact.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkEventItemCompact.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8a7C,UAAU,4BAA4B;IACpC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyFD,eAAO,MAAM,uBAAuB,oEAkHnC,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * NetworkFilterScreen.web — DOM twin of the `NetworkFilterScreen` screen
3
+ * component inside NetworkModal.tsx (the native screen is private to the
4
+ * modal; web hosts compose their own shell, so the screen is exported here as
5
+ * the reusable piece — same precedent as NetworkDetailScreen.web).
6
+ *
7
+ * Same rule4 contract as native: hooks run unconditionally and the component
8
+ * returns null when not visible; the subscription passes `paused || !visible`
9
+ * so a hidden screen doesn't subscribe. Facet counts read the SAME filtered
10
+ * list the user is looking at (`useNetworkEventList` — the platform-free hook
11
+ * native uses, reused, not forked).
12
+ *
13
+ * @platform React DOM Web
14
+ */
15
+ import type { IgnoredPattern, NetworkFilter } from "../types";
16
+ export interface NetworkFilterScreenProps {
17
+ visible: boolean;
18
+ paused: boolean;
19
+ isPro: boolean;
20
+ filter: NetworkFilter;
21
+ onFilterChange: (filter: NetworkFilter) => void;
22
+ ignoredPatterns: IgnoredPattern[];
23
+ onRemovePattern: (pattern: string) => void;
24
+ onAddPattern: (pattern: IgnoredPattern) => void;
25
+ onTogglePatternMode: (pattern: string) => void;
26
+ }
27
+ export declare function NetworkFilterScreen({ visible, paused, isPro, filter, onFilterChange, ignoredPatterns, onRemovePattern, onAddPattern, onTogglePatternMode, }: NetworkFilterScreenProps): import("react").JSX.Element | null;
28
+ //# sourceMappingURL=NetworkFilterScreen.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkFilterScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkFilterScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,GACpB,EAAE,wBAAwB,sCAoB1B"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * NetworkFilterViewV3.web — DOM twin of NetworkFilterViewV3.tsx.
3
+ *
4
+ * Same props, same filter semantics, same screen inventory. Natively the
5
+ * screen is a thin config over shared-ui's `DynamicFilterView`; the web shim
6
+ * doesn't ship that component, so this twin renders the exact subtree
7
+ * DynamicFilterView produces FOR THIS CONFIG (no tabs, no filter-summary, no
8
+ * include-only, no preview — those config branches are disabled natively and
9
+ * are not ported):
10
+ *
11
+ * 1. Facet card sections — Status (All/Success/Error/Pending, icon + count),
12
+ * Method (colored method badge + count, no label — native's
13
+ * `showLabel = type !== "method"`), Content Type (icon + count + label).
14
+ * Same single-select method/content-type replace behavior
15
+ * (`handleDynamicFilterChange` is native's handler, verbatim).
16
+ * 2. ACTIVE FILTERS — add-pattern button → input (with the Match:
17
+ * Contains/Exact mode toggle rendered above it, native `renderExtra`),
18
+ * and the pattern list where each row removes on click and carries the
19
+ * CONTAINS/EXACT mode badge (native `renderPatternMeta`) that toggles the
20
+ * pattern's match mode.
21
+ * 3. AVAILABLE DOMAINS & URLS — host + origin+pathname suggestions from the
22
+ * visible events (30 per group), click-to-add with the currently selected
23
+ * mode; suggestions already covered by an active pattern are hidden
24
+ * (native's `item.includes(pattern)` filter).
25
+ * 4. HOW NETWORK FILTERS WORK — description + examples.
26
+ *
27
+ * shared-ui RN chrome replicated as DOM with provenance:
28
+ * - `buoyColors` — inlined verbatim subset from
29
+ * shared/src/ui/gameUI/constants/gameUIColors.ts (DynamicFilterView /
30
+ * SectionHeader / FilterComponents palette).
31
+ * - `macOSColors` — inlined verbatim subset from
32
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts (the mode
33
+ * toggle/badge palette the native screen uses directly).
34
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
35
+ * - Native card glow (`shadowColor` primary, opacity 0.3, radius 8) → an
36
+ * equivalent CSS box-shadow; native text shadows → CSS text-shadow.
37
+ *
38
+ * Intentional deviations (all logged):
39
+ * - Pattern rows nest a pressable mode badge inside a pressable row; RN's
40
+ * inner Touchable swallows the press, DOM needs `stopPropagation()` on the
41
+ * badge so toggling a mode doesn't also remove the pattern.
42
+ * - Native's `adjustsFontSizeToFit` on the method badge has no DOM
43
+ * equivalent — long method names ellipsize at the same max width instead.
44
+ * - The add-pattern input autofocuses via the `autoFocus` attribute rather
45
+ * than RN's imperative focus.
46
+ *
47
+ * @platform React DOM Web
48
+ */
49
+ import type { IgnoredPattern, NetworkEvent } from "../types";
50
+ interface NetworkFilter {
51
+ status?: "all" | "success" | "error" | "pending";
52
+ method?: string[];
53
+ contentType?: string[];
54
+ searchText?: string;
55
+ }
56
+ export interface NetworkFilterViewV3Props {
57
+ events: NetworkEvent[];
58
+ filter: NetworkFilter;
59
+ onFilterChange: (filter: NetworkFilter) => void;
60
+ ignoredPatterns?: IgnoredPattern[];
61
+ /** Remove a pattern by its value. */
62
+ onRemovePattern?: (pattern: string) => void;
63
+ /** Add a new pattern with the user-selected mode. */
64
+ onAddPattern?: (pattern: IgnoredPattern) => void;
65
+ /** Flip a pattern's mode between `contains` and `exact`. */
66
+ onTogglePatternMode?: (pattern: string) => void;
67
+ }
68
+ /**
69
+ * Control panel for filtering captured network events by status, method, and
70
+ * content type, plus ignored-pattern management — same surface as native.
71
+ */
72
+ export declare function NetworkFilterViewV3({ events, filter, onFilterChange, ignoredPatterns, onRemovePattern, onAddPattern, onTogglePatternMode, }: NetworkFilterViewV3Props): import("react").JSX.Element;
73
+ export {};
74
+ //# sourceMappingURL=NetworkFilterViewV3.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkFilterViewV3.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkFilterViewV3.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAIH,OAAO,KAAK,EACV,cAAc,EAEd,YAAY,EACb,MAAM,UAAU,CAAC;AAoKlB,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AA6LD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,cAAc,EACd,eAAoB,EACpB,eAA0B,EAC1B,YAAuB,EACvB,mBAA8B,GAC/B,EAAE,wBAAwB,+BAwhB1B"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * NetworkHeaderLive.web — DOM twin of NetworkHeaderLive.tsx.
3
+ *
4
+ * The header pieces that consume LIVE event data, each its own narrow store
5
+ * subscriber (same decomposition + hooks as native — `useNetworkBadgeCounts`,
6
+ * `useNetworkHasEvents`, `useNetworkSaved` are platform-free and reused, not
7
+ * forked):
8
+ *
9
+ * - `NetworkHeaderBadges` — success/error/pending count chips (tap toggles
10
+ * the status filter)
11
+ * - `NetworkClearButton` — trash button, enabled while the store has events
12
+ * - `NetworkSavedButton` — Saved-screen entry point with its live count
13
+ * - `NetworkDetailPinActions` — pin + save toggles for the request-DETAIL
14
+ * header (ported with the F3 detail-view feature; same flagsForEventId /
15
+ * cap logic and press-time event resolution as native)
16
+ * - `NetworkHeaderCopyButton` — copy-all button / labelled ⋯-menu row
17
+ * (ported with the F5 saved+copy feature; the copy text is the SAME
18
+ * platform-free `generateNetworkCopyText`, resolved lazily at press time
19
+ * from a live store read, exactly like native)
20
+ *
21
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
22
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
23
+ * - `macOSColors` — inlined verbatim subset from
24
+ * shared/src/ui/gameUI/constants/macOSDesignSystemColors.ts.
25
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
26
+ * - The active chip's native shadow (shadowOffset 0/1, opacity 0.08,
27
+ * radius 2) → an equivalent CSS box-shadow.
28
+ * - shared-ui `CopyButton` (the Pro branch of the copy button) — inlined
29
+ * labelled DOM twin below: same idle/success/error icon set, 1500ms
30
+ * feedback, lazy function value, and label-follows-labelStyle behavior.
31
+ *
32
+ * Intentional deviations (all logged):
33
+ * - shared-ui CopyButton's ClipboardHintBanner and internal
34
+ * @buoy-gg/license Pro modal are not ported — license gating isn't part
35
+ * of the web port; the explicit `isPro` prop branch (native's own outer
36
+ * gate) still routes free users to `onUpgradePress`.
37
+ * - `CopySettings` is imported from the platform-free
38
+ * `generateNetworkCopyText` module (the native file imports it from
39
+ * NetworkCopySettingsView.tsx, which would drag react-native in).
40
+ *
41
+ * @platform React DOM Web
42
+ */
43
+ import type { IgnoredPattern } from "@buoy-gg/shared-ui";
44
+ import type { NetworkFilter } from "../types";
45
+ import { type CopySettings } from "../utils/generateNetworkCopyText";
46
+ type StatusFilter = "success" | "error" | "pending";
47
+ interface NetworkHeaderBadgesProps {
48
+ activeStatus: NetworkFilter["status"];
49
+ onToggleStatus: (status: StatusFilter) => void;
50
+ ignoredPatterns: readonly IgnoredPattern[];
51
+ paused: boolean;
52
+ }
53
+ /** Success / error / pending chips — tap to toggle the status filter. */
54
+ export declare function NetworkHeaderBadges({ activeStatus, onToggleStatus, ignoredPatterns, paused, }: NetworkHeaderBadgesProps): import("react").JSX.Element;
55
+ interface NetworkClearButtonProps {
56
+ paused: boolean;
57
+ }
58
+ /** Trash button — handler co-located; enabled while the store has events.
59
+ * Subscribes to a flip-guarded boolean, so it renders when the store goes
60
+ * empty↔non-empty, not on every count change. */
61
+ export declare function NetworkClearButton({ paused }: NetworkClearButtonProps): import("react").JSX.Element;
62
+ interface NetworkSavedButtonProps {
63
+ onPress: () => void;
64
+ }
65
+ /**
66
+ * Entry point to the Saved screen, with its count. A self-subscribing leaf so
67
+ * the badge tracks the store without the modal header re-rendering.
68
+ */
69
+ export declare function NetworkSavedButton({ onPress }: NetworkSavedButtonProps): import("react").JSX.Element;
70
+ interface NetworkDetailPinActionsProps {
71
+ isPro: boolean;
72
+ onUpgradePress: () => void;
73
+ }
74
+ /**
75
+ * Pin + Save toggles for the request-detail header — same self-subscribing
76
+ * leaf as native, for the same two reasons: the host root stays free of
77
+ * subscriptions, and these buttons deliberately do NOT live inside
78
+ * `NetworkEventDetailView` (the Events tool renders that same detail view
79
+ * with no saved store behind it).
80
+ *
81
+ * The event object is resolved at PRESS time (live store first, then the
82
+ * saved snapshot), and the selected id is SUBSCRIBED here rather than passed
83
+ * down, so stepping through requests doesn't rebuild the host header.
84
+ */
85
+ export declare function NetworkDetailPinActions({ isPro, onUpgradePress, }: NetworkDetailPinActionsProps): import("react").JSX.Element;
86
+ interface NetworkHeaderCopyButtonProps {
87
+ isPro: boolean;
88
+ filter: NetworkFilter;
89
+ ignoredPatterns: readonly IgnoredPattern[];
90
+ copySettings: CopySettings;
91
+ paused: boolean;
92
+ onUpgradePress: () => void;
93
+ /**
94
+ * Render as a labelled row instead of a bare glyph, for the header's
95
+ * overflow menu. The behaviour is identical — this button owns the lazy copy
96
+ * value, the Pro gate and the copied/failed feedback, and a menu row that
97
+ * reimplemented them would be a second copy path to keep in step.
98
+ */
99
+ label?: string;
100
+ }
101
+ /**
102
+ * Copy-all-requests button. Subscribes to a flip-guarded boolean (its
103
+ * enabled state); the copy text is generated at PRESS time from a live
104
+ * store read, so there's no per-event work and no stale closure.
105
+ *
106
+ * The Pro branch inlines shared-ui CopyButton's copy/feedback loop (same
107
+ * icon set, 1500ms feedback, label keeps its own color while the icon
108
+ * follows the state — native's `labelStyle` wins over the state color).
109
+ */
110
+ export declare function NetworkHeaderCopyButton({ isPro, filter, ignoredPatterns, copySettings, paused, onUpgradePress, label, }: NetworkHeaderCopyButtonProps): import("react").JSX.Element;
111
+ export {};
112
+ //# sourceMappingURL=NetworkHeaderLive.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkHeaderLive.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkHeaderLive.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgB9C,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,kCAAkC,CAAC;AAwH1C,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD,UAAU,wBAAwB;IAChC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,EAClC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,+BA+D1B;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;iDAEiD;AACjD,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,uBAAuB,+BAoBrE;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,+BAwBtE;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,cAAc,GACf,EAAE,4BAA4B,+BAqF9B;AAED,UAAU,4BAA4B;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,eAAe,EACf,YAAY,EACZ,MAAM,EACN,cAAc,EACd,KAAK,GACN,EAAE,4BAA4B,+BAmG9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkListScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0J5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCAuJxB"}
1
+ {"version":3,"file":"NetworkListScreen.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0J5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCAwJxB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * NetworkListScreen.web — DOM twin of NetworkListScreen.tsx.
3
+ *
4
+ * The network tool's LIST screen: owns the event-store subscription, the
5
+ * scrolling list, the OVERRIDDEN and PINNED strips, empty state, disabled
6
+ * banner, and the free-tier locked-history footer. Identical prop contract,
7
+ * hook usage and derivation order as the native file — the data layer is
8
+ * REUSED, not forked (`useNetworkEventList`, `useNetworkSaved`,
9
+ * `useOverrideRules`, `ruleMatches`, `splitPinned` are all platform-free).
10
+ *
11
+ * Stable-tree contract (rule4): hooks run unconditionally, then the
12
+ * component returns null when not visible. The subscription is gated with
13
+ * `paused || !visible` so a hidden list doesn't subscribe at all.
14
+ *
15
+ * shared-ui RN chrome is replicated as DOM with provenance (web consumers
16
+ * resolve `@buoy-gg/shared-ui` to a minimal shim):
17
+ * - `macOSColors` / `buoyColors` — inlined verbatim subsets from
18
+ * shared/src/ui/gameUI/constants/.
19
+ * - Icons — inline lucide SVGs (shared-ui's icons are lucide re-exports).
20
+ * - `NetworkUpgradeBanner` (which itself leans on shared-ui `ProBadge` +
21
+ * `Zap`) — inlined DOM twin below, values from
22
+ * NetworkUpgradeBanner.tsx + license/FeatureGate.tsx `proBadge` styles.
23
+ *
24
+ * Intentional deviations (all logged):
25
+ * - FlatList virtualization → a plain scrolled div. The store caps at 500
26
+ * events and web rows are cheap DOM; the window/batch tuning the native
27
+ * list carries is a FlatList-only concern.
28
+ * (`extraData={savedLiveIds}` is likewise moot — plain `map` has no
29
+ * PureComponent bail-out to bust.)
30
+ * - The upgrade banner's `ProBadge` renders the static gold "PRO" — the
31
+ * Weekend Pass variant reads `useProAccess` from @buoy-gg/license, which
32
+ * is not part of the web port.
33
+ * - `onEventPress` opens the detail view (ported in F3 as
34
+ * NetworkEventDetailView.web / NetworkDetailScreen.web) — callers wire the
35
+ * prop to `networkSelectionStore.select`, the screen just calls it
36
+ * (native behavior; nothing stubbed here).
37
+ * - Native's row tap opens the detail view and long-press toggles the pin;
38
+ * both are wired identically here (long-press = 500ms pointer hold, see
39
+ * NetworkEventItemCompact.web).
40
+ *
41
+ * F4 integration point: `ignoredPatterns` is a prop (same as native). The
42
+ * native root feeds it from shared-ui's persisted `useIgnoredPatterns` store,
43
+ * which the web shim does not expose — web hosts pass `[]` until the filter
44
+ * feature lands.
45
+ *
46
+ * @platform React DOM Web
47
+ */
48
+ import type { IgnoredPattern } from "@buoy-gg/shared-ui";
49
+ import type { NetworkEvent, NetworkFilter } from "../types";
50
+ interface NetworkListScreenProps {
51
+ visible: boolean;
52
+ paused: boolean;
53
+ filter: NetworkFilter;
54
+ ignoredPatterns: readonly IgnoredPattern[];
55
+ isPro: boolean;
56
+ searchText: string;
57
+ /** Row tap — the root's setSelectedEvent (inherently stable setter). */
58
+ onEventPress: (event: NetworkEvent) => void;
59
+ onUpgradePress: () => void;
60
+ }
61
+ export declare function NetworkListScreen({ visible, paused, filter, ignoredPatterns, isPro, searchText, onEventPress, onUpgradePress, }: NetworkListScreenProps): import("react").JSX.Element | null;
62
+ export {};
63
+ //# sourceMappingURL=NetworkListScreen.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkListScreen.web.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkListScreen.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwQ5D,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,MAAM,EACN,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,cAAc,GACf,EAAE,sBAAsB,sCA8HxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkModal.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkModal.tsx"],"names":[],"mappings":"AAqEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAg1BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD;AAED,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,oBAAyB,+BAa/D"}
1
+ {"version":3,"file":"NetworkModal.d.ts","sourceRoot":"","sources":["../../../../src/network/components/NetworkModal.tsx"],"names":[],"mappings":"AAqEA,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAy1BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAMpD;AAED,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,GAAE,oBAAyB,+BAa/D"}