PageSourceSearch

https://app.clariumhealth.com/assets/procedures-Dg-c345m.js

js clariumhealth.com collected 2026-10-03 20:46:01 UTC 39,628 bytes, 912 lines download raw bytes

1import { o as __toESM } from "./chunk-6z4oVpB-.js";
2import "./capitalize-YV0fqYBS.js";
3import { t as require_react } from "./react-CCT1erMQ.js";
4import "./prop-types-BP3O0vhg.js";
5import { t as require_jsx_runtime } from "./jsx-runtime-6ToSbptA.js";
6import "./hoist-non-react-statics.cjs-aYVW55CP.js";
7import "./clsx-BbsgvS4T.js";
8import "./Stack-DHo_Jfjl.js";
9import "./setPrototypeOf-BJGl62Ep.js";
10import "./chainPropTypes-Bly6swO2.js";
11import "./SvgIcon-C1SXqgmo.js";
12import "./typeof-CtObx4yR.js";
13import "./Amplify-D0fRojM9.js";
14import "./types-Badw_GZ3.js";
15import "./amplifyUrl-DDtOFVK1.js";
16import "./tslib.es6-DOCxQXyJ.js";
17import { l as queryClient } from "./api-CPx3dJPV.js";
18import "./createCognitoUserPoolEndpointResolver-CeOq9LYq.js";
19import { a as formatCurrency, h as getPageRange, u as formatNumber, x as isValidStr } from "./helpers-CIThgqfh.js";
20import "./_baseGetTag-DyzlKCT_.js";
21import "./errors-Bz8_MS_m.js";
22import "./isObjectLike-YfNJf3G6.js";
23import "./shim-tM7ZK01N.js";
24import "./isSymbol-fHles11u.js";
25import "./debounce-BI4AKE0v.js";
26import "./dist-9_GVLiOM.js";
27import "./dist-CuFlg_4O.js";
28import "./react-dom-ld7mzddK.js";
29import "./dist-DoGjUkMb.js";
30import "./dist-CNliTmfT.js";
31import "./classPrivateFieldGet2-T1C0ibFM.js";
32import "./dist-D_mba0Ln.js";
33import "./dist-wmihWyUh.js";
34import "./Combination-CbWrdVoQ.js";
35import "./dist-DNn8DQrd.js";
36import "./dist-4SRU2SWZ.js";
37import "./dist-auk7r2og.js";
38import "./select-CAOM9JtG.js";
39import "./dist-CvnDO-P6.js";
40import { n as ie } from "./esm-OeroYQy0.js";
41import { F as useSearchParams, P as useRouteLoaderData, T as useLoaderData, r as Link, t as Await } from "./chunk-62JRHF6Z-af5QuQJC.js";
42import "./exports-BpI0uky7.js";
43import "./notifyManager-DecSEhne.js";
44import "./useBaseQuery-B2Mj_MCe.js";
45import "./useInfiniteQuery-C4nk9Xz0.js";
46import "./useMutation-IAQRP4R7.js";
47import "./QueryClientProvider-C1UBWQV0.js";
48import "./useQuery-CSX9sxP2.js";
49import { n as createUiSettingSyncParamsAdapter } from "./uiSettingQueries-DxMHZzte.js";
50import "./constants-DgZg1qAf.js";
51import "./iconPropTypes-C5chbmyn-FDi75KL4.js";
52import "./bucket-0-Dd64UaRz.js";
53import { o as ChevronRight } from "./bucket-3-C2c54QJ8.js";
54import "./bucket-6-Bmdc6sX9.js";
55import "./bucket-10-23Eagi9e.js";
56import "./bucket-15-CpUGvMi0.js";
57import "./dist-Z60waVX1.js";
58import "./dist-CWLu0srv.js";
59import "./createLucideIcon-COoV7LiJ.js";
60import "./check-DOlAikXd.js";
61import "./chevron-left-KK3O4Zh5.js";
62import "./chevron-right-D6LclTBO.js";
63import "./more-horizontal-MX1PRlOR.js";
64import "./search-8Hqcfgqj.js";
65import { t as cn } from "./utils-DCaTMnxb.js";
66import "./mixpanel.module-BACt6dlR.js";
67import "./subDays-Bn5Ubekx.js";
68import "./addMonths-DV_ETa6N.js";
69import "./endOfMonth-DiAWB7_8.js";
70import "./roundingMethods-XHnUL5k_.js";
71import "./differenceInWeeks-sFLJRI4F.js";
72import "./constants-fq6SDD6N.js";
73import "./isValid-B-21K4uE.js";
74import "./parseISO-CXlN910B.js";
75import "./vanilla-CLGkZFy8.js";
76import "./button-CgeNlB2Q.js";
77import { i as TooltipTrigger, n as TooltipContent, r as TooltipProvider, t as Tooltip } from "./tooltip-B35baM50.js";
78import { n as LongText_default } from "./LongText-BPuPQL-1.js";
79import { t as Badge } from "./badge-B_ZVhNO-.js";
80import "./utils-B9FPGvAJ.js";
81import "./atoms-DP7aIs_n.js";
82import { i as createBreadcrumbConfig } from "./dynamic-breadcrumbs.utils-CfffO9VU.js";
83import "./Button-B4_Mm4Dz.js";
84import "./Typography-Ds0rUQpc.js";
85import "./Link-B8ZxMx_M.js";
86import "./ErrorPage-BhyGtQ5j.js";
87import "./command-BOGRc9Sm.js";
88import "./dist-FSwW85_l.js";
89import "./dialog-CHSk6eNP.js";
90import "./useDebounce-H0OkZLNE.js";
91import "./track-BTherQuK.js";
92import { A as getProcedureCardQueueParams, L as parseProcCardSort, Tt as usePrefCardsBootstrapQuery, _ as PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES, c as DEFAULT_PROC_CARD_SORT_DIR, kt as PROC_CARD_QUERIES, s as DEFAULT_PROC_CARD_SORT_ATTR, t as DEFAULT_PAGE_SIZE, v as PROCEDURE_INTENT } from "./utils-DMECC7FS.js";
93import "./comments-CJXe8Uor.js";
94import { n as base_path_default } from "./base-path-DffKLrHl.js";
95import "./zod-Cm5HR22p.js";
96import "./input-Ct-ouO13.js";
97import "./sheet-DOB9Or8E.js";
98import { t as Skeleton } from "./skeleton-BN73VL4N.js";
99import { t as invariant } from "./tiny-invariant-wiz_5cyW.js";
100import { t as LogErrorBoundary } from "./LogErrorBoundary-DcZPNxdu.js";
101import "./useDebounceCallback-BTOGb8mZ.js";
102import { i as getCoreRowModel, n as useReactTable, r as createColumnHelper, s as getPaginationRowModel } from "./lib-BY10gxfc.js";
103import "./controlled-pagination-CBMDgEEg.js";
104import { a as TableHead, c as TableRow, n as TableBody$1, o as TableHeader$1, r as TableCell, s as TableHeaderRow, t as Table } from "./table-Dy8slfUO.js";
105import { t as resetToFirstPage } from "./reset-to-first-page-C9Ia8cgw.js";
106import "./filter-search-params-BsP9grdP.js";
107import "./use-table-context-vmbhWTsO.js";
108import { i as TableProvider, n as TableHeader, r as TablePagination, t as TableBody } from "./TableContext-UsmMiNIp.js";
109import "./icon-input-CDNXspek.js";
110import "./assignee-select-value-mUf-X1Sf.js";
111import { n as fullWidthTableCellMeta, r as leftTableCellMeta } from "./table-meta-props-BSU7z6Gh.js";
112import "./Trigger-BoSVQJWZ.js";
113import "./dist-CbAgl5nj.js";
114import "./popover-thS7yP-j.js";
115import "./pluralize-zopUG0kl.js";
116import { t as FilterButton } from "./ToolbarFilterButton-w9NqPSIP.js";
117import "./sync-route-params-Br0QEQ45.js";
118import { t as syncRouteParamsV2 } from "./sync-route-params-v2-DWFBBA2x.js";
119import { t as InfoToolTip } from "./InfoTooltip-2ydKh2zw.js";
120import "./utils-DAvJoESF.js";
121import { t as require_lodash } from "./lodash-BShnG86H.js";
122import "./AssigneeSelect-ZKiSSEX4.js";
123import { t as TableLink } from "./table-cell-link-DVaVxhGb.js";
124import { t as FilterSelect } from "./FilterSelect-DKUVYTiM.js";
125import { t as SearchBar } from "./SearchBar-C4RUhCCq.js";
126import "./open-filter-drawer-Z65zArEy.js";
127import { t as FilterDrawerContainer } from "./FilterDrawer-E7ll7gxx.js";
128import { n as ProcedureCardStatus } from "./utils-BsjaYkyo.js";
129import { t as StatusBadge } from "./status-badges-QRXlsldF.js";
130import { f as selectProcedureAdminPermission } from "./selectors-B1wVjaJW.js";
131import { n as usePrefCardClinicalLocations, r as usePrefCardServiceLines, t as usePrefCardAssigneeOptions } from "./hooks-CGaqEOka.js";
132import { t as SortHeaderBase } from "./sort-header-base-DVtDPa45.js";
133import { S as useProcCardQueueQuery, s as procProcedureCardQueueQuery, v as updateProcedureCard } from "./procedure-cards-C0zzDQza.js";
134import { t as Protect } from "./protect-3q6osuu0.js";
135import { t as useTableUrlState } from "./use-table-url-state-BuhBWQsB.js";
136import { i as procedureQueueParamsSchema, t as hydratePrefCardSyncParamsUiSetting } from "./sync-route-params-schemas-B5FCtCEI.js";
137import { a as PaginationPrevious, i as PaginationNext, n as PaginationContent, r as PaginationItem, t as Pagination } from "./pagination-CD04lxJ6.js";
138import { t as ProcedureAssigneeSelect } from "./assignee-select-BFpxugat.js";
139import { n as PROCEDURE_STATUS_OPTIONS } from "./filters-BMu2nIbH.js";
140import { t as NumberBadge } from "./number-badge-xCmCqAJD.js";
141var import_lodash$1 = /* @__PURE__ */ __toESM(require_lodash());
142var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
143const CO_PROCEDURE_CARD_QUEUE_TOOLTIP_MAP = {
144	total_potential_savings: ["Remaining standardization savings"],
145	count_linked_preference_cards: ["Count of preference cards associated with this procedure card"],
146	count_unique_physicians: ["Count of physicians associated with this procedure card"],
147	count_cases_in_last_12_months: ["Count of completed single panel cases associated with the associated preference cards"],
148	total_cost: ["Sum of items cost on the procedure card (current)"],
149	name: ["Name of procedure card"]
150};
151var import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1);
152function SortHeader({ title, attr, className }) {
153	const [searchParams, setSearchParams] = useSearchParams();
154	const [sortAttr, dir] = parseProcCardSort(searchParams.get("sort"));
155	const handleSortingChange = () => {
156		const newSort = `${attr}|${sortAttr === attr && dir === "asc" ? "desc" : "asc"}`;
157		searchParams.set("sort", newSort);
158		setSearchParams(searchParams);
159	};
160	const isActive = sortAttr === attr;
161	const info = CO_PROCEDURE_CARD_QUEUE_TOOLTIP_MAP[attr];
162	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeaderBase, {
163		title,
164		className,
165		isActive,
166		handleSortingChange,
167		info
168	});
169}
170function TooltipBadge({ tooltip, side, align, sideOffset, alignOffset,...badgeProps }) {
171	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tooltip, {
172		delayDuration: 100,
173		children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipTrigger, {
174			className: "w-fit",
175			children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, { ...badgeProps })
176		}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipContent, {
177			side,
178			align,
179			sideOffset,
180			alignOffset,
181			className: "border-none bg-white px-2 py-1.5 shadow-[0_4px_24px_0_hsl(0_0%_0%_/_0.2)]",
182			children: tooltip
183		})]
184	}) });
185}
186function ProcedureCardTable() {
187	const { data, isFetching, isSuccess } = useProcCardQueueQuery();
188	const { data: isProcedureCardAdmin } = usePrefCardsBootstrapQuery(selectProcedureAdminPermission);
189	return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table, {
190		containerClassName: "h-full",
191		children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader$1, {
192			sticky: true,
193			children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableHeaderRow, { children: [
194				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
195					className: "text-nowrap",
196					children: "Status"
197				}),
198				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
199					className: "text-nowrap",
200					children: "ID"
201				}),
202				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
203					className: cn("text-nowrap", fullWidthTableCellMeta.tableCellProps?.className),
204					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
205						attr: "name",
206						title: "Name"
207					})
208				}),
209				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
210					align: "center",
211					className: "text-nowrap",
212					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
213						attr: "total_potential_savings",
214						title: "Remaining Opportunity"
215					})
216				}),
217				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
218					align: "center",
219					className: "text-nowrap",
220					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
221						attr: "count_linked_preference_cards",
222						title: "Cards"
223					})
224				}),
225				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
226					align: "center",
227					className: "text-nowrap",
228					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
229						attr: "count_unique_physicians",
230						title: "Physicians"
231					})
232				}),
233				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
234					align: "right",
235					className: "text-nowrap",
236					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
237						attr: "count_cases_in_last_12_months",
238						title: "Cases"
239					})
240				}),
241				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
242					align: "right",
243					className: "text-nowrap",
244					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
245						attr: "total_cost",
246						title: "Card Cost"
247					})
248				}),
249				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
250					className: "text-nowrap",
251					children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
252						className: "flex items-center space-x-1",
253						children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Service Line" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, {
254							info: "Service line(s) assigned to this procedure card",
255							contentClassName: "font-r",
256							iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1"
257						})]
258					})
259				}),
260				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
261					className: "text-nowrap",
262					children: "Assignee"
263				})
264			] })
265		}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableBody$1, {
266			className: "relative",
267			children: [
268				isFetching ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
269					className: "relative h-1.5 w-full p-0",
270					colSpan: 12,
271					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-full w-full rounded-none bg-gradient-to-l from-primary to-primary-purple duration-1000" })
272				}) }) : null,
273				isSuccess && data.items.map((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, { children: [
274					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBadge, { status: row.procedure_card_status_display_name }) }),
275					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, {
276						to: `${base_path_default}/procedures/${row.procedure_card_id}`,
277						children: row.procedure_card_display_id
278					}) }),
279					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
280						className: "max-w-[280px]",
281						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, {
282							to: `${base_path_default}/procedures/${row.procedure_card_id}`,
283							children: row.name ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LongText_default, {
284								text: (0, import_lodash$1.unescape)(row.name),
285								toolTipClassName: "max-w-md whitespace-normal break-words text-regular"
286							}) : "–"
287						})
288					}),
289					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
290						align: "right",
291						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RemainingOpportunityBadge$1, { item: row })
292					}),
293					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
294						align: "center",
295						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: row.count_linked_preference_cards })
296					}),
297					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
298						align: "center",
299						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: row.count_unique_physicians })
300					}),
301					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
302						align: "right",
303						children: row.count_cases_in_last_12_months ? formatNumber(row.count_cases_in_last_12_months, 0) : "–"
304					}),
305					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
306						align: "right",
307						children: row.total_cost ? formatCurrency(row.total_cost) : "–"
308					}),
309					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: row.service_lines.length ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, {
310						variant: "secondary",
311						children: [row.service_lines[0].name, row.service_lines.length > 1 ? ` +${row.service_lines.length - 1}` : ""]
312					}) : "–" }),
313					/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Protect, {
314						condition: isProcedureCardAdmin ?? false,
315						fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: row.assignee_display_name || "–" }),
316						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureAssigneeSelect, {
317							currentAssignee: row.assignee_user_id === null ? null : {
318								value: row.assignee_user_id,
319								name: row.assignee_display_name || "–"
320							},
321							variant: "outline",
322							resourceId: row.procedure_card_id,
323							name: "procedure-assignee"
324						})
325					}) })
326				] }, row.procedure_card_id)),
327				isSuccess && data?.result_set_size === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
328					colSpan: 11,
329					className: "h-12 text-center",
330					children: "No results found."
331				}) }) : null
332			]
333		})]
334	});
335}
336function RemainingOpportunityBadge$1({ item }) {
337	const total = item.total_potential_savings ?? 0;
338	const declined = item.declined_potential_savings ?? 0;
339	const remainingOpportunity = total - declined;
340	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipBadge, {
341		tooltip: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
342			className: "type-eyebrow flex flex-col gap-1.5 text-left leading-[13px]",
343			children: [
344				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
345					className: "font-medium",
346					children: ["Total Potential: ", formatCurrency(total)]
347				}),
348				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
349					className: "space-y-0.5",
350					children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Declined: ", formatCurrency(declined)] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Remaining: ", formatCurrency(remainingOpportunity)] })]
351				}),
352				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
353					to: `${base_path_default}/procedures/${item.procedure_card_id}/preference-cards`,
354					className: "flex items-center text-nowrap font-medium text-indigo-600",
355					children: ["View Details", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, {
356						className: "h-3 w-3 shrink-0",
357						accentHeight: 13
358					})]
359				})
360			]
361		}),
362		variant: "outline",
363		className: "rounded-lg px-2 py-1 hover:bg-zinc-100",
364		side: "right",
365		align: "start",
366		sideOffset: -8,
367		alignOffset: 18,
368		children: formatCurrency(remainingOpportunity)
369	});
370}
371function RemainingOpportunityBadge({ item }) {
372	const total = item.total_potential_savings ?? 0;
373	const declined = item.declined_potential_savings ?? 0;
374	const remainingOpportunity = Math.max(0, total - declined);
375	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipBadge, {
376		tooltip: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
377			className: "type-eyebrow flex flex-col gap-1.5 text-left leading-[13px]",
378			children: [
379				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
380					className: "font-medium",
381					children: ["Total Potential: ", formatCurrency(total)]
382				}),
383				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
384					className: "space-y-0.5",
385					children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Declined: ", formatCurrency(declined)] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: ["Remaining: ", formatCurrency(remainingOpportunity)] })]
386				}),
387				/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
388					to: `${base_path_default}/procedures/${item.procedure_card_id}/preference-cards`,
389					className: "flex items-center text-nowrap font-medium text-indigo-600",
390					children: ["View Details", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronRight, {
391						className: "h-3 w-3 shrink-0",
392						accentHeight: 13
393					})]
394				})
395			]
396		}),
397		variant: "outline",
398		className: "rounded-lg px-2 py-1 hover:bg-zinc-100",
399		side: "right",
400		align: "start",
401		sideOffset: -8,
402		alignOffset: 18,
403		children: formatCurrency(remainingOpportunity)
404	});
405}
406var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
407var procCardsColumnHelper = createColumnHelper();
408function getDefaultProcCardColumns({ isProcedureCardAdmin = false }) {
409	return [
410		procCardsColumnHelper.accessor("procedure_card_status_display_name", {
411			id: "procedure_card_status_display_name",
412			size: 84,
413			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
414				className: "flex items-center space-x-1",
415				children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Status" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, {
416					info: "Procedure card status",
417					contentClassName: "font-r",
418					iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1"
419				})]
420			}),
421			meta: leftTableCellMeta,
422			cell: (props) => {
423				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBadge, { status: props.row.original.procedure_card_status_display_name });
424			}
425		}),
426		procCardsColumnHelper.accessor("procedure_card_display_id", {
427			id: "procedure_card_display_id",
428			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
429				className: "flex items-center space-x-1",
430				children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "ID" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, {
431					info: "Procedure card ID",
432					contentClassName: "font-r",
433					iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1"
434				})]
435			}),
436			meta: leftTableCellMeta,
437			cell: (props) => {
438				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, {
439					to: `${base_path_default}/procedures/${props.row.original.procedure_card_id}`,
440					children: props.row.original.procedure_card_display_id
441				});
442			}
443		}),
444		procCardsColumnHelper.accessor("name", {
445			id: "name",
446			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
447				attr: "name",
448				title: "Name"
449			}),
450			meta: leftTableCellMeta,
451			cell: (props) => {
452				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableLink, {
453					to: `${base_path_default}/procedures/${props.row.original.procedure_card_id}`,
454					children: props.row.original.name ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LongText_default, {
455						text: (0, import_lodash.unescape)(props.row.original.name),
456						toolTipClassName: "max-w-md whitespace-normal break-words text-regular"
457					}) : "–"
458				});
459			}
460		}),
461		procCardsColumnHelper.accessor("total_potential_savings", {
462			id: "total_potential_savings",
463			size: 200,
464			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
465				title: "Remaining Opportunity",
466				attr: "total_potential_savings"
467			}),
468			meta: leftTableCellMeta,
469			cell: (props) => {
470				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RemainingOpportunityBadge, { item: props.row.original });
471			}
472		}),
473		procCardsColumnHelper.accessor("count_linked_preference_cards", {
474			id: "count_linked_preference_cards",
475			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
476				attr: "count_linked_preference_cards",
477				title: "Cards"
478			}),
479			cell: (props) => {
480				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: props.row.original.count_linked_preference_cards });
481			}
482		}),
483		procCardsColumnHelper.accessor("count_unique_physicians", {
484			id: "count_unique_physicians",
485			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
486				attr: "count_unique_physicians",
487				title: "Physicians"
488			}),
489			size: 200,
490			cell: (props) => {
491				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberBadge, { value: props.row.original.count_unique_physicians });
492			}
493		}),
494		procCardsColumnHelper.accessor("count_cases_in_last_12_months", {
495			id: "count_cases_in_last_12_months",
496			size: 200,
497			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
498				attr: "count_cases_in_last_12_months",
499				title: "Cases"
500			}),
501			cell: (props) => {
502				return props.row.original.count_cases_in_last_12_months ? formatNumber(props.row.original.count_cases_in_last_12_months, 0) : "–";
503			}
504		}),
505		procCardsColumnHelper.accessor("total_cost", {
506			id: "total_cost",
507			size: 200,
508			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SortHeader, {
509				attr: "total_cost",
510				title: "Card Cost"
511			}),
512			cell: (props) => {
513				return props.row.original.total_cost ? formatCurrency(props.row.original.total_cost) : "–";
514			}
515		}),
516		procCardsColumnHelper.accessor("service_lines", {
517			id: "service_lines",
518			size: 200,
519			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
520				className: "flex items-center space-x-1",
521				children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Service Line" }
521), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, {
522					info: "Service line(s) assigned to this procedure card",
523					contentClassName: "font-r",
524					iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1"
525				})]
526			}),
527			cell: (props) => {
528				if (props.row.original.service_lines.length) return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, {
529					variant: "secondary",
530					children: [props.row.original.service_lines[0].name, props.row.original.service_lines.length > 1 ? ` +${props.row.original.service_lines.length - 1}` : ""]
531				});
532				else return "–";
533			}
534		}),
535		procCardsColumnHelper.accessor("assignee_display_name", {
536			id: "assignee_display_name",
537			header: () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
538				className: "flex items-center space-x-1",
539				children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Assignee" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoToolTip, {
540					info: "Procedure card assignee",
541					contentClassName: "font-r",
542					iconClassName: "text-indigo-500 group-hover:text-indigo-400 mr-0 ml-1"
543				})]
544			}),
545			meta: leftTableCellMeta,
546			size: 180,
547			cell: (props) => {
548				return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Protect, {
549					condition: isProcedureCardAdmin ?? false,
550					fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: props.row.original.assignee_display_name || "–" }),
551					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureAssigneeSelect, {
552						currentAssignee: props.row.original.assignee_user_id === null ? null : {
553							value: props.row.original.assignee_user_id,
554							name: props.row.original.assignee_display_name || "–"
555						},
556						variant: "outline",
557						resourceId: props.row.original.procedure_card_id,
558						name: "procedure-assignee"
559					})
560				});
561			}
562		})
563	];
564}
565function ProcedureCardFilterDrawer() {
566	const [searchParams, setSearchParams] = useSearchParams();
567	const { procedureQueueParams: params } = useLoaderData();
568	const [values, setValues] = import_react.useState(params);
569	const [formKey, setFormKey] = import_react.useState(JSON.stringify(params));
570	const { bootstrap } = useRouteLoaderData("co-root");
571	function handleReset() {
572		setValues({});
573		setFormKey(Math.random().toString());
574	}
575	function handleOpenChange(nextOpen) {
576		setTimeout(() => {
577			setValues(params);
578			setFormKey(Math.random().toString());
579		}, nextOpen ? 0 : 200);
580	}
581	function handleSubmit(e) {
582		e.preventDefault();
583		const formData = new FormData(e.currentTarget);
584		const trackParams = [];
585		PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES.forEach((n) => searchParams.delete(n));
586		PROCEDURE_CARD_QUEUE_DRAWER_FILTER_NAMES.forEach((param) => {
587			const value = formData.get(param);
588			if (typeof value === "string" && value) {
589				searchParams.set(param, value);
590				trackParams.push(param);
591			} else searchParams.delete(param);
592		});
593		resetToFirstPage(searchParams);
594		setSearchParams(searchParams);
595	}
596	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterDrawerContainer, {
597		handleSubmit,
598		handleReset,
599		onOpenChange: handleOpenChange,
600		formKey,
601		children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
602			fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Fallback, {}),
603			children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Await, {
604				resolve: bootstrap,
605				errorElement: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Error bootstrap!" }),
606				children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AwaitedFilters, { filters: values })
607			})
608		})
609	});
610}
611function MultipleFilter({ name, defaultValue, options, label, placeholder, inputPlaceholder }) {
612	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterSelect, {
613		options,
614		name,
615		label,
616		defaultValue,
617		placeholder,
618		inputPlaceholder
619	});
620}
621function AwaitedFilters({ filters }) {
622	const serviceLineOptions = usePrefCardServiceLines();
623	const clinicalLocations = usePrefCardClinicalLocations();
624	const allDefaultValues = import_react.useMemo(() => ({
625		statusIds: filters.procedure_card_status_ids ? filters.procedure_card_status_ids.split(",") : void 0,
626		serviceLines: filters.service_line_ids ? filters.service_line_ids.split(",") : void 0,
627		clinicalLocations: filters.preference_card_clinical_location_ids ? filters.preference_card_clinical_location_ids.split(",") : void 0
628	}), [filters]);
629	return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
630		className: "mb-2 text-large",
631		children: "Procedures"
632	}
632), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
633		className: "flex flex-col space-y-5",
634		children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MultipleFilter, {
635			name: "service_line_ids",
636			defaultValue: allDefaultValues.serviceLines,
637			options: serviceLineOptions || [],
638			label: "Service Line",
639			placeholder: "All",
640			inputPlaceholder: "All"
641		}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MultipleFilter, {
642			name: "preference_card_clinical_location_ids",
643			defaultValue: allDefaultValues.clinicalLocations,
644			options: clinicalLocations || [],
645			label: "Site",
646			placeholder: "All",
647			inputPlaceholder: "All"
648		})]
649	})] });
650}
651function Fallback() {
652	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Loading..." });
653}
654function ProcedureCardFilterBar() {
655	const assigneeOptions = usePrefCardAssigneeOptions();
656	const [searchParams] = useSearchParams();
657	return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
658		className: "flex flex-wrap items-start gap-1.5",
659		children: [
660			/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, {
661				options: assigneeOptions || [],
662				attribute: "assignee_user_ids",
663				label: "Assignee",
664				persisted: true,
665				moduleToTrack: "PCM",
666				inputPlaceholder: "Search"
667			}),
668			/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, {
669				options: PROCEDURE_STATUS_OPTIONS,
670				attribute: "procedure_card_status_ids",
671				label: "Status",
672				persisted: true,
673				moduleToTrack: "PCM",
674				inputPlaceholder: "Search"
675			}),
676			searchParams.has("service_line_ids") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ServiceLineFilter, {}) : null,
677			searchParams.has("preference_card_clinical_location_ids") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ClinicalLocationsFilter, {}) : null
678		]
679	});
680}
681function ProcedureCardFilterBarContainer() {
682	const { bootstrap } = useRouteLoaderData("co-root");
683	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
684		fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBar, {}),
685		children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Await, {
686			resolve: bootstrap,
687			children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBar, {})
688		})
689	});
690}
691function ServiceLineFilter() {
692	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, {
693		options: usePrefCardServiceLines() ?? [],
694		attribute: "service_line_ids",
695		label: "Service Lines",
696		moduleToTrack: "PCM",
697		inputPlaceholder: "Search"
698	});
699}
700function ClinicalLocationsFilter() {
701	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterButton, {
702		options: usePrefCardClinicalLocations() ?? [],
703		attribute: "preference_card_clinical_location_ids",
704		label: "Site",
705		moduleToTrack: "PCM",
706		inputPlaceholder: "Search"
707	});
708}
709function ProcedureCardToolbar() {
710	return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
711		className: "space-y-2 py-1.5",
712		children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
713			className: "flex items-center justify-between",
714			children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchBar, {
715				placeholder: "Search by Card Name",
716				param: "search_string"
717			}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterDrawer, {})]
718		}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardFilterBarContainer, {})]
719	});
720}
721function select(res) {
722	return res.result_set_size;
723}
724function ProcedureCardPagination() {
725	const { data: count = 0 } = useProcCardQueueQuery({ select });
726	const [searchParams] = useSearchParams();
727	const page = parseInt(searchParams.get("page_number") || "1", 10);
728	const pageSize = parseInt(searchParams.get("page_size") || "25", 10);
729	const { first, last } = getPageRange(page, count, pageSize);
730	const maxPage = Math.ceil(count / pageSize);
731	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pagination, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PaginationContent, { children: [
732		/* @__PURE__ */ (0, import_jsx_runtime.jsx)(PrevLink, { pageNumber: page }),
733		/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PaginationItem, {
734			className: "text-smallMedium text-muted",
735			children: [
736				first,
737				" - ",
738				last,
739				" of ",
740				count
741			]
742		}),
743		/* @__PURE__ */ (0, import_jsx_runtime.jsx)(NextLink, {
744			pageNumber: page,
745			totalItems: count,
746			maxPage
747		})
748	] }) });
749}
750function PrevLink({ pageNumber }) {
751	const [searchParams] = useSearchParams();
752	if (pageNumber !== 1) searchParams.set("page_number", String(pageNumber - 1));
753	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationPrevious, {
754		"data-disabled": pageNumber === 1,
755		to: `?${searchParams.toString()}`
756	}) });
757}
758function NextLink({ pageNumber, totalItems, maxPage }) {
759	const [searchParams] = useSearchParams();
760	if (pageNumber !== totalItems) searchParams.set("page_number", String(pageNumber + 1));
761	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PaginationNext, {
762		"data-disabled": pageNumber === maxPage,
763		to: `?${searchParams.toString()}`
764	}) });
765}
766async function loader({ request }) {
767	await hydratePrefCardSyncParamsUiSetting("pref_card_procedure_queue_filters", { procedure_card_status_ids: ProcedureCardStatus.ACTIVE.toUpperCase() });
768	await syncRouteParamsV2(request, {
769		storageKey: "pref_card_procedure_queue_filters",
770		schema: procedureQueueParamsSchema,
771		storage: createUiSettingSyncParamsAdapter("pref_card_procedure_queue_filters")
772	});
773	return {
774		procedureQueueParams: getProcedureCardQueueParams(new URL(request.url).searchParams),
775		...createBreadcrumbConfig({
776			label: "Procedures",
777			module: "PHYSICIAN_PREFERENCE_CARDS",
778			subModule: "procedures"
779		})
780	};
781}
782async function action({ request }) {
783	const formData = await request.formData();
784	if (formData.get("intent") === PROCEDURE_INTENT.UPDATE_ASSIGNEE) {
785		const updates = {};
786		const procedureId = formData.get("resourceId");
787		const assigneeIdFormData = formData.get("procedure-assignee");
788		const assigneeNameFormData = formData.get("assignee-name");
789		invariant(isValidStr(procedureId), "resourceId is required");
790		invariant(isValidStr(assigneeIdFormData), "Assignee ID is required");
791		const assigneeId = assigneeIdFormData === "unassigned" ? null : assigneeIdFormData;
792		let assigneeName = null;
793		if (assigneeId !== null) {
794			invariant(isValidStr(assigneeNameFormData), "Assignee Name is required");
795			assigneeName = assigneeNameFormData;
796		}
797		updates.assignee_user_id = assigneeId;
798		try {
799			await updateProcedureCard(procedureId, updates);
800			queryClient.invalidateQueries([PROC_CARD_QUERIES.procedureDetails, procedureId]);
801			const params = getProcedureCardQueueParams(new URL(request.url).searchParams);
802			queryClient.setQueryData(procProcedureCardQueueQuery(params).queryKey, (oldData) => {
803				if (!oldData) return oldData;
804				return {
805					...oldData,
806					items: oldData.items.map((d) => {
807						if (d.procedure_card_id === procedureId) return {
808							...d,
809							assignee_user_id: assigneeId,
810							assignee_display_name: assigneeName
811						};
812						return d;
813					})
814				};
815			});
816			return { ok: true };
817		} catch {
818			const errors = {
819				api: null,
820				procedureId: null
821			};
822			errors.api = "Error updating procedure";
823			errors.procedureId = procedureId;
824			return errors;
825		}
826	}
827}
828function Component() {
829	const { hasCoProcedureCards } = ie();
830	if (hasCoProcedureCards) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCards_V2, {});
831	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
832		className: "w-full flex-1 overflow-y-auto",
833		children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
834			className: "flex h-full min-h-0 flex-col overflow-hidden px-6 pb-1 pt-2",
835			children: [
836				/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardToolbar, {}),
837				/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
838					className: "min-h-0 grow-0 pt-1",
839					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardTable, {})
840				}),
841				/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
842					className: "m-auto w-full grow",
843					children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardPagination, {})
844				})
845			]
846		})
847	});
848}
849function ProcedureCards_V2() {
850	const { data, isFetching } = useProcCardQueueQuery({ keepPreviousData: true });
851	const { data: isProcedureCardAdmin } = usePrefCardsBootstrapQuery(selectProcedureAdminPermission);
852	const { hasCoProcedureCards } = ie();
853	const { pagination, sorting, columnFilters, onPaginationChange, onSortingChange, onColumnFiltersChange } = useTableUrlState({
854		defaultSortField: DEFAULT_PROC_CARD_SORT_ATTR,
855		defaultSortDirection: DEFAULT_PROC_CARD_SORT_DIR,
856		parseSortParam: parseProcCardSort,
857		totalItems: data?.result_set_size ?? 0
858	});
859	const columns = (0, import_react.useMemo)(() => getDefaultProcCardColumns({ isProcedureCardAdmin: isProcedureCardAdmin ?? false }), [isProcedureCardAdmin]);
860	return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
861		className: "w-full flex-1 overflow-y-auto",
862		children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
863			className: "flex h-full min-h-0 flex-col overflow-hidden px-6",
864			children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableProvider, {
865				table: useReactTable({
866					data: data?.items ?? [],
867					columns,
868					getCoreRowModel: getCoreRowModel(),
869					getPaginationRowModel: getPaginationRowModel(),
870					onPaginationChange,
871					onSortingChange,
872					onColumnFiltersChange,
873					getRowId: (row) => row.procedure_card_id,
874					state: {
875						pagination,
876						sorting,
877						columnFilters
878					},
879					manualFiltering: true,
880					manualSorting: true,
881					manualPagination: true,
882					rowCount: data?.result_set_size ?? 0,
883					autoResetPageIndex: false,
884					enableSortingRemoval: false
885				}),
886				isLoading: isFetching,
887				children: [
888					/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
889						className: "pb-4 pt-6",
890						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProcedureCardToolbar, {})
891					}),
892					/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
893						className: "min-h-0 grow-0",
894						children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table, {
895							containerClassName: "h-full",
896							children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableBody, {})]
897						})
898					}),
899					/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
900						className: "m-auto w-full grow pb-4 pt-6",
901						children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TablePagination, { variant: hasCoProcedureCards ? "text-page-number" : "default" })
902					})
903				]
904			})
905		})
906	});
907}
908Component.displayName = "CardProceduresIndex";
909const ErrorBoundary = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LogErrorBoundary, { routeComponent: "CardProceduresIndex" });
910export { Component, ErrorBoundary, action, loader };
911
912//# sourceMappingURL=procedures-Dg-c345m.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.