@ynput/ayon-frontend-shared 0.3.49 → 0.3.51
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.
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +13 -11
- package/dist/Slicer.es.js.map +1 -1
- package/dist/_virtual/index.cjs10.js +1 -1
- package/dist/_virtual/index.cjs11.js +1 -1
- package/dist/_virtual/index.cjs12.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.es10.js +3 -3
- package/dist/_virtual/index.es11.js +5 -5
- package/dist/_virtual/index.es12.js +5 -5
- package/dist/_virtual/index.es5.js +5 -2
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/_virtual/index.es6.js +2 -5
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +112 -109
- package/dist/components.es.js.map +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js +1 -1
- package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/graphql.es.js +1 -1
- package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js +56 -44
- package/dist/shared/src/api/queries/columnStats/columnStats.es.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js +1 -1
- package/dist/shared/src/api/queries/columnStats/groupCounts.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/columnStats/groupCounts.es.js +10 -8
- package/dist/shared/src/api/queries/columnStats/groupCounts.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +220 -216
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelMoreMenu/hooks/useMenuOptions.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js +2 -2
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js +138 -127
- package/dist/shared/src/containers/Feed/components/FeedSearchFilter.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +56 -55
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +249 -254
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupCounts.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +41 -40
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -2
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js +55 -47
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js +319 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerCounts.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +118 -104
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +57 -55
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.cjs.js +1 -1
- package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
- package/dist/shared/src/util/confirmDelete.es.js +28 -24
- package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/containers/Feed/components/FeedSearchFilter.d.ts +2 -2
- package/dist/types/containers/ProjectTreeTable/hooks/useGroupCounts.d.ts +2 -3
- package/dist/types/containers/ProjectTreeTable/types/overviewContext.d.ts +8 -0
- package/dist/types/containers/ProjectTreeTable/types/table.d.ts +0 -1
- package/dist/types/containers/SimpleTable/SimpleTable.types.d.ts +1 -0
- package/dist/types/containers/Slicer/components/Slicer.d.ts +2 -0
- package/dist/types/containers/Slicer/hooks/index.d.ts +1 -0
- package/dist/types/containers/Slicer/hooks/useSlicerCounts.d.ts +17 -0
- package/dist/types/containers/Slicer/hooks/useTableDataBySlice.d.ts +5 -1
- package/dist/types/util/confirmDelete.d.ts +3 -1
- package/dist/util.cjs.js +1 -1
- package/dist/util.es.js +77 -76
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { useMemo as
|
|
1
|
+
import { j as c } from "../../../../../_virtual/jsx-runtime.es.js";
|
|
2
|
+
import { forwardRef as k, useMemo as d, useState as w, useRef as E, useEffect as F } from "react";
|
|
3
3
|
import { SearchFilter as A } from "@ynput/ayon-react-components";
|
|
4
|
-
import
|
|
5
|
-
import { feedFilterToClientFilters as
|
|
4
|
+
import O from "styled-components";
|
|
5
|
+
import { feedFilterToClientFilters as j, clientFiltersToFeedFilter as L } from "../helpers/feedFilterAdapter.es.js";
|
|
6
6
|
import { generateDateOptions as N } from "../../../components/SearchFilter/filterDates.es.js";
|
|
7
7
|
import "lodash";
|
|
8
8
|
import "react-toastify";
|
|
@@ -299,7 +299,7 @@ import "../../ListTable/ListTable.styled.es.js";
|
|
|
299
299
|
import "../../../context/DeleteEntitiesContext.es.js";
|
|
300
300
|
import { useDateRangeFilter as q } from "../../../components/SearchFilter/useDateRangeFilter.es.js";
|
|
301
301
|
import { CustomDateRangeDialog as I } from "../../../components/SearchFilter/CustomDateRangeDialog.es.js";
|
|
302
|
-
const
|
|
302
|
+
const $ = O.div`
|
|
303
303
|
padding: 4px 8px;
|
|
304
304
|
padding-bottom: 0;
|
|
305
305
|
filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.25));
|
|
@@ -314,136 +314,147 @@ const L = j.div`
|
|
|
314
314
|
opacity: 0.5;
|
|
315
315
|
pointer-events: none;
|
|
316
316
|
}
|
|
317
|
-
`,
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
317
|
+
`, B = k(
|
|
318
|
+
({
|
|
319
|
+
feedFilter: u,
|
|
320
|
+
setFeedFilter: _,
|
|
321
|
+
users: h,
|
|
322
|
+
categories: n,
|
|
323
|
+
supportsReviewSession: f,
|
|
324
|
+
isLoading: y,
|
|
325
|
+
checklistCount: e,
|
|
326
|
+
onSearchTextChange: g
|
|
327
|
+
}) => {
|
|
328
|
+
const i = d(() => {
|
|
329
|
+
const t = (o, S, x) => ({
|
|
330
|
+
id: o,
|
|
331
|
+
label: S,
|
|
332
|
+
icon: x,
|
|
333
|
+
type: "boolean",
|
|
334
|
+
singleSelect: !0,
|
|
335
|
+
values: []
|
|
336
|
+
});
|
|
337
|
+
return [
|
|
338
|
+
t("comments", "Comments", "chat"),
|
|
339
|
+
t("versions", "Versions", "layers"),
|
|
340
|
+
t("updates", "Updates", "arrow_circle_right"),
|
|
341
|
+
t("checklists", "Checklists", "check_circle"),
|
|
342
|
+
t("has_attachments", "Attachments", "attach_file"),
|
|
343
|
+
...f ? [t("in_review_session", "Review session", "subscriptions")] : [],
|
|
344
|
+
...n.length ? [
|
|
345
|
+
{
|
|
346
|
+
id: "category",
|
|
347
|
+
label: "Category",
|
|
348
|
+
icon: "label",
|
|
349
|
+
type: "list_of_strings",
|
|
350
|
+
operator: "OR",
|
|
351
|
+
values: [
|
|
352
|
+
{ id: "__none__", label: "No category", icon: "crop_square" },
|
|
353
|
+
...n.map((o) => ({
|
|
354
|
+
id: o.name,
|
|
355
|
+
label: o.name,
|
|
356
|
+
icon: "crop_square",
|
|
357
|
+
color: o.color
|
|
358
|
+
}))
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
] : [],
|
|
344
362
|
{
|
|
345
|
-
id: "
|
|
346
|
-
label: "
|
|
347
|
-
icon: "
|
|
363
|
+
id: "author",
|
|
364
|
+
label: "User",
|
|
365
|
+
icon: "person",
|
|
348
366
|
type: "list_of_strings",
|
|
349
367
|
operator: "OR",
|
|
350
|
-
values:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
368
|
+
values: h.map((o) => ({
|
|
369
|
+
id: o.name,
|
|
370
|
+
label: o.attrib?.fullName || o.name,
|
|
371
|
+
img: `/api/users/${o.name}/avatar`
|
|
372
|
+
}))
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
id: "createdAt",
|
|
376
|
+
label: "Posted date",
|
|
377
|
+
icon: "calendar_today",
|
|
378
|
+
type: "datetime",
|
|
379
|
+
values: N()
|
|
359
380
|
}
|
|
360
|
-
]
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
onSearchChange: R,
|
|
415
|
-
quickActions: y,
|
|
416
|
-
placeholder: "Search and filter feed...",
|
|
417
|
-
pt: {
|
|
418
|
-
searchBar: {
|
|
419
|
-
onClickCapture: (t) => o.handleSearchBarClickCapture(t, p)
|
|
420
|
-
},
|
|
421
|
-
dropdown: {
|
|
422
|
-
pt: {
|
|
423
|
-
item: {
|
|
424
|
-
onClick: (t) => o.handleDropdownItemClick(t, p, i)
|
|
381
|
+
];
|
|
382
|
+
}, [h, n, f]);
|
|
383
|
+
let s = "";
|
|
384
|
+
e?.total && e.total > 0 && (s = `${e.checked}/${e.total}`);
|
|
385
|
+
const v = d(
|
|
386
|
+
() => ["comments", { id: "checklists", label: s, tooltip: "Checklists" }],
|
|
387
|
+
[s]
|
|
388
|
+
), l = d(
|
|
389
|
+
() => j(u, i),
|
|
390
|
+
[u, i]
|
|
391
|
+
), [m, C] = w(l), r = q(), p = E(null);
|
|
392
|
+
F(() => {
|
|
393
|
+
C(l);
|
|
394
|
+
}, [JSON.stringify(l)]), F(() => {
|
|
395
|
+
const t = (a) => {
|
|
396
|
+
const o = p.current?.getContainerElement();
|
|
397
|
+
o && !o.contains(a.target) && p.current?.close();
|
|
398
|
+
};
|
|
399
|
+
return document.addEventListener("mousedown", t), () => {
|
|
400
|
+
document.removeEventListener("mousedown", t);
|
|
401
|
+
};
|
|
402
|
+
}, [p]);
|
|
403
|
+
const b = (t) => {
|
|
404
|
+
_(L(t)), g?.("");
|
|
405
|
+
}, D = (t) => {
|
|
406
|
+
r.wrapFilterChange(t, m, C);
|
|
407
|
+
}, R = (t, a) => {
|
|
408
|
+
a || g?.(t);
|
|
409
|
+
};
|
|
410
|
+
return /* @__PURE__ */ c.jsxs($, { className: y ? "loading" : void 0, children: [
|
|
411
|
+
/* @__PURE__ */ c.jsx(
|
|
412
|
+
A,
|
|
413
|
+
{
|
|
414
|
+
ref: p,
|
|
415
|
+
compact: !0,
|
|
416
|
+
options: i,
|
|
417
|
+
filters: m,
|
|
418
|
+
onChange: D,
|
|
419
|
+
onFinish: b,
|
|
420
|
+
enableGlobalSearch: !0,
|
|
421
|
+
enableMultipleSameFilters: !1,
|
|
422
|
+
enableAutosuggestion: !0,
|
|
423
|
+
onSearchChange: R,
|
|
424
|
+
quickActions: v,
|
|
425
|
+
placeholder: "Search and filter feed...",
|
|
426
|
+
pt: {
|
|
427
|
+
searchBar: {
|
|
428
|
+
onClickCapture: (t) => r.handleSearchBarClickCapture(t, m)
|
|
429
|
+
},
|
|
430
|
+
dropdown: {
|
|
431
|
+
pt: {
|
|
432
|
+
item: {
|
|
433
|
+
onClick: (t) => r.handleDropdownItemClick(t, m, i)
|
|
434
|
+
}
|
|
425
435
|
}
|
|
426
436
|
}
|
|
427
437
|
}
|
|
428
438
|
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
)
|
|
444
|
-
|
|
445
|
-
|
|
439
|
+
),
|
|
440
|
+
/* @__PURE__ */ c.jsx(
|
|
441
|
+
I,
|
|
442
|
+
{
|
|
443
|
+
isOpen: !!r.customRangeFilterId,
|
|
444
|
+
header: i.find((t) => t.id === r.customRangeFilterId?.split("__")[0])?.label ?? "Custom range",
|
|
445
|
+
startDate: r.customStartDate,
|
|
446
|
+
endDate: r.customEndDate,
|
|
447
|
+
onStartDateChange: r.setCustomStartDate,
|
|
448
|
+
onEndDateChange: r.setCustomEndDate,
|
|
449
|
+
onApply: () => r.handleCustomRangeApply(m, i, b, p),
|
|
450
|
+
onClose: r.handleCustomRangeClose
|
|
451
|
+
}
|
|
452
|
+
)
|
|
453
|
+
] });
|
|
454
|
+
}
|
|
455
|
+
);
|
|
456
|
+
B.displayName = "FeedSearchFilter";
|
|
446
457
|
export {
|
|
447
|
-
|
|
458
|
+
B as default
|
|
448
459
|
};
|
|
449
460
|
//# sourceMappingURL=FeedSearchFilter.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedSearchFilter.es.js","sources":["../../../../../../src/containers/Feed/components/FeedSearchFilter.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n SearchFilter,\n Filter,\n Option,\n SearchFilterQuickAction,\n SearchFilterRef,\n} from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { type QueryFilter, type ActivityCategory, ChecklistCount } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { feedFilterToClientFilters, clientFiltersToFeedFilter } from '../helpers/feedFilterAdapter'\nimport { generateDateOptions } from '@shared/components/SearchFilter/filterDates'\nimport { useDateRangeFilter, CustomDateRangeDialog } from '@shared/components/SearchFilter'\n\nconst Wrapper = styled.div`\n padding: 4px 8px;\n padding-bottom: 0;\n filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.25));\n z-index: 10;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n &.loading {\n opacity: 0.5;\n pointer-events: none;\n }\n`\n\ninterface FeedSearchFilterProps {\n feedFilter: QueryFilter\n setFeedFilter: (filter: QueryFilter) => void\n users: ActivityUser[]\n categories: ActivityCategory[]\n supportsReviewSession: boolean\n isLoading?: boolean\n checklistCount?: ChecklistCount | undefined\n onSearchTextChange?: (text: string) => void\n}\n\nconst FeedSearchFilter: FC<FeedSearchFilterProps> = ({\n feedFilter,\n setFeedFilter,\n users,\n categories,\n supportsReviewSession,\n isLoading,\n checklistCount,\n onSearchTextChange,\n}) => {\n const options: Option[] = useMemo(() => {\n // no values -> ARC adds it in one click (select \"Yes\"), no value-panel prompt\n const boolean = (id: string, label: string, icon: string): Option => ({\n id,\n label,\n icon,\n type: 'boolean',\n singleSelect: true,\n values: [],\n })\n\n const opts: Option[] = [\n boolean('comments', 'Comments', 'chat'),\n boolean('versions', 'Versions', 'layers'),\n boolean('updates', 'Updates', 'arrow_circle_right'),\n boolean('checklists', 'Checklists', 'check_circle'),\n boolean('has_attachments', 'Attachments', 'attach_file'),\n ...(supportsReviewSession\n ? [boolean('in_review_session', 'Review session', 'subscriptions')]\n : []),\n ...(categories.length\n ? [\n {\n id: 'category',\n label: 'Category',\n icon: 'label',\n type: 'list_of_strings' as const,\n operator: 'OR' as const,\n values: [\n { id: '__none__', label: 'No category', icon: 'crop_square' },\n ...categories.map((c) => ({\n id: c.name,\n label: c.name,\n icon: 'crop_square',\n color: c.color,\n })),\n ],\n },\n ]\n : []),\n {\n id: 'author',\n label: 'User',\n icon: 'person',\n type: 'list_of_strings' as const,\n operator: 'OR' as const,\n values: users.map((u) => ({\n id: u.name,\n label: u.attrib?.fullName || u.name,\n img: `/api/users/${u.name}/avatar`,\n })),\n },\n {\n id: 'createdAt',\n label: 'Posted date',\n icon: 'calendar_today',\n type: 'datetime',\n values: generateDateOptions(),\n },\n ]\n\n return opts\n }, [users, categories, supportsReviewSession])\n\n let checklistsLabel: string = ''\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // @ts-expect-error - using string is fine\n const quickActions: SearchFilterQuickAction[] = useMemo(\n () => ['comments', { id: 'checklists', label: checklistsLabel, tooltip: 'Checklists' }],\n [checklistsLabel],\n )\n\n const filters = useMemo(\n () => feedFilterToClientFilters(feedFilter, options),\n [feedFilter, options],\n )\n\n const [localFilters, setLocalFilters] = useState<Filter[]>(filters)\n const searchFilterRef = useRef<SearchFilterRef>(null)\n\n const dateRange = useDateRangeFilter()\n\n useEffect(() => {\n setLocalFilters(filters)\n }, [JSON.stringify(filters)])\n\n const handleFinish = (newFilters: Filter[]) => {\n setFeedFilter(clientFiltersToFeedFilter(newFilters))\n onSearchTextChange?.('')\n }\n\n const handleFilterChange = (newFilters: Filter[]) => {\n dateRange.wrapFilterChange(newFilters, localFilters, setLocalFilters)\n }\n\n const handleLiveSearch = (value: string, filter: string | null) => {\n // only for root level searching\n if (!!filter) return\n onSearchTextChange?.(value)\n }\n\n return (\n <Wrapper className={isLoading ? 'loading' : undefined}>\n <SearchFilter\n ref={searchFilterRef}\n compact\n options={options}\n filters={localFilters}\n onChange={handleFilterChange}\n onFinish={handleFinish}\n enableGlobalSearch\n enableMultipleSameFilters={false}\n enableAutosuggestion={true}\n onSearchChange={handleLiveSearch}\n quickActions={quickActions}\n placeholder=\"Search and filter feed...\"\n pt={{\n searchBar: {\n onClickCapture: (e) => dateRange.handleSearchBarClickCapture(e, localFilters),\n },\n dropdown: {\n pt: {\n item: {\n onClick: (e) => dateRange.handleDropdownItemClick(e, localFilters, options),\n },\n },\n },\n }}\n />\n <CustomDateRangeDialog\n isOpen={!!dateRange.customRangeFilterId}\n header={\n options.find((o) => o.id === dateRange.customRangeFilterId?.split('__')[0])?.label ??\n 'Custom range'\n }\n startDate={dateRange.customStartDate}\n endDate={dateRange.customEndDate}\n onStartDateChange={dateRange.setCustomStartDate}\n onEndDateChange={dateRange.setCustomEndDate}\n onApply={() =>\n dateRange.handleCustomRangeApply(localFilters, options, handleFinish, searchFilterRef)\n }\n onClose={dateRange.handleCustomRangeClose}\n />\n </Wrapper>\n )\n}\n\nexport default FeedSearchFilter\n"],"names":["Wrapper","styled","FeedSearchFilter","feedFilter","setFeedFilter","users","categories","supportsReviewSession","isLoading","checklistCount","onSearchTextChange","options","useMemo","boolean","id","label","icon","c","u","generateDateOptions","checklistsLabel","quickActions","filters","feedFilterToClientFilters","localFilters","setLocalFilters","useState","searchFilterRef","useRef","dateRange","useDateRangeFilter","useEffect","handleFinish","newFilters","clientFiltersToFeedFilter","handleFilterChange","handleLiveSearch","value","filter","jsxs","jsx","SearchFilter","e","CustomDateRangeDialog","o"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FeedSearchFilter.es.js","sources":["../../../../../../src/containers/Feed/components/FeedSearchFilter.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n SearchFilter,\n Filter,\n Option,\n SearchFilterQuickAction,\n SearchFilterRef,\n} from '@ynput/ayon-react-components'\nimport styled from 'styled-components'\nimport { type QueryFilter, type ActivityCategory, ChecklistCount } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { feedFilterToClientFilters, clientFiltersToFeedFilter } from '../helpers/feedFilterAdapter'\nimport { generateDateOptions } from '@shared/components/SearchFilter/filterDates'\nimport { useDateRangeFilter, CustomDateRangeDialog } from '@shared/components/SearchFilter'\n\nconst Wrapper = styled.div`\n padding: 4px 8px;\n padding-bottom: 0;\n filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.25));\n z-index: 10;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n\n &.loading {\n opacity: 0.5;\n pointer-events: none;\n }\n`\n\ninterface FeedSearchFilterProps {\n feedFilter: QueryFilter\n setFeedFilter: (filter: QueryFilter) => void\n users: ActivityUser[]\n categories: ActivityCategory[]\n supportsReviewSession: boolean\n isLoading?: boolean\n checklistCount?: ChecklistCount | undefined\n onSearchTextChange?: (text: string) => void\n}\n\nconst FeedSearchFilter = forwardRef<SearchFilterRef, FeedSearchFilterProps>(\n ({\n feedFilter,\n setFeedFilter,\n users,\n categories,\n supportsReviewSession,\n isLoading,\n checklistCount,\n onSearchTextChange,\n }) => {\n const options: Option[] = useMemo(() => {\n // no values -> ARC adds it in one click (select \"Yes\"), no value-panel prompt\n const boolean = (id: string, label: string, icon: string): Option => ({\n id,\n label,\n icon,\n type: 'boolean',\n singleSelect: true,\n values: [],\n })\n\n const opts: Option[] = [\n boolean('comments', 'Comments', 'chat'),\n boolean('versions', 'Versions', 'layers'),\n boolean('updates', 'Updates', 'arrow_circle_right'),\n boolean('checklists', 'Checklists', 'check_circle'),\n boolean('has_attachments', 'Attachments', 'attach_file'),\n ...(supportsReviewSession\n ? [boolean('in_review_session', 'Review session', 'subscriptions')]\n : []),\n ...(categories.length\n ? [\n {\n id: 'category',\n label: 'Category',\n icon: 'label',\n type: 'list_of_strings' as const,\n operator: 'OR' as const,\n values: [\n { id: '__none__', label: 'No category', icon: 'crop_square' },\n ...categories.map((c) => ({\n id: c.name,\n label: c.name,\n icon: 'crop_square',\n color: c.color,\n })),\n ],\n },\n ]\n : []),\n {\n id: 'author',\n label: 'User',\n icon: 'person',\n type: 'list_of_strings' as const,\n operator: 'OR' as const,\n values: users.map((u) => ({\n id: u.name,\n label: u.attrib?.fullName || u.name,\n img: `/api/users/${u.name}/avatar`,\n })),\n },\n {\n id: 'createdAt',\n label: 'Posted date',\n icon: 'calendar_today',\n type: 'datetime',\n values: generateDateOptions(),\n },\n ]\n\n return opts\n }, [users, categories, supportsReviewSession])\n\n let checklistsLabel: string = ''\n if (checklistCount?.total && checklistCount.total > 0) {\n checklistsLabel = `${checklistCount.checked}/${checklistCount.total}`\n }\n\n // @ts-expect-error - using string is fine\n const quickActions: SearchFilterQuickAction[] = useMemo(\n () => ['comments', { id: 'checklists', label: checklistsLabel, tooltip: 'Checklists' }],\n [checklistsLabel],\n )\n\n const filters = useMemo(\n () => feedFilterToClientFilters(feedFilter, options),\n [feedFilter, options],\n )\n\n const [localFilters, setLocalFilters] = useState<Filter[]>(filters)\n\n const dateRange = useDateRangeFilter()\n\n const searchFilterRef = useRef<SearchFilterRef>(null)\n\n useEffect(() => {\n setLocalFilters(filters)\n }, [JSON.stringify(filters)])\n\n // close the search filter when clicking outside of it\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const filterContainer = searchFilterRef.current?.getContainerElement()\n // if the click is outside the search filter container, close it\n if (filterContainer && !filterContainer.contains(event.target as Node)) {\n searchFilterRef.current?.close()\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [searchFilterRef])\n\n const handleFinish = (newFilters: Filter[]) => {\n setFeedFilter(clientFiltersToFeedFilter(newFilters))\n onSearchTextChange?.('')\n }\n\n const handleFilterChange = (newFilters: Filter[]) => {\n dateRange.wrapFilterChange(newFilters, localFilters, setLocalFilters)\n }\n\n const handleLiveSearch = (value: string, filter: string | null) => {\n // only for root level searching\n if (!!filter) return\n onSearchTextChange?.(value)\n }\n\n return (\n <Wrapper className={isLoading ? 'loading' : undefined}>\n <SearchFilter\n ref={searchFilterRef}\n compact\n options={options}\n filters={localFilters}\n onChange={handleFilterChange}\n onFinish={handleFinish}\n enableGlobalSearch\n enableMultipleSameFilters={false}\n enableAutosuggestion={true}\n onSearchChange={handleLiveSearch}\n quickActions={quickActions}\n placeholder=\"Search and filter feed...\"\n pt={{\n searchBar: {\n onClickCapture: (e) => dateRange.handleSearchBarClickCapture(e, localFilters),\n },\n dropdown: {\n pt: {\n item: {\n onClick: (e) => dateRange.handleDropdownItemClick(e, localFilters, options),\n },\n },\n },\n }}\n />\n <CustomDateRangeDialog\n isOpen={!!dateRange.customRangeFilterId}\n header={\n options.find((o) => o.id === dateRange.customRangeFilterId?.split('__')[0])?.label ??\n 'Custom range'\n }\n startDate={dateRange.customStartDate}\n endDate={dateRange.customEndDate}\n onStartDateChange={dateRange.setCustomStartDate}\n onEndDateChange={dateRange.setCustomEndDate}\n onApply={() =>\n dateRange.handleCustomRangeApply(localFilters, options, handleFinish, searchFilterRef)\n }\n onClose={dateRange.handleCustomRangeClose}\n />\n </Wrapper>\n )\n },\n)\n\nFeedSearchFilter.displayName = 'FeedSearchFilter'\n\nexport default FeedSearchFilter\n"],"names":["Wrapper","styled","FeedSearchFilter","forwardRef","feedFilter","setFeedFilter","users","categories","supportsReviewSession","isLoading","checklistCount","onSearchTextChange","options","useMemo","boolean","id","label","icon","c","u","generateDateOptions","checklistsLabel","quickActions","filters","feedFilterToClientFilters","localFilters","setLocalFilters","useState","dateRange","useDateRangeFilter","searchFilterRef","useRef","useEffect","handleClickOutside","event","filterContainer","handleFinish","newFilters","clientFiltersToFeedFilter","handleFilterChange","handleLiveSearch","value","filter","jsxs","jsx","SearchFilter","e","CustomDateRangeDialog","o"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedContext.cjs.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\nimport { buildBackendFilter } from '../helpers/buildBackendFilter'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n useGetActivityCategoriesQuery,\n teamsApi,\n useGetEntitiesChecklistsQuery,\n} from '@shared/api'\nimport type { ActivityCategory, ChecklistCount, SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { FeedFilter, PowerpackFeature, useDetailsPanelContext } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // feedFilter - the current filter within the feed tab\n feedFilter?: FeedFilter\n setFeedFilter?: (filter: FeedFilter) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n // local UI state\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n isGuest: boolean\n // team membership for current user\n userTeamNames: string[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n // categories data\n categories: ActivityCategory[]\n // checklists count\n checklistCount: ChecklistCount | undefined\n feedFilter: FeedFilter\n setFeedFilter: (filter: FeedFilter) => void\n backendFilter: string | undefined\n searchText: string\n setSearchText: (text: string) => void\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { isGuest } = useDetailsPanelContext()\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n\n // Fetch teams with members to derive which teams the current user belongs to\n const { data: teams = [] } = teamsApi.useGetTeamsQuery(\n { projectName: props.projectName, showMembers: true },\n { skip: !props.projectName },\n )\n const userTeamNames = useMemo(\n () => teams.filter((t) => t.members?.some((m) => m.name === props.userName)).map((t) => t.name),\n [teams, props.userName],\n )\n\n const [feedFilterInternal, setFeedFilterInternal] = useState<FeedFilter>({\n operator: 'and',\n conditions: [],\n })\n\n const [searchText, setSearchText] = useState<string>('')\n\n // use props if provided, otherwise use local state\n const feedFilter = props.feedFilter ?? feedFilterInternal\n const setFeedFilter = props.setFeedFilter ?? setFeedFilterInternal\n\n const [editingId, setEditingId] = useState<EditingState>(null)\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(feedFilter)\n const backendFilter = useMemo(() => buildBackendFilter(feedFilter), [feedFilter])\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: feedFilter,\n backendFilter,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n const skip =\n !props.projectName ||\n !refTooltip?.id ||\n refTooltip.type === 'user' ||\n refTooltip.type === 'team'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !editingId },\n )\n\n // get comment categories for this project and user\n const { data: categories = [] } = useGetActivityCategoriesQuery({\n projectName: props.projectName,\n })\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: props.projectName,\n entityIds: props.entities.map((e) => e.id),\n },\n { skip: !props.projectName || !props.entities.length },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n categories,\n checklistCount,\n users,\n isUpdatingActivity,\n userTeamNames,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n feedFilter,\n setFeedFilter,\n backendFilter,\n searchText,\n setSearchText,\n isGuest,\n editingId,\n setEditingId,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["FEED_NEW_COMMENT","FeedContext","createContext","FeedProvider","children","props","isGuest","useDetailsPanelContext","users","useGetActivityUsersQuery","teams","teamsApi","userTeamNames","useMemo","t","m","feedFilterInternal","setFeedFilterInternal","useState","searchText","setSearchText","feedFilter","setFeedFilter","editingId","setEditingId","refTooltip","setRefTooltip","createEntityActivityMutation","isLoadingCreate","useCreateEntityActivityMutation","updateActivityMutation","isLoadingUpdate","useUpdateActivityMutation","deleteActivityMutation","isLoadingDelete","useDeleteActivityMutation","isUpdatingActivity","createEntityActivity","args","updateActivity","deleteActivity","createReactionToActivity","useCreateReactionToActivityMutation","deleteReactionToActivity","useDeleteReactionToActivityMutation","createReaction","deleteReaction","activityTypes","getFilterActivityTypes","backendFilter","buildBackendFilter","activitiesDataProps","useGetFeedActivitiesData","skip","entityTooltipData","isFetchingTooltip","useGetEntityTooltipQuery","mentionSuggestionsData","useGetEntityMentionsQuery","categories","useGetActivityCategoriesQuery","checklistCount","useGetEntitiesChecklistsQuery","e","jsx","useFeedContext","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FeedContext.cjs.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\nimport { buildBackendFilter } from '../helpers/buildBackendFilter'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n useGetActivityCategoriesQuery,\n teamsApi,\n useGetEntitiesChecklistsQuery,\n} from '@shared/api'\nimport type { ActivityCategory, ChecklistCount, SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { FeedFilter, useDetailsPanelContext } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // feedFilter - the current filter within the feed tab\n feedFilter?: FeedFilter\n setFeedFilter?: (filter: FeedFilter) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n // local UI state\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n isGuest: boolean\n // team membership for current user\n userTeamNames: string[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n // categories data\n categories: ActivityCategory[]\n // checklists count\n checklistCount: ChecklistCount | undefined\n feedFilter: FeedFilter\n setFeedFilter: (filter: FeedFilter) => void\n backendFilter: string | undefined\n searchText: string\n setSearchText: (text: string) => void\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { isGuest } = useDetailsPanelContext()\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n\n // Fetch teams with members to derive which teams the current user belongs to\n const { data: teams = [] } = teamsApi.useGetTeamsQuery(\n { projectName: props.projectName, showMembers: true },\n { skip: !props.projectName },\n )\n const userTeamNames = useMemo(\n () => teams.filter((t) => t.members?.some((m) => m.name === props.userName)).map((t) => t.name),\n [teams, props.userName],\n )\n\n const [feedFilterInternal, setFeedFilterInternal] = useState<FeedFilter>({\n operator: 'and',\n conditions: [],\n })\n\n const [searchText, setSearchText] = useState<string>('')\n\n // use props if provided, otherwise use local state\n const feedFilter = props.feedFilter ?? feedFilterInternal\n const setFeedFilter = props.setFeedFilter ?? setFeedFilterInternal\n\n const [editingId, setEditingId] = useState<EditingState>(null)\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(feedFilter)\n const backendFilter = useMemo(() => buildBackendFilter(feedFilter), [feedFilter])\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: feedFilter,\n backendFilter,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n const skip =\n !props.projectName ||\n !refTooltip?.id ||\n refTooltip.type === 'user' ||\n refTooltip.type === 'team'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !editingId },\n )\n\n // get comment categories for this project and user\n const { data: categories = [] } = useGetActivityCategoriesQuery({\n projectName: props.projectName,\n })\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: props.projectName,\n entityIds: props.entities.map((e) => e.id),\n },\n { skip: !props.projectName || !props.entities.length },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n categories,\n checklistCount,\n users,\n isUpdatingActivity,\n userTeamNames,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n feedFilter,\n setFeedFilter,\n backendFilter,\n searchText,\n setSearchText,\n isGuest,\n editingId,\n setEditingId,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["FEED_NEW_COMMENT","FeedContext","createContext","FeedProvider","children","props","isGuest","useDetailsPanelContext","users","useGetActivityUsersQuery","teams","teamsApi","userTeamNames","useMemo","t","m","feedFilterInternal","setFeedFilterInternal","useState","searchText","setSearchText","feedFilter","setFeedFilter","editingId","setEditingId","refTooltip","setRefTooltip","createEntityActivityMutation","isLoadingCreate","useCreateEntityActivityMutation","updateActivityMutation","isLoadingUpdate","useUpdateActivityMutation","deleteActivityMutation","isLoadingDelete","useDeleteActivityMutation","isUpdatingActivity","createEntityActivity","args","updateActivity","deleteActivity","createReactionToActivity","useCreateReactionToActivityMutation","deleteReactionToActivity","useDeleteReactionToActivityMutation","createReaction","deleteReaction","activityTypes","getFilterActivityTypes","backendFilter","buildBackendFilter","activitiesDataProps","useGetFeedActivitiesData","skip","entityTooltipData","isFetchingTooltip","useGetEntityTooltipQuery","mentionSuggestionsData","useGetEntityMentionsQuery","categories","useGetActivityCategoriesQuery","checklistCount","useGetEntitiesChecklistsQuery","e","jsx","useFeedContext","context","useContext"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedContext.es.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\nimport { buildBackendFilter } from '../helpers/buildBackendFilter'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n useGetActivityCategoriesQuery,\n teamsApi,\n useGetEntitiesChecklistsQuery,\n} from '@shared/api'\nimport type { ActivityCategory, ChecklistCount, SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { FeedFilter, PowerpackFeature, useDetailsPanelContext } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // feedFilter - the current filter within the feed tab\n feedFilter?: FeedFilter\n setFeedFilter?: (filter: FeedFilter) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n // local UI state\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n isGuest: boolean\n // team membership for current user\n userTeamNames: string[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n // categories data\n categories: ActivityCategory[]\n // checklists count\n checklistCount: ChecklistCount | undefined\n feedFilter: FeedFilter\n setFeedFilter: (filter: FeedFilter) => void\n backendFilter: string | undefined\n searchText: string\n setSearchText: (text: string) => void\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { isGuest } = useDetailsPanelContext()\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n\n // Fetch teams with members to derive which teams the current user belongs to\n const { data: teams = [] } = teamsApi.useGetTeamsQuery(\n { projectName: props.projectName, showMembers: true },\n { skip: !props.projectName },\n )\n const userTeamNames = useMemo(\n () => teams.filter((t) => t.members?.some((m) => m.name === props.userName)).map((t) => t.name),\n [teams, props.userName],\n )\n\n const [feedFilterInternal, setFeedFilterInternal] = useState<FeedFilter>({\n operator: 'and',\n conditions: [],\n })\n\n const [searchText, setSearchText] = useState<string>('')\n\n // use props if provided, otherwise use local state\n const feedFilter = props.feedFilter ?? feedFilterInternal\n const setFeedFilter = props.setFeedFilter ?? setFeedFilterInternal\n\n const [editingId, setEditingId] = useState<EditingState>(null)\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(feedFilter)\n const backendFilter = useMemo(() => buildBackendFilter(feedFilter), [feedFilter])\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: feedFilter,\n backendFilter,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n const skip =\n !props.projectName ||\n !refTooltip?.id ||\n refTooltip.type === 'user' ||\n refTooltip.type === 'team'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !editingId },\n )\n\n // get comment categories for this project and user\n const { data: categories = [] } = useGetActivityCategoriesQuery({\n projectName: props.projectName,\n })\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: props.projectName,\n entityIds: props.entities.map((e) => e.id),\n },\n { skip: !props.projectName || !props.entities.length },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n categories,\n checklistCount,\n users,\n isUpdatingActivity,\n userTeamNames,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n feedFilter,\n setFeedFilter,\n backendFilter,\n searchText,\n setSearchText,\n isGuest,\n editingId,\n setEditingId,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["FEED_NEW_COMMENT","FeedContext","createContext","FeedProvider","children","props","isGuest","useDetailsPanelContext","users","useGetActivityUsersQuery","teams","teamsApi","userTeamNames","useMemo","t","m","feedFilterInternal","setFeedFilterInternal","useState","searchText","setSearchText","feedFilter","setFeedFilter","editingId","setEditingId","refTooltip","setRefTooltip","createEntityActivityMutation","isLoadingCreate","useCreateEntityActivityMutation","updateActivityMutation","isLoadingUpdate","useUpdateActivityMutation","deleteActivityMutation","isLoadingDelete","useDeleteActivityMutation","isUpdatingActivity","createEntityActivity","args","updateActivity","deleteActivity","createReactionToActivity","useCreateReactionToActivityMutation","deleteReactionToActivity","useDeleteReactionToActivityMutation","createReaction","deleteReaction","activityTypes","getFilterActivityTypes","backendFilter","buildBackendFilter","activitiesDataProps","useGetFeedActivitiesData","skip","entityTooltipData","isFetchingTooltip","useGetEntityTooltipQuery","mentionSuggestionsData","useGetEntityMentionsQuery","categories","useGetActivityCategoriesQuery","checklistCount","useGetEntitiesChecklistsQuery","e","jsx","useFeedContext","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FeedContext.es.js","sources":["../../../../../../src/containers/Feed/context/FeedContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react'\nimport useGetFeedActivitiesData from '../hooks/useGetFeedActivitiesData'\nimport { buildBackendFilter } from '../helpers/buildBackendFilter'\n\n// Queries\nimport {\n useCreateEntityActivityMutation,\n useDeleteActivityMutation,\n useUpdateActivityMutation,\n useCreateReactionToActivityMutation,\n useDeleteReactionToActivityMutation,\n useGetActivityUsersQuery,\n useGetEntityMentionsQuery,\n useGetEntityTooltipQuery,\n useGetActivityCategoriesQuery,\n teamsApi,\n useGetEntitiesChecklistsQuery,\n} from '@shared/api'\nimport type { ActivityCategory, ChecklistCount, SuggestRequest, SuggestResponse } from '@shared/api'\nimport { ActivityUser } from '../helpers/groupMinorActivities'\nimport { FeedFilter, useDetailsPanelContext } from '@shared/context'\nimport { getFilterActivityTypes } from '@shared/api'\n\nexport const FEED_NEW_COMMENT = '__new__' as const\n\nexport type EditingState = null | typeof FEED_NEW_COMMENT | string\n\n// Add type for the refTooltip\nexport interface RefTooltip {\n id: string | null\n type: string\n name: string\n label: string\n pos: {\n top: number\n left: number\n }\n}\n\nexport type FeedContextProps = {\n children: React.ReactNode\n projectName: string\n entityType: string\n activityTypes?: string[] | null\n entities: any[]\n projectInfo: any\n scope: string\n userName: string\n userFullName: string\n\n // annotations\n annotations?: Record<string, any>\n removeAnnotation?: (id: string) => void\n exportAnnotationComposite?: (id: string) => Promise<Blob | null>\n // feedFilter - the current filter within the feed tab\n feedFilter?: FeedFilter\n setFeedFilter?: (filter: FeedFilter) => void\n}\n\ninterface FeedContextType extends Omit<FeedContextProps, 'children'> {\n // local UI state\n editingId: EditingState\n setEditingId: (id: EditingState) => void\n // activities data props\n activitiesData: any[]\n isLoadingActivities: boolean\n isLoadingNew: boolean\n isLoadingNextPage: boolean\n hasNextPage: boolean\n loadNextPage?: () => Promise<any>\n // refTooltip state and functions\n refTooltip: RefTooltip | null\n setRefTooltip: (tooltip: RefTooltip | null) => void\n // tooltip data\n entityTooltipData: any\n isFetchingTooltip: boolean\n // query functions\n createEntityActivity: (args: any) => Promise<any>\n updateActivity: (args: any) => Promise<any>\n deleteActivity: (args: any) => Promise<any>\n createReaction: (args: any) => Promise<any>\n deleteReaction: (args: any) => Promise<any>\n isUpdatingActivity: boolean\n // users data\n users: ActivityUser[]\n isGuest: boolean\n // team membership for current user\n userTeamNames: string[]\n // mentions data\n mentionSuggestionsData: SuggestResponse\n // categories data\n categories: ActivityCategory[]\n // checklists count\n checklistCount: ChecklistCount | undefined\n feedFilter: FeedFilter\n setFeedFilter: (filter: FeedFilter) => void\n backendFilter: string | undefined\n searchText: string\n setSearchText: (text: string) => void\n}\n\nconst FeedContext = createContext<FeedContextType | undefined>(undefined)\n\nexport const FeedProvider = ({ children, ...props }: FeedContextProps) => {\n const { isGuest } = useDetailsPanelContext()\n const { data: users = [] } = useGetActivityUsersQuery({ projects: [props.projectName] })\n\n // Fetch teams with members to derive which teams the current user belongs to\n const { data: teams = [] } = teamsApi.useGetTeamsQuery(\n { projectName: props.projectName, showMembers: true },\n { skip: !props.projectName },\n )\n const userTeamNames = useMemo(\n () => teams.filter((t) => t.members?.some((m) => m.name === props.userName)).map((t) => t.name),\n [teams, props.userName],\n )\n\n const [feedFilterInternal, setFeedFilterInternal] = useState<FeedFilter>({\n operator: 'and',\n conditions: [],\n })\n\n const [searchText, setSearchText] = useState<string>('')\n\n // use props if provided, otherwise use local state\n const feedFilter = props.feedFilter ?? feedFilterInternal\n const setFeedFilter = props.setFeedFilter ?? setFeedFilterInternal\n\n const [editingId, setEditingId] = useState<EditingState>(null)\n const [refTooltip, setRefTooltip] = useState<RefTooltip | null>(null)\n\n // queries\n const [createEntityActivityMutation, { isLoading: isLoadingCreate }] =\n useCreateEntityActivityMutation()\n const [updateActivityMutation, { isLoading: isLoadingUpdate }] = useUpdateActivityMutation()\n const [deleteActivityMutation, { isLoading: isLoadingDelete }] = useDeleteActivityMutation()\n const isUpdatingActivity = isLoadingCreate || isLoadingUpdate || isLoadingDelete\n\n const createEntityActivity: FeedContextType['createEntityActivity'] = async (args) =>\n await createEntityActivityMutation(args).unwrap()\n const updateActivity: FeedContextType['updateActivity'] = async (args) =>\n await updateActivityMutation(args).unwrap()\n const deleteActivity: FeedContextType['deleteActivity'] = async (args) =>\n await deleteActivityMutation(args).unwrap()\n\n const [createReactionToActivity] = useCreateReactionToActivityMutation()\n const [deleteReactionToActivity] = useDeleteReactionToActivityMutation()\n\n const createReaction: FeedContextType['createReaction'] = async (args) =>\n await createReactionToActivity(args).unwrap()\n const deleteReaction: FeedContextType['deleteReaction'] = async (args) =>\n await deleteReactionToActivity(args).unwrap()\n\n const activityTypes = getFilterActivityTypes(feedFilter)\n const backendFilter = useMemo(() => buildBackendFilter(feedFilter), [feedFilter])\n\n const activitiesDataProps = useGetFeedActivitiesData({\n entities: props.entities,\n filter: feedFilter,\n backendFilter,\n activityTypes: activityTypes,\n projectName: props.projectName,\n entityType: props.entityType,\n })\n const skip =\n !props.projectName ||\n !refTooltip?.id ||\n refTooltip.type === 'user' ||\n refTooltip.type === 'team'\n const { data: entityTooltipData, isFetching: isFetchingTooltip } = useGetEntityTooltipQuery(\n { entityType: refTooltip?.type, entityId: refTooltip?.id, projectName: props.projectName },\n { skip: skip },\n )\n\n // get all versions that can be mentioned\n const { data: mentionSuggestionsData = {} } = useGetEntityMentionsQuery(\n {\n suggestRequest: {\n entityType: props.entityType as SuggestRequest['entityType'],\n entityId: props.entities[0]?.id,\n },\n projectName: props.projectName,\n },\n { skip: !editingId },\n )\n\n // get comment categories for this project and user\n const { data: categories = [] } = useGetActivityCategoriesQuery({\n projectName: props.projectName,\n })\n\n // get checklists count\n const { data: checklistCount } = useGetEntitiesChecklistsQuery(\n {\n projectName: props.projectName,\n entityIds: props.entities.map((e) => e.id),\n },\n { skip: !props.projectName || !props.entities.length },\n )\n\n return (\n <FeedContext.Provider\n value={{\n ...props,\n ...activitiesDataProps,\n mentionSuggestionsData,\n categories,\n checklistCount,\n users,\n isUpdatingActivity,\n userTeamNames,\n entityTooltipData,\n isFetchingTooltip,\n refTooltip,\n activityTypes,\n feedFilter,\n setFeedFilter,\n backendFilter,\n searchText,\n setSearchText,\n isGuest,\n editingId,\n setEditingId,\n setRefTooltip,\n // Query functions\n createEntityActivity,\n updateActivity,\n deleteActivity,\n createReaction,\n deleteReaction,\n }}\n >\n {children}\n </FeedContext.Provider>\n )\n}\n\nexport const useFeedContext = () => {\n const context = useContext(FeedContext)\n if (!context) {\n throw new Error('useFeedContext must be used within a FeedProvider')\n }\n return context\n}\n"],"names":["FEED_NEW_COMMENT","FeedContext","createContext","FeedProvider","children","props","isGuest","useDetailsPanelContext","users","useGetActivityUsersQuery","teams","teamsApi","userTeamNames","useMemo","t","m","feedFilterInternal","setFeedFilterInternal","useState","searchText","setSearchText","feedFilter","setFeedFilter","editingId","setEditingId","refTooltip","setRefTooltip","createEntityActivityMutation","isLoadingCreate","useCreateEntityActivityMutation","updateActivityMutation","isLoadingUpdate","useUpdateActivityMutation","deleteActivityMutation","isLoadingDelete","useDeleteActivityMutation","isUpdatingActivity","createEntityActivity","args","updateActivity","deleteActivity","createReactionToActivity","useCreateReactionToActivityMutation","deleteReactionToActivity","useDeleteReactionToActivityMutation","createReaction","deleteReaction","activityTypes","getFilterActivityTypes","backendFilter","buildBackendFilter","activitiesDataProps","useGetFeedActivitiesData","skip","entityTooltipData","isFetchingTooltip","useGetEntityTooltipQuery","mentionSuggestionsData","useGetEntityMentionsQuery","categories","useGetActivityCategoriesQuery","checklistCount","useGetEntitiesChecklistsQuery","e","jsx","useFeedContext","context","useContext"],"mappings":"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"}
|