@pega/cosmos-react-dnd 9.0.0-build.27.8 → 9.0.0-build.28.0

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.
@@ -27,6 +27,7 @@ declare const _default: import("react").ForwardRefExoticComponent<Omit<StandardD
27
27
  } & {
28
28
  items: StandardDragDropListItemProps[];
29
29
  onItemSelection?: StandardDragDropListProps["onItemSelection"];
30
+ itemSelectionMode?: StandardDragDropListProps["itemSelectionMode"];
30
31
  accept: StandardDragDropListProps["accept"];
31
32
  onChange: StandardDragDropListProps["onChange"];
32
33
  }, "ref"> & import("react").RefAttributes<HTMLDivElement>> & {
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,UAAU,EAIX,MAAM,OAAO,CAAC;AA2Bf,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwB3F,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;;;;;;;YAaI,CAAC;iBACzB,CAAA;;;;;;;;;;;;;;;;;WAHH,6BAA6B,EAAE;sBACpB,yBAAyB,CAAC,iBAAiB,CAAC;YACtD,yBAAyB,CAAC,QAAQ,CAAC;cACjC,yBAAyB,CAAC,UAAU,CAAC;;;;AAupBvD,wBAAiF"}
1
+ {"version":3,"file":"StandardDragDropList.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,UAAU,EAIX,MAAM,OAAO,CAAC;AA4Bf,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwB3F,OAAO,KAAK,EACV,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;;;;;;;YAeC,CAAC;iBAEpC,CAAD;;;;;;;;;;;;;;;;;WANY,6BAA6B,EAAE;sBACpB,yBAAyB,CAAC,iBAAiB,CAAC;wBAC1C,yBAAyB,CAAC,mBAAmB,CAAC;YAC1D,yBAAyB,CAAC,QAAQ,CAAC;cACjC,yBAAyB,CAAC,UAAU,CAAC;;;;AAgrBvD,wBAAiF"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { createContext, forwardRef, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
3
- import { Flex, registerIcon, Icon, Text, Button, Link, useI18n, EmptyState, ExpandCollapse, useUID, Tooltip, useElement, useTestIds, withTestIds, AdditionalInfo, Checkbox, HiddenText, useLiveLog, useFocusWithin, useConsolidatedRef, useArrows, getFocusables, useEvent } from '@pega/cosmos-react-core';
3
+ import { Flex, registerIcon, Icon, Text, Button, Link, useI18n, EmptyState, ExpandCollapse, useUID, Tooltip, useElement, useTestIds, withTestIds, AdditionalInfo, Checkbox, RadioButton, HiddenText, useLiveLog, useFocusWithin, useConsolidatedRef, useArrows, getFocusables, useEvent } from '@pega/cosmos-react-core';
4
4
  import * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';
5
5
  import * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';
6
6
  import * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
@@ -28,7 +28,7 @@ const getFlattenedIds = (items) => {
28
28
  };
29
29
  const ItemRenderer = ({ testId, dragRef, previewRef, isDragging, data: { id,
30
30
  // Remove type for DOM restProps
31
- type, accept, primary, secondary, draggable = true, status, items, icon, onConfigure, onRemove, onAddTo, onChange, onItemSelection, selected, ...restProps }, data }) => {
31
+ type, accept, primary, secondary, draggable = true, status, items, icon, onConfigure, onRemove, onAddTo, onChange, onItemSelection, itemSelectionMode = 'multi', selected, ...restProps }, data }) => {
32
32
  const t = useI18n();
33
33
  const [collapsed, setCollapsed] = useState(false);
34
34
  const expandCollpaseId = useUID();
@@ -67,7 +67,9 @@ type, accept, primary, secondary, draggable = true, status, items, icon, onConfi
67
67
  }
68
68
  return (_jsx(Button, { "data-testid": testIds.primary, variant: 'link', onClick: primary.onClick, href: primary.href, ref: setPrimaryTextEl, children: _jsxs(StyledPrimary, { children: [primaryText, tooltip] }) }));
69
69
  }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);
70
- return (_jsxs(Flex, { "data-testid": testIds.root, ...restProps, container: { direction: 'column' }, as: StyledStandardDragDropListItem, ref: containerRef, isDragging: isDragging, hasActions: hasActions, role: 'listitem', "aria-label": primary, tabIndex: tabKeyNavigation ? -1 : 0, children: [_jsxs(Flex, { container: { alignItems: 'center' }, as: StyledListItemInner, isDraggable: draggable, isSelectable: !!onItemSelection, hasActions: hasActions, hasVisual: !!status || !!icon, children: [draggable && (_jsx(DragHandle, { itemId: id, ref: dragRef, "data-testid": testIds.dragHandle, "aria-label": typeof primary === 'string' ? primary : primary.text })), _jsx(Flex, { container: { alignItems: 'center', gap: 0.5 }, item: { grow: 1, shrink: 1 }, children: _jsxs(Flex, { container: { alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }, as: StyledItemContent, children: [onItemSelection && !data.items && (_jsx(Checkbox, { "data-testid": testIds.checkbox, "aria-label": typeof primary === 'string' ? primary : primary.text, checked: selected, onChange: e => onItemSelection({ ...data, selected: e.target.checked }) })), status && _jsx(ItemStatus, { type: status?.type, message: status?.message }), icon && !items && _jsx(Icon, { "data-testid": testIds.icon, ...icon, size: 's' }), primaryEl] }) }), secondary && (_jsx(Flex, { container: { alignItems: 'center', justify: 'end', gap: 0.5 },
70
+ return (_jsxs(Flex, { "data-testid": testIds.root, ...restProps, container: { direction: 'column' }, as: StyledStandardDragDropListItem, ref: containerRef, isDragging: isDragging, hasActions: hasActions, role: 'listitem', "aria-label": primary, tabIndex: tabKeyNavigation ? -1 : 0, children: [_jsxs(Flex, { container: { alignItems: 'center' }, as: StyledListItemInner, isDraggable: draggable, isSelectable: !!onItemSelection, hasActions: hasActions, hasVisual: !!status || !!icon, children: [draggable && (_jsx(DragHandle, { itemId: id, ref: dragRef, "data-testid": testIds.dragHandle, "aria-label": typeof primary === 'string' ? primary : primary.text })), _jsx(Flex, { container: { alignItems: 'center', gap: 0.5 }, item: { grow: 1, shrink: 1 }, children: _jsxs(Flex, { container: { alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }, as: StyledItemContent, children: [onItemSelection &&
71
+ !data.items &&
72
+ (itemSelectionMode === 'single' ? (_jsx(RadioButton, { "data-testid": testIds.radio, "aria-label": typeof primary === 'string' ? primary : primary.text, checked: selected, onChange: e => onItemSelection({ ...data, selected: e.target.checked }) })) : (_jsx(Checkbox, { "data-testid": testIds.checkbox, "aria-label": typeof primary === 'string' ? primary : primary.text, checked: selected, onChange: e => onItemSelection({ ...data, selected: e.target.checked }) }))), status && _jsx(ItemStatus, { type: status?.type, message: status?.message }), icon && !items && _jsx(Icon, { "data-testid": testIds.icon, ...icon, size: 's' }), primaryEl] }) }), secondary && (_jsx(Flex, { container: { alignItems: 'center', justify: 'end', gap: 0.5 },
71
73
  // flex-shrink: 100000 to crush secondary text before primary
72
74
  item: { grow: 0, shrink: 100000 }, numberOfActions: numberOfActions, as: StyledItemSecondaryContainer, children: secondary && (_jsxs(StyledSecondary, { variant: 'secondary', ref: setSecondaryTextEl, children: [secondary, _jsx(Tooltip, { smart: true, target: secondaryTextEl, showDelay: 'none', hideDelay: 'none', children: secondary })] })) })), hasActions && (_jsxs(Flex, { container: { alignItems: 'center', gap: 0.5 }, as: StyledItemActions, children: [onAddTo && (_jsx("span", { children: _jsx(Button, { "data-testid": testIds.addButton, icon: true, variant: 'simple', label: t('add'), "aria-label": t('add_noun', [typeof primary === 'string' ? primary : primary.text]), onClick: (e) => {
73
75
  onAddTo?.(id, e);
@@ -79,10 +81,10 @@ type, accept, primary, secondary, draggable = true, status, items, icon, onConfi
79
81
  typeof primary === 'string' ? primary : primary.text
80
82
  ]), onClick: (e) => {
81
83
  onRemove?.(id, e);
82
- }, children: _jsx(Icon, { name: 'trash' }) }) }))] }))] }), data.items && data.items.length > 0 && (_jsx(ExpandCollapse, { collapsed: collapsed, id: expandCollpaseId, children: _jsx(BaseStandardDragDropList, { accept: data.accept, items: data.items, onChange: data.onChange, onItemSelection: data.onItemSelection }) }))] }));
84
+ }, children: _jsx(Icon, { name: 'trash' }) }) }))] }))] }), data.items && data.items.length > 0 && (_jsx(ExpandCollapse, { collapsed: collapsed, id: expandCollpaseId, children: _jsx(BaseStandardDragDropList, { accept: data.accept, items: data.items, onChange: data.onChange, onItemSelection: data.onItemSelection, itemSelectionMode: data.itemSelectionMode }) }))] }));
83
85
  };
84
86
  const ItemRendererWithTestIds = withTestIds(ItemRenderer, getItemRendererTestIds);
85
- BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction({ testId, accept, items: itemsProp, onChange: onChangeProp, onEnter, onItemSelection, pushMode, pullMode, ...restProps }, ref) {
87
+ BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction({ testId, accept, items: itemsProp, onChange: onChangeProp, onEnter, onItemSelection, itemSelectionMode = 'multi', pushMode, pullMode, ...restProps }, ref) {
86
88
  const flatIds = useMemo(() => getFlattenedIds(itemsProp), [itemsProp]);
87
89
  const { tabKeyNavigation } = useContext(tabKeyNavigationContext);
88
90
  const timerRef = useRef();
@@ -144,6 +146,7 @@ BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(
144
146
  data: {
145
147
  ...item,
146
148
  onItemSelection,
149
+ itemSelectionMode,
147
150
  draggable: item.draggable && !!onChangeProp
148
151
  }
149
152
  };
@@ -154,6 +157,7 @@ BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(
154
157
  data: {
155
158
  ...item,
156
159
  onItemSelection,
160
+ itemSelectionMode,
157
161
  accept: item.accept ?? accept,
158
162
  draggable: item.draggable && !!onChangeProp,
159
163
  onChange: onChangeProp
@@ -174,7 +178,15 @@ BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(
174
178
  : undefined
175
179
  }
176
180
  };
177
- }), [accept, itemsProp, onChangeProp, tabKeyNavigation, flatIds, mergeChangeHandler]);
181
+ }), [
182
+ accept,
183
+ itemsProp,
184
+ onChangeProp,
185
+ itemSelectionMode,
186
+ tabKeyNavigation,
187
+ flatIds,
188
+ mergeChangeHandler
189
+ ]);
178
190
  const onChange = useCallback((newItems) => {
179
191
  const newContentItems = newItems.map(({ data: { onChange: _, ...data } }) => {
180
192
  return data;
@@ -190,7 +202,7 @@ BaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(
190
202
  }, [onChangeProp, flatIds, mergeChangeHandler]);
191
203
  return (_jsx(DragDropList, { testId: testId, ...restProps, ref: ref, accept: accept, items: itemsToRender, pushMode: pushMode, pullMode: pullMode, itemRenderer: ItemRendererWithTestIds, emptyRenderer: EmptyState, onChange: onChange, onEnter: onEnter }));
192
204
  });
193
- const StandardDragDropList = forwardRef(({ testId, accept, pushMode, pullMode, items: itemsProp, heading: title, info, footer, headingTag = 'h2', additionalInfo, onChange, onEnter, onItemSelection, ...restProps }, ref) => {
205
+ const StandardDragDropList = forwardRef(({ testId, accept, pushMode, pullMode, items: itemsProp, heading: title, info, footer, headingTag = 'h2', additionalInfo, onChange, onEnter, onItemSelection, itemSelectionMode = 'multi', ...restProps }, ref) => {
194
206
  const [tabKeyNavigation, setTabKeyNavigation] = useState(false);
195
207
  const contextValue = useMemo(() => ({ tabKeyNavigation, setTabKeyNavigation }), [tabKeyNavigation]);
196
208
  const containerRef = useConsolidatedRef(ref);
@@ -235,7 +247,7 @@ const StandardDragDropList = forwardRef(({ testId, accept, pushMode, pullMode, i
235
247
  justify: 'between',
236
248
  alignItems: 'center',
237
249
  gap: 1
238
- }, as: 'header', children: additionalInfo ? (_jsxs(Flex, { container: true, children: [heading, _jsx(AdditionalInfo, { heading: additionalInfo.heading ?? title, children: additionalInfo.content })] })) : (heading) }), infoText] })), _jsx(BaseStandardDragDropList, { testId: testId, accept: accept, pushMode: pushMode, pullMode: pullMode, items: itemsProp, onChange: onChange, onEnter: onEnter, onItemSelection: onItemSelection, "aria-describedby": descriptionId, ref: listRef }), footer && (_jsx(Flex, { container: {
250
+ }, as: 'header', children: additionalInfo ? (_jsxs(Flex, { container: true, children: [heading, _jsx(AdditionalInfo, { heading: additionalInfo.heading ?? title, children: additionalInfo.content })] })) : (heading) }), infoText] })), _jsx(BaseStandardDragDropList, { testId: testId, accept: accept, pushMode: pushMode, pullMode: pullMode, items: itemsProp, onChange: onChange, onEnter: onEnter, onItemSelection: onItemSelection, itemSelectionMode: itemSelectionMode, "aria-describedby": descriptionId, ref: listRef }), footer && (_jsx(Flex, { container: {
239
251
  alignItems: 'center',
240
252
  itemGap: 1,
241
253
  pad: [1, undefined]
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACT,MAAM,OAAO,CAAC;AAUf,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,OAAO,EACP,UAAU,EACV,cAAc,EACd,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,QAAQ,MAAM,6DAA6D,CAAC;AACxF,OAAO,KAAK,QAAQ,MAAM,6DAA6D,CAAC;AACxF,OAAO,KAAK,aAAa,MAAM,mEAAmE,CAAC;AACnG,OAAO,KAAK,gBAAgB,MAAM,sEAAsE,CAAC;AACzG,OAAO,KAAK,aAAa,MAAM,mEAAmE,CAAC;AAEnG,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAG3C,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AAEzC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAkBjF,IAAI,wBAEH,CAAC;AAOF,MAAM,uBAAuB,GAAG,aAAa,CAA+B;IAC1E,gBAAgB,EAAE,KAAK;IACvB,mBAAmB,EAAE,GAAG,EAAE,GAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,EAClB,OAAO,EACP,IAAI,EAC0D,EAAE,EAAE;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC;IAErE,OAAO,CACL,KAAC,gBAAgB,iBAAW,QAAQ,EAAC,IAAI,EAAC,QAAQ,YAC/C,OAAO,IAAI,CACV,KAAC,IAAI,IAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAE,IAAI,YACpC,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,aAC3B,KAAC,IAAI,IAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,gBAAc,IAAI,GAAI,EAClF,KAAC,OAAO,IAAC,MAAM,EAAE,GAAG,uBAAc,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YAChE,OAAO,GACA,IACL,GACF,CACR,GACgB,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,KAAsC,EACC,EAAE;IACzC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EACpB,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,IAAI,EAAE,EACJ,EAAE;AACF,gCAAgC;AAChC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAS,GAAG,IAAI,EAChB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,GAAG,SAAS,EACb,EACD,IAAI,EACqD,EAAE,EAAE;IAC7D,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC3D,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,kBAAkB,CAAgB,WAAW,EAAE,UAAU,CAAC,CAAC;IAEhF,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEhF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,UAAU,CAElD,IAAI,CAAC,CAAC;IACR,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,UAAU,CAAkB,IAAI,CAAC,CAAC;IAEhF,QAAQ,CACN,SAAS,EACT,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,EACD,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAC1D,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAEzE,MAAM,OAAO,GAAG,CACd,KAAC,OAAO,IAAC,KAAK,QAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YACpE,WAAW,GACJ,CACX,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAE1D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CACL,8BACE,KAAC,0BAA0B,mBACZ,OAAO,CAAC,oBAAoB,EACzC,OAAO,EAAC,QAAQ,EAChB,IAAI,QACJ,KAAK,EAAE,SAAS,gBACJ,GAAG,SAAS,MAAM,WAAW,EAAE,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,eAC7B,gBAAgB,mBACZ,CAAC,SAAS,EACzB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAEnC,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,GAAG,GACC,EAC7B,gBAAM,GAAG,EAAE,gBAAgB,aACxB,WAAW,EACX,OAAO,IACH,IACN,CACJ,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,CACL,gBAAM,GAAG,EAAE,gBAAgB,aACxB,WAAW,EACX,OAAO,IACH,CACR,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,CACL,KAAC,IAAI,mBACU,OAAO,CAAC,OAAO,EAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,GAAG,EAAE,gBAAgB,EACrB,WAAW,kBAEX,MAAC,aAAa,eACX,WAAW,EACX,OAAO,IACM,GACX,CACR,CAAC;QACJ,CAAC;QAED,OAAO,CACL,KAAC,MAAM,mBACQ,OAAO,CAAC,OAAO,EAC5B,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,GAAG,EAAE,gBAAgB,YAErB,MAAC,aAAa,eACX,WAAW,EACX,OAAO,IACM,GACT,CACV,CAAC;IACJ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpE,OAAO,CACL,MAAC,IAAI,mBACU,OAAO,CAAC,IAAI,KACrB,SAAS,EACb,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAClC,EAAE,EAAE,8BAA8B,EAClC,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAC,UAAU,gBACH,OAAO,EACnB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAEnC,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EACnC,EAAE,EAAE,mBAAmB,EACvB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,CAAC,CAAC,eAAe,EAC/B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,aAE5B,SAAS,IAAI,CACZ,KAAC,UAAU,IACT,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,OAAO,iBACC,OAAO,CAAC,UAAU,gBACnB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAChE,CACH,EACD,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAC/E,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAClF,EAAE,EAAE,iBAAiB,aAEpB,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CACjC,KAAC,QAAQ,mBACM,OAAO,CAAC,QAAQ,gBACjB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAChE,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GACvE,CACH,EACA,MAAM,IAAI,KAAC,UAAU,IAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAI,EACtE,IAAI,IAAI,CAAC,KAAK,IAAI,KAAC,IAAI,mBAAc,OAAO,CAAC,IAAI,KAAM,IAAI,EAAE,IAAI,EAAC,GAAG,GAAG,EAExE,SAAS,IACL,GACF,EAEN,SAAS,IAAI,CACZ,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;wBAC7D,6DAA6D;wBAC7D,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EACjC,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,4BAA4B,YAE/B,SAAS,IAAI,CACZ,MAAC,eAAe,IAAC,OAAO,EAAC,WAAW,EAAC,GAAG,EAAE,kBAAkB,aACzD,SAAS,EACV,KAAC,OAAO,IAAC,KAAK,QAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YACtE,SAAS,GACF,IACM,CACnB,GACI,CACR,EAEA,UAAU,IAAI,CACb,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,iBAAiB,aACvE,OAAO,IAAI,CACV,yBACE,KAAC,MAAM,mBACQ,OAAO,CAAC,SAAS,EAC9B,IAAI,QACJ,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBACH,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACjF,OAAO,EAAE,CAAC,CAAgC,EAAE,EAAE;wCAC5C,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oCACnB,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,GAAG,GACb,GACJ,CACR,EAEA,WAAW,IAAI,CACd,yBACE,KAAC,MAAM,mBACQ,OAAO,CAAC,eAAe,EACpC,IAAI,QACJ,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,gBACT,CAAC,CAAC,gBAAgB,EAAE;wCAC9B,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;qCACrD,CAAC,EACF,OAAO,EAAE,CAAC,CAAgC,EAAE,EAAE;wCAC5C,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oCACvB,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,GAAG,GACb,GACJ,CACR,EAEA,QAAQ,IAAI,CACX,yBACE,KAAC,MAAM,mBACQ,OAAO,CAAC,YAAY,EACjC,IAAI,QACJ,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,gBACN,CAAC,CAAC,aAAa,EAAE;wCAC3B,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;qCACrD,CAAC,EACF,OAAO,EAAE,CAAC,CAAgC,EAAE,EAAE;wCAC5C,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oCACpB,CAAC,YAED,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACd,GACJ,CACR,IACI,CACR,IACI,EAGN,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACtC,KAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,YACxD,KAAC,wBAAwB,IACvB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,eAAe,EAAE,IAAI,CAAC,eAAe,GACrC,GACa,CAClB,IACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,WAAW,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAElF,wBAAwB,GAAG,UAAU,CAAC,SAAS,gCAAgC,CAC7E,EACE,MAAM,EACN,MAAM,EACN,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,GAAG,SAAS,EAC+B,EAC7C,GAA0B;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,MAAM,EAAU,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,EAAmC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,QAAyC,EAAE,EAAE;QAC5C,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YAChE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;YAC7B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;YACvC,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;YAEhC,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;YAC5D,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAEvD,yDAAyD;YACzD,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAEpF,MAAM,sBAAsB,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;gBAEnE,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CACjD,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,CACxD,CAAC;gBAEF,uBAAuB;gBACvB,IAAI,CAAC,eAAe;oBAAE,OAAO;gBAE7B,sCAAsC;gBACtC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC;oBACvD,YAAY,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC,CAAC;gBAChF,CAAC;gBAED,mCAAmC;qBAC9B,CAAC;oBACJ,YAAY,EAAE,CACZ,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBACjC,IAAI,CAAC,SAAS,CAAC,KAAK;4BAAE,OAAO,SAAS,CAAC;wBAEvC,IACE,SAAS;6BACN,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;4BACtC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,eAAe,CAAC,EACrE,CAAC;4BACD,OAAO;gCACL,GAAG,SAAS;gCACZ,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC;6BAClE,CAAC;wBACJ,CAAC;wBAED,OAAO,SAAS,CAAC;oBACnB,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yDAAyD;gBACzD,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC3B,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC/B,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACxC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,SAAS,CAAC,CAC1B,CAAC;IAEF,MAAM,aAAa,GAA2D,OAAO,CACnF,GAAG,EAAE,CACH,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,eAAe;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY;aACH;SAC3C,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC;QAEhC,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,eAAe;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY;gBAC3C,QAAQ,EAAE,YAAY;oBACpB,CAAC,CAAC,CAAC,QAAiD,EAAE,EAAE;wBACpD,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CACnD,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,YAAY,CAAC,KAAK;4BAC/C,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACtC,CAAC,CAAC,YAAY,CACjB,CAAC;wBAEF,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;wBAEtD,IACE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAC5C,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EACtC,CAAC;4BACD,4CAA4C;4BAC5C,kBAAkB,CAAC,eAAe,CAAC,CAAC;wBACtC,CAAC;6BAAM,CAAC;4BACN,YAAY,CAAC,eAAe,CAAC,CAAC;wBAChC,CAAC;oBACH,CAAC;oBACH,CAAC,CAAC,SAAS;aAC2B;SAC3C,CAAC;IACJ,CAAC,CAAC,EACJ,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CACjF,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,QAAgE,EAAE,EAAE;QACnE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QAEtD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3F,4CAA4C;YAC5C,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAC5C,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,IACX,MAAM,EAAE,MAAM,KACV,SAAS,EACb,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,uBAAuB,EACrC,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EACL,OAEyD,GAE3D,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAIH,MAAM,oBAAoB,GAAG,UAAU,CACrC,CACE,EACE,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,KAAK,EACd,IAAI,EACJ,MAAM,EACN,UAAU,GAAG,IAAI,EACjB,cAAc,EACd,QAAQ,EACR,OAAO,EACP,eAAe,EACf,GAAG,SAAS,EAC+B,EAC7C,GAAqC,EACrC,EAAE;IACF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,EACjD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACnE,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC3C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,UAAU,CAAgB,IAAI,CAAC,CAAC;IAEhF,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CACjB,OAAO,CAAC,OAAO,EAAE,aAAa,CAAgB,mBAAmB,CAAC,IAAI,IAAI,CAC3E,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAE1E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CACtB,KAAC,IAAI,IAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,SAAS,YACtC,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,YAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,cAAc,CAAC,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CACN,SAAS,EACT,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5D,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,+CAA+C;YAC7E,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,OAAO,CAAC,OAAO;oBAAE,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACrD,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC,EACD,EAAE,MAAM,EAAE,OAAO,EAAE,CACpB,CAAC;IAEF,SAAS,CACP,kBAAkB,EAClB;QACE,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,GAAG,EAAE,SAAS;QACd,mBAAmB,EAAE,gBAAgB;KACtC,EACD,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CACrC,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YACnD,MAAC,0BAA0B,IAAC,GAAG,EAAE,YAAY,iBAAe,OAAO,CAAC,IAAI,KAAM,SAAS,aACpF,OAAO,IAAI,CACV,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,aACnE,KAAC,IAAI,mBACU,OAAO,CAAC,MAAM,EAC3B,SAAS,EAAE;gCACT,OAAO,EAAE,SAAS;gCAClB,UAAU,EAAE,QAAQ;gCACpB,GAAG,EAAE,CAAC;6BACP,EACD,EAAE,EAAC,QAAQ,YAEV,cAAc,CAAC,CAAC,CAAC,CAChB,MAAC,IAAI,IAAC,SAAS,mBACZ,OAAO,EAER,KAAC,cAAc,IAAC,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,KAAM,YACtD,cAAc,CAAC,OAAO,GACR,IACZ,CACR,CAAC,CAAC,CAAC,CACF,OAAO,CACR,GACI,EACN,QAAQ,IACJ,CACR,EACD,KAAC,wBAAwB,IACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,sBACd,aAAa,EAC/B,GAAG,EAAE,OAAO,GACZ,EACD,MAAM,IAAI,CACT,KAAC,IAAI,IACH,SAAS,EAAE;wBACT,UAAU,EAAE,QAAQ;wBACpB,OAAO,EAAE,CAAC;wBACV,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;qBACpB,EACD,EAAE,EAAC,QAAQ,EACX,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;wBAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,gBAAgB,EAAE,CAAC;4BACtD,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC;4BAC9B,gBAAgB,EAAE,KAAK,EAAE,CAAC;wBAC5B,CAAC;oBACH,CAAC,YAEA,MAAM,GACF,CACR,EACD,KAAC,UAAU,IAAC,EAAE,EAAE,aAAa,YAAG,CAAC,CAAC,4BAA4B,CAAC,GAAc,IAClD,GACI,CACpC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,WAAW,CAAC,oBAAoB,EAAE,8BAA8B,CAAC,CAAC","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n PropsWithoutRef,\n Ref,\n SetStateAction\n} from 'react';\n\nimport {\n Flex,\n registerIcon,\n Icon,\n Text,\n Button,\n Link,\n useI18n,\n EmptyState,\n ExpandCollapse,\n useUID,\n Tooltip,\n useElement,\n useTestIds,\n withTestIds,\n AdditionalInfo,\n Checkbox,\n HiddenText,\n useLiveLog,\n useFocusWithin,\n useConsolidatedRef,\n useArrows,\n getFocusables,\n useEvent\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent, OmitStrict } from '@pega/cosmos-react-core';\nimport * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';\nimport * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as DiamondMinusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/diamond-minus.icon';\nimport * as WarnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\n\nimport DragDropList from '../DragDropList';\nimport type { ItemRendererProps } from '../DragDropList';\nimport type { DraggableItem } from '../Draggable';\nimport DragHandle from '../DragHandle';\n\nimport {\n StyledStandardDragDropList,\n StyledStandardDragDropListItem,\n StyledExpandCollapseToggle,\n StyledItemActions,\n StyledItemContent,\n StyledItemStatus,\n StyledPrimary,\n StyledSecondary,\n StyledListItemInner,\n StyledItemSecondaryContainer\n} from './StandardDragDropList.styles';\nimport type {\n StandardDragDropListProps,\n StandardDragDropListItemProps\n} from './StandardDragDropList.types';\nimport {\n getItemRendererTestIds,\n getStandardDragDropListTestIds\n} from './StandardDragDropList.test-ids';\n\nregisterIcon(DragIcon, PlusIcon, CaretDownIcon, DiamondMinusIcon, WarnSolidIcon);\n\ntype InternalStandardDragDropListItemProps = StandardDragDropListItemProps &\n (\n | {\n items: StandardDragDropListItemProps[];\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept: StandardDragDropListProps['accept'];\n onChange: StandardDragDropListProps['onChange'];\n }\n | {\n items?: undefined;\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n accept?: never;\n onChange?: never;\n }\n );\n\nlet BaseStandardDragDropList: ForwardRefForwardPropsComponent<\n OmitStrict<StandardDragDropListProps, 'ref'> & { ref: Ref<HTMLUListElement> }\n>;\n\ninterface TabKeyNavigationContextValue {\n tabKeyNavigation: boolean;\n setTabKeyNavigation: Dispatch<SetStateAction<boolean>>;\n}\n\nconst tabKeyNavigationContext = createContext<TabKeyNavigationContextValue>({\n tabKeyNavigation: false,\n setTabKeyNavigation: () => {}\n});\n\nconst ItemStatus = ({\n message,\n type\n}: Partial<NonNullable<StandardDragDropListItemProps['status']>>) => {\n const [ttt, setTTT] = useElement(null);\n const iconName = type === 'warning' ? 'diamond-minus' : 'warn-solid';\n\n return (\n <StyledItemStatus aria-live='polite' role='status'>\n {message && (\n <Text variant='secondary' status={type}>\n <Flex container={{ gap: 0.5 }}>\n <Icon ref={setTTT} name={iconName} role='status' tabIndex={0} aria-label={type} />\n <Tooltip target={ttt} aria-hidden showDelay='none' hideDelay='none'>\n {message}\n </Tooltip>\n </Flex>\n </Text>\n )}\n </StyledItemStatus>\n );\n};\n\nconst getFlattenedIds = (\n items: StandardDragDropListItemProps[]\n): StandardDragDropListItemProps['id'][] => {\n return items.flatMap(item => {\n return item.items ? [item.id, ...item.items.map(({ id }) => id)] : [item.id];\n });\n};\n\nconst ItemRenderer = ({\n testId,\n dragRef,\n previewRef,\n isDragging,\n data: {\n id,\n // Remove type for DOM restProps\n type,\n accept,\n primary,\n secondary,\n draggable = true,\n status,\n items,\n icon,\n onConfigure,\n onRemove,\n onAddTo,\n onChange,\n onItemSelection,\n selected,\n ...restProps\n },\n data\n}: ItemRendererProps<InternalStandardDragDropListItemProps>) => {\n const t = useI18n();\n const [collapsed, setCollapsed] = useState(false);\n const expandCollpaseId = useUID();\n const testIds = useTestIds(testId, getItemRendererTestIds);\n const { tabKeyNavigation, setTabKeyNavigation } = useContext(tabKeyNavigationContext);\n const listItemRef = useRef<HTMLLIElement>(null);\n const containerRef = useConsolidatedRef<HTMLLIElement>(listItemRef, previewRef);\n\n const hasActions = !!(onConfigure ?? onRemove ?? onAddTo);\n const numberOfActions = [onConfigure, onRemove, onAddTo].filter(Boolean).length;\n\n const [primaryTextEl, setPrimaryTextEl] = useElement<\n HTMLSpanElement | HTMLAnchorElement | HTMLButtonElement\n >(null);\n const [secondaryTextEl, setSecondaryTextEl] = useElement<HTMLSpanElement>(null);\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Enter' && !tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(true);\n getFocusables(listItemRef)[0]?.focus();\n }\n if (e.key === 'Escape' && tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(false);\n listItemRef.current?.focus();\n }\n },\n { target: listItemRef, dependencies: [tabKeyNavigation] }\n );\n\n const primaryEl = useMemo(() => {\n const primaryText = typeof primary === 'string' ? primary : primary.text;\n\n const tooltip = (\n <Tooltip smart target={primaryTextEl} showDelay='none' hideDelay='none'>\n {primaryText}\n </Tooltip>\n );\n\n const labelText = collapsed ? t('expand') : t('collapse');\n\n if (items) {\n return (\n <>\n <StyledExpandCollapseToggle\n data-testid={testIds.expandCollapseButton}\n variant='simple'\n icon\n label={labelText}\n aria-label={`${labelText} - ${primaryText}`}\n onClick={() => setCollapsed(cur => !cur)}\n aria-owns={expandCollpaseId}\n aria-expanded={!collapsed}\n tabIndex={tabKeyNavigation ? 0 : -1}\n >\n <Icon name='caret-down' />\n </StyledExpandCollapseToggle>\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n </>\n );\n }\n\n if (typeof primary === 'string') {\n return (\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n );\n }\n\n if (primary.onPreview && primary.href) {\n return (\n <Link\n data-testid={testIds.primary}\n href={primary.href}\n onClick={primary.onClick}\n onPreview={primary.onPreview}\n ref={setPrimaryTextEl}\n previewable\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Link>\n );\n }\n\n return (\n <Button\n data-testid={testIds.primary}\n variant='link'\n onClick={primary.onClick}\n href={primary.href}\n ref={setPrimaryTextEl}\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Button>\n );\n }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);\n\n return (\n <Flex\n data-testid={testIds.root}\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledStandardDragDropListItem}\n ref={containerRef}\n isDragging={isDragging}\n hasActions={hasActions}\n role='listitem'\n aria-label={primary}\n tabIndex={tabKeyNavigation ? -1 : 0}\n >\n <Flex\n container={{ alignItems: 'center' }}\n as={StyledListItemInner}\n isDraggable={draggable}\n isSelectable={!!onItemSelection}\n hasActions={hasActions}\n hasVisual={!!status || !!icon}\n >\n {draggable && (\n <DragHandle\n itemId={id}\n ref={dragRef}\n data-testid={testIds.dragHandle}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n />\n )}\n <Flex container={{ alignItems: 'center', gap: 0.5 }} item={{ grow: 1, shrink: 1 }}>\n <Flex\n container={{ alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }}\n as={StyledItemContent}\n >\n {onItemSelection && !data.items && (\n <Checkbox\n data-testid={testIds.checkbox}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n checked={selected}\n onChange={e => onItemSelection({ ...data, selected: e.target.checked })}\n />\n )}\n {status && <ItemStatus type={status?.type} message={status?.message} />}\n {icon && !items && <Icon data-testid={testIds.icon} {...icon} size='s' />}\n\n {primaryEl}\n </Flex>\n </Flex>\n\n {secondary && (\n <Flex\n container={{ alignItems: 'center', justify: 'end', gap: 0.5 }}\n // flex-shrink: 100000 to crush secondary text before primary\n item={{ grow: 0, shrink: 100000 }}\n numberOfActions={numberOfActions}\n as={StyledItemSecondaryContainer}\n >\n {secondary && (\n <StyledSecondary variant='secondary' ref={setSecondaryTextEl}>\n {secondary}\n <Tooltip smart target={secondaryTextEl} showDelay='none' hideDelay='none'>\n {secondary}\n </Tooltip>\n </StyledSecondary>\n )}\n </Flex>\n )}\n\n {hasActions && (\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as={StyledItemActions}>\n {onAddTo && (\n <span>\n <Button\n data-testid={testIds.addButton}\n icon\n variant='simple'\n label={t('add')}\n aria-label={t('add_noun', [typeof primary === 'string' ? primary : primary.text])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onAddTo?.(id, e);\n }}\n >\n <Icon name='plus' />\n </Button>\n </span>\n )}\n\n {onConfigure && (\n <span>\n <Button\n data-testid={testIds.configureButton}\n icon\n variant='simple'\n label={t('configure')}\n aria-label={t('configure_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onConfigure?.(id, e);\n }}\n >\n <Icon name='gear' />\n </Button>\n </span>\n )}\n\n {onRemove && (\n <span>\n <Button\n data-testid={testIds.removeButton}\n icon\n variant='simple'\n label={t('remove')}\n aria-label={t('remove_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onRemove?.(id, e);\n }}\n >\n <Icon name='trash' />\n </Button>\n </span>\n )}\n </Flex>\n )}\n </Flex>\n\n {/* Using data here so TS can track conditional type. */}\n {data.items && data.items.length > 0 && (\n <ExpandCollapse collapsed={collapsed} id={expandCollpaseId}>\n <BaseStandardDragDropList\n accept={data.accept}\n items={data.items}\n onChange={data.onChange}\n onItemSelection={data.onItemSelection}\n />\n </ExpandCollapse>\n )}\n </Flex>\n );\n};\n\nconst ItemRendererWithTestIds = withTestIds(ItemRenderer, getItemRendererTestIds);\n\nBaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(\n {\n testId,\n accept,\n items: itemsProp,\n onChange: onChangeProp,\n onEnter,\n onItemSelection,\n pushMode,\n pullMode,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: Ref<HTMLUListElement>\n) {\n const flatIds = useMemo(() => getFlattenedIds(itemsProp), [itemsProp]);\n const { tabKeyNavigation } = useContext(tabKeyNavigationContext);\n\n const timerRef = useRef<number>();\n const newItemsRef = useRef<StandardDragDropListItemProps[]>();\n\n const mergeChangeHandler = useCallback(\n (newItems: StandardDragDropListItemProps[]) => {\n if (typeof timerRef.current === 'number' && newItemsRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n const refedItems = newItemsRef.current;\n newItemsRef.current = undefined;\n\n const reffedItemsCount = getFlattenedIds(refedItems).length;\n const newItemsCount = getFlattenedIds(newItems).length;\n\n // Item moved between the top level list and nested list.\n if (Math.abs(reffedItemsCount - newItemsCount) === 2) {\n const itemsWithDuplicate = reffedItemsCount > newItemsCount ? refedItems : newItems;\n\n const flatItemsWithDuplicate = getFlattenedIds(itemsWithDuplicate);\n\n const duplicateItemId = flatItemsWithDuplicate.find(\n (id, idx) => flatItemsWithDuplicate.indexOf(id) !== idx\n );\n\n // Should never happen.\n if (!duplicateItemId) return;\n\n // The duplicate was top level before.\n if (itemsProp.some(({ id }) => id === duplicateItemId)) {\n onChangeProp?.(itemsWithDuplicate.filter(({ id }) => id !== duplicateItemId));\n }\n\n // The duplicate was nested before.\n else {\n onChangeProp?.(\n itemsWithDuplicate.map(innerItem => {\n if (!innerItem.items) return innerItem;\n\n if (\n itemsProp\n .find(({ id }) => id === innerItem.id)\n ?.items?.some(({ id: subItemId }) => subItemId === duplicateItemId)\n ) {\n return {\n ...innerItem,\n items: innerItem.items.filter(({ id }) => id !== duplicateItemId)\n };\n }\n\n return innerItem;\n })\n );\n }\n } else {\n // Failsafe for two unrelated change events within 100ms.\n onChangeProp?.(refedItems);\n onChangeProp?.(newItems);\n }\n } else {\n newItemsRef.current = newItems;\n timerRef.current = window.setTimeout(() => {\n onChangeProp?.(newItems);\n }, 100);\n }\n },\n [onChangeProp, itemsProp]\n );\n\n const itemsToRender: DraggableItem<InternalStandardDragDropListItemProps>[] = useMemo(\n () =>\n itemsProp.map(item => {\n const newItem = {\n id: item.id,\n type: item.type,\n data: {\n ...item,\n onItemSelection,\n draggable: item.draggable && !!onChangeProp\n } as InternalStandardDragDropListItemProps\n };\n if (!item.items) return newItem;\n\n return {\n ...newItem,\n data: {\n ...item,\n onItemSelection,\n accept: item.accept ?? accept,\n draggable: item.draggable && !!onChangeProp,\n onChange: onChangeProp\n ? (newItems: InternalStandardDragDropListItemProps[]) => {\n const newContentItems = itemsProp.map(topLevelItem =>\n topLevelItem.id === item.id && topLevelItem.items\n ? { ...topLevelItem, items: newItems }\n : topLevelItem\n );\n\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (\n itemsProp.some(propItem => !!propItem.items) &&\n flatIds.length !== flatNewItems.length\n ) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp(newContentItems);\n }\n }\n : undefined\n } as InternalStandardDragDropListItemProps\n };\n }),\n [accept, itemsProp, onChangeProp, tabKeyNavigation, flatIds, mergeChangeHandler]\n );\n\n const onChange = useCallback(\n (newItems: DraggableItem<InternalStandardDragDropListItemProps>[]) => {\n const newContentItems = newItems.map(({ data: { onChange: _, ...data } }) => {\n return data;\n });\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (itemsProp.some(propItem => !!propItem.items) && flatIds.length !== flatNewItems.length) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp?.(newContentItems);\n }\n },\n [onChangeProp, flatIds, mergeChangeHandler]\n );\n\n return (\n <DragDropList\n testId={testId}\n {...restProps}\n ref={ref}\n accept={accept}\n items={itemsToRender}\n pushMode={pushMode}\n pullMode={pullMode}\n itemRenderer={ItemRendererWithTestIds}\n emptyRenderer={EmptyState}\n onChange={onChange}\n onEnter={\n onEnter as (\n item: DraggableItem<InternalStandardDragDropListItemProps>\n ) => DraggableItem<InternalStandardDragDropListItemProps>\n }\n />\n );\n});\n\ntype CombinedProps = StandardDragDropListProps & InternalStandardDragDropListItemProps;\n\nconst StandardDragDropList = forwardRef<HTMLDivElement, CombinedProps>(\n (\n {\n testId,\n accept,\n pushMode,\n pullMode,\n items: itemsProp,\n heading: title,\n info,\n footer,\n headingTag = 'h2',\n additionalInfo,\n onChange,\n onEnter,\n onItemSelection,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: StandardDragDropListProps['ref']\n ) => {\n const [tabKeyNavigation, setTabKeyNavigation] = useState(false);\n const contextValue = useMemo(\n () => ({ tabKeyNavigation, setTabKeyNavigation }),\n [tabKeyNavigation]\n );\n const containerRef = useConsolidatedRef(ref);\n const listRef = useRef<HTMLUListElement>(null);\n const t = useI18n();\n const testIds = useTestIds(testId, getStandardDragDropListTestIds);\n const { announceAssertive } = useLiveLog();\n const [firstListElement, setFirstListElement] = useElement<HTMLLIElement>(null);\n\n useEffect(() => {\n setFirstListElement(\n listRef.current?.querySelector<HTMLLIElement>('[role=\"listitem\"]') ?? null\n );\n }, [itemsProp]);\n\n const arrowNavigationRef = tabKeyNavigation ? { current: null } : listRef;\n\n const heading = title ? (\n <Text variant={headingTag} role='heading'>\n {title}\n </Text>\n ) : null;\n\n const infoText = info ? <Text variant='primary'>{info}</Text> : undefined;\n\n useFocusWithin([containerRef], isFocused => {\n if (isFocused) {\n announceAssertive({ message: (title ?? '') + info });\n }\n });\n\n useFocusWithin([listRef], isFocused => {\n if (!isFocused) {\n setTabKeyNavigation(false);\n }\n });\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Tab' && !tabKeyNavigation && listRef.current) {\n listRef.current.inert = true; // Prevents focus from moving to the list items\n setTimeout(() => {\n if (listRef.current) listRef.current.inert = false;\n }, 0);\n }\n },\n { target: listRef }\n );\n\n useArrows(\n arrowNavigationRef,\n {\n cycle: false,\n selector: '[role=\"listitem\"]',\n dir: 'up-down',\n initialFocusElement: firstListElement\n },\n [tabKeyNavigation, firstListElement]\n );\n\n const descriptionId = useUID();\n\n return (\n <tabKeyNavigationContext.Provider value={contextValue}>\n <StyledStandardDragDropList ref={containerRef} data-testid={testIds.root} {...restProps}>\n {heading && (\n <Flex container={{ direction: 'column', gap: 1, pad: [1, undefined] }}>\n <Flex\n data-testid={testIds.header}\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 1\n }}\n as='header'\n >\n {additionalInfo ? (\n <Flex container>\n {heading}\n {/* Can assert title when heading is defined */}\n <AdditionalInfo heading={additionalInfo.heading ?? title!}>\n {additionalInfo.content}\n </AdditionalInfo>\n </Flex>\n ) : (\n heading\n )}\n </Flex>\n {infoText}\n </Flex>\n )}\n <BaseStandardDragDropList\n testId={testId}\n accept={accept}\n pushMode={pushMode}\n pullMode={pullMode}\n items={itemsProp}\n onChange={onChange}\n onEnter={onEnter}\n onItemSelection={onItemSelection}\n aria-describedby={descriptionId}\n ref={listRef}\n />\n {footer && (\n <Flex\n container={{\n alignItems: 'center',\n itemGap: 1,\n pad: [1, undefined]\n }}\n as='footer'\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Tab' && e.shiftKey && firstListElement) {\n e.preventDefault();\n firstListElement.tabIndex = 0;\n firstListElement?.focus();\n }\n }}\n >\n {footer}\n </Flex>\n )}\n <HiddenText id={descriptionId}>{t('list_item_nav_instructions')}</HiddenText>\n </StyledStandardDragDropList>\n </tabKeyNavigationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(StandardDragDropList, getStandardDragDropListTestIds);\n"]}
1
+ {"version":3,"file":"StandardDragDropList.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n Dispatch,\n KeyboardEvent,\n MouseEvent,\n PropsWithoutRef,\n Ref,\n SetStateAction\n} from 'react';\n\nimport {\n Flex,\n registerIcon,\n Icon,\n Text,\n Button,\n Link,\n useI18n,\n EmptyState,\n ExpandCollapse,\n useUID,\n Tooltip,\n useElement,\n useTestIds,\n withTestIds,\n AdditionalInfo,\n Checkbox,\n RadioButton,\n HiddenText,\n useLiveLog,\n useFocusWithin,\n useConsolidatedRef,\n useArrows,\n getFocusables,\n useEvent\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent, OmitStrict } from '@pega/cosmos-react-core';\nimport * as DragIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/drag.icon';\nimport * as PlusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/plus.icon';\nimport * as CaretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as DiamondMinusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/diamond-minus.icon';\nimport * as WarnSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/warn-solid.icon';\n\nimport DragDropList from '../DragDropList';\nimport type { ItemRendererProps } from '../DragDropList';\nimport type { DraggableItem } from '../Draggable';\nimport DragHandle from '../DragHandle';\n\nimport {\n StyledStandardDragDropList,\n StyledStandardDragDropListItem,\n StyledExpandCollapseToggle,\n StyledItemActions,\n StyledItemContent,\n StyledItemStatus,\n StyledPrimary,\n StyledSecondary,\n StyledListItemInner,\n StyledItemSecondaryContainer\n} from './StandardDragDropList.styles';\nimport type {\n StandardDragDropListProps,\n StandardDragDropListItemProps\n} from './StandardDragDropList.types';\nimport {\n getItemRendererTestIds,\n getStandardDragDropListTestIds\n} from './StandardDragDropList.test-ids';\n\nregisterIcon(DragIcon, PlusIcon, CaretDownIcon, DiamondMinusIcon, WarnSolidIcon);\n\ntype InternalStandardDragDropListItemProps = StandardDragDropListItemProps &\n (\n | {\n items: StandardDragDropListItemProps[];\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n itemSelectionMode?: StandardDragDropListProps['itemSelectionMode'];\n accept: StandardDragDropListProps['accept'];\n onChange: StandardDragDropListProps['onChange'];\n }\n | {\n items?: undefined;\n onItemSelection?: StandardDragDropListProps['onItemSelection'];\n itemSelectionMode?: StandardDragDropListProps['itemSelectionMode'];\n accept?: never;\n onChange?: never;\n }\n );\n\nlet BaseStandardDragDropList: ForwardRefForwardPropsComponent<\n OmitStrict<StandardDragDropListProps, 'ref'> & { ref: Ref<HTMLUListElement> }\n>;\n\ninterface TabKeyNavigationContextValue {\n tabKeyNavigation: boolean;\n setTabKeyNavigation: Dispatch<SetStateAction<boolean>>;\n}\n\nconst tabKeyNavigationContext = createContext<TabKeyNavigationContextValue>({\n tabKeyNavigation: false,\n setTabKeyNavigation: () => {}\n});\n\nconst ItemStatus = ({\n message,\n type\n}: Partial<NonNullable<StandardDragDropListItemProps['status']>>) => {\n const [ttt, setTTT] = useElement(null);\n const iconName = type === 'warning' ? 'diamond-minus' : 'warn-solid';\n\n return (\n <StyledItemStatus aria-live='polite' role='status'>\n {message && (\n <Text variant='secondary' status={type}>\n <Flex container={{ gap: 0.5 }}>\n <Icon ref={setTTT} name={iconName} role='status' tabIndex={0} aria-label={type} />\n <Tooltip target={ttt} aria-hidden showDelay='none' hideDelay='none'>\n {message}\n </Tooltip>\n </Flex>\n </Text>\n )}\n </StyledItemStatus>\n );\n};\n\nconst getFlattenedIds = (\n items: StandardDragDropListItemProps[]\n): StandardDragDropListItemProps['id'][] => {\n return items.flatMap(item => {\n return item.items ? [item.id, ...item.items.map(({ id }) => id)] : [item.id];\n });\n};\n\nconst ItemRenderer = ({\n testId,\n dragRef,\n previewRef,\n isDragging,\n data: {\n id,\n // Remove type for DOM restProps\n type,\n accept,\n primary,\n secondary,\n draggable = true,\n status,\n items,\n icon,\n onConfigure,\n onRemove,\n onAddTo,\n onChange,\n onItemSelection,\n itemSelectionMode = 'multi',\n selected,\n ...restProps\n },\n data\n}: ItemRendererProps<InternalStandardDragDropListItemProps>) => {\n const t = useI18n();\n const [collapsed, setCollapsed] = useState(false);\n const expandCollpaseId = useUID();\n const testIds = useTestIds(testId, getItemRendererTestIds);\n const { tabKeyNavigation, setTabKeyNavigation } = useContext(tabKeyNavigationContext);\n const listItemRef = useRef<HTMLLIElement>(null);\n const containerRef = useConsolidatedRef<HTMLLIElement>(listItemRef, previewRef);\n\n const hasActions = !!(onConfigure ?? onRemove ?? onAddTo);\n const numberOfActions = [onConfigure, onRemove, onAddTo].filter(Boolean).length;\n\n const [primaryTextEl, setPrimaryTextEl] = useElement<\n HTMLSpanElement | HTMLAnchorElement | HTMLButtonElement\n >(null);\n const [secondaryTextEl, setSecondaryTextEl] = useElement<HTMLSpanElement>(null);\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Enter' && !tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(true);\n getFocusables(listItemRef)[0]?.focus();\n }\n if (e.key === 'Escape' && tabKeyNavigation) {\n e.preventDefault();\n setTabKeyNavigation(false);\n listItemRef.current?.focus();\n }\n },\n { target: listItemRef, dependencies: [tabKeyNavigation] }\n );\n\n const primaryEl = useMemo(() => {\n const primaryText = typeof primary === 'string' ? primary : primary.text;\n\n const tooltip = (\n <Tooltip smart target={primaryTextEl} showDelay='none' hideDelay='none'>\n {primaryText}\n </Tooltip>\n );\n\n const labelText = collapsed ? t('expand') : t('collapse');\n\n if (items) {\n return (\n <>\n <StyledExpandCollapseToggle\n data-testid={testIds.expandCollapseButton}\n variant='simple'\n icon\n label={labelText}\n aria-label={`${labelText} - ${primaryText}`}\n onClick={() => setCollapsed(cur => !cur)}\n aria-owns={expandCollpaseId}\n aria-expanded={!collapsed}\n tabIndex={tabKeyNavigation ? 0 : -1}\n >\n <Icon name='caret-down' />\n </StyledExpandCollapseToggle>\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n </>\n );\n }\n\n if (typeof primary === 'string') {\n return (\n <span ref={setPrimaryTextEl}>\n {primaryText}\n {tooltip}\n </span>\n );\n }\n\n if (primary.onPreview && primary.href) {\n return (\n <Link\n data-testid={testIds.primary}\n href={primary.href}\n onClick={primary.onClick}\n onPreview={primary.onPreview}\n ref={setPrimaryTextEl}\n previewable\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Link>\n );\n }\n\n return (\n <Button\n data-testid={testIds.primary}\n variant='link'\n onClick={primary.onClick}\n href={primary.href}\n ref={setPrimaryTextEl}\n >\n <StyledPrimary>\n {primaryText}\n {tooltip}\n </StyledPrimary>\n </Button>\n );\n }, [t, items, primary, collapsed, expandCollpaseId, primaryTextEl]);\n\n return (\n <Flex\n data-testid={testIds.root}\n {...restProps}\n container={{ direction: 'column' }}\n as={StyledStandardDragDropListItem}\n ref={containerRef}\n isDragging={isDragging}\n hasActions={hasActions}\n role='listitem'\n aria-label={primary}\n tabIndex={tabKeyNavigation ? -1 : 0}\n >\n <Flex\n container={{ alignItems: 'center' }}\n as={StyledListItemInner}\n isDraggable={draggable}\n isSelectable={!!onItemSelection}\n hasActions={hasActions}\n hasVisual={!!status || !!icon}\n >\n {draggable && (\n <DragHandle\n itemId={id}\n ref={dragRef}\n data-testid={testIds.dragHandle}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n />\n )}\n <Flex container={{ alignItems: 'center', gap: 0.5 }} item={{ grow: 1, shrink: 1 }}>\n <Flex\n container={{ alignItems: 'center', gap: status || icon ? 1 : undefined, pad: 0.5 }}\n as={StyledItemContent}\n >\n {onItemSelection &&\n !data.items &&\n (itemSelectionMode === 'single' ? (\n <RadioButton\n data-testid={testIds.radio}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n checked={selected}\n onChange={e => onItemSelection({ ...data, selected: e.target.checked })}\n />\n ) : (\n <Checkbox\n data-testid={testIds.checkbox}\n aria-label={typeof primary === 'string' ? primary : primary.text}\n checked={selected}\n onChange={e => onItemSelection({ ...data, selected: e.target.checked })}\n />\n ))}\n {status && <ItemStatus type={status?.type} message={status?.message} />}\n {icon && !items && <Icon data-testid={testIds.icon} {...icon} size='s' />}\n\n {primaryEl}\n </Flex>\n </Flex>\n\n {secondary && (\n <Flex\n container={{ alignItems: 'center', justify: 'end', gap: 0.5 }}\n // flex-shrink: 100000 to crush secondary text before primary\n item={{ grow: 0, shrink: 100000 }}\n numberOfActions={numberOfActions}\n as={StyledItemSecondaryContainer}\n >\n {secondary && (\n <StyledSecondary variant='secondary' ref={setSecondaryTextEl}>\n {secondary}\n <Tooltip smart target={secondaryTextEl} showDelay='none' hideDelay='none'>\n {secondary}\n </Tooltip>\n </StyledSecondary>\n )}\n </Flex>\n )}\n\n {hasActions && (\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as={StyledItemActions}>\n {onAddTo && (\n <span>\n <Button\n data-testid={testIds.addButton}\n icon\n variant='simple'\n label={t('add')}\n aria-label={t('add_noun', [typeof primary === 'string' ? primary : primary.text])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onAddTo?.(id, e);\n }}\n >\n <Icon name='plus' />\n </Button>\n </span>\n )}\n\n {onConfigure && (\n <span>\n <Button\n data-testid={testIds.configureButton}\n icon\n variant='simple'\n label={t('configure')}\n aria-label={t('configure_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onConfigure?.(id, e);\n }}\n >\n <Icon name='gear' />\n </Button>\n </span>\n )}\n\n {onRemove && (\n <span>\n <Button\n data-testid={testIds.removeButton}\n icon\n variant='simple'\n label={t('remove')}\n aria-label={t('remove_noun', [\n typeof primary === 'string' ? primary : primary.text\n ])}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onRemove?.(id, e);\n }}\n >\n <Icon name='trash' />\n </Button>\n </span>\n )}\n </Flex>\n )}\n </Flex>\n\n {/* Using data here so TS can track conditional type. */}\n {data.items && data.items.length > 0 && (\n <ExpandCollapse collapsed={collapsed} id={expandCollpaseId}>\n <BaseStandardDragDropList\n accept={data.accept}\n items={data.items}\n onChange={data.onChange}\n onItemSelection={data.onItemSelection}\n itemSelectionMode={data.itemSelectionMode}\n />\n </ExpandCollapse>\n )}\n </Flex>\n );\n};\n\nconst ItemRendererWithTestIds = withTestIds(ItemRenderer, getItemRendererTestIds);\n\nBaseStandardDragDropList = forwardRef(function BaseStandardDragDropListFunction(\n {\n testId,\n accept,\n items: itemsProp,\n onChange: onChangeProp,\n onEnter,\n onItemSelection,\n itemSelectionMode = 'multi',\n pushMode,\n pullMode,\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: Ref<HTMLUListElement>\n) {\n const flatIds = useMemo(() => getFlattenedIds(itemsProp), [itemsProp]);\n const { tabKeyNavigation } = useContext(tabKeyNavigationContext);\n\n const timerRef = useRef<number>();\n const newItemsRef = useRef<StandardDragDropListItemProps[]>();\n\n const mergeChangeHandler = useCallback(\n (newItems: StandardDragDropListItemProps[]) => {\n if (typeof timerRef.current === 'number' && newItemsRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n const refedItems = newItemsRef.current;\n newItemsRef.current = undefined;\n\n const reffedItemsCount = getFlattenedIds(refedItems).length;\n const newItemsCount = getFlattenedIds(newItems).length;\n\n // Item moved between the top level list and nested list.\n if (Math.abs(reffedItemsCount - newItemsCount) === 2) {\n const itemsWithDuplicate = reffedItemsCount > newItemsCount ? refedItems : newItems;\n\n const flatItemsWithDuplicate = getFlattenedIds(itemsWithDuplicate);\n\n const duplicateItemId = flatItemsWithDuplicate.find(\n (id, idx) => flatItemsWithDuplicate.indexOf(id) !== idx\n );\n\n // Should never happen.\n if (!duplicateItemId) return;\n\n // The duplicate was top level before.\n if (itemsProp.some(({ id }) => id === duplicateItemId)) {\n onChangeProp?.(itemsWithDuplicate.filter(({ id }) => id !== duplicateItemId));\n }\n\n // The duplicate was nested before.\n else {\n onChangeProp?.(\n itemsWithDuplicate.map(innerItem => {\n if (!innerItem.items) return innerItem;\n\n if (\n itemsProp\n .find(({ id }) => id === innerItem.id)\n ?.items?.some(({ id: subItemId }) => subItemId === duplicateItemId)\n ) {\n return {\n ...innerItem,\n items: innerItem.items.filter(({ id }) => id !== duplicateItemId)\n };\n }\n\n return innerItem;\n })\n );\n }\n } else {\n // Failsafe for two unrelated change events within 100ms.\n onChangeProp?.(refedItems);\n onChangeProp?.(newItems);\n }\n } else {\n newItemsRef.current = newItems;\n timerRef.current = window.setTimeout(() => {\n onChangeProp?.(newItems);\n }, 100);\n }\n },\n [onChangeProp, itemsProp]\n );\n\n const itemsToRender: DraggableItem<InternalStandardDragDropListItemProps>[] = useMemo(\n () =>\n itemsProp.map(item => {\n const newItem = {\n id: item.id,\n type: item.type,\n data: {\n ...item,\n onItemSelection,\n itemSelectionMode,\n draggable: item.draggable && !!onChangeProp\n } as InternalStandardDragDropListItemProps\n };\n if (!item.items) return newItem;\n\n return {\n ...newItem,\n data: {\n ...item,\n onItemSelection,\n itemSelectionMode,\n accept: item.accept ?? accept,\n draggable: item.draggable && !!onChangeProp,\n onChange: onChangeProp\n ? (newItems: InternalStandardDragDropListItemProps[]) => {\n const newContentItems = itemsProp.map(topLevelItem =>\n topLevelItem.id === item.id && topLevelItem.items\n ? { ...topLevelItem, items: newItems }\n : topLevelItem\n );\n\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (\n itemsProp.some(propItem => !!propItem.items) &&\n flatIds.length !== flatNewItems.length\n ) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp(newContentItems);\n }\n }\n : undefined\n } as InternalStandardDragDropListItemProps\n };\n }),\n [\n accept,\n itemsProp,\n onChangeProp,\n itemSelectionMode,\n tabKeyNavigation,\n flatIds,\n mergeChangeHandler\n ]\n );\n\n const onChange = useCallback(\n (newItems: DraggableItem<InternalStandardDragDropListItemProps>[]) => {\n const newContentItems = newItems.map(({ data: { onChange: _, ...data } }) => {\n return data;\n });\n const flatNewItems = getFlattenedIds(newContentItems);\n\n if (itemsProp.some(propItem => !!propItem.items) && flatIds.length !== flatNewItems.length) {\n // An item may be \"removed\" or \"duplicated\".\n mergeChangeHandler(newContentItems);\n } else {\n onChangeProp?.(newContentItems);\n }\n },\n [onChangeProp, flatIds, mergeChangeHandler]\n );\n\n return (\n <DragDropList\n testId={testId}\n {...restProps}\n ref={ref}\n accept={accept}\n items={itemsToRender}\n pushMode={pushMode}\n pullMode={pullMode}\n itemRenderer={ItemRendererWithTestIds}\n emptyRenderer={EmptyState}\n onChange={onChange}\n onEnter={\n onEnter as (\n item: DraggableItem<InternalStandardDragDropListItemProps>\n ) => DraggableItem<InternalStandardDragDropListItemProps>\n }\n />\n );\n});\n\ntype CombinedProps = StandardDragDropListProps & InternalStandardDragDropListItemProps;\n\nconst StandardDragDropList = forwardRef<HTMLDivElement, CombinedProps>(\n (\n {\n testId,\n accept,\n pushMode,\n pullMode,\n items: itemsProp,\n heading: title,\n info,\n footer,\n headingTag = 'h2',\n additionalInfo,\n onChange,\n onEnter,\n onItemSelection,\n itemSelectionMode = 'multi',\n ...restProps\n }: PropsWithoutRef<StandardDragDropListProps>,\n ref: StandardDragDropListProps['ref']\n ) => {\n const [tabKeyNavigation, setTabKeyNavigation] = useState(false);\n const contextValue = useMemo(\n () => ({ tabKeyNavigation, setTabKeyNavigation }),\n [tabKeyNavigation]\n );\n const containerRef = useConsolidatedRef(ref);\n const listRef = useRef<HTMLUListElement>(null);\n const t = useI18n();\n const testIds = useTestIds(testId, getStandardDragDropListTestIds);\n const { announceAssertive } = useLiveLog();\n const [firstListElement, setFirstListElement] = useElement<HTMLLIElement>(null);\n\n useEffect(() => {\n setFirstListElement(\n listRef.current?.querySelector<HTMLLIElement>('[role=\"listitem\"]') ?? null\n );\n }, [itemsProp]);\n\n const arrowNavigationRef = tabKeyNavigation ? { current: null } : listRef;\n\n const heading = title ? (\n <Text variant={headingTag} role='heading'>\n {title}\n </Text>\n ) : null;\n\n const infoText = info ? <Text variant='primary'>{info}</Text> : undefined;\n\n useFocusWithin([containerRef], isFocused => {\n if (isFocused) {\n announceAssertive({ message: (title ?? '') + info });\n }\n });\n\n useFocusWithin([listRef], isFocused => {\n if (!isFocused) {\n setTabKeyNavigation(false);\n }\n });\n\n useEvent(\n 'keydown',\n e => {\n if (e.key === 'Tab' && !tabKeyNavigation && listRef.current) {\n listRef.current.inert = true; // Prevents focus from moving to the list items\n setTimeout(() => {\n if (listRef.current) listRef.current.inert = false;\n }, 0);\n }\n },\n { target: listRef }\n );\n\n useArrows(\n arrowNavigationRef,\n {\n cycle: false,\n selector: '[role=\"listitem\"]',\n dir: 'up-down',\n initialFocusElement: firstListElement\n },\n [tabKeyNavigation, firstListElement]\n );\n\n const descriptionId = useUID();\n\n return (\n <tabKeyNavigationContext.Provider value={contextValue}>\n <StyledStandardDragDropList ref={containerRef} data-testid={testIds.root} {...restProps}>\n {heading && (\n <Flex container={{ direction: 'column', gap: 1, pad: [1, undefined] }}>\n <Flex\n data-testid={testIds.header}\n container={{\n justify: 'between',\n alignItems: 'center',\n gap: 1\n }}\n as='header'\n >\n {additionalInfo ? (\n <Flex container>\n {heading}\n {/* Can assert title when heading is defined */}\n <AdditionalInfo heading={additionalInfo.heading ?? title!}>\n {additionalInfo.content}\n </AdditionalInfo>\n </Flex>\n ) : (\n heading\n )}\n </Flex>\n {infoText}\n </Flex>\n )}\n <BaseStandardDragDropList\n testId={testId}\n accept={accept}\n pushMode={pushMode}\n pullMode={pullMode}\n items={itemsProp}\n onChange={onChange}\n onEnter={onEnter}\n onItemSelection={onItemSelection}\n itemSelectionMode={itemSelectionMode}\n aria-describedby={descriptionId}\n ref={listRef}\n />\n {footer && (\n <Flex\n container={{\n alignItems: 'center',\n itemGap: 1,\n pad: [1, undefined]\n }}\n as='footer'\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'Tab' && e.shiftKey && firstListElement) {\n e.preventDefault();\n firstListElement.tabIndex = 0;\n firstListElement?.focus();\n }\n }}\n >\n {footer}\n </Flex>\n )}\n <HiddenText id={descriptionId}>{t('list_item_nav_instructions')}</HiddenText>\n </StyledStandardDragDropList>\n </tabKeyNavigationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(StandardDragDropList, getStandardDragDropListTestIds);\n"]}
@@ -1,3 +1,3 @@
1
- export declare const getItemRendererTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["expand-collapse-button", "add-button", "configure-button", "remove-button", "drag-handle", "icon", "checkbox", "primary"]>;
1
+ export declare const getItemRendererTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["expand-collapse-button", "add-button", "configure-button", "remove-button", "drag-handle", "icon", "checkbox", "radio", "primary"]>;
2
2
  export declare const getStandardDragDropListTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["header"]>;
3
3
  //# sourceMappingURL=StandardDragDropList.test-ids.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.test-ids.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.test-ids.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,gQASxB,CAAC;AAEZ,eAAO,MAAM,8BAA8B,+IAEhC,CAAC"}
1
+ {"version":3,"file":"StandardDragDropList.test-ids.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.test-ids.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,yQAUxB,CAAC;AAEZ,eAAO,MAAM,8BAA8B,+IAEhC,CAAC"}
@@ -7,6 +7,7 @@ export const getItemRendererTestIds = createTestIds('standard-drag-drop-item', [
7
7
  'drag-handle',
8
8
  'icon',
9
9
  'checkbox',
10
+ 'radio',
10
11
  'primary'
11
12
  ]);
12
13
  export const getStandardDragDropListTestIds = createTestIds('standard-drag-drop-list', [
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.test-ids.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.test-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,yBAAyB,EAAE;IAC7E,wBAAwB;IACxB,YAAY;IACZ,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,MAAM;IACN,UAAU;IACV,SAAS;CACD,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAC,yBAAyB,EAAE;IACrF,QAAQ;CACA,CAAC,CAAC","sourcesContent":["import { createTestIds } from '@pega/cosmos-react-core';\n\nexport const getItemRendererTestIds = createTestIds('standard-drag-drop-item', [\n 'expand-collapse-button',\n 'add-button',\n 'configure-button',\n 'remove-button',\n 'drag-handle',\n 'icon',\n 'checkbox',\n 'primary'\n] as const);\n\nexport const getStandardDragDropListTestIds = createTestIds('standard-drag-drop-list', [\n 'header'\n] as const);\n"]}
1
+ {"version":3,"file":"StandardDragDropList.test-ids.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.test-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,yBAAyB,EAAE;IAC7E,wBAAwB;IACxB,YAAY;IACZ,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;CACD,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAC,yBAAyB,EAAE;IACrF,QAAQ;CACA,CAAC,CAAC","sourcesContent":["import { createTestIds } from '@pega/cosmos-react-core';\n\nexport const getItemRendererTestIds = createTestIds('standard-drag-drop-item', [\n 'expand-collapse-button',\n 'add-button',\n 'configure-button',\n 'remove-button',\n 'drag-handle',\n 'icon',\n 'checkbox',\n 'radio',\n 'primary'\n] as const);\n\nexport const getStandardDragDropListTestIds = createTestIds('standard-drag-drop-list', [\n 'header'\n] as const);\n"]}
@@ -18,8 +18,10 @@ export interface StandardDragDropListProps extends OmitStrict<DragDropListProps<
18
18
  * @default h2
19
19
  */
20
20
  headingTag?: HeadingTag;
21
- /** Enables list item selection rendering checkboxes for each. */
21
+ /** Enables list item selection, rendering radio buttons in single mode or checkboxes in multi mode. */
22
22
  onItemSelection?: (item: StandardDragDropListItemProps) => void;
23
+ /** Controls list item selection control visualization. */
24
+ itemSelectionMode?: 'single' | 'multi';
23
25
  /** A region for various list level actions */
24
26
  footer?: ReactNode;
25
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.types.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardDragDropList.types.d.ts","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"StandardDragDropList.types.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MouseEvent, MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport type {\n LinkProps,\n TestIdProp,\n OmitStrict,\n BaseProps,\n NoChildrenProp,\n ForwardProps,\n HeadingTag,\n AdditionalInfoProps,\n IconProps,\n FormControlProps\n} from '@pega/cosmos-react-core';\n\nimport type { DragDropListProps } from '../DragDropList';\n\nexport interface StandardDragDropListProps\n extends OmitStrict<\n DragDropListProps<StandardDragDropListItemProps>,\n 'dragHandles' | 'itemRenderer' | 'emptyRenderer' | 'items' | 'onChange'\n >,\n BaseProps,\n NoChildrenProp,\n TestIdProp {\n /** The contents of the list. */\n items: StandardDragDropListItemProps[];\n /** A title for the list. */\n heading?: string;\n /** Renders a button that when clicked presents additional information for the list. */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /** For use in providing instructional information about the list. */\n info?: FormControlProps['info'];\n /**\n * Select the heading tag for header\n * @default h2\n */\n headingTag?: HeadingTag;\n /** Enables list item selection rendering checkboxes for each. */\n onItemSelection?: (item: StandardDragDropListItemProps) => void;\n /** A region for various list level actions */\n footer?: ReactNode;\n /**\n * Called when the list's content changes by way of drag for reorder, add or remove.\n * The handler is provided an array of items representing the new state.\n */\n onChange?: (items: StandardDragDropListProps['items']) => void;\n /** A ref to the root HTMLElement for the component. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype ItemAction = (\n id: StandardDragDropListItemProps['id'],\n e: MouseEvent<HTMLButtonElement>\n) => void;\n\nexport type StandardDragDropListItemProps = ForwardProps & {\n /** An identifier unique within the entire list hierarchy. */\n id: string;\n /** Indicates the type of item for determining drop acceptance by a target list. */\n type: string;\n /** The primary textual representation for the item or props for a linkable resource. */\n primary:\n | string\n | ({\n text: string;\n onClick: MouseEventHandler;\n href?: string;\n onPreview?: LinkProps['onPreview'];\n } & ForwardProps);\n /** An additional textual representation for the item e.g. metadata. */\n secondary?: string;\n /** Presents the item as being in an invalidate state. */\n status?: {\n type: 'error' | 'warning';\n message: string;\n };\n /** Whether or not the item can be reordered with drag. */\n draggable?: boolean;\n /** Selected state of the item. */\n selected?: boolean;\n /** Defines the props of the icon passed to the list item */\n icon?: OmitStrict<IconProps, 'size'>;\n /**\n * If the item is configurable pass a callback to render a button.\n * The item's id and an event argument provides access to the underlying HTMLButtonElement.\n */\n onConfigure?: ItemAction;\n /**\n * If the item can be removed form the list pass a callback to render a button.\n * The handler's event argument provides access to the underlying HTMLButtonElement.\n */\n onRemove?: ItemAction;\n} & (\n | {\n /** If the item can possess a nested list of items. */\n items: StandardDragDropListItemProps[];\n /** Type of items allowed to be dropped on the list. If not passed it will inherit accept from the parent list. */\n accept?: StandardDragDropListProps['accept'];\n /** Optionally render an add button for parent item types. */\n onAddTo?: ItemAction;\n }\n | {\n items?: undefined;\n accept?: never;\n onAddTo?: never;\n }\n );\n"]}
1
+ {"version":3,"file":"StandardDragDropList.types.js","sourceRoot":"","sources":["../../../src/components/StandardDragDropList/StandardDragDropList.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { MouseEvent, MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport type {\n LinkProps,\n TestIdProp,\n OmitStrict,\n BaseProps,\n NoChildrenProp,\n ForwardProps,\n HeadingTag,\n AdditionalInfoProps,\n IconProps,\n FormControlProps\n} from '@pega/cosmos-react-core';\n\nimport type { DragDropListProps } from '../DragDropList';\n\nexport interface StandardDragDropListProps\n extends OmitStrict<\n DragDropListProps<StandardDragDropListItemProps>,\n 'dragHandles' | 'itemRenderer' | 'emptyRenderer' | 'items' | 'onChange'\n >,\n BaseProps,\n NoChildrenProp,\n TestIdProp {\n /** The contents of the list. */\n items: StandardDragDropListItemProps[];\n /** A title for the list. */\n heading?: string;\n /** Renders a button that when clicked presents additional information for the list. */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /** For use in providing instructional information about the list. */\n info?: FormControlProps['info'];\n /**\n * Select the heading tag for header\n * @default h2\n */\n headingTag?: HeadingTag;\n /** Enables list item selection, rendering radio buttons in single mode or checkboxes in multi mode. */\n onItemSelection?: (item: StandardDragDropListItemProps) => void;\n /** Controls list item selection control visualization. */\n itemSelectionMode?: 'single' | 'multi';\n /** A region for various list level actions */\n footer?: ReactNode;\n /**\n * Called when the list's content changes by way of drag for reorder, add or remove.\n * The handler is provided an array of items representing the new state.\n */\n onChange?: (items: StandardDragDropListProps['items']) => void;\n /** A ref to the root HTMLElement for the component. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype ItemAction = (\n id: StandardDragDropListItemProps['id'],\n e: MouseEvent<HTMLButtonElement>\n) => void;\n\nexport type StandardDragDropListItemProps = ForwardProps & {\n /** An identifier unique within the entire list hierarchy. */\n id: string;\n /** Indicates the type of item for determining drop acceptance by a target list. */\n type: string;\n /** The primary textual representation for the item or props for a linkable resource. */\n primary:\n | string\n | ({\n text: string;\n onClick: MouseEventHandler;\n href?: string;\n onPreview?: LinkProps['onPreview'];\n } & ForwardProps);\n /** An additional textual representation for the item e.g. metadata. */\n secondary?: string;\n /** Presents the item as being in an invalidate state. */\n status?: {\n type: 'error' | 'warning';\n message: string;\n };\n /** Whether or not the item can be reordered with drag. */\n draggable?: boolean;\n /** Selected state of the item. */\n selected?: boolean;\n /** Defines the props of the icon passed to the list item */\n icon?: OmitStrict<IconProps, 'size'>;\n /**\n * If the item is configurable pass a callback to render a button.\n * The item's id and an event argument provides access to the underlying HTMLButtonElement.\n */\n onConfigure?: ItemAction;\n /**\n * If the item can be removed form the list pass a callback to render a button.\n * The handler's event argument provides access to the underlying HTMLButtonElement.\n */\n onRemove?: ItemAction;\n} & (\n | {\n /** If the item can possess a nested list of items. */\n items: StandardDragDropListItemProps[];\n /** Type of items allowed to be dropped on the list. If not passed it will inherit accept from the parent list. */\n accept?: StandardDragDropListProps['accept'];\n /** Optionally render an add button for parent item types. */\n onAddTo?: ItemAction;\n }\n | {\n items?: undefined;\n accept?: never;\n onAddTo?: never;\n }\n );\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-dnd",
3
- "version": "9.0.0-build.27.8",
3
+ "version": "9.0.0-build.28.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": false,
@@ -14,7 +14,7 @@
14
14
  "build": "tsc -b tsconfig.build.json"
15
15
  },
16
16
  "dependencies": {
17
- "@pega/cosmos-react-core": "9.0.0-build.27.8",
17
+ "@pega/cosmos-react-core": "9.0.0-build.28.0",
18
18
  "@types/react": "^17.0.62 || ^18.3.3",
19
19
  "@types/react-dom": "^17.0.20 || ^18.3.0",
20
20
  "dnd-core": "14.0.1",