@activecollab/components 2.0.349 → 2.0.350

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.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WebhookLogsDialog = exports.WEBHOOK_CONNECTIONS = void 0;
6
+ exports.WebhookLogsDialog = exports.WEBHOOK_REPOSITORIES = exports.WEBHOOK_CONNECTIONS = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
9
  var _Button = require("../../components/Button");
@@ -15,6 +15,11 @@ var _Icons = require("../../components/Icons");
15
15
  var _Typography = require("../../components/Typography");
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
22
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18
23
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
19
24
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
25
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -71,6 +76,46 @@ var WEBHOOK_CONNECTIONS = exports.WEBHOOK_CONNECTIONS = [{
71
76
  name: "Acme Community",
72
77
  service: "gitlab"
73
78
  }];
79
+
80
+ /**
81
+ * Repositories that belong to the connections above. A webhook delivery is
82
+ * always scoped to one repository, and a repository belongs to exactly one
83
+ * connection — so the Repository filter can be narrowed to the connection(s)
84
+ * currently selected in the Connection filter.
85
+ */
86
+ var WEBHOOK_REPOSITORIES = exports.WEBHOOK_REPOSITORIES = [{
87
+ id: "ac-feather",
88
+ path: "activecollab/feather",
89
+ connectionId: "gh-activecollab"
90
+ }, {
91
+ id: "ac-backend",
92
+ path: "activecollab/backend",
93
+ connectionId: "gh-activecollab"
94
+ }, {
95
+ id: "ab-animus",
96
+ path: "abstergo/animus",
97
+ connectionId: "gh-abstergo"
98
+ }, {
99
+ id: "bi-tool-time",
100
+ path: "binford/tool-time",
101
+ connectionId: "gh-binford"
102
+ }, {
103
+ id: "pl-gateway",
104
+ path: "platform/api-gateway",
105
+ connectionId: "gl-platform"
106
+ }, {
107
+ id: "co-handbook",
108
+ path: "content/handbook",
109
+ connectionId: "gl-content"
110
+ }, {
111
+ id: "co-marketing",
112
+ path: "content/marketing-site",
113
+ connectionId: "gl-content"
114
+ }, {
115
+ id: "acme-ce",
116
+ path: "acme/community-edition",
117
+ connectionId: "gl-acme-ce"
118
+ }];
74
119
  var EVENT_KIND_LABELS = {
75
120
  issue: "Issue",
76
121
  push: "Push",
@@ -220,6 +265,7 @@ var PAYLOAD_PUSH = JSON.stringify({
220
265
  var WEBHOOK_LOGS = [{
221
266
  id: "log-7",
222
267
  connectionId: "gh-activecollab",
268
+ repositoryId: "ac-feather",
223
269
  eventKind: "issue",
224
270
  status: "processed",
225
271
  deliveryIdentifier: "d3b07384-d9a0-4c9b-8f1e-2a6f1b9c4e21",
@@ -230,6 +276,7 @@ var WEBHOOK_LOGS = [{
230
276
  }, {
231
277
  id: "log-6",
232
278
  connectionId: "gl-content",
279
+ repositoryId: "co-handbook",
233
280
  eventKind: "merge_request",
234
281
  status: "skipped",
235
282
  deliveryIdentifier: "b1946ac9-2f3a-4c0d-9b7e-1d2c3e4f5a6b",
@@ -240,6 +287,7 @@ var WEBHOOK_LOGS = [{
240
287
  }, {
241
288
  id: "log-5",
242
289
  connectionId: "gh-activecollab",
290
+ repositoryId: "ac-backend",
243
291
  eventKind: "issue",
244
292
  status: "failed",
245
293
  deliveryIdentifier: "9c1185a5-c5e9-4e3f-8a1b-7d6e5f4c3b2a",
@@ -250,6 +298,7 @@ var WEBHOOK_LOGS = [{
250
298
  }, {
251
299
  id: "log-4",
252
300
  connectionId: "gl-content",
301
+ repositoryId: "co-handbook",
253
302
  eventKind: "push",
254
303
  status: "processed",
255
304
  deliveryIdentifier: "f7c3bc1d-8c5a-4b2e-9f0a-1b2c3d4e5f60",
@@ -260,6 +309,7 @@ var WEBHOOK_LOGS = [{
260
309
  }, {
261
310
  id: "log-3",
262
311
  connectionId: "gh-activecollab",
312
+ repositoryId: "ac-feather",
263
313
  eventKind: "ping",
264
314
  status: "unhandled",
265
315
  deliveryIdentifier: "1574bddb-75c3-4b1e-8a9c-0d1e2f3a4b5c",
@@ -273,6 +323,7 @@ var WEBHOOK_LOGS = [{
273
323
  }, {
274
324
  id: "log-2",
275
325
  connectionId: "gl-content",
326
+ repositoryId: "co-marketing",
276
327
  eventKind: "issue",
277
328
  status: "received",
278
329
  deliveryIdentifier: "0716d970-2b9e-4a1d-9c3f-5e6a7b8c9d01",
@@ -282,6 +333,7 @@ var WEBHOOK_LOGS = [{
282
333
  }, {
283
334
  id: "log-1",
284
335
  connectionId: "gh-activecollab",
336
+ repositoryId: "ac-feather",
285
337
  eventKind: "issue",
286
338
  status: "processed",
287
339
  deliveryIdentifier: "fa3ebd6742c360b2d9652b7f78d9bd7d",
@@ -292,6 +344,7 @@ var WEBHOOK_LOGS = [{
292
344
  }, {
293
345
  id: "log-1-replay",
294
346
  connectionId: "gh-activecollab",
347
+ repositoryId: "ac-feather",
295
348
  eventKind: "issue",
296
349
  status: "duplicate",
297
350
  deliveryIdentifier: "fa3ebd6742c360b2d9652b7f78d9bd7d",
@@ -461,19 +514,19 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
461
514
  var open = _ref5.open,
462
515
  onClose = _ref5.onClose,
463
516
  initialConnectionId = _ref5.initialConnectionId,
464
- connectionIds = _ref5.connectionIds;
517
+ connectionIds = _ref5.connectionIds,
518
+ repositoryIds = _ref5.repositoryIds;
465
519
  var _useState5 = (0, _react.useState)(function () {
520
+ var initial = {};
466
521
  if (connectionIds && connectionIds.length > 0) {
467
- return {
468
- connection: connectionIds
469
- };
522
+ initial.connection = connectionIds;
523
+ } else if (initialConnectionId) {
524
+ initial.connection = [initialConnectionId];
470
525
  }
471
- if (initialConnectionId) {
472
- return {
473
- connection: [initialConnectionId]
474
- };
526
+ if (repositoryIds && repositoryIds.length > 0) {
527
+ initial.repository = repositoryIds;
475
528
  }
476
- return {};
529
+ return initial;
477
530
  }),
478
531
  _useState6 = _slicedToArray(_useState5, 2),
479
532
  filters = _useState6[0],
@@ -486,6 +539,23 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
486
539
  return map;
487
540
  }, []);
488
541
  var filterData = (0, _react.useMemo)(function () {
542
+ var _filters$connection;
543
+ // The Repository options narrow to the connection(s) currently selected in
544
+ // the Connection filter; with no connection selected, every repository is
545
+ // offered. Displayed as "path (connection name)" (matching the project
546
+ // "..." menu Repositories list) and sorted by repository path.
547
+ var selectedConnections = (_filters$connection = filters.connection) !== null && _filters$connection !== void 0 ? _filters$connection : [];
548
+ var repositorySubmenu = WEBHOOK_REPOSITORIES.filter(function (repository) {
549
+ return selectedConnections.length === 0 || selectedConnections.includes(repository.connectionId);
550
+ }).slice().sort(function (a, b) {
551
+ return a.path.localeCompare(b.path);
552
+ }).map(function (repository) {
553
+ var _connectionsById$repo, _connectionsById$repo2;
554
+ return {
555
+ id: repository.id,
556
+ name: "".concat(repository.path, " (").concat((_connectionsById$repo = (_connectionsById$repo2 = connectionsById[repository.connectionId]) === null || _connectionsById$repo2 === void 0 ? void 0 : _connectionsById$repo2.name) !== null && _connectionsById$repo !== void 0 ? _connectionsById$repo : "Unknown", ")")
557
+ };
558
+ });
489
559
  return [{
490
560
  id: "connection",
491
561
  title: "Connection",
@@ -495,6 +565,12 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
495
565
  name: connection.name
496
566
  };
497
567
  })
568
+ }, {
569
+ id: "repository",
570
+ title: "Repository",
571
+ searchPlaceholder: "Search repositories",
572
+ disableInternalSort: true,
573
+ submenu: repositorySubmenu
498
574
  }, {
499
575
  id: "event_type",
500
576
  title: "Event Type",
@@ -516,16 +592,20 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
516
592
  };
517
593
  })
518
594
  }];
519
- }, []);
595
+ }, [filters.connection, connectionsById]);
520
596
  var visibleLogs = (0, _react.useMemo)(function () {
521
- var _filters$connection, _filters$event_type, _filters$status;
522
- var byConnection = (_filters$connection = filters.connection) !== null && _filters$connection !== void 0 ? _filters$connection : [];
597
+ var _filters$connection2, _filters$repository, _filters$event_type, _filters$status;
598
+ var byConnection = (_filters$connection2 = filters.connection) !== null && _filters$connection2 !== void 0 ? _filters$connection2 : [];
599
+ var byRepository = (_filters$repository = filters.repository) !== null && _filters$repository !== void 0 ? _filters$repository : [];
523
600
  var byEvent = (_filters$event_type = filters.event_type) !== null && _filters$event_type !== void 0 ? _filters$event_type : [];
524
601
  var byStatus = (_filters$status = filters.status) !== null && _filters$status !== void 0 ? _filters$status : [];
525
602
  return WEBHOOK_LOGS.filter(function (log) {
526
603
  if (byConnection.length && !byConnection.includes(log.connectionId)) {
527
604
  return false;
528
605
  }
606
+ if (byRepository.length && !byRepository.includes(log.repositoryId)) {
607
+ return false;
608
+ }
529
609
  if (byEvent.length && !byEvent.includes(log.eventKind)) {
530
610
  return false;
531
611
  }
@@ -537,6 +617,36 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
537
617
  return b.receivedAt - a.receivedAt;
538
618
  });
539
619
  }, [filters]);
620
+
621
+ // When the Connection filter narrows, drop any selected repositories that no
622
+ // longer belong to a selected connection — otherwise a stale repository
623
+ // selection would silently filter every log out.
624
+ var handleFiltersChange = (0, _react.useCallback)(function (next) {
625
+ var _next$connection, _next$repository;
626
+ var selectedConnections = (_next$connection = next.connection) !== null && _next$connection !== void 0 ? _next$connection : [];
627
+ var selectedRepositories = (_next$repository = next.repository) !== null && _next$repository !== void 0 ? _next$repository : [];
628
+ if (selectedConnections.length && selectedRepositories.length) {
629
+ var allowedRepositoryIds = new Set(WEBHOOK_REPOSITORIES.filter(function (repository) {
630
+ return selectedConnections.includes(repository.connectionId);
631
+ }).map(function (repository) {
632
+ return repository.id;
633
+ }));
634
+ var prunedRepositories = selectedRepositories.filter(function (id) {
635
+ return allowedRepositoryIds.has(id);
636
+ });
637
+ if (prunedRepositories.length !== selectedRepositories.length) {
638
+ var updated = _objectSpread({}, next);
639
+ if (prunedRepositories.length) {
640
+ updated.repository = prunedRepositories;
641
+ } else {
642
+ delete updated.repository;
643
+ }
644
+ setFilters(updated);
645
+ return;
646
+ }
647
+ }
648
+ setFilters(next);
649
+ }, []);
540
650
  return /*#__PURE__*/_react.default.createElement(WebhookLogsDialogStyled, {
541
651
  open: open,
542
652
  onClose: onClose,
@@ -552,7 +662,7 @@ var WebhookLogsDialog = exports.WebhookLogsDialog = function WebhookLogsDialog(_
552
662
  clearAllText: "Clear All",
553
663
  noResultText: "No results",
554
664
  emptyFilterText: "No filters to show",
555
- onChange: setFilters
665
+ onChange: handleFiltersChange
556
666
  }), /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
557
667
  variant: "text gray",
558
668
  onClick: onClose
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookLogsDialog.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Chip","_Dialog","_Filter","_IconButton","_Icons","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","u","next","done","push","value","return","isArray","WEBHOOK_CONNECTIONS","exports","id","service","EVENT_KIND_LABELS","issue","merge_request","repository","ping","STATUS_LABELS","received","unhandled","skipped","processed","failed","duplicate","STATUS_COLORS","bg","fg","connectionIcon","GitHubIcon","GitLabIcon","GitIcon","StatusChip","_ref","status","_STATUS_COLORS$status","createElement","Chip","label","backgroundColor","color","typographyProps","variant","weight","style","borderRadius","PAYLOAD_ISSUE_OPENED","JSON","stringify","action","number","title","state","html_url","labels","user","login","full_name","private","sender","PAYLOAD_MERGE_REQUEST","object_kind","event_type","username","project","path_with_namespace","object_attributes","iid","source_branch","target_branch","PAYLOAD_PUSH","ref","before","after","commits","message","author","email","WEBHOOK_LOGS","connectionId","eventKind","deliveryIdentifier","outcomes","payload","receivedOn","receivedAt","zen","hook_id","escapeHtml","replace","highlightJson","json","match","cls","concat","PAYLOAD_COLLAPSED_LINES","PayloadPre","styled","pre","withConfig","displayName","componentId","_ref2","$collapsed","PayloadWrap","div","PayloadBlock","_ref3","_useState","useState","_useState2","collapsed","setCollapsed","lineCount","useMemo","split","html","canToggle","className","Button","size","onClick","dangerouslySetInnerHTML","__html","LogRowWrap","LogRow","_ref4","_connection$name","log","connection","_useState3","_useState4","open","setOpen","ConnIcon","type","CollapseExpandSingleIcon","Body2","Caption1","map","outcome","index","key","WebhookLogsDialogStyled","Dialog","DialogTitleBar","LogListHeader","EmptyLogs","WebhookLogsDialog","_ref5","onClose","initialConnectionId","connectionIds","_useState5","_useState6","filters","setFilters","connectionsById","forEach","filterData","submenu","Set","keys","visibleLogs","_filters$connection","_filters$event_type","_filters$status","byConnection","byEvent","byStatus","filter","includes","sort","b","enableBackgroundClick","Title","disableDefaultHeading","Header3","Filter","data","selected","clearAllText","noResultText","emptyFilterText","onChange","IconButton","CancelCrossIcon","ContentDivider","Content","Fragment","Caption2"],"sources":["../../../../src/presentation/shared/WebhookLogsDialog.tsx"],"sourcesContent":["import React, { ElementType, ReactElement, useMemo, useState } from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Chip } from \"../../components/Chip\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { Filter, SelectedType } from \"../../components/Filter\";\nimport { IconButton } from \"../../components/IconButton\";\nimport {\n CancelCrossIcon,\n CollapseExpandSingleIcon,\n GitHubIcon,\n GitIcon,\n GitLabIcon,\n} from \"../../components/Icons\";\nimport {\n Body2,\n Caption1,\n Caption2,\n Header3,\n} from \"../../components/Typography\";\n\n/**\n * \"Webhook Logs\" — the VCS webhook delivery log, shown as a wide dialog with a\n * filterable, expandable list. Extracted into `shared/` so it can be opened\n * from more than one surface (the Apps & Integrations Repositories page and the\n * project \"...\" menu on the Project Repos story).\n *\n * Mirrors the app's webhook log model:\n * `vcs_webhook_logs` → connection_id, event_type, processing_status\n * (received / unhandled / skipped / processed /\n * failed / duplicate), delivery_identifier, payload,\n * created_on\n * `vcs_webhook_outcomes` → one row per outcome, each with a localized summary\n *\n * The status is derived from the outcomes server-side; here we render the\n * stored value and map it to a palette colour. The connection glyph is the\n * provider icon (GitHub / GitLab, Git for anything else).\n */\n\ntype WebhookStatus =\n | \"received\"\n | \"unhandled\"\n | \"skipped\"\n | \"processed\"\n | \"failed\"\n | \"duplicate\";\n\nexport interface WebhookConnection {\n id: string;\n name: string;\n service: \"github\" | \"gitlab\";\n}\n\n/**\n * Normalized event kind. The processor layer maps each provider's raw event\n * header (GitHub `issues`, GitLab `Issue Hook`, …) onto one provider-agnostic\n * kind, so the same logical event reads — and filters — identically across\n * connections instead of appearing once per provider.\n */\ntype WebhookEventKind =\n | \"issue\"\n | \"push\"\n | \"merge_request\"\n | \"repository\"\n | \"ping\";\n\nexport interface WebhookLog {\n id: string;\n connectionId: string;\n eventKind: WebhookEventKind;\n status: WebhookStatus;\n /** X-GitHub-Delivery GUID / X-Gitlab-Event-UUID. */\n deliveryIdentifier: string;\n /** Localized outcome summaries; empty when we never reached that stage. */\n outcomes: string[];\n /** Pretty-printed JSON payload; absent when no JSON body was logged. */\n payload?: string;\n /** Display timestamp. */\n receivedOn: string;\n /** Sort key — newest logs render at the top. */\n receivedAt: number;\n}\n\nexport const WEBHOOK_CONNECTIONS: WebhookConnection[] = [\n { id: \"gh-activecollab\", name: \"ActiveCollab\", service: \"github\" },\n { id: \"gh-abstergo\", name: \"Abstergo Ltd.\", service: \"github\" },\n { id: \"gh-binford\", name: \"Binford & Co.\", service: \"github\" },\n { id: \"gl-platform\", name: \"Platform\", service: \"gitlab\" },\n { id: \"gl-content\", name: \"Content\", service: \"gitlab\" },\n { id: \"gl-acme-ce\", name: \"Acme Community\", service: \"gitlab\" },\n];\n\nconst EVENT_KIND_LABELS: Record<WebhookEventKind, string> = {\n issue: \"Issue\",\n push: \"Push\",\n merge_request: \"Merge request\",\n repository: \"Repository\",\n ping: \"Ping\",\n};\n\nconst STATUS_LABELS: Record<WebhookStatus, string> = {\n received: \"Received\",\n unhandled: \"Unhandled\",\n skipped: \"Skipped\",\n processed: \"Processed\",\n failed: \"Failed\",\n duplicate: \"Duplicate\",\n};\n\n/**\n * Status → palette colour, chosen so the colour matches the meaning:\n * processed → green (success), failed → coral (error),\n * skipped → orange (warning), received → sky-blue (in progress),\n * unhandled → silver (neutral / no handler matched),\n * duplicate → purple (replayed delivery, dropped before processing).\n */\nconst STATUS_COLORS: Record<WebhookStatus, { bg: string; fg: string }> = {\n processed: {\n bg: \"var(--color-green-pale)\",\n fg: \"var(--color-green-pale-darker)\",\n },\n failed: { bg: \"var(--color-coral)\", fg: \"var(--color-coral-darker)\" },\n skipped: { bg: \"var(--color-orange)\", fg: \"var(--color-orange-darker)\" },\n received: {\n bg: \"var(--color-blue-sky)\",\n fg: \"var(--color-blue-sky-darker)\",\n },\n unhandled: {\n bg: \"var(--color-gray-silver)\",\n fg: \"var(--color-gray-silver-darker)\",\n },\n duplicate: {\n bg: \"var(--color-purple)\",\n fg: \"var(--color-purple-darker)\",\n },\n};\n\n/** Provider glyph for a connection: GitHub / GitLab, Git for anything else. */\nconst connectionIcon = (\n service?: WebhookConnection[\"service\"]\n): ElementType => {\n if (service === \"github\") {\n return GitHubIcon;\n }\n if (service === \"gitlab\") {\n return GitLabIcon;\n }\n return GitIcon;\n};\n\nconst StatusChip = ({ status }: { status: WebhookStatus }): ReactElement => {\n const { bg, fg } = STATUS_COLORS[status];\n\n return (\n <Chip\n label={STATUS_LABELS[status]}\n backgroundColor={bg}\n color={fg}\n typographyProps={{ variant: \"Caption 1\", weight: \"medium\" }}\n style={{ borderRadius: 6 }}\n />\n );\n};\n\n/* --- Mock log data (newest first is enforced by sorting on receivedAt) --- */\n\nconst PAYLOAD_ISSUE_OPENED = JSON.stringify(\n {\n action: \"opened\",\n issue: {\n id: 2002934201,\n number: 42,\n title: \"Webhook delivery retries are not logged\",\n state: \"open\",\n html_url: \"https://github.com/activecollab/feather/issues/42\",\n labels: [{ name: \"bug\" }, { name: \"vcs\" }],\n user: { login: \"octocat\", id: 583231 },\n },\n repository: {\n id: 776611234,\n full_name: \"activecollab/feather\",\n private: true,\n },\n sender: { login: \"octocat\", id: 583231 },\n },\n null,\n 2\n);\n\nconst PAYLOAD_MERGE_REQUEST = JSON.stringify(\n {\n object_kind: \"merge_request\",\n event_type: \"merge_request\",\n user: { id: 41, name: \"Jane Doe\", username: \"jdoe\" },\n project: { id: 1801, path_with_namespace: \"content/handbook\" },\n object_attributes: {\n iid: 318,\n title: \"Add changelog for 8.2\",\n state: \"merged\",\n action: \"merge\",\n source_branch: \"changelog-8-2\",\n target_branch: \"main\",\n },\n },\n null,\n 2\n);\n\nconst PAYLOAD_PUSH = JSON.stringify(\n {\n ref: \"refs/heads/main\",\n before: \"9b2c1f0e\",\n after: \"f4a7d3c1\",\n commits: [\n {\n id: \"f4a7d3c1\",\n message: \"Fix typo in webhook log repository\",\n author: { name: \"Marko\", email: \"marko@example.com\" },\n },\n ],\n repository: { full_name: \"activecollab/feather\" },\n },\n null,\n 2\n);\n\nconst WEBHOOK_LOGS: WebhookLog[] = [\n {\n id: \"log-7\",\n connectionId: \"gh-activecollab\",\n eventKind: \"issue\",\n status: \"processed\",\n deliveryIdentifier: \"d3b07384-d9a0-4c9b-8f1e-2a6f1b9c4e21\",\n outcomes: [\"Created task #1842 from issue #42\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 29, 2026 · 14:32\",\n receivedAt: 1751207520,\n },\n {\n id: \"log-6\",\n connectionId: \"gl-content\",\n eventKind: \"merge_request\",\n status: \"skipped\",\n deliveryIdentifier: \"b1946ac9-2f3a-4c0d-9b7e-1d2c3e4f5a6b\",\n outcomes: [\"Skipped: merge request has no linked issue\"],\n payload: PAYLOAD_MERGE_REQUEST,\n receivedOn: \"Jun 29, 2026 · 11:08\",\n receivedAt: 1751195280,\n },\n {\n id: \"log-5\",\n connectionId: \"gh-activecollab\",\n eventKind: \"issue\",\n status: \"failed\",\n deliveryIdentifier: \"9c1185a5-c5e9-4e3f-8a1b-7d6e5f4c3b2a\",\n outcomes: [\"Failed at task creation: project not found\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 28, 2026 · 18:54\",\n receivedAt: 1751136840,\n },\n {\n id: \"log-4\",\n connectionId: \"gl-content\",\n eventKind: \"push\",\n status: \"processed\",\n deliveryIdentifier: \"f7c3bc1d-8c5a-4b2e-9f0a-1b2c3d4e5f60\",\n outcomes: [\n \"Created task #1839 from issue #311\",\n \"Created task #1840 from issue #312\",\n ],\n payload: PAYLOAD_PUSH,\n receivedOn: \"Jun 28, 2026 · 09:21\",\n receivedAt: 1751102460,\n },\n {\n id: \"log-3\",\n connectionId: \"gh-activecollab\",\n eventKind: \"ping\",\n status: \"unhandled\",\n deliveryIdentifier: \"1574bddb-75c3-4b1e-8a9c-0d1e2f3a4b5c\",\n outcomes: [],\n payload: JSON.stringify(\n { zen: \"Keep it logically awesome.\", hook_id: 552012 },\n null,\n 2\n ),\n receivedOn: \"Jun 27, 2026 · 16:05\",\n receivedAt: 1751040300,\n },\n {\n id: \"log-2\",\n connectionId: \"gl-content\",\n eventKind: \"issue\",\n status: \"received\",\n deliveryIdentifier: \"0716d970-2b9e-4a1d-9c3f-5e6a7b8c9d01\",\n outcomes: [],\n receivedOn: \"Jun 27, 2026 · 08:47\",\n receivedAt: 1751013420,\n },\n {\n id: \"log-1\",\n connectionId: \"gh-activecollab\",\n eventKind: \"issue\",\n status: \"processed\",\n deliveryIdentifier: \"fa3ebd6742c360b2d9652b7f78d9bd7d\",\n outcomes: [\"Created task #1804 from issue #29\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 26, 2026 · 13:12\",\n receivedAt: 1750943520,\n },\n {\n id: \"log-1-replay\",\n connectionId: \"gh-activecollab\",\n eventKind: \"issue\",\n status: \"duplicate\",\n deliveryIdentifier: \"fa3ebd6742c360b2d9652b7f78d9bd7d\",\n outcomes: [],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 26, 2026 · 13:18\",\n receivedAt: 1750943880,\n },\n];\n\n/* --- Lightweight, Prism-style JSON syntax highlighter -------------------- */\n/* design-system has no `prismjs` dependency (it's an app dependency), so for */\n/* this throwaway mock we tokenize JSON ourselves and colour the tokens with */\n/* the same token classes Prism uses, styled via PayloadPre below. */\n\nconst escapeHtml = (value: string): string =>\n value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n\nconst highlightJson = (json: string): string =>\n escapeHtml(json).replace(\n /(\"(?:\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(?:true|false)\\b|\\bnull\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g,\n (match) => {\n let cls = \"tok-number\";\n\n if (/^\"/.test(match)) {\n cls = /:$/.test(match) ? \"tok-key\" : \"tok-string\";\n } else if (/true|false/.test(match)) {\n cls = \"tok-boolean\";\n } else if (/null/.test(match)) {\n cls = \"tok-null\";\n }\n\n return `<span class=\"${cls}\">${match}</span>`;\n }\n );\n\nconst PAYLOAD_COLLAPSED_LINES = 6;\n\nconst PayloadPre = styled.pre<{ $collapsed: boolean }>`\n margin: 0;\n padding: 12px 14px;\n border: 1px solid var(--color-theme-400);\n border-radius: 6px;\n background-color: var(--color-theme-200);\n color: var(--color-theme-800);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 12px;\n line-height: 18px;\n overflow-x: auto;\n white-space: pre;\n position: relative;\n\n ${({ $collapsed }) =>\n $collapsed\n ? `max-height: ${PAYLOAD_COLLAPSED_LINES * 18 + 24}px;\n overflow-y: hidden;`\n : \"\"}\n\n .tok-key {\n color: var(--color-coral-lighter);\n }\n .tok-string {\n color: var(--color-green-pale-lighter);\n }\n .tok-number {\n color: var(--color-orange-lighter);\n }\n .tok-boolean {\n color: var(--color-blue-sky-lighter);\n }\n .tok-null {\n color: var(--color-purple-lighter);\n }\n`;\n\nconst PayloadWrap = styled.div`\n .payload-toggle {\n display: flex;\n justify-content: flex-end;\n min-height: 24px;\n margin-bottom: 4px;\n }\n`;\n\nconst PayloadBlock = ({ payload }: { payload: string }): ReactElement => {\n const [collapsed, setCollapsed] = useState(true);\n\n const lineCount = useMemo(() => payload.split(\"\\n\").length, [payload]);\n const html = useMemo(() => highlightJson(payload), [payload]);\n const canToggle = lineCount > PAYLOAD_COLLAPSED_LINES;\n\n return (\n <PayloadWrap>\n {canToggle ? (\n <div className=\"payload-toggle\">\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={() => setCollapsed((value) => !value)}\n >\n {collapsed ? \"Show More\" : \"Show Less\"}\n </Button>\n </div>\n ) : null}\n <PayloadPre\n $collapsed={collapsed && canToggle}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </PayloadWrap>\n );\n};\n\n/* --- A single, expandable log row ---------------------------------------- */\n\nconst LogRowWrap = styled.div`\n border-top: 1px solid var(--color-theme-300);\n\n .lr-summary {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n min-height: 56px;\n padding: 8px 8px 8px 12px;\n background: none;\n border: 0;\n text-align: left;\n cursor: pointer;\n font-family: inherit;\n\n &:hover {\n background-color: var(--color-theme-200);\n }\n }\n\n /* Default icon points up; collapsed → point right, expanded → point down. */\n .lr-expand {\n flex-shrink: 0;\n color: var(--color-theme-600);\n transform: rotate(90deg);\n transition: transform 150ms ease;\n }\n\n .lr-expand.open {\n transform: rotate(180deg);\n }\n\n .lr-conn {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 180px;\n min-width: 0;\n flex-shrink: 0;\n }\n\n .lr-conn svg {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n }\n\n .lr-conn .lr-conn-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .lr-event {\n flex: 1 1 0%;\n min-width: 0;\n }\n\n .lr-status {\n flex-shrink: 0;\n }\n\n .lr-outcomes {\n width: 96px;\n flex-shrink: 0;\n text-align: right;\n }\n\n .lr-detail {\n padding: 4px 16px 20px 44px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .lr-field-label {\n display: block;\n margin-bottom: 4px;\n }\n\n .lr-id {\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n word-break: break-all;\n }\n\n .lr-outcome-list {\n margin: 0;\n padding-left: 18px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n`;\n\ninterface LogRowProps {\n log: WebhookLog;\n connection?: WebhookConnection;\n}\n\nconst LogRow = ({ log, connection }: LogRowProps): ReactElement => {\n const [open, setOpen] = useState(false);\n const ConnIcon = connectionIcon(connection?.service);\n\n return (\n <LogRowWrap>\n <button\n type=\"button\"\n className=\"lr-summary\"\n aria-expanded={open}\n onClick={() => setOpen((value) => !value)}\n >\n <CollapseExpandSingleIcon\n className={open ? \"lr-expand open\" : \"lr-expand\"}\n />\n <span className=\"lr-conn\">\n <ConnIcon />\n <Body2 className=\"lr-conn-name\" weight=\"bold\">\n {connection?.name ?? \"Unknown\"}\n </Body2>\n </span>\n <Body2 className=\"lr-event\" color=\"tertiary\">\n {EVENT_KIND_LABELS[log.eventKind]}\n </Body2>\n <span className=\"lr-status\">\n <StatusChip status={log.status} />\n </span>\n <Caption1 className=\"lr-outcomes\" color=\"tertiary\">\n {log.outcomes.length > 0\n ? `${log.outcomes.length} ${\n log.outcomes.length === 1 ? \"outcome\" : \"outcomes\"\n }`\n : \"\"}\n </Caption1>\n </button>\n\n {open ? (\n <div className=\"lr-detail\">\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Webhook identifier\n </Caption1>\n <Body2 className=\"lr-id\" color=\"tertiary\">\n {log.deliveryIdentifier}\n </Body2>\n </div>\n\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Outcomes\n </Caption1>\n {log.outcomes.length > 0 ? (\n <ul className=\"lr-outcome-list\">\n {log.outcomes.map((outcome, index) => (\n <li key={index}>\n <Body2 color=\"tertiary\">{outcome}</Body2>\n </li>\n ))}\n </ul>\n ) : (\n <Body2 color=\"tertiary\">\n No outcomes were recorded for this webhook.\n </Body2>\n )}\n </div>\n\n {log.payload ? (\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Payload\n </Caption1>\n <PayloadBlock payload={log.payload} />\n </div>\n ) : null}\n </div>\n ) : null}\n </LogRowWrap>\n );\n};\n\n/* --- The dialog ---------------------------------------------------------- */\n\n/** Wider than the default 540px dialog so the log columns have room. */\nconst WebhookLogsDialogStyled = styled(Dialog)`\n && {\n width: calc(100vw - 64px);\n max-width: 760px;\n }\n`;\n\nconst DialogTitleBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n .title-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n }\n`;\n\nconst LogListHeader = styled.div`\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 0 8px 8px 44px;\n\n .lh-conn {\n width: 180px;\n flex-shrink: 0;\n }\n .lh-event {\n flex: 1 1 0%;\n min-width: 0;\n }\n .lh-status {\n width: 96px;\n flex-shrink: 0;\n }\n .lh-outcomes {\n width: 96px;\n flex-shrink: 0;\n text-align: right;\n }\n`;\n\nconst EmptyLogs = styled.div`\n padding: 40px 0;\n text-align: center;\n`;\n\nexport interface WebhookLogsDialogProps {\n open: boolean;\n onClose: () => void;\n /** Pre-filter to a single connection (used when opened from its row menu). */\n initialConnectionId?: string;\n /**\n * Pre-filter to a set of connections (e.g. the connections a project's\n * repositories belong to). Takes precedence over `initialConnectionId`.\n */\n connectionIds?: string[];\n}\n\nexport const WebhookLogsDialog = ({\n open,\n onClose,\n initialConnectionId,\n connectionIds,\n}: WebhookLogsDialogProps): ReactElement => {\n const [filters, setFilters] = useState<SelectedType>((): SelectedType => {\n if (connectionIds && connectionIds.length > 0) {\n return { connection: connectionIds };\n }\n if (initialConnectionId) {\n return { connection: [initialConnectionId] };\n }\n return {};\n });\n\n const connectionsById = useMemo(() => {\n const map: Record<string, WebhookConnection> = {};\n WEBHOOK_CONNECTIONS.forEach((connection) => {\n map[connection.id] = connection;\n });\n return map;\n }, []);\n\n const filterData = useMemo(\n () => [\n {\n id: \"connection\",\n title: \"Connection\",\n submenu: WEBHOOK_CONNECTIONS.map((connection) => ({\n id: connection.id,\n name: connection.name,\n })),\n },\n {\n id: \"event_type\",\n title: \"Event Type\",\n submenu: Array.from(\n new Set(WEBHOOK_LOGS.map((log) => log.eventKind))\n ).map((eventKind) => ({\n id: eventKind,\n name: EVENT_KIND_LABELS[eventKind],\n })),\n },\n {\n id: \"status\",\n title: \"Processing Status\",\n submenu: (Object.keys(STATUS_LABELS) as WebhookStatus[]).map(\n (status) => ({ id: status, name: STATUS_LABELS[status] })\n ),\n },\n ],\n []\n );\n\n const visibleLogs = useMemo(() => {\n const byConnection = filters.connection ?? [];\n const byEvent = filters.event_type ?? [];\n const byStatus = filters.status ?? [];\n\n return WEBHOOK_LOGS.filter((log) => {\n if (byConnection.length && !byConnection.includes(log.connectionId)) {\n return false;\n }\n if (byEvent.length && !byEvent.includes(log.eventKind)) {\n return false;\n }\n if (byStatus.length && !byStatus.includes(log.status)) {\n return false;\n }\n return true;\n }).sort((a, b) => b.receivedAt - a.receivedAt);\n }, [filters]);\n\n return (\n <WebhookLogsDialogStyled\n open={open}\n onClose={onClose}\n enableBackgroundClick\n >\n <Dialog.Title disableDefaultHeading>\n <DialogTitleBar>\n <Header3>Webhook Logs</Header3>\n <div className=\"title-actions\">\n <Filter\n data={filterData}\n selected={filters}\n label=\"Filter\"\n clearAllText=\"Clear All\"\n noResultText=\"No results\"\n emptyFilterText=\"No filters to show\"\n onChange={setFilters}\n />\n <IconButton variant=\"text gray\" onClick={onClose}>\n <CancelCrossIcon />\n </IconButton>\n </div>\n </DialogTitleBar>\n </Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n {visibleLogs.length > 0 ? (\n <>\n <LogListHeader>\n <Caption2 className=\"lh-conn\" color=\"secondary\" weight=\"bold\">\n CONNECTION\n </Caption2>\n <Caption2 className=\"lh-event\" color=\"secondary\" weight=\"bold\">\n EVENT TYPE\n </Caption2>\n <Caption2 className=\"lh-status\" color=\"secondary\" weight=\"bold\">\n STATUS\n </Caption2>\n <Caption2 className=\"lh-outcomes\" color=\"secondary\" weight=\"bold\">\n OUTCOMES\n </Caption2>\n </LogListHeader>\n {visibleLogs.map((log) => (\n <LogRow\n key={log.id}\n log={log}\n connection={connectionsById[log.connectionId]}\n />\n ))}\n </>\n ) : (\n <EmptyLogs>\n <Body2 color=\"tertiary\">\n No webhook logs match the selected filters.\n </Body2>\n </EmptyLogs>\n )}\n </Dialog.Content>\n </WebhookLogsDialogStyled>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"WebhookLogsDialog.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_interopRequireDefault","_Button","_Chip","_Dialog","_Filter","_IconButton","_Icons","_Typography","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","a","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","l","iterator","u","next","done","return","isArray","WEBHOOK_CONNECTIONS","exports","id","service","WEBHOOK_REPOSITORIES","path","connectionId","EVENT_KIND_LABELS","issue","merge_request","repository","ping","STATUS_LABELS","received","unhandled","skipped","processed","failed","duplicate","STATUS_COLORS","bg","fg","connectionIcon","GitHubIcon","GitLabIcon","GitIcon","StatusChip","_ref","status","_STATUS_COLORS$status","createElement","Chip","label","backgroundColor","color","typographyProps","variant","weight","style","borderRadius","PAYLOAD_ISSUE_OPENED","JSON","stringify","action","number","title","state","html_url","labels","user","login","full_name","private","sender","PAYLOAD_MERGE_REQUEST","object_kind","event_type","username","project","path_with_namespace","object_attributes","iid","source_branch","target_branch","PAYLOAD_PUSH","ref","before","after","commits","message","author","email","WEBHOOK_LOGS","repositoryId","eventKind","deliveryIdentifier","outcomes","payload","receivedOn","receivedAt","zen","hook_id","escapeHtml","replace","highlightJson","json","match","cls","concat","PAYLOAD_COLLAPSED_LINES","PayloadPre","styled","pre","withConfig","displayName","componentId","_ref2","$collapsed","PayloadWrap","div","PayloadBlock","_ref3","_useState","useState","_useState2","collapsed","setCollapsed","lineCount","useMemo","split","html","canToggle","className","Button","size","onClick","dangerouslySetInnerHTML","__html","LogRowWrap","LogRow","_ref4","_connection$name","log","connection","_useState3","_useState4","open","setOpen","ConnIcon","type","CollapseExpandSingleIcon","Body2","Caption1","map","outcome","index","key","WebhookLogsDialogStyled","Dialog","DialogTitleBar","LogListHeader","EmptyLogs","WebhookLogsDialog","_ref5","onClose","initialConnectionId","connectionIds","repositoryIds","_useState5","initial","_useState6","filters","setFilters","connectionsById","filterData","_filters$connection","selectedConnections","repositorySubmenu","includes","sort","b","localeCompare","_connectionsById$repo","_connectionsById$repo2","submenu","searchPlaceholder","disableInternalSort","Set","visibleLogs","_filters$connection2","_filters$repository","_filters$event_type","_filters$status","byConnection","byRepository","byEvent","byStatus","handleFiltersChange","useCallback","_next$connection","_next$repository","selectedRepositories","allowedRepositoryIds","prunedRepositories","updated","enableBackgroundClick","Title","disableDefaultHeading","Header3","Filter","data","selected","clearAllText","noResultText","emptyFilterText","onChange","IconButton","CancelCrossIcon","ContentDivider","Content","Fragment","Caption2"],"sources":["../../../../src/presentation/shared/WebhookLogsDialog.tsx"],"sourcesContent":["import React, {\n ElementType,\n ReactElement,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\n\nimport styled from \"styled-components\";\n\nimport { Button } from \"../../components/Button\";\nimport { Chip } from \"../../components/Chip\";\nimport { Dialog } from \"../../components/Dialog\";\nimport { Filter, SelectedType } from \"../../components/Filter\";\nimport { IconButton } from \"../../components/IconButton\";\nimport {\n CancelCrossIcon,\n CollapseExpandSingleIcon,\n GitHubIcon,\n GitIcon,\n GitLabIcon,\n} from \"../../components/Icons\";\nimport {\n Body2,\n Caption1,\n Caption2,\n Header3,\n} from \"../../components/Typography\";\n\n/**\n * \"Webhook Logs\" — the VCS webhook delivery log, shown as a wide dialog with a\n * filterable, expandable list. Extracted into `shared/` so it can be opened\n * from more than one surface (the Apps & Integrations Repositories page and the\n * project \"...\" menu on the Project Repos story).\n *\n * Mirrors the app's webhook log model:\n * `vcs_webhook_logs` → connection_id, event_type, processing_status\n * (received / unhandled / skipped / processed /\n * failed / duplicate), delivery_identifier, payload,\n * created_on\n * `vcs_webhook_outcomes` → one row per outcome, each with a localized summary\n *\n * The status is derived from the outcomes server-side; here we render the\n * stored value and map it to a palette colour. The connection glyph is the\n * provider icon (GitHub / GitLab, Git for anything else).\n */\n\ntype WebhookStatus =\n | \"received\"\n | \"unhandled\"\n | \"skipped\"\n | \"processed\"\n | \"failed\"\n | \"duplicate\";\n\nexport interface WebhookConnection {\n id: string;\n name: string;\n service: \"github\" | \"gitlab\";\n}\n\nexport interface WebhookRepository {\n id: string;\n /** Full repository path, e.g. activecollab/feather. */\n path: string;\n connectionId: string;\n}\n\n/**\n * Normalized event kind. The processor layer maps each provider's raw event\n * header (GitHub `issues`, GitLab `Issue Hook`, …) onto one provider-agnostic\n * kind, so the same logical event reads — and filters — identically across\n * connections instead of appearing once per provider.\n */\ntype WebhookEventKind =\n | \"issue\"\n | \"push\"\n | \"merge_request\"\n | \"repository\"\n | \"ping\";\n\nexport interface WebhookLog {\n id: string;\n connectionId: string;\n /** Repository the delivery belongs to (always within `connectionId`). */\n repositoryId: string;\n eventKind: WebhookEventKind;\n status: WebhookStatus;\n /** X-GitHub-Delivery GUID / X-Gitlab-Event-UUID. */\n deliveryIdentifier: string;\n /** Localized outcome summaries; empty when we never reached that stage. */\n outcomes: string[];\n /** Pretty-printed JSON payload; absent when no JSON body was logged. */\n payload?: string;\n /** Display timestamp. */\n receivedOn: string;\n /** Sort key — newest logs render at the top. */\n receivedAt: number;\n}\n\nexport const WEBHOOK_CONNECTIONS: WebhookConnection[] = [\n { id: \"gh-activecollab\", name: \"ActiveCollab\", service: \"github\" },\n { id: \"gh-abstergo\", name: \"Abstergo Ltd.\", service: \"github\" },\n { id: \"gh-binford\", name: \"Binford & Co.\", service: \"github\" },\n { id: \"gl-platform\", name: \"Platform\", service: \"gitlab\" },\n { id: \"gl-content\", name: \"Content\", service: \"gitlab\" },\n { id: \"gl-acme-ce\", name: \"Acme Community\", service: \"gitlab\" },\n];\n\n/**\n * Repositories that belong to the connections above. A webhook delivery is\n * always scoped to one repository, and a repository belongs to exactly one\n * connection — so the Repository filter can be narrowed to the connection(s)\n * currently selected in the Connection filter.\n */\nexport const WEBHOOK_REPOSITORIES: WebhookRepository[] = [\n {\n id: \"ac-feather\",\n path: \"activecollab/feather\",\n connectionId: \"gh-activecollab\",\n },\n {\n id: \"ac-backend\",\n path: \"activecollab/backend\",\n connectionId: \"gh-activecollab\",\n },\n { id: \"ab-animus\", path: \"abstergo/animus\", connectionId: \"gh-abstergo\" },\n { id: \"bi-tool-time\", path: \"binford/tool-time\", connectionId: \"gh-binford\" },\n {\n id: \"pl-gateway\",\n path: \"platform/api-gateway\",\n connectionId: \"gl-platform\",\n },\n { id: \"co-handbook\", path: \"content/handbook\", connectionId: \"gl-content\" },\n {\n id: \"co-marketing\",\n path: \"content/marketing-site\",\n connectionId: \"gl-content\",\n },\n { id: \"acme-ce\", path: \"acme/community-edition\", connectionId: \"gl-acme-ce\" },\n];\n\nconst EVENT_KIND_LABELS: Record<WebhookEventKind, string> = {\n issue: \"Issue\",\n push: \"Push\",\n merge_request: \"Merge request\",\n repository: \"Repository\",\n ping: \"Ping\",\n};\n\nconst STATUS_LABELS: Record<WebhookStatus, string> = {\n received: \"Received\",\n unhandled: \"Unhandled\",\n skipped: \"Skipped\",\n processed: \"Processed\",\n failed: \"Failed\",\n duplicate: \"Duplicate\",\n};\n\n/**\n * Status → palette colour, chosen so the colour matches the meaning:\n * processed → green (success), failed → coral (error),\n * skipped → orange (warning), received → sky-blue (in progress),\n * unhandled → silver (neutral / no handler matched),\n * duplicate → purple (replayed delivery, dropped before processing).\n */\nconst STATUS_COLORS: Record<WebhookStatus, { bg: string; fg: string }> = {\n processed: {\n bg: \"var(--color-green-pale)\",\n fg: \"var(--color-green-pale-darker)\",\n },\n failed: { bg: \"var(--color-coral)\", fg: \"var(--color-coral-darker)\" },\n skipped: { bg: \"var(--color-orange)\", fg: \"var(--color-orange-darker)\" },\n received: {\n bg: \"var(--color-blue-sky)\",\n fg: \"var(--color-blue-sky-darker)\",\n },\n unhandled: {\n bg: \"var(--color-gray-silver)\",\n fg: \"var(--color-gray-silver-darker)\",\n },\n duplicate: {\n bg: \"var(--color-purple)\",\n fg: \"var(--color-purple-darker)\",\n },\n};\n\n/** Provider glyph for a connection: GitHub / GitLab, Git for anything else. */\nconst connectionIcon = (\n service?: WebhookConnection[\"service\"]\n): ElementType => {\n if (service === \"github\") {\n return GitHubIcon;\n }\n if (service === \"gitlab\") {\n return GitLabIcon;\n }\n return GitIcon;\n};\n\nconst StatusChip = ({ status }: { status: WebhookStatus }): ReactElement => {\n const { bg, fg } = STATUS_COLORS[status];\n\n return (\n <Chip\n label={STATUS_LABELS[status]}\n backgroundColor={bg}\n color={fg}\n typographyProps={{ variant: \"Caption 1\", weight: \"medium\" }}\n style={{ borderRadius: 6 }}\n />\n );\n};\n\n/* --- Mock log data (newest first is enforced by sorting on receivedAt) --- */\n\nconst PAYLOAD_ISSUE_OPENED = JSON.stringify(\n {\n action: \"opened\",\n issue: {\n id: 2002934201,\n number: 42,\n title: \"Webhook delivery retries are not logged\",\n state: \"open\",\n html_url: \"https://github.com/activecollab/feather/issues/42\",\n labels: [{ name: \"bug\" }, { name: \"vcs\" }],\n user: { login: \"octocat\", id: 583231 },\n },\n repository: {\n id: 776611234,\n full_name: \"activecollab/feather\",\n private: true,\n },\n sender: { login: \"octocat\", id: 583231 },\n },\n null,\n 2\n);\n\nconst PAYLOAD_MERGE_REQUEST = JSON.stringify(\n {\n object_kind: \"merge_request\",\n event_type: \"merge_request\",\n user: { id: 41, name: \"Jane Doe\", username: \"jdoe\" },\n project: { id: 1801, path_with_namespace: \"content/handbook\" },\n object_attributes: {\n iid: 318,\n title: \"Add changelog for 8.2\",\n state: \"merged\",\n action: \"merge\",\n source_branch: \"changelog-8-2\",\n target_branch: \"main\",\n },\n },\n null,\n 2\n);\n\nconst PAYLOAD_PUSH = JSON.stringify(\n {\n ref: \"refs/heads/main\",\n before: \"9b2c1f0e\",\n after: \"f4a7d3c1\",\n commits: [\n {\n id: \"f4a7d3c1\",\n message: \"Fix typo in webhook log repository\",\n author: { name: \"Marko\", email: \"marko@example.com\" },\n },\n ],\n repository: { full_name: \"activecollab/feather\" },\n },\n null,\n 2\n);\n\nconst WEBHOOK_LOGS: WebhookLog[] = [\n {\n id: \"log-7\",\n connectionId: \"gh-activecollab\",\n repositoryId: \"ac-feather\",\n eventKind: \"issue\",\n status: \"processed\",\n deliveryIdentifier: \"d3b07384-d9a0-4c9b-8f1e-2a6f1b9c4e21\",\n outcomes: [\"Created task #1842 from issue #42\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 29, 2026 · 14:32\",\n receivedAt: 1751207520,\n },\n {\n id: \"log-6\",\n connectionId: \"gl-content\",\n repositoryId: \"co-handbook\",\n eventKind: \"merge_request\",\n status: \"skipped\",\n deliveryIdentifier: \"b1946ac9-2f3a-4c0d-9b7e-1d2c3e4f5a6b\",\n outcomes: [\"Skipped: merge request has no linked issue\"],\n payload: PAYLOAD_MERGE_REQUEST,\n receivedOn: \"Jun 29, 2026 · 11:08\",\n receivedAt: 1751195280,\n },\n {\n id: \"log-5\",\n connectionId: \"gh-activecollab\",\n repositoryId: \"ac-backend\",\n eventKind: \"issue\",\n status: \"failed\",\n deliveryIdentifier: \"9c1185a5-c5e9-4e3f-8a1b-7d6e5f4c3b2a\",\n outcomes: [\"Failed at task creation: project not found\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 28, 2026 · 18:54\",\n receivedAt: 1751136840,\n },\n {\n id: \"log-4\",\n connectionId: \"gl-content\",\n repositoryId: \"co-handbook\",\n eventKind: \"push\",\n status: \"processed\",\n deliveryIdentifier: \"f7c3bc1d-8c5a-4b2e-9f0a-1b2c3d4e5f60\",\n outcomes: [\n \"Created task #1839 from issue #311\",\n \"Created task #1840 from issue #312\",\n ],\n payload: PAYLOAD_PUSH,\n receivedOn: \"Jun 28, 2026 · 09:21\",\n receivedAt: 1751102460,\n },\n {\n id: \"log-3\",\n connectionId: \"gh-activecollab\",\n repositoryId: \"ac-feather\",\n eventKind: \"ping\",\n status: \"unhandled\",\n deliveryIdentifier: \"1574bddb-75c3-4b1e-8a9c-0d1e2f3a4b5c\",\n outcomes: [],\n payload: JSON.stringify(\n { zen: \"Keep it logically awesome.\", hook_id: 552012 },\n null,\n 2\n ),\n receivedOn: \"Jun 27, 2026 · 16:05\",\n receivedAt: 1751040300,\n },\n {\n id: \"log-2\",\n connectionId: \"gl-content\",\n repositoryId: \"co-marketing\",\n eventKind: \"issue\",\n status: \"received\",\n deliveryIdentifier: \"0716d970-2b9e-4a1d-9c3f-5e6a7b8c9d01\",\n outcomes: [],\n receivedOn: \"Jun 27, 2026 · 08:47\",\n receivedAt: 1751013420,\n },\n {\n id: \"log-1\",\n connectionId: \"gh-activecollab\",\n repositoryId: \"ac-feather\",\n eventKind: \"issue\",\n status: \"processed\",\n deliveryIdentifier: \"fa3ebd6742c360b2d9652b7f78d9bd7d\",\n outcomes: [\"Created task #1804 from issue #29\"],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 26, 2026 · 13:12\",\n receivedAt: 1750943520,\n },\n {\n id: \"log-1-replay\",\n connectionId: \"gh-activecollab\",\n repositoryId: \"ac-feather\",\n eventKind: \"issue\",\n status: \"duplicate\",\n deliveryIdentifier: \"fa3ebd6742c360b2d9652b7f78d9bd7d\",\n outcomes: [],\n payload: PAYLOAD_ISSUE_OPENED,\n receivedOn: \"Jun 26, 2026 · 13:18\",\n receivedAt: 1750943880,\n },\n];\n\n/* --- Lightweight, Prism-style JSON syntax highlighter -------------------- */\n/* design-system has no `prismjs` dependency (it's an app dependency), so for */\n/* this throwaway mock we tokenize JSON ourselves and colour the tokens with */\n/* the same token classes Prism uses, styled via PayloadPre below. */\n\nconst escapeHtml = (value: string): string =>\n value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n\nconst highlightJson = (json: string): string =>\n escapeHtml(json).replace(\n /(\"(?:\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(?:true|false)\\b|\\bnull\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g,\n (match) => {\n let cls = \"tok-number\";\n\n if (/^\"/.test(match)) {\n cls = /:$/.test(match) ? \"tok-key\" : \"tok-string\";\n } else if (/true|false/.test(match)) {\n cls = \"tok-boolean\";\n } else if (/null/.test(match)) {\n cls = \"tok-null\";\n }\n\n return `<span class=\"${cls}\">${match}</span>`;\n }\n );\n\nconst PAYLOAD_COLLAPSED_LINES = 6;\n\nconst PayloadPre = styled.pre<{ $collapsed: boolean }>`\n margin: 0;\n padding: 12px 14px;\n border: 1px solid var(--color-theme-400);\n border-radius: 6px;\n background-color: var(--color-theme-200);\n color: var(--color-theme-800);\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n font-size: 12px;\n line-height: 18px;\n overflow-x: auto;\n white-space: pre;\n position: relative;\n\n ${({ $collapsed }) =>\n $collapsed\n ? `max-height: ${PAYLOAD_COLLAPSED_LINES * 18 + 24}px;\n overflow-y: hidden;`\n : \"\"}\n\n .tok-key {\n color: var(--color-coral-lighter);\n }\n .tok-string {\n color: var(--color-green-pale-lighter);\n }\n .tok-number {\n color: var(--color-orange-lighter);\n }\n .tok-boolean {\n color: var(--color-blue-sky-lighter);\n }\n .tok-null {\n color: var(--color-purple-lighter);\n }\n`;\n\nconst PayloadWrap = styled.div`\n .payload-toggle {\n display: flex;\n justify-content: flex-end;\n min-height: 24px;\n margin-bottom: 4px;\n }\n`;\n\nconst PayloadBlock = ({ payload }: { payload: string }): ReactElement => {\n const [collapsed, setCollapsed] = useState(true);\n\n const lineCount = useMemo(() => payload.split(\"\\n\").length, [payload]);\n const html = useMemo(() => highlightJson(payload), [payload]);\n const canToggle = lineCount > PAYLOAD_COLLAPSED_LINES;\n\n return (\n <PayloadWrap>\n {canToggle ? (\n <div className=\"payload-toggle\">\n <Button\n variant=\"text colored\"\n size=\"small\"\n onClick={() => setCollapsed((value) => !value)}\n >\n {collapsed ? \"Show More\" : \"Show Less\"}\n </Button>\n </div>\n ) : null}\n <PayloadPre\n $collapsed={collapsed && canToggle}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </PayloadWrap>\n );\n};\n\n/* --- A single, expandable log row ---------------------------------------- */\n\nconst LogRowWrap = styled.div`\n border-top: 1px solid var(--color-theme-300);\n\n .lr-summary {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n min-height: 56px;\n padding: 8px 8px 8px 12px;\n background: none;\n border: 0;\n text-align: left;\n cursor: pointer;\n font-family: inherit;\n\n &:hover {\n background-color: var(--color-theme-200);\n }\n }\n\n /* Default icon points up; collapsed → point right, expanded → point down. */\n .lr-expand {\n flex-shrink: 0;\n color: var(--color-theme-600);\n transform: rotate(90deg);\n transition: transform 150ms ease;\n }\n\n .lr-expand.open {\n transform: rotate(180deg);\n }\n\n .lr-conn {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 180px;\n min-width: 0;\n flex-shrink: 0;\n }\n\n .lr-conn svg {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n }\n\n .lr-conn .lr-conn-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n .lr-event {\n flex: 1 1 0%;\n min-width: 0;\n }\n\n .lr-status {\n flex-shrink: 0;\n }\n\n .lr-outcomes {\n width: 96px;\n flex-shrink: 0;\n text-align: right;\n }\n\n .lr-detail {\n padding: 4px 16px 20px 44px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .lr-field-label {\n display: block;\n margin-bottom: 4px;\n }\n\n .lr-id {\n font-family: \"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace;\n word-break: break-all;\n }\n\n .lr-outcome-list {\n margin: 0;\n padding-left: 18px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n`;\n\ninterface LogRowProps {\n log: WebhookLog;\n connection?: WebhookConnection;\n}\n\nconst LogRow = ({ log, connection }: LogRowProps): ReactElement => {\n const [open, setOpen] = useState(false);\n const ConnIcon = connectionIcon(connection?.service);\n\n return (\n <LogRowWrap>\n <button\n type=\"button\"\n className=\"lr-summary\"\n aria-expanded={open}\n onClick={() => setOpen((value) => !value)}\n >\n <CollapseExpandSingleIcon\n className={open ? \"lr-expand open\" : \"lr-expand\"}\n />\n <span className=\"lr-conn\">\n <ConnIcon />\n <Body2 className=\"lr-conn-name\" weight=\"bold\">\n {connection?.name ?? \"Unknown\"}\n </Body2>\n </span>\n <Body2 className=\"lr-event\" color=\"tertiary\">\n {EVENT_KIND_LABELS[log.eventKind]}\n </Body2>\n <span className=\"lr-status\">\n <StatusChip status={log.status} />\n </span>\n <Caption1 className=\"lr-outcomes\" color=\"tertiary\">\n {log.outcomes.length > 0\n ? `${log.outcomes.length} ${\n log.outcomes.length === 1 ? \"outcome\" : \"outcomes\"\n }`\n : \"\"}\n </Caption1>\n </button>\n\n {open ? (\n <div className=\"lr-detail\">\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Webhook identifier\n </Caption1>\n <Body2 className=\"lr-id\" color=\"tertiary\">\n {log.deliveryIdentifier}\n </Body2>\n </div>\n\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Outcomes\n </Caption1>\n {log.outcomes.length > 0 ? (\n <ul className=\"lr-outcome-list\">\n {log.outcomes.map((outcome, index) => (\n <li key={index}>\n <Body2 color=\"tertiary\">{outcome}</Body2>\n </li>\n ))}\n </ul>\n ) : (\n <Body2 color=\"tertiary\">\n No outcomes were recorded for this webhook.\n </Body2>\n )}\n </div>\n\n {log.payload ? (\n <div>\n <Caption1\n className=\"lr-field-label\"\n color=\"secondary\"\n weight=\"bold\"\n >\n Payload\n </Caption1>\n <PayloadBlock payload={log.payload} />\n </div>\n ) : null}\n </div>\n ) : null}\n </LogRowWrap>\n );\n};\n\n/* --- The dialog ---------------------------------------------------------- */\n\n/** Wider than the default 540px dialog so the log columns have room. */\nconst WebhookLogsDialogStyled = styled(Dialog)`\n && {\n width: calc(100vw - 64px);\n max-width: 760px;\n }\n`;\n\nconst DialogTitleBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n\n .title-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n }\n`;\n\nconst LogListHeader = styled.div`\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 0 8px 8px 44px;\n\n .lh-conn {\n width: 180px;\n flex-shrink: 0;\n }\n .lh-event {\n flex: 1 1 0%;\n min-width: 0;\n }\n .lh-status {\n width: 96px;\n flex-shrink: 0;\n }\n .lh-outcomes {\n width: 96px;\n flex-shrink: 0;\n text-align: right;\n }\n`;\n\nconst EmptyLogs = styled.div`\n padding: 40px 0;\n text-align: center;\n`;\n\nexport interface WebhookLogsDialogProps {\n open: boolean;\n onClose: () => void;\n /** Pre-filter to a single connection (used when opened from its row menu). */\n initialConnectionId?: string;\n /**\n * Pre-filter to a set of connections (e.g. the connections a project's\n * repositories belong to). Takes precedence over `initialConnectionId`.\n */\n connectionIds?: string[];\n /**\n * Pre-filter to a set of repositories (e.g. the repositories connected to a\n * project, when opened from the project \"...\" menu). Seeds the Repository\n * filter; IDs should exist in `WEBHOOK_REPOSITORIES` so their chips render.\n */\n repositoryIds?: string[];\n}\n\nexport const WebhookLogsDialog = ({\n open,\n onClose,\n initialConnectionId,\n connectionIds,\n repositoryIds,\n}: WebhookLogsDialogProps): ReactElement => {\n const [filters, setFilters] = useState<SelectedType>((): SelectedType => {\n const initial: SelectedType = {};\n if (connectionIds && connectionIds.length > 0) {\n initial.connection = connectionIds;\n } else if (initialConnectionId) {\n initial.connection = [initialConnectionId];\n }\n if (repositoryIds && repositoryIds.length > 0) {\n initial.repository = repositoryIds;\n }\n return initial;\n });\n\n const connectionsById = useMemo(() => {\n const map: Record<string, WebhookConnection> = {};\n WEBHOOK_CONNECTIONS.forEach((connection) => {\n map[connection.id] = connection;\n });\n return map;\n }, []);\n\n const filterData = useMemo(() => {\n // The Repository options narrow to the connection(s) currently selected in\n // the Connection filter; with no connection selected, every repository is\n // offered. Displayed as \"path (connection name)\" (matching the project\n // \"...\" menu Repositories list) and sorted by repository path.\n const selectedConnections = filters.connection ?? [];\n const repositorySubmenu = WEBHOOK_REPOSITORIES.filter(\n (repository) =>\n selectedConnections.length === 0 ||\n selectedConnections.includes(repository.connectionId)\n )\n .slice()\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((repository) => ({\n id: repository.id,\n name: `${repository.path} (${\n connectionsById[repository.connectionId]?.name ?? \"Unknown\"\n })`,\n }));\n\n return [\n {\n id: \"connection\",\n title: \"Connection\",\n submenu: WEBHOOK_CONNECTIONS.map((connection) => ({\n id: connection.id,\n name: connection.name,\n })),\n },\n {\n id: \"repository\",\n title: \"Repository\",\n searchPlaceholder: \"Search repositories\",\n disableInternalSort: true,\n submenu: repositorySubmenu,\n },\n {\n id: \"event_type\",\n title: \"Event Type\",\n submenu: Array.from(\n new Set(WEBHOOK_LOGS.map((log) => log.eventKind))\n ).map((eventKind) => ({\n id: eventKind,\n name: EVENT_KIND_LABELS[eventKind],\n })),\n },\n {\n id: \"status\",\n title: \"Processing Status\",\n submenu: (Object.keys(STATUS_LABELS) as WebhookStatus[]).map(\n (status) => ({ id: status, name: STATUS_LABELS[status] })\n ),\n },\n ];\n }, [filters.connection, connectionsById]);\n\n const visibleLogs = useMemo(() => {\n const byConnection = filters.connection ?? [];\n const byRepository = filters.repository ?? [];\n const byEvent = filters.event_type ?? [];\n const byStatus = filters.status ?? [];\n\n return WEBHOOK_LOGS.filter((log) => {\n if (byConnection.length && !byConnection.includes(log.connectionId)) {\n return false;\n }\n if (byRepository.length && !byRepository.includes(log.repositoryId)) {\n return false;\n }\n if (byEvent.length && !byEvent.includes(log.eventKind)) {\n return false;\n }\n if (byStatus.length && !byStatus.includes(log.status)) {\n return false;\n }\n return true;\n }).sort((a, b) => b.receivedAt - a.receivedAt);\n }, [filters]);\n\n // When the Connection filter narrows, drop any selected repositories that no\n // longer belong to a selected connection — otherwise a stale repository\n // selection would silently filter every log out.\n const handleFiltersChange = useCallback((next: SelectedType) => {\n const selectedConnections = next.connection ?? [];\n const selectedRepositories = next.repository ?? [];\n\n if (selectedConnections.length && selectedRepositories.length) {\n const allowedRepositoryIds = new Set(\n WEBHOOK_REPOSITORIES.filter((repository) =>\n selectedConnections.includes(repository.connectionId)\n ).map((repository) => repository.id)\n );\n const prunedRepositories = selectedRepositories.filter((id) =>\n allowedRepositoryIds.has(id)\n );\n\n if (prunedRepositories.length !== selectedRepositories.length) {\n const updated = { ...next };\n if (prunedRepositories.length) {\n updated.repository = prunedRepositories;\n } else {\n delete updated.repository;\n }\n setFilters(updated);\n return;\n }\n }\n\n setFilters(next);\n }, []);\n\n return (\n <WebhookLogsDialogStyled\n open={open}\n onClose={onClose}\n enableBackgroundClick\n >\n <Dialog.Title disableDefaultHeading>\n <DialogTitleBar>\n <Header3>Webhook Logs</Header3>\n <div className=\"title-actions\">\n <Filter\n data={filterData}\n selected={filters}\n label=\"Filter\"\n clearAllText=\"Clear All\"\n noResultText=\"No results\"\n emptyFilterText=\"No filters to show\"\n onChange={handleFiltersChange}\n />\n <IconButton variant=\"text gray\" onClick={onClose}>\n <CancelCrossIcon />\n </IconButton>\n </div>\n </DialogTitleBar>\n </Dialog.Title>\n <Dialog.ContentDivider />\n <Dialog.Content>\n {visibleLogs.length > 0 ? (\n <>\n <LogListHeader>\n <Caption2 className=\"lh-conn\" color=\"secondary\" weight=\"bold\">\n CONNECTION\n </Caption2>\n <Caption2 className=\"lh-event\" color=\"secondary\" weight=\"bold\">\n EVENT TYPE\n </Caption2>\n <Caption2 className=\"lh-status\" color=\"secondary\" weight=\"bold\">\n STATUS\n </Caption2>\n <Caption2 className=\"lh-outcomes\" color=\"secondary\" weight=\"bold\">\n OUTCOMES\n </Caption2>\n </LogListHeader>\n {visibleLogs.map((log) => (\n <LogRow\n key={log.id}\n log={log}\n connection={connectionsById[log.connectionId]}\n />\n ))}\n </>\n ) : (\n <EmptyLogs>\n <Body2 color=\"tertiary\">\n No webhook logs match the selected filters.\n </Body2>\n </EmptyLogs>\n )}\n </Dialog.Content>\n </WebhookLogsDialogStyled>\n );\n};\n"],"mappings":"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","ignoreList":[]}