playbook_ui 18.1.0 → 18.2.0.pre.rc.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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +1 -4
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +9 -5
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +6 -1
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +94 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +4 -4
- data/app/pb_kits/playbook/pb_lightbox/Header/_lightbox_header.tsx +1 -1
- data/app/pb_kits/playbook/pb_lightbox/lightbox.test.jsx +1 -1
- data/app/pb_kits/playbook/pb_select/_select.scss +2 -2
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +1 -1
- data/app/pb_kits/playbook/pb_text_input/add_on.html.erb +2 -2
- data/dist/ai/forms.json +1 -1
- data/dist/ai/index.json +2 -2
- data/dist/chunks/_detail-BqqzPTNr.js +5 -0
- data/dist/chunks/{_pb_line_graph-CUJ7NJIr.js → _pb_line_graph-BGyCJjgG.js} +1 -1
- data/dist/chunks/_table-A9O3w0UR.js +1 -0
- data/dist/chunks/_typeahead-C7iPR5ZF.js +1 -0
- data/dist/chunks/{globalProps-DDcpyjvz.js → globalProps-K1DCn3il.js} +1 -1
- data/dist/chunks/lib-7vm9BMqp.js +29 -0
- data/dist/chunks/{time_picker_helper-B_FN8E9Y.js → time_picker_helper-BZutIzB3.js} +1 -1
- data/dist/chunks/vendor.js +2 -2
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +9 -9
- data/dist/chunks/_detail-CDUjsRrc.js +0 -5
- data/dist/chunks/_table-C9KHGQhb.js +0 -1
- data/dist/chunks/_typeahead-CfxZLhd3.js +0 -1
- data/dist/chunks/lib-D57mygNT.js +0 -29
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ea7a2cbd41fa905d1b87ea9045bf7b2ba422f28fb0a2b573d236bdc9298ac3ff
|
|
4
|
+
data.tar.gz: a33468825a7669e840ba73fa1e57c838bba54a00e8900d942de1285e6dd418f2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1d3d5f31785f165d440106d964e9c2e594972664f7f01447bf93ffc3b83b0c3d0c2c7c0d53af0ada8ce2737cd0189b9a9dd39521b291bf7638e7ad398e660f6e
|
|
7
|
+
data.tar.gz: 037a62fcdd8ecf9417080645b462bf7f3a3ccc2a2f96baf7feed75b10f17aa43c7b5491711bdc947f4ed28a61a247579cb016c11962e4a7f745615fa5417fd93
|
|
@@ -53,10 +53,7 @@ const TableCellRenderer = ({
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
const parent = cell.column.parent;
|
|
56
|
-
if (!parent)
|
|
57
|
-
const last = row.getVisibleCells().at(-1);
|
|
58
|
-
return last?.column.id === cell.column.id;
|
|
59
|
-
}
|
|
56
|
+
if (!parent) return i !== 0;
|
|
60
57
|
|
|
61
58
|
const visibleSiblings = parent.columns.filter(col => col.getIsVisible());
|
|
62
59
|
return visibleSiblings.at(-1)?.id === cell.column.id;
|
|
@@ -103,16 +103,20 @@ export const TableHeaderCell = ({
|
|
|
103
103
|
col.getIsVisible?.() ||
|
|
104
104
|
(Array.isArray(col.columns) &&
|
|
105
105
|
col.columns.some((child: any) => columnHasVisibleLeaf(child)));
|
|
106
|
-
|
|
107
|
-
// Check on column position in stack + visibility to add the vertical border
|
|
106
|
+
|
|
107
|
+
// Check on column position in stack + visibility to add the vertical border
|
|
108
108
|
const isLastHeaderCell = (() => {
|
|
109
109
|
if (!header) return false;
|
|
110
|
-
|
|
110
|
+
|
|
111
111
|
if (header.colSpan > 1 && header.column.parent !== undefined) return true;
|
|
112
112
|
const parent = header.column.parent;
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
if (!parent) {
|
|
115
|
-
const
|
|
115
|
+
const headerGroups = table?.getHeaderGroups() ?? [];
|
|
116
|
+
const isSubheader = (header.headerGroup?.depth ?? 0) > 0;
|
|
117
|
+
if (isSubheader && headerGroups.length > 1 && header.index !== 0) return true;
|
|
118
|
+
|
|
119
|
+
const topHeaders = headerGroups[0]?.headers.filter((item: any) => columnHasVisibleLeaf(item.column));
|
|
116
120
|
return topHeaders?.at(-1)?.id === header.id;
|
|
117
121
|
}
|
|
118
122
|
const visibleSiblings = parent.columns.filter(columnHasVisibleLeaf);
|
|
@@ -46,6 +46,9 @@ export const VirtualizedTableView = ({
|
|
|
46
46
|
} = useContext(AdvancedTableContext)
|
|
47
47
|
|
|
48
48
|
const columnPinning = table.getState().columnPinning || { left: [] };
|
|
49
|
+
const isMultiHeaderColumn = (table.options.meta?.columnDefinitions || []).some(
|
|
50
|
+
(column: Record<string, unknown>) => "columns" in column
|
|
51
|
+
);
|
|
49
52
|
const sortingState = JSON.stringify(table.getState().sorting || []);
|
|
50
53
|
|
|
51
54
|
// Store column widths extracted from header
|
|
@@ -212,7 +215,9 @@ export const VirtualizedTableView = ({
|
|
|
212
215
|
|
|
213
216
|
{row.getVisibleCells().map((cell: Cell<GenericObject, unknown>, i: number) => {
|
|
214
217
|
const isPinnedLeft = columnPinning.left.includes(cell.column.id);
|
|
215
|
-
const isLastCell = cell.column.parent
|
|
218
|
+
const isLastCell = cell.column.parent
|
|
219
|
+
? cell.column.parent.columns.at(-1)?.id === cell.column.id
|
|
220
|
+
: isMultiHeaderColumn && i !== 0;
|
|
216
221
|
const cellWidth = columnWidths[cell.column.id] || 'auto';
|
|
217
222
|
|
|
218
223
|
return (
|
|
@@ -1383,4 +1383,98 @@ test("cascadeCollapse=true with header toggle all: collapse all then expand all
|
|
|
1383
1383
|
await waitFor(() => {
|
|
1384
1384
|
expect(kit.querySelector(".depth-sub-row-1")).toBeInTheDocument()
|
|
1385
1385
|
})
|
|
1386
|
+
})
|
|
1387
|
+
|
|
1388
|
+
const groupedColumnDefinitions = [
|
|
1389
|
+
{
|
|
1390
|
+
accessor: "year",
|
|
1391
|
+
label: "Year",
|
|
1392
|
+
},
|
|
1393
|
+
{
|
|
1394
|
+
label: "Enrollment Data",
|
|
1395
|
+
columns: [
|
|
1396
|
+
{
|
|
1397
|
+
accessor: "newEnrollments",
|
|
1398
|
+
label: "New Enrollments",
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
accessor: "scheduledMeetings",
|
|
1402
|
+
label: "Scheduled Meetings",
|
|
1403
|
+
},
|
|
1404
|
+
],
|
|
1405
|
+
},
|
|
1406
|
+
{
|
|
1407
|
+
accessor: "attendanceRate",
|
|
1408
|
+
label: "Attendance Rate",
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
label: "Performance Data",
|
|
1412
|
+
columns: [
|
|
1413
|
+
{
|
|
1414
|
+
accessor: "completedClasses",
|
|
1415
|
+
label: "Completed Classes",
|
|
1416
|
+
},
|
|
1417
|
+
{
|
|
1418
|
+
accessor: "graduatedStudents",
|
|
1419
|
+
label: "Graduated Students",
|
|
1420
|
+
},
|
|
1421
|
+
],
|
|
1422
|
+
},
|
|
1423
|
+
{
|
|
1424
|
+
accessor: "classCompletionRate",
|
|
1425
|
+
label: "Difference",
|
|
1426
|
+
},
|
|
1427
|
+
]
|
|
1428
|
+
|
|
1429
|
+
const headerWithText = (row, text) => (
|
|
1430
|
+
[...row.querySelectorAll("th")].find((cell) => cell.textContent.includes(text))
|
|
1431
|
+
)
|
|
1432
|
+
|
|
1433
|
+
test("parentless subheaders get last-header-cell without a placeholder parent", () => {
|
|
1434
|
+
render(
|
|
1435
|
+
<AdvancedTable
|
|
1436
|
+
columnDefinitions={groupedColumnDefinitions}
|
|
1437
|
+
data={{ testid: testId }}
|
|
1438
|
+
enableToggleExpansion="none"
|
|
1439
|
+
tableData={MOCK_DATA_NO_SUBROWS}
|
|
1440
|
+
/>
|
|
1441
|
+
)
|
|
1442
|
+
|
|
1443
|
+
const kit = screen.getByTestId(testId)
|
|
1444
|
+
const [topRow, subheaderRow] = kit.querySelectorAll("thead tr")
|
|
1445
|
+
const topCells = topRow.querySelectorAll("th")
|
|
1446
|
+
|
|
1447
|
+
expect(headerWithText(subheaderRow, "Year")).not.toHaveClass("last-header-cell")
|
|
1448
|
+
expect(headerWithText(subheaderRow, "New Enrollments")).not.toHaveClass("last-header-cell")
|
|
1449
|
+
expect(headerWithText(subheaderRow, "Scheduled Meetings")).toHaveClass("last-header-cell")
|
|
1450
|
+
expect(headerWithText(subheaderRow, "Attendance Rate")).toHaveClass("last-header-cell")
|
|
1451
|
+
expect(headerWithText(subheaderRow, "Completed Classes")).not.toHaveClass("last-header-cell")
|
|
1452
|
+
expect(headerWithText(subheaderRow, "Graduated Students")).toHaveClass("last-header-cell")
|
|
1453
|
+
expect(headerWithText(subheaderRow, "Difference")).toHaveClass("last-header-cell")
|
|
1454
|
+
expect(headerWithText(topRow, "Enrollment Data")).not.toHaveClass("last-header-cell")
|
|
1455
|
+
expect(topCells[topCells.length - 1]).toHaveClass("last-header-cell")
|
|
1456
|
+
|
|
1457
|
+
const bodyCells = kit.querySelector("tbody tr").querySelectorAll("td")
|
|
1458
|
+
const bodyGroupEnds = [...bodyCells].map((cell) => cell.classList.contains("last-cell"))
|
|
1459
|
+
expect(bodyGroupEnds).toEqual([false, false, true, true, false, true, true])
|
|
1460
|
+
})
|
|
1461
|
+
|
|
1462
|
+
test("single header row does not mark every column as last-header-cell", () => {
|
|
1463
|
+
render(
|
|
1464
|
+
<AdvancedTable
|
|
1465
|
+
columnDefinitions={columnDefinitions}
|
|
1466
|
+
data={{ testid: testId }}
|
|
1467
|
+
enableToggleExpansion="none"
|
|
1468
|
+
tableData={MOCK_DATA_NO_SUBROWS}
|
|
1469
|
+
/>
|
|
1470
|
+
)
|
|
1471
|
+
|
|
1472
|
+
const kit = screen.getByTestId(testId)
|
|
1473
|
+
const headers = kit.querySelectorAll("thead th")
|
|
1474
|
+
const groupEnds = [...headers].filter((cell) => cell.classList.contains("last-header-cell"))
|
|
1475
|
+
|
|
1476
|
+
expect(headers.length).toBeGreaterThan(1)
|
|
1477
|
+
expect(headers[0]).not.toHaveClass("last-header-cell")
|
|
1478
|
+
expect(groupEnds).toHaveLength(1)
|
|
1479
|
+
expect(kit.querySelector("tbody td.last-cell")).not.toBeInTheDocument()
|
|
1386
1480
|
})
|
|
@@ -32,13 +32,13 @@ module Playbook
|
|
|
32
32
|
prop :pinned_rows, type: Playbook::Props::HashProp,
|
|
33
33
|
default: {}
|
|
34
34
|
|
|
35
|
-
def flatten_columns(columns)
|
|
36
|
-
columns.flat_map do |col|
|
|
35
|
+
def flatten_columns(columns, root: true)
|
|
36
|
+
columns.each_with_index.flat_map do |col, index|
|
|
37
37
|
if col[:columns]
|
|
38
|
-
flatten_columns(col[:columns])
|
|
38
|
+
flatten_columns(col[:columns], root: false)
|
|
39
39
|
elsif col[:accessor].present?
|
|
40
40
|
if has_grouped_headers?
|
|
41
|
-
col.merge(is_last_in_group: last_in_group?(columns, col))
|
|
41
|
+
col.merge(is_last_in_group: root ? index != 0 : last_in_group?(columns, col))
|
|
42
42
|
else
|
|
43
43
|
col
|
|
44
44
|
end
|
|
@@ -113,7 +113,7 @@ test('Closes on close button', async () => {
|
|
|
113
113
|
)
|
|
114
114
|
|
|
115
115
|
const kit = screen.getByTestId(testId)
|
|
116
|
-
const closeIcon = kit.querySelector('.pb_button_kit.
|
|
116
|
+
const closeIcon = kit.querySelector('.pb_button_kit.pb_button_secondary.pb_button_inline.pb_button_enabled')
|
|
117
117
|
|
|
118
118
|
fireEvent(
|
|
119
119
|
closeIcon,
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
> .pb_body_kit_negative {
|
|
89
89
|
margin-top: $space_xs / 2;
|
|
90
90
|
}
|
|
91
|
-
|
|
91
|
+
select {
|
|
92
92
|
border-color: $input_border_error;
|
|
93
93
|
}
|
|
94
94
|
.pb_select_kit_caret {
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
}
|
|
236
236
|
.pb_select_kit_wrapper {
|
|
237
237
|
&.error {
|
|
238
|
-
|
|
238
|
+
select {
|
|
239
239
|
border-color: $input_border_error_dark;
|
|
240
240
|
}
|
|
241
241
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<%= pb_rails("flex", props: { classname: "add-on-#{alignment} #{border_css}", vertical: "center"}) do %>
|
|
2
2
|
<% if left_aligned? %>
|
|
3
3
|
<%= pb_rails("card", props: {classname: "#{dark_mode_css} add-on-card card-left-aligned", dark: dark}) do %>
|
|
4
|
-
<%= pb_rails("icon", props: { icon: icon, classname: "add-on-icon", fixed_width:
|
|
4
|
+
<%= pb_rails("icon", props: { icon: icon, classname: "add-on-icon", fixed_width: true, dark: dark }) %>
|
|
5
5
|
<% end %>
|
|
6
6
|
<%= content %>
|
|
7
7
|
<% else %>
|
|
8
8
|
<%= content %>
|
|
9
9
|
<%= pb_rails("card", props: {classname: "#{dark_mode_css} add-on-card card-right-aligned", dark: dark}) do %>
|
|
10
|
-
<%= pb_rails("icon", props: { icon: icon, classname: "add-on-icon", fixed_width:
|
|
10
|
+
<%= pb_rails("icon", props: { icon: icon, classname: "add-on-icon", fixed_width: true, dark: dark }) %>
|
|
11
11
|
<% end %>
|
|
12
12
|
<% end %>
|
|
13
13
|
<% end %>
|
data/dist/ai/forms.json
CHANGED
data/dist/ai/index.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "18.
|
|
2
|
+
"version": "18.2.0-rc.0",
|
|
3
3
|
"metadataVersion": 1,
|
|
4
4
|
"forms": "forms.json",
|
|
5
|
-
"generated": "2026-10-
|
|
5
|
+
"generated": "2026-10-08T18:16:46.517Z",
|
|
6
6
|
"schemas": {
|
|
7
7
|
"globalProps": "global-props.schema.json",
|
|
8
8
|
"globalEventProps": "global-event-props.schema.json",
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{b as buildAriaProps,d as classnames,e as buildCss,g as globalProps,f as globalInlineProps,a as buildDataProps,c as buildHtmlProps}from"./globalProps-K1DCn3il.js";import*as React from"react";import React__default,{createContext,useReducer,useRef,useEffect,useMemo,useContext,createElement,useLayoutEffect,forwardRef,useState}from"react";import{n as noop,a as get,b as offset$2,d as flip$2,s as shift$2,e as arrow$3,h as computePosition$1,i as createCoords,r as rectToClientRect,j as round,m as max,k as min,l as floor}from"./lib-7vm9BMqp.js";import*as ReactDOM from"react-dom";const initialState={items:[],dragData:{id:"",initialGroup:"",originId:""},isDragging:"",activeContainer:""};const reducer=(state,action)=>{switch(action.type){case"SET_ITEMS":return{...state,items:action.payload};case"SET_DRAG_DATA":return{...state,dragData:action.payload};case"SET_IS_DRAGGING":return{...state,isDragging:action.payload};case"SET_ACTIVE_CONTAINER":return{...state,activeContainer:action.payload};case"CHANGE_CATEGORY":return{...state,items:state.items.map((item=>item.id===action.payload.itemId?{...item,container:action.payload.container}:item))};case"REORDER_ITEMS":{const{dragId:dragId,targetId:targetId}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item.id===dragId));const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item.id===targetId));newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,draggedItem);return{...state,items:newItems}}case"REORDER_ITEMS_CROSS_CONTAINER":{const{dragId:dragId,targetId:targetId,newContainer:newContainer}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item&&item.id===dragId));if(!draggedItem)return state;const draggedIndex=newItems.indexOf(draggedItem);const targetIndex=newItems.findIndex((item=>item&&item.id===targetId));if(draggedIndex===-1||targetIndex===-1)return state;const updatedItem={...draggedItem,container:newContainer};newItems.splice(draggedIndex,1);newItems.splice(targetIndex,0,updatedItem);return{...state,items:newItems}}case"MOVE_TO_CONTAINER_END":{const{dragId:dragId,newContainer:newContainer}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item&&item.id===dragId));if(!draggedItem)return state;const draggedIndex=newItems.indexOf(draggedItem);if(draggedIndex===-1)return state;const updatedItem={...draggedItem,container:newContainer};newItems.splice(draggedIndex,1);const lastIndexInContainer=newItems.map((item=>item&&item.container)).lastIndexOf(newContainer);if(lastIndexInContainer===-1){newItems.push(updatedItem)}else{newItems.splice(lastIndexInContainer+1,0,updatedItem)}return{...state,items:newItems}}case"RESET_DRAG_CONTAINER":{const{itemId:itemId,originalContainer:originalContainer,originalIndex:originalIndex}=action.payload;const newItems=[...state.items];const draggedItem=newItems.find((item=>item&&item.id===itemId));if(!draggedItem)return state;const currentIndex=newItems.indexOf(draggedItem);newItems.splice(currentIndex,1);const restoredItem={...draggedItem,container:originalContainer};if(originalIndex!==void 0&&originalIndex>=0){newItems.splice(originalIndex,0,restoredItem)}else{newItems.push(restoredItem)}return{...state,items:newItems}}default:return state}};const DragContext=createContext({});const DraggableContext=()=>useContext(DragContext);const DraggableProvider=({children:children,initialItems:initialItems,onReorder:onReorder,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragEnd:onDragEnd,onDrop:onDrop,onDragOver:onDragOver,dropZone:dropZone={type:"ghost",color:"neutral",direction:"vertical"},providerId:providerId="default",enableCrossContainerPreview:enableCrossContainerPreview=false})=>{const[state,dispatch]=useReducer(reducer,initialState);const dragStateRef=useRef({isDragging:false,draggedItemId:"",originalContainer:"",originalIndex:-1,currentContainer:"",dropOccurred:false});const stateRef=useRef(state);useEffect((()=>{stateRef.current=state}),[state]);let dropZoneType="ghost";let dropZoneColor="neutral";let dropZoneDirection="vertical";if(typeof dropZone==="string"){dropZoneType=dropZone}else{dropZoneType=dropZone.type||"ghost";dropZoneColor=dropZone.type==="line"?dropZone.color||"primary":dropZone.color||"neutral";if(dropZoneType==="line"){dropZoneDirection=dropZone.direction||"vertical"}}useEffect((()=>{dispatch({type:"SET_ITEMS",payload:initialItems})}),[initialItems]);useEffect((()=>{onReorder(state.items)}),[state.items]);useEffect((()=>{if(!enableCrossContainerPreview)return;const handleGlobalDragOver=e=>{if(dragStateRef.current.isDragging){e.preventDefault()}};const handleGlobalDrop=e=>{if(!dragStateRef.current.isDragging)return;if(dragStateRef.current.dropOccurred)return;e.preventDefault();const originalContainer=dragStateRef.current.originalContainer;dispatch({type:"RESET_DRAG_CONTAINER",payload:{itemId:dragStateRef.current.draggedItemId,originalContainer:originalContainer,originalIndex:dragStateRef.current.originalIndex}});dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});dispatch({type:"SET_DRAG_DATA",payload:{id:"",initialGroup:"",originId:""}});dragStateRef.current={isDragging:false,draggedItemId:"",originalContainer:"",originalIndex:-1,currentContainer:"",dropOccurred:false}};const handleGlobalMouseUp=()=>{if(dragStateRef.current.isDragging){setTimeout((()=>{const currentContainer=dragStateRef.current.currentContainer;if(dragStateRef.current.isDragging&&!dragStateRef.current.dropOccurred){if(currentContainer&¤tContainer!==dragStateRef.current.originalContainer){if(onDrop){const draggedItem=stateRef.current.items.find((item=>item&&item.id===dragStateRef.current.draggedItemId));const updatedItem=draggedItem?{...draggedItem,container:currentContainer}:null;const itemsInContainer=stateRef.current.items.filter((item=>item&&item.container===currentContainer));const indexInContainer=itemsInContainer.findIndex((item=>item&&item.id===dragStateRef.current.draggedItemId));const itemAbove=indexInContainer>0?itemsInContainer[indexInContainer-1]:null;const itemBelow=indexInContainer<itemsInContainer.length-1?itemsInContainer[indexInContainer+1]:null;onDrop(dragStateRef.current.draggedItemId,currentContainer,dragStateRef.current.originalContainer,updatedItem,itemAbove,itemBelow)}}else{dispatch({type:"RESET_DRAG_CONTAINER",payload:{itemId:dragStateRef.current.draggedItemId,originalContainer:dragStateRef.current.originalContainer,originalIndex:dragStateRef.current.originalIndex}})}dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});dispatch({type:"SET_DRAG_DATA",payload:{id:"",initialGroup:"",originId:""}});dragStateRef.current={isDragging:false,draggedItemId:"",originalContainer:"",originalIndex:-1,currentContainer:"",dropOccurred:false}}}),50)}};const handleDragLeave=e=>{if(!e.relatedTarget&&dragStateRef.current.isDragging&&!dragStateRef.current.dropOccurred){dispatch({type:"RESET_DRAG_CONTAINER",payload:{itemId:dragStateRef.current.draggedItemId,originalContainer:dragStateRef.current.originalContainer,originalIndex:dragStateRef.current.originalIndex}});dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});dispatch({type:"SET_DRAG_DATA",payload:{id:"",initialGroup:"",originId:""}});dragStateRef.current={isDragging:false,draggedItemId:"",originalContainer:"",originalIndex:-1,currentContainer:"",dropOccurred:false}}};document.addEventListener("dragover",handleGlobalDragOver);document.addEventListener("drop",handleGlobalDrop);document.addEventListener("dragleave",handleDragLeave);document.addEventListener("mouseup",handleGlobalMouseUp);document.addEventListener("pointerup",handleGlobalMouseUp);return()=>{document.removeEventListener("dragover",handleGlobalDragOver);document.removeEventListener("drop",handleGlobalDrop);document.removeEventListener("dragleave",handleDragLeave);document.removeEventListener("mouseup",handleGlobalMouseUp);document.removeEventListener("pointerup",handleGlobalMouseUp)}}),[enableCrossContainerPreview]);const prevIsDraggingRef=useRef(state.isDragging);useEffect((()=>{if(!enableCrossContainerPreview)return;const wasDragging=prevIsDraggingRef.current;const isNowDragging=state.isDragging;if(wasDragging&&!isNowDragging){if(!dragStateRef.current.dropOccurred&&dragStateRef.current.draggedItemId){dispatch({type:"RESET_DRAG_CONTAINER",payload:{itemId:dragStateRef.current.draggedItemId,originalContainer:dragStateRef.current.originalContainer,originalIndex:dragStateRef.current.originalIndex}})}dragStateRef.current={isDragging:false,draggedItemId:"",originalContainer:"",originalIndex:-1,currentContainer:"",dropOccurred:false}}prevIsDraggingRef.current=isNowDragging}),[state.isDragging,enableCrossContainerPreview]);const handleDragStart=(id,container)=>{if(enableCrossContainerPreview){const originalIndex=state.items.findIndex((item=>item&&item.id===id));dragStateRef.current={isDragging:true,draggedItemId:id,originalContainer:container,originalIndex:originalIndex,currentContainer:container,dropOccurred:false}}dispatch({type:"SET_DRAG_DATA",payload:{id:id,initialGroup:container,originId:providerId}});dispatch({type:"SET_IS_DRAGGING",payload:id});if(onDragStart)onDragStart(id,container)};const handleDragEnter=(id,container)=>{if(state.dragData.originId!==providerId)return;if(state.dragData.id!==id){if(enableCrossContainerPreview){const draggedItem=state.items.find((item=>item&&item.id===state.dragData.id));const currentContainer=draggedItem&&draggedItem.container?draggedItem.container:state.dragData.initialGroup;const isCrossContainer=currentContainer!==container&&(currentContainer!==void 0||container!==void 0);if(isCrossContainer){dispatch({type:"REORDER_ITEMS_CROSS_CONTAINER",payload:{dragId:state.dragData.id,targetId:id,newContainer:container}});if(enableCrossContainerPreview){dragStateRef.current.currentContainer=container}}else{dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}})}}else{dispatch({type:"REORDER_ITEMS",payload:{dragId:state.dragData.id,targetId:id}})}const newInitialGroup=enableCrossContainerPreview?state.dragData.initialGroup:container;dispatch({type:"SET_DRAG_DATA",payload:{id:state.dragData.id,initialGroup:newInitialGroup,originId:providerId}})}if(onDragEnter)onDragEnter(id,container)};const handleDragEnd=()=>{const draggedItemId=state.dragData.id;const originalContainer=state.dragData.initialGroup;if(enableCrossContainerPreview&&!dragStateRef.current.dropOccurred&&draggedItemId&&originalContainer){dispatch({type:"RESET_DRAG_CONTAINER",payload:{itemId:draggedItemId,originalContainer:originalContainer,originalIndex:dragStateRef.current.originalIndex}})}dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});dispatch({type:"SET_DRAG_DATA",payload:{id:"",initialGroup:"",originId:""}});if(enableCrossContainerPreview&&dragStateRef.current.dropOccurred){return}if(onDragEnd){if(!enableCrossContainerPreview){onDragEnd()}else{const draggedItem=stateRef.current.items.find((item=>item&&item.id===draggedItemId));const finalContainer=draggedItem?draggedItem.container:originalContainer;const itemsInContainer=stateRef.current.items.filter((item=>item&&item.container===finalContainer));const indexInContainer=itemsInContainer.findIndex((item=>item&&item.id===draggedItemId));const itemAbove=indexInContainer>0?itemsInContainer[indexInContainer-1]:null;const itemBelow=indexInContainer<itemsInContainer.length-1?itemsInContainer[indexInContainer+1]:null;onDragEnd(draggedItemId,finalContainer,originalContainer,itemAbove,itemBelow)}}};const changeCategory=(itemId,container)=>{dispatch({type:"CHANGE_CATEGORY",payload:{itemId:itemId,container:container}})};const handleDrop=container=>{if(state.dragData.originId!==providerId)return;const draggedItemId=state.dragData.id;const originalContainer=state.dragData.initialGroup;if(enableCrossContainerPreview){dragStateRef.current.dropOccurred=true}const isCrossContainer=container!==originalContainer;let callbackData=null;if(enableCrossContainerPreview){const draggedItem=stateRef.current.items.find((item=>item&&item.id===draggedItemId));const updatedItem=draggedItem?{...draggedItem,container:container}:null;const itemsInContainer=stateRef.current.items.filter((item=>item&&item.container===container));const indexInContainer=itemsInContainer.findIndex((item=>item&&item.id===draggedItemId));const itemAbove=indexInContainer>0?itemsInContainer[indexInContainer-1]:null;const itemBelow=indexInContainer<itemsInContainer.length-1?itemsInContainer[indexInContainer+1]:null;callbackData={updatedItem:updatedItem,itemAbove:itemAbove,itemBelow:itemBelow}}dispatch({type:"SET_IS_DRAGGING",payload:""});dispatch({type:"SET_ACTIVE_CONTAINER",payload:""});dispatch({type:"SET_DRAG_DATA",payload:{id:"",initialGroup:"",originId:""}});changeCategory(state.dragData.id,container);if(onDrop){if(!enableCrossContainerPreview){onDrop(container)}else{onDrop(draggedItemId,container,originalContainer,callbackData.updatedItem,callbackData.itemAbove,callbackData.itemBelow)}}if(enableCrossContainerPreview&&isCrossContainer&&onDragEnd&&callbackData){onDragEnd(draggedItemId,container,originalContainer,callbackData.itemAbove,callbackData.itemBelow)}};const handleDragOver=(e,container)=>{if(state.dragData.originId!==providerId)return;e.preventDefault();dispatch({type:"SET_ACTIVE_CONTAINER",payload:container});if(enableCrossContainerPreview&&state.dragData.id){const draggedItem=state.items.find((item=>item&&item.id===state.dragData.id));if(draggedItem&&draggedItem.container!==container){dispatch({type:"MOVE_TO_CONTAINER_END",payload:{dragId:state.dragData.id,newContainer:container}});dragStateRef.current.currentContainer=container}}if(onDragOver)onDragOver(e,container)};const contextValue=useMemo((()=>({items:state.items,dragData:state.dragData,isDragging:state.isDragging,activeContainer:state.activeContainer,dropZone:dropZoneType,dropZoneColor:dropZoneColor,...dropZoneType==="line"?{direction:dropZoneDirection}:{},handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver})),[state,dropZoneType,dropZoneColor,dropZoneDirection]);return jsx(DragContext.Provider,{value:contextValue,children:children})};const Image=props=>{const{alt:alt="",aria:aria={},className:className,data:data={},htmlOptions:htmlOptions={},id:id,onError:onError=null,rounded:rounded=false,size:size="",transition:transition="fade",url:url=""}=props;const ariaProps=buildAriaProps(aria);const classes=classnames(buildCss("pb_image_kit",size?`size_${size}`:null),transition,{rounded:rounded},globalProps(props),className);const dynamicInlineProps=globalInlineProps(props);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);return jsx("img",{...ariaProps,...dataProps,...htmlProps,alt:alt,className:classes,id:id,onError:onError,src:url,style:dynamicInlineProps})};const globalEventProps=props=>props.onClick?{onClick:props.onClick}:{};const Flex=props=>{const{align:align="none",children:children,className:className,data:data={},inline:inline=false,horizontal:horizontal="left",htmlOptions:htmlOptions={},justify:justify="none",orientation:orientation="row",spacing:spacing="none",gap:gap="none",rowGap:rowGap="none",columnGap:columnGap="none",reverse:reverse=false,vertical:vertical="top",wrap:wrap=false,alignSelf:alignSelf="none"}=props;const orientationClass=orientation!==void 0?`pb_flex_kit_orientation_${orientation}`:"";const justifyClass=justify!=="none"?`pb_flex_kit_justify_content_${justify}`:`pb_flex_kit_justify_content_${horizontal}`;const alignClass=align!=="none"?`pb_flex_kit_align_items_${align}`:`pb_flex_kit_align_items_${vertical}`;const inlineClass=inline===true?"pb_flex_kit_inline":"";const spacingClass=spacing!==void 0?`pb_flex_kit_spacing_${spacing}`:"";const gapClass=gap!=="none"&&typeof gap==="string"?`pb_flex_kit_gap_${gap}`:"";const rowGapClass=rowGap!=="none"&&typeof rowGap==="string"?`pb_flex_kit_rowGap_${rowGap}`:"";const columnGapClass=columnGap!=="none"&&typeof columnGap==="string"?`pb_flex_kit_columnGap_${columnGap}`:"";const responsiveGapClass=gap!=="none"&&typeof gap==="object"&&gap!==null&&!Array.isArray(gap)?"pb_flex_kit_gap_responsive":"";const responsiveRowGapClass=rowGap!=="none"&&typeof rowGap==="object"&&rowGap!==null&&!Array.isArray(rowGap)?"pb_flex_kit_rowGap_responsive":"";const responsiveColumnGapClass=columnGap!=="none"&&typeof columnGap==="object"&&columnGap!==null&&!Array.isArray(columnGap)?"pb_flex_kit_columnGap_responsive":"";const wrapClass=wrap===true?"pb_flex_kit_wrap":"";const reverseClass=reverse===true?"pb_flex_kit_reverse":"";const alignSelfClass=alignSelf!=="none"?`pb_flex_kit_align_self_${alignSelf}`:"";const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const dynamicInlineProps=globalInlineProps(props);return jsx("div",{className:classnames("pb_flex_kit",orientationClass,justifyClass,alignClass,inlineClass,reverseClass,wrapClass,spacingClass,gapClass,rowGapClass,columnGapClass,responsiveGapClass,responsiveRowGapClass,responsiveColumnGapClass,alignSelfClass,globalProps(props),className),style:dynamicInlineProps,...dataProps,...htmlProps,...globalEventProps(props),children:children})};const isValidEmoji=emoji=>{const emojiRegex=new RegExp("^(\\p{Emoji}|\\uFE0F|\\u200D|\\u20E3)+$","u");return emojiRegex.test(emoji)};const flipMap={fa:{horizontal:"fa-flip-horizontal",vertical:"fa-flip-vertical",both:"fa-flip-horizontal fa-flip-vertical",none:""},svg:{horizontal:"flip_horizontal",vertical:"flip_vertical",both:"flip_horizontal flip_vertical",none:""}};const pulseMap={fa:"fa-pulse",svg:"pulse"};const spinMap={fa:"fa-spin",svg:"spin"};const rotateMap={fa:{90:"fa-rotate-90",180:"fa-rotate-180",270:"fa-rotate-270"},svg:{90:"rotate_90",180:"rotate_180",270:"rotate_270"}};const sizeMap={fa:{lg:"fa-lg",xs:"fa-xs",sm:"fa-sm","1x":"fa-1x","2x":"fa-2x","3x":"fa-3x","4x":"fa-4x","5x":"fa-5x","6x":"fa-6x","7x":"fa-7x","8x":"fa-8x","9x":"fa-9x","10x":"fa-10x","":""},svg:{lg:"svg_lg",xs:"svg_xs",sm:"svg_sm","1x":"svg_1x","2x":"svg_2x","3x":"svg_3x","4x":"svg_4x","5x":"svg_5x","6x":"svg_6x","7x":"svg_7x","8x":"svg_8x","9x":"svg_9x","10x":"svg_10x","":""}};const Icon=props=>{const{aria:aria={},border:borderProp=false,className:className,color:color,customIcon:customIcon,data:data={},fixedWidth:fixedWidth=true,flip:flip2="none",htmlOptions:htmlOptions={},icon:icon="",id:id,inverse:inverse=false,listItem:listItem=false,pull:pull,pulse:pulse=false,rotation:rotation,size:size,fontStyle:fontStyle="far",spin:spin=false,tabIndex:tabIndex}=props;const faBorder=borderProp===true;const globalPropsForCss=typeof borderProp==="boolean"?{...props,border:void 0}:props;let iconElement=typeof icon==="object"?icon:null;if(!customIcon&&!iconElement){const PowerIcon=window.PB_ICONS?window.PB_ICONS[icon]:null;if(PowerIcon){iconElement=jsx(PowerIcon,{})}}const isFA=!iconElement&&!customIcon;let classes=classnames(!iconElement&&!customIcon?"pb_icon_kit":"",iconElement||customIcon?"pb_custom_icon":fontStyle,iconElement?"svg-inline--fa":"",color?`color_${color}`:"",globalProps(globalPropsForCss),className);const transformClasses=classnames(flip2?flipMap[isFA?"fa":"svg"][flip2]:null,pulse?pulseMap[isFA?"fa":"svg"]:null,rotation?rotateMap[isFA?"fa":"svg"][rotation]:null,spin?spinMap[isFA?"fa":"svg"]:null,size?sizeMap[isFA?"fa":"svg"][size]:null,faBorder?isFA?"fa-border":"svg_border":null,fixedWidth?isFA?"fa-fw":"svg_fw":null,inverse?isFA?"fa-inverse":"svg_inverse":null,listItem?isFA?"fa-li":"svg_li":null,pull?isFA?`fa-pull-${pull}`:`pull_${pull}`:null);classes+=` ${transformClasses}`;if(isFA){const faClassList={"fa-border":faBorder,"fa-inverse":inverse,"fa-li":listItem,[`fa-${size}`]:size,[`fa-pull-${pull}`]:pull};faClassList[`fa-${icon}`]=icon;classes+=` ${classnames(faClassList)}`}const classesEmoji=classnames("pb_icon_kit_emoji",globalProps(globalPropsForCss),className);aria.label?null:aria.label=`${icon} icon`;const normalizedAria=Object.fromEntries(Object.entries(aria).map((([key,value])=>[key,typeof value==="boolean"?String(value):value])));const ariaProps=buildAriaProps(normalizedAria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const displaySVG=customIcon2=>{if(iconElement||customIcon2)return jsx(Fragment,{children:React__default.cloneElement(iconElement||customIcon2,{...ariaProps,...dataProps,...htmlProps,className:classes,id:id,...props.tabIndex!==void 0&&{tabIndex:tabIndex}})});else if(isValidEmoji(icon))return jsx(Fragment,{children:jsx("span",{...ariaProps,...dataProps,...htmlProps,className:classesEmoji,id:id,children:icon})});else return jsxs(Fragment,{children:[jsx("i",{...ariaProps,...dataProps,...htmlProps,className:classes,id:id}),jsx("span",{...ariaProps,hidden:true})]})};return jsx(Fragment,{children:displaySVG(customIcon)})};const DraggableContainer=props=>{const{aria:aria={},children:children,className:className,container:container,data:data={},htmlOptions:htmlOptions={},id:id,tag:tag="div"}=props;const contextValues=DraggableContext();const{handleDragOver:handleDragOver,handleDrop:handleDrop,activeContainer:activeContainer,dropZone:dropZone}=contextValues;const direction=dropZone==="line"?contextValues.direction||"vertical":null;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const Tag=`${tag}`;const classes=classnames(buildCss("pb_draggable_container"),`${activeContainer===container?"active":""}`,dropZone==="line"&&direction==="vertical"?"line_vertical":"",dropZone==="line"&&direction==="horizontal"?"line_horizontal":"",globalProps(props),className);return createElement(Tag,{...ariaProps,...dataProps,...htmlProps,className:classes,"data-pb-drag-container":container,id:id,key:container,onDragOver:e=>handleDragOver(e,container),onDrop:()=>handleDrop(container)},children)};const DRAG_HANDLE_SELECTOR=".pb_draggable_handle, .card_draggable_handle";const DRAG_THRESHOLD_PX=5;const isTouchDragDevice=()=>{if(typeof window==="undefined")return false;const hasCoarsePointer=typeof window.matchMedia==="function"&&window.matchMedia("(hover: none) and (pointer: coarse)").matches;return hasCoarsePointer};const getDragIdFromElement=element=>{const item=element==null?void 0:element.closest(".pb_draggable_item");if(!item)return null;return item.getAttribute("data-pb-drag-id")};const getContainerFromElement=element=>{const container=element==null?void 0:element.closest(".pb_draggable_container");if(!container)return void 0;return container.getAttribute("data-pb-drag-container")||void 0};const getSortedDragItems=containerElement=>Array.from(containerElement.querySelectorAll(".pb_draggable_item[data-pb-drag-id]")).map((element=>({id:element.getAttribute("data-pb-drag-id"),rect:element.getBoundingClientRect()}))).sort(((a,b)=>a.rect.left-b.rect.left));const getDragIdFromElementsAtPoint=(clientX,clientY,dragId)=>{if(typeof document.elementsFromPoint!=="function")return null;return document.elementsFromPoint(clientX,clientY).map((element=>getDragIdFromElement(element))).find((id=>id&&id!==dragId))??null};const getTargetWhenPointerOnDraggedItem=(containerElement,clientX,dragId)=>{const items=getSortedDragItems(containerElement);const currentIndex=items.findIndex((item=>item.id===dragId));if(currentIndex===-1)return null;const others=items.filter((item=>item.id!==dragId));if(!others.length)return null;let slot=0;others.forEach(((item,index2)=>{const midpoint=item.rect.left+item.rect.width/2;if(clientX>midpoint){slot=index2+1}}));const desiredIndex=Math.min(slot,items.length-1);if(desiredIndex===currentIndex)return null;const targetItem=items[desiredIndex];if(!targetItem||targetItem.id===dragId)return null;return targetItem.id};const resolvePointerDragTarget=(clientX,clientY,dragId)=>{const elementBelow=typeof document.elementFromPoint==="function"?document.elementFromPoint(clientX,clientY):null;const hitId=getDragIdFromElement(elementBelow);if(hitId&&hitId!==dragId){return{targetDragId:hitId,targetContainer:getContainerFromElement(elementBelow)}}const stackId=getDragIdFromElementsAtPoint(clientX,clientY,dragId);if(stackId){return{targetDragId:stackId,targetContainer:getContainerFromElement(elementBelow)}}const containerElement=elementBelow==null?void 0:elementBelow.closest(".pb_draggable_container");if(!containerElement){return{targetDragId:null,targetContainer:void 0}}return{targetDragId:getTargetWhenPointerOnDraggedItem(containerElement,clientX,dragId),targetContainer:getContainerFromElement(containerElement)}};const createPreventableEvent=()=>({preventDefault:()=>void 0});const runDragPointerMove=(state,clientX,clientY,dragId,container,handlers)=>{if(!state.dragging){const deltaX=clientX-state.startX;const deltaY=clientY-state.startY;if(Math.hypot(deltaX,deltaY)<DRAG_THRESHOLD_PX)return false;state.dragging=true;handlers.onDragStart(dragId,container)}const{targetDragId:targetDragId,targetContainer:targetContainer}=resolvePointerDragTarget(clientX,clientY,dragId);if(!targetDragId||targetDragId===dragId){state.lastTargetDragId=null}else if(targetDragId!==state.lastTargetDragId){state.lastTargetDragId=targetDragId;handlers.onDragEnter(targetDragId,targetContainer??container)}if(targetContainer&&targetContainer!==state.lastContainer){state.lastContainer=targetContainer;handlers.onDragOver(createPreventableEvent(),targetContainer)}else if(targetContainer){handlers.onDragOver(createPreventableEvent(),targetContainer)}return true};const finishDragPointer=(state,clientX,clientY,container,handlers,itemElement)=>{if(!state.active)return;if(state.dragging&&clientX!==null&&clientY!==null){const elementBelow=document.elementFromPoint(clientX,clientY);const dropContainer=getContainerFromElement(elementBelow)??container;if(dropContainer){handlers.onDrop(dropContainer)}handlers.onDragEnd()}state.active=false;state.dragging=false;state.lastTargetDragId=null;state.lastContainer=void 0;itemElement.classList.remove("is_touch_active")};const bindTouchDrag=({dragId:dragId,container:container,itemElement:itemElement,handlers:handlers})=>{if(!isTouchDragDevice()){return()=>void 0}const handle=itemElement.querySelector(DRAG_HANDLE_SELECTOR);const dragTarget=handle||itemElement;const state={active:false,dragging:false,startX:0,startY:0,lastTargetDragId:null,lastContainer:void 0};const handleTouchStart=event=>{if(handle&&!handle.contains(event.target)){return}const touch=event.touches[0];if(!touch)return;state.active=true;state.startX=touch.clientX;state.startY=touch.clientY;itemElement.classList.add("is_touch_active")};const handleTouchMove=event=>{if(!state.active)return;const touch=event.touches[0];if(!touch)return;if(runDragPointerMove(state,touch.clientX,touch.clientY,dragId,container,handlers)){event.preventDefault()}};const finishDrag=touch=>{finishDragPointer(state,(touch==null?void 0:touch.clientX)??null,(touch==null?void 0:touch.clientY)??null,container,handlers,itemElement)};const handleTouchEnd=event=>{finishDrag(event.changedTouches[0]??null)};const handleTouchCancel=event=>{if(state.dragging){handlers.onDragEnd()}finishDrag(event.changedTouches[0]??null)};dragTarget.addEventListener("touchstart",handleTouchStart,{passive:true});dragTarget.addEventListener("touchmove",handleTouchMove,{passive:false});dragTarget.addEventListener("touchend",handleTouchEnd,{passive:true});dragTarget.addEventListener("touchcancel",handleTouchCancel,{passive:true});return()=>{dragTarget.removeEventListener("touchstart",handleTouchStart);dragTarget.removeEventListener("touchmove",handleTouchMove);dragTarget.removeEventListener("touchend",handleTouchEnd);dragTarget.removeEventListener("touchcancel",handleTouchCancel)}};const DRAG_INTERACTION_EXCLUDE_SELECTOR=".pb_form_pill_close";const isHandleEventTarget=target=>Boolean(target==null?void 0:target.closest(DRAG_HANDLE_SELECTOR));const isExcludedDragTarget=target=>Boolean(target==null?void 0:target.closest(DRAG_INTERACTION_EXCLUDE_SELECTOR));const bindMousePointerDrag=({dragId:dragId,container:container,itemElement:itemElement,handlers:handlers,allowWholeItem:allowWholeItem=false})=>{const hasHandle=Boolean(itemElement.querySelector(DRAG_HANDLE_SELECTOR));if(!hasHandle&&!allowWholeItem){return()=>void 0}const state={active:false,dragging:false,startX:0,startY:0,lastTargetDragId:null,lastContainer:void 0};const handleMouseMove=event=>{if(!state.active)return;if(runDragPointerMove(state,event.clientX,event.clientY,dragId,container,handlers)){event.preventDefault()}};const handleMouseUp=event=>{document.removeEventListener("mousemove",handleMouseMove);document.removeEventListener("mouseup",handleMouseUp);finishDragPointer(state,event.clientX,event.clientY,container,handlers,itemElement)};const handleMouseDown=event=>{if(event.button!==0)return;if(isExcludedDragTarget(event.target))return;if(hasHandle){if(!isHandleEventTarget(event.target))return}else if(!itemElement.contains(event.target)){return}event.preventDefault();event.stopPropagation();state.active=true;state.startX=event.clientX;state.startY=event.clientY;itemElement.classList.add("is_touch_active");document.addEventListener("mousemove",handleMouseMove);document.addEventListener("mouseup",handleMouseUp)};itemElement.addEventListener("mousedown",handleMouseDown);return()=>{itemElement.removeEventListener("mousedown",handleMouseDown);document.removeEventListener("mousemove",handleMouseMove);document.removeEventListener("mouseup",handleMouseUp)}};const DraggableItem=props=>{const{aria:aria={},children:children,className:className,container:container,data:data={},htmlOptions:htmlOptions={},id:id,dragId:dragId,tag:tag="div",onDrag:onDrag=noop,onDragEnd:onDragEnd=noop,onDragEnter:onDragEnter=noop,onDragLeave:onDragLeave=noop,onDragOver:onDragOver=noop,onDragStart:onDragStart=noop,onDrop:onDrop=noop,pointerDrag:pointerDrag=false,handlePointerDrag:handlePointerDrag=false}=props;const{isDragging:isDragging,handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver,dropZone:dropZone="ghost",dropZoneColor:dropZoneColor="neutral"}=DraggableContext();const itemRef=React__default.useRef(null);const[useTouchDrag,setUseTouchDrag]=React__default.useState(false);const[usePointerMouseDrag,setUsePointerMouseDrag]=React__default.useState(false);const handlersRef=React__default.useRef({handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragOver:onDragOver,onDrop:onDrop,onDragEnd:onDragEnd});handlersRef.current={handleDragStart:handleDragStart,handleDragEnter:handleDragEnter,handleDragEnd:handleDragEnd,handleDrop:handleDrop,handleDragOver:handleDragOver,onDragStart:onDragStart,onDragEnter:onDragEnter,onDragOver:onDragOver,onDrop:onDrop,onDragEnd:onDragEnd};const dragHandlers=React__default.useMemo((()=>({onDragStart:(id2,itemContainer)=>{handlersRef.current.handleDragStart(id2,itemContainer);handlersRef.current.onDragStart()},onDragEnter:(targetDragId,targetContainer)=>{handlersRef.current.handleDragEnter(targetDragId,targetContainer);handlersRef.current.onDragEnter()},onDragOver:(event,targetContainer)=>{handlersRef.current.handleDragOver(event,targetContainer);handlersRef.current.onDragOver()},onDrop:dropContainer=>{handlersRef.current.handleDrop(dropContainer);handlersRef.current.onDrop()},onDragEnd:()=>{handlersRef.current.handleDragEnd();handlersRef.current.onDragEnd()}})),[]);React__default.useLayoutEffect((()=>{const touchMode=isTouchDragDevice();setUseTouchDrag(touchMode);setUsePointerMouseDrag(!touchMode&&(pointerDrag||handlePointerDrag))}),[dragId,container,children,pointerDrag,handlePointerDrag]);React__default.useEffect((()=>{if(!useTouchDrag||!itemRef.current||!dragId)return;return bindTouchDrag({dragId:dragId,container:container,itemElement:itemRef.current,handlers:dragHandlers})}),[useTouchDrag,dragId,container,dragHandlers]);React__default.useEffect((()=>{if(!usePointerMouseDrag||!itemRef.current||!dragId)return;return bindMousePointerDrag({dragId:dragId,container:container,itemElement:itemRef.current,handlers:dragHandlers,allowWholeItem:pointerDrag})}),[usePointerMouseDrag,dragId,container,dragHandlers,pointerDrag]);const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const Tag=`${tag}`;const classes=classnames(buildCss("pb_draggable_item"),`${isDragging===dragId?"is_dragging":""}`,isDragging===dragId?`drop_zone_${dropZone}`:"",isDragging===dragId&&dropZone!=="ghost"?`drop_zone_color_${dropZoneColor}`:"",globalProps(props),className);const handleDragStartWithCustom=e=>{if(dropZone!=="ghost"&&itemRef.current){const clone=itemRef.current.cloneNode(true);clone.className=clone.className.replace(/drop_zone_[^ ]*/g,"");clone.className=clone.className.replace(/is_dragging/g,"");const rect=itemRef.current.getBoundingClientRect();clone.style.position="fixed";clone.style.top="-9999px";clone.style.left="-9999px";clone.style.width=`${rect.width}px`;clone.style.height=`${rect.height}px`;clone.style.opacity="1";clone.style.pointerEvents="none";document.body.appendChild(clone);e.dataTransfer.setDragImage(clone,e.clientX-rect.left,e.clientY-rect.top);setTimeout((()=>{document.body.removeChild(clone)}),0)}handleDragStart(dragId,container);onDragStart()};return createElement(Tag,{...ariaProps,...dataProps,...htmlProps,className:classes,"data-pb-drag-id":dragId,draggable:!useTouchDrag&&!usePointerMouseDrag,id:id,key:dragId,onDrag:onDrag,onDragEnd:()=>{handleDragEnd();onDragEnd()},onDragEnter:()=>{handleDragEnter(dragId,container);onDragEnter()},onDragLeave:onDragLeave,onDragOver:onDragOver,onDragStart:handleDragStartWithCustom,onDrop:onDrop,ref:itemRef},children)};const Draggable=props=>{const{aria:aria={},className:className,children:children,data:data={},htmlOptions:htmlOptions={},id:id}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_draggable"),globalProps(props),className);return jsx("div",{...ariaProps,...dataProps,...htmlProps,className:classes,id:id,children:children})};Draggable.Container=DraggableContainer;Draggable.Item=DraggableItem;const Header=props=>{const{children:children,className:className,headerColor:headerColor="category_1",headerColorStriped:headerColorStriped=false}=props;const headerColorCSS=`pb_card_header_kit_${headerColor}`;const headerStripedCSS=headerColorStriped?`pb_card_header_kit_${headerColor}_striped`:"";const headerCSS=classnames("pb_card_header_kit",headerColorCSS,headerStripedCSS);const headerSpacing=globalProps(props);return jsx("div",{className:classnames(headerCSS,headerSpacing,className),children:children})};const Body$1=props=>{const{children:children,className:className}=props;const bodySpacing=globalProps(props);return jsx("div",{className:classnames("pb_card_body_kit",bodySpacing,className),children:children})};const Card=props=>{const{aria:aria={},background:background="none",borderNone:borderNone=false,borderRadius:borderRadius="md",children:children,className:className,data:data={},dragId:dragId,dragHandle:dragHandle=true,draggableItem:draggableItem=false,highlight:highlight={},htmlOptions:htmlOptions={},selected:selected=false,tag:tag="div"}=props;const borderCSS=borderNone==true?"pb_card_kit_border_none":"";const selectedCSS=selected==true?"pb_card_kit_selected":"";const backgroundCSS=background=="none"?"":`pb_card_kit_background_${background}`;const borderRadiusCSS=borderRadius!=="md"?`pb_card_kit_border_radius_${borderRadius}`:"";const highlightPositionCSS=highlight.position?`pb_card_kit_highlight_${highlight.position}`:"";const highlightColorCSS=highlight.color?`pb_card_kit_highlight_${highlight.color}`:"";const cardCss=classnames("pb_card_kit",selectedCSS,borderCSS,borderRadiusCSS,backgroundCSS,highlightPositionCSS,highlightColorCSS);const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const cardChildren=React__default.Children.toArray(children);const dynamicInlineProps=globalInlineProps(props);const{style:htmlStyle={},...restHtmlProps}=htmlProps;const mergedStyles={...htmlStyle,...dynamicInlineProps};const subComponentTags=tagName=>cardChildren.filter((c=>get(c,"type.displayName")===tagName)).map(((child,i)=>{if(React__default.isValidElement(child)){return React__default.cloneElement(child,{key:`${tagName.toLowerCase()}-${i}`})}}));const nonHeaderChildren=cardChildren.filter((child=>get(child,"type.displayName")!=="Header"));const tagOptions=["div","section","footer","header","article","aside","main","nav"];const Tag=tagOptions.includes(tag)?tag:"div";return jsx(Fragment,{children:draggableItem?jsx(Draggable.Item,{dragId:dragId,children:jsxs(Tag,{...ariaProps,...dataProps,className:classnames(cardCss,globalProps(props),className),...restHtmlProps,...globalEventProps(props),style:mergedStyles,children:[subComponentTags("Header"),dragHandle?jsxs(Flex,{children:[jsx("span",{className:"card_draggable_handle pb_draggable_handle",children:jsx(Icon,{icon:"grip-dots-vertical",paddingRight:"xs",verticalAlign:"middle"})}),jsx("div",{style:{width:"100%"},children:nonHeaderChildren})]}):nonHeaderChildren]})},dragId):jsxs(Tag,{...ariaProps,...dataProps,className:classnames(cardCss,globalProps(props),className),...restHtmlProps,...globalEventProps(props),style:mergedStyles,children:[subComponentTags("Header"),nonHeaderChildren]})})};Card.Header=Header;Card.Body=Body$1;const escapeRegExp=value=>value.replace(/[-[\]/{}()*+?.\\^$|]/g,"\\$&");const findHighlightChunks=(textToHighlight,searchWords)=>{const text=textToHighlight||"";const matchRanges=searchWords.filter((searchWord=>searchWord)).reduce(((chunks,searchWord)=>{const regex=new RegExp(escapeRegExp(searchWord),"gi");let match;while(match=regex.exec(text)){const start=match.index;const end=regex.lastIndex;if(end>start){chunks.push({start:start,end:end})}if(match.index===regex.lastIndex){regex.lastIndex++}}return chunks}),[]);const combined=matchRanges.sort(((first,second)=>first.start-second.start)).reduce(((processedChunks,nextChunk)=>{if(processedChunks.length===0){return[nextChunk]}const prevChunk=processedChunks.pop();if(nextChunk.start<=prevChunk.end){processedChunks.push({start:prevChunk.start,end:Math.max(prevChunk.end,nextChunk.end)})}else{processedChunks.push(prevChunk,nextChunk)}return processedChunks}),[]);const allChunks=[];const append=(start,end,highlight)=>{if(end-start>0){allChunks.push({start:start,end:end,highlight:highlight})}};if(combined.length===0){append(0,text.length,false)}else{let lastIndex=0;combined.forEach((chunk=>{append(lastIndex,chunk.start,false);append(chunk.start,chunk.end,true);lastIndex=chunk.end}));append(lastIndex,text.length,false)}return allChunks};const Highlight=props=>{const{children:children,className:className="pb_highlight_kit",data:data={},highlightedText:highlightedText=["highlight"],htmlOptions:htmlOptions={},id:id="",text:text=""}=props;const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const highlightContent=text||children||"";const highlightClassName=classnames(globalProps(props),className);const chunks=findHighlightChunks(highlightContent,highlightedText);return jsx("span",{...dataProps,...htmlProps,id:id,children:chunks.map(((chunk,index2)=>{const chunkText=highlightContent.substring(chunk.start,chunk.end);if(chunk.highlight){return jsx("mark",{className:highlightClassName,children:chunkText},index2)}return jsx("span",{children:chunkText},index2)}))})};const Body=props=>{if(props.variant);const{aria:aria={},children:children,className:className,color:color="",data:data={},highlightedText:highlightedText=[],highlighting:highlighting=false,htmlOptions:htmlOptions={},id:id="",status:status=null,tag:tag="div",text:text="",variant:variant=null}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const classes=classnames(buildCss("pb_body_kit",color,variant,status),globalProps(props),className);const Tag=`${tag}`;return jsxs(Tag,{...ariaProps,...dataProps,...htmlProps,...globalEventProps(props),className:classes,id:id,children:[highlighting&&jsx(Highlight,{highlightedText:highlightedText,text:text,children:children}),!highlighting&&(text||children)]})};const Caption=props=>{if(props.variant);const{aria:aria={},children:children,className:className,color:color,data:data={},htmlOptions:htmlOptions={},id:id,size:size="md",tag:tag="div",text:text,variant:variant=null}=props;const tagOptions=["h1","h2","h3","h4","h5","h6","p","span","div","caption"];const Tag=tagOptions.includes(tag)?tag:"div";const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const css=classnames(buildCss("pb_caption_kit",size,variant,color),globalProps(props),className);return jsx(Tag,{...ariaProps,...dataProps,...htmlProps,className:css,id:id,children:text||children})};function hasWindow(){return typeof window!=="undefined"}function getNodeName(node){if(isNode(node)){return(node.nodeName||"").toLowerCase()}return"#document"}function getWindow(node){var _node$ownerDocument;return(node==null||(_node$ownerDocument=node.ownerDocument)==null?void 0:_node$ownerDocument.defaultView)||window}function getDocumentElement(node){var _ref;return(_ref=(isNode(node)?node.ownerDocument:node.document)||window.document)==null?void 0:_ref.documentElement}function isNode(value){if(!hasWindow()){return false}return value instanceof Node||value instanceof getWindow(value).Node}function isElement(value){if(!hasWindow()){return false}return value instanceof Element||value instanceof getWindow(value).Element}function isHTMLElement(value){if(!hasWindow()){return false}return value instanceof HTMLElement||value instanceof getWindow(value).HTMLElement}function isShadowRoot(value){if(!hasWindow()||typeof ShadowRoot==="undefined"){return false}return value instanceof ShadowRoot||value instanceof getWindow(value).ShadowRoot}function isOverflowElement(element){const{overflow:overflow,overflowX:overflowX,overflowY:overflowY,display:display}=getComputedStyle$1(element);return/auto|scroll|overlay|hidden|clip/.test(overflow+overflowY+overflowX)&&!["inline","contents"].includes(display)}function isTableElement(element){return["table","td","th"].includes(getNodeName(element))}function isTopLayer(element){return[":popover-open",":modal"].some((selector=>{try{return element.matches(selector)}catch(e){return false}}))}function isContainingBlock(elementOrCss){const webkit=isWebKit();const css=isElement(elementOrCss)?getComputedStyle$1(elementOrCss):elementOrCss;return css.transform!=="none"||css.perspective!=="none"||(css.containerType?css.containerType!=="normal":false)||!webkit&&(css.backdropFilter?css.backdropFilter!=="none":false)||!webkit&&(css.filter?css.filter!=="none":false)||["transform","perspective","filter"].some((value=>(css.willChange||"").includes(value)))||["paint","layout","strict","content"].some((value=>(css.contain||"").includes(value)))}function getContainingBlock(element){let currentNode=getParentNode(element);while(isHTMLElement(currentNode)&&!isLastTraversableNode(currentNode)){if(isContainingBlock(currentNode)){return currentNode}else if(isTopLayer(currentNode)){return null}currentNode=getParentNode(currentNode)}return null}function isWebKit(){if(typeof CSS==="undefined"||!CSS.supports)return false;return CSS.supports("-webkit-backdrop-filter","none")}function isLastTraversableNode(node){return["html","body","#document"].includes(getNodeName(node))}function getComputedStyle$1(element){return getWindow(element).getComputedStyle(element)}function getNodeScroll(element){if(isElement(element)){return{scrollLeft:element.scrollLeft,scrollTop:element.scrollTop}}return{scrollLeft:element.scrollX,scrollTop:element.scrollY}}function getParentNode(node){if(getNodeName(node)==="html"){return node}const result=node.assignedSlot||node.parentNode||isShadowRoot(node)&&node.host||getDocumentElement(node);return isShadowRoot(result)?result.host:result}function getNearestOverflowAncestor(node){const parentNode=getParentNode(node);if(isLastTraversableNode(parentNode)){return node.ownerDocument?node.ownerDocument.body:node.body}if(isHTMLElement(parentNode)&&isOverflowElement(parentNode)){return parentNode}return getNearestOverflowAncestor(parentNode)}function getOverflowAncestors(node,list,traverseIframes){var _node$ownerDocument2;if(list===void 0){list=[]}if(traverseIframes===void 0){traverseIframes=true}const scrollableAncestor=getNearestOverflowAncestor(node);const isBody=scrollableAncestor===((_node$ownerDocument2=node.ownerDocument)==null?void 0:_node$ownerDocument2.body);const win=getWindow(scrollableAncestor);if(isBody){const frameElement=getFrameElement(win);return list.concat(win,win.visualViewport||[],isOverflowElement(scrollableAncestor)?scrollableAncestor:[],frameElement&&traverseIframes?getOverflowAncestors(frameElement):[])}return list.concat(scrollableAncestor,getOverflowAncestors(scrollableAncestor,[],traverseIframes))}function getFrameElement(win){return win.parent&&Object.getPrototypeOf(win.parent)?win.frameElement:null}function activeElement(doc){let activeElement2=doc.activeElement;while(((_activeElement=activeElement2)==null||(_activeElement=_activeElement.shadowRoot)==null?void 0:_activeElement.activeElement)!=null){var _activeElement;activeElement2=activeElement2.shadowRoot.activeElement}return activeElement2}function contains(parent,child){if(!parent||!child){return false}const rootNode=child.getRootNode==null?void 0:child.getRootNode();if(parent.contains(child)){return true}if(rootNode&&isShadowRoot(rootNode)){let next=child;while(next){if(parent===next){return true}next=next.parentNode||next.host}}return false}function isSafari(){return/apple/i.test(navigator.vendor)}function isMouseLikePointerType(pointerType,strict){const values=["mouse","pen"];if(!strict){values.push("",void 0)}return values.includes(pointerType)}function getDocument(node){return(node==null?void 0:node.ownerDocument)||document}function getTarget(event){if("composedPath"in event){return event.composedPath()[0]}return event.target}const TYPEABLE_SELECTOR="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function isTypeableElement(element){return isHTMLElement(element)&&element.matches(TYPEABLE_SELECTOR)}
|
|
2
|
+
/*!
|
|
3
|
+
* tabbable 6.2.0
|
|
4
|
+
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
|
5
|
+
*/var candidateSelectors=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"];var candidateSelector=candidateSelectors.join(",");var NoElement=typeof Element==="undefined";var matches=NoElement?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector;var getRootNode=!NoElement&&Element.prototype.getRootNode?function(element){var _element$getRootNode;return element===null||element===void 0?void 0:(_element$getRootNode=element.getRootNode)===null||_element$getRootNode===void 0?void 0:_element$getRootNode.call(element)}:function(element){return element===null||element===void 0?void 0:element.ownerDocument};var isInert=function isInert2(node,lookUp){var _node$getAttribute;if(lookUp===void 0){lookUp=true}var inertAtt=node===null||node===void 0?void 0:(_node$getAttribute=node.getAttribute)===null||_node$getAttribute===void 0?void 0:_node$getAttribute.call(node,"inert");var inert=inertAtt===""||inertAtt==="true";var result=inert||lookUp&&node&&isInert2(node.parentNode);return result};var isContentEditable=function isContentEditable2(node){var _node$getAttribute2;var attValue=node===null||node===void 0?void 0:(_node$getAttribute2=node.getAttribute)===null||_node$getAttribute2===void 0?void 0:_node$getAttribute2.call(node,"contenteditable");return attValue===""||attValue==="true"};var getCandidates=function getCandidates2(el,includeContainer,filter){if(isInert(el)){return[]}var candidates=Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));if(includeContainer&&matches.call(el,candidateSelector)){candidates.unshift(el)}candidates=candidates.filter(filter);return candidates};var getCandidatesIteratively=function getCandidatesIteratively2(elements,includeContainer,options){var candidates=[];var elementsToCheck=Array.from(elements);while(elementsToCheck.length){var element=elementsToCheck.shift();if(isInert(element,false)){continue}if(element.tagName==="SLOT"){var assigned=element.assignedElements();var content=assigned.length?assigned:element.children;var nestedCandidates=getCandidatesIteratively2(content,true,options);if(options.flatten){candidates.push.apply(candidates,nestedCandidates)}else{candidates.push({scopeParent:element,candidates:nestedCandidates})}}else{var validCandidate=matches.call(element,candidateSelector);if(validCandidate&&options.filter(element)&&(includeContainer||!elements.includes(element))){candidates.push(element)}var shadowRoot=element.shadowRoot||typeof options.getShadowRoot==="function"&&options.getShadowRoot(element);var validShadowRoot=!isInert(shadowRoot,false)&&(!options.shadowRootFilter||options.shadowRootFilter(element));if(shadowRoot&&validShadowRoot){var _nestedCandidates=getCandidatesIteratively2(shadowRoot===true?element.children:shadowRoot.children,true,options);if(options.flatten){candidates.push.apply(candidates,_nestedCandidates)}else{candidates.push({scopeParent:element,candidates:_nestedCandidates})}}else{elementsToCheck.unshift.apply(elementsToCheck,element.children)}}}return candidates};var hasTabIndex=function hasTabIndex2(node){return!isNaN(parseInt(node.getAttribute("tabindex"),10))};var getTabIndex=function getTabIndex2(node){if(!node){throw new Error("No node provided")}if(node.tabIndex<0){if((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName)||isContentEditable(node))&&!hasTabIndex(node)){return 0}}return node.tabIndex};var getSortOrderTabIndex=function getSortOrderTabIndex2(node,isScope){var tabIndex=getTabIndex(node);if(tabIndex<0&&isScope&&!hasTabIndex(node)){return 0}return tabIndex};var sortOrderedTabbables=function sortOrderedTabbables2(a,b){return a.tabIndex===b.tabIndex?a.documentOrder-b.documentOrder:a.tabIndex-b.tabIndex};var isInput=function isInput2(node){return node.tagName==="INPUT"};var isHiddenInput=function isHiddenInput2(node){return isInput(node)&&node.type==="hidden"};var isDetailsWithSummary=function isDetailsWithSummary2(node){var r=node.tagName==="DETAILS"&&Array.prototype.slice.apply(node.children).some((function(child){return child.tagName==="SUMMARY"}));return r};var getCheckedRadio=function getCheckedRadio2(nodes,form){for(var i=0;i<nodes.length;i++){if(nodes[i].checked&&nodes[i].form===form){return nodes[i]}}};var isTabbableRadio=function isTabbableRadio2(node){if(!node.name){return true}var radioScope=node.form||getRootNode(node);var queryRadios=function queryRadios2(name){return radioScope.querySelectorAll('input[type="radio"][name="'+name+'"]')};var radioSet;if(typeof window!=="undefined"&&typeof window.CSS!=="undefined"&&typeof window.CSS.escape==="function"){radioSet=queryRadios(window.CSS.escape(node.name))}else{try{radioSet=queryRadios(node.name)}catch(err){console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",err.message);return false}}var checked=getCheckedRadio(radioSet,node.form);return!checked||checked===node};var isRadio=function isRadio2(node){return isInput(node)&&node.type==="radio"};var isNonTabbableRadio=function isNonTabbableRadio2(node){return isRadio(node)&&!isTabbableRadio(node)};var isNodeAttached=function isNodeAttached2(node){var _nodeRoot;var nodeRoot=node&&getRootNode(node);var nodeRootHost=(_nodeRoot=nodeRoot)===null||_nodeRoot===void 0?void 0:_nodeRoot.host;var attached=false;if(nodeRoot&&nodeRoot!==node){var _nodeRootHost,_nodeRootHost$ownerDo,_node$ownerDocument;attached=!!((_nodeRootHost=nodeRootHost)!==null&&_nodeRootHost!==void 0&&(_nodeRootHost$ownerDo=_nodeRootHost.ownerDocument)!==null&&_nodeRootHost$ownerDo!==void 0&&_nodeRootHost$ownerDo.contains(nodeRootHost)||node!==null&&node!==void 0&&(_node$ownerDocument=node.ownerDocument)!==null&&_node$ownerDocument!==void 0&&_node$ownerDocument.contains(node));while(!attached&&nodeRootHost){var _nodeRoot2,_nodeRootHost2,_nodeRootHost2$ownerD;nodeRoot=getRootNode(nodeRootHost);nodeRootHost=(_nodeRoot2=nodeRoot)===null||_nodeRoot2===void 0?void 0:_nodeRoot2.host;attached=!!((_nodeRootHost2=nodeRootHost)!==null&&_nodeRootHost2!==void 0&&(_nodeRootHost2$ownerD=_nodeRootHost2.ownerDocument)!==null&&_nodeRootHost2$ownerD!==void 0&&_nodeRootHost2$ownerD.contains(nodeRootHost))}}return attached};var isZeroArea=function isZeroArea2(node){var _node$getBoundingClie=node.getBoundingClientRect(),width=_node$getBoundingClie.width,height=_node$getBoundingClie.height;return width===0&&height===0};var isHidden=function isHidden2(node,_ref){var displayCheck=_ref.displayCheck,getShadowRoot=_ref.getShadowRoot;if(getComputedStyle(node).visibility==="hidden"){return true}var isDirectSummary=matches.call(node,"details>summary:first-of-type");var nodeUnderDetails=isDirectSummary?node.parentElement:node;if(matches.call(nodeUnderDetails,"details:not([open]) *")){return true}if(!displayCheck||displayCheck==="full"||displayCheck==="legacy-full"){if(typeof getShadowRoot==="function"){var originalNode=node;while(node){var parentElement=node.parentElement;var rootNode=getRootNode(node);if(parentElement&&!parentElement.shadowRoot&&getShadowRoot(parentElement)===true){return isZeroArea(node)}else if(node.assignedSlot){node=node.assignedSlot}else if(!parentElement&&rootNode!==node.ownerDocument){node=rootNode.host}else{node=parentElement}}node=originalNode}if(isNodeAttached(node)){return!node.getClientRects().length}if(displayCheck!=="legacy-full"){return true}}else if(displayCheck==="non-zero-area"){return isZeroArea(node)}return false};var isDisabledFromFieldset=function isDisabledFromFieldset2(node){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)){var parentNode=node.parentElement;while(parentNode){if(parentNode.tagName==="FIELDSET"&&parentNode.disabled){for(var i=0;i<parentNode.children.length;i++){var child=parentNode.children.item(i);if(child.tagName==="LEGEND"){return matches.call(parentNode,"fieldset[disabled] *")?true:!child.contains(node)}}return true}parentNode=parentNode.parentElement}}return false};var isNodeMatchingSelectorFocusable=function isNodeMatchingSelectorFocusable2(options,node){if(node.disabled||isInert(node)||isHiddenInput(node)||isHidden(node,options)||isDetailsWithSummary(node)||isDisabledFromFieldset(node)){return false}return true};var isNodeMatchingSelectorTabbable=function isNodeMatchingSelectorTabbable2(options,node){if(isNonTabbableRadio(node)||getTabIndex(node)<0||!isNodeMatchingSelectorFocusable(options,node)){return false}return true};var isValidShadowRootTabbable=function isValidShadowRootTabbable2(shadowHostNode){var tabIndex=parseInt(shadowHostNode.getAttribute("tabindex"),10);if(isNaN(tabIndex)||tabIndex>=0){return true}return false};var sortByOrder=function sortByOrder2(candidates){var regularTabbables=[];var orderedTabbables=[];candidates.forEach((function(item,i){var isScope=!!item.scopeParent;var element=isScope?item.scopeParent:item;var candidateTabindex=getSortOrderTabIndex(element,isScope);var elements=isScope?sortByOrder2(item.candidates):element;if(candidateTabindex===0){isScope?regularTabbables.push.apply(regularTabbables,elements):regularTabbables.push(element)}else{orderedTabbables.push({documentOrder:i,tabIndex:candidateTabindex,item:item,isScope:isScope,content:elements})}}));return orderedTabbables.sort(sortOrderedTabbables).reduce((function(acc,sortable){sortable.isScope?acc.push.apply(acc,sortable.content):acc.push(sortable.content);return acc}),[]).concat(regularTabbables)};var tabbable=function tabbable2(container,options){options=options||{};var candidates;if(options.getShadowRoot){candidates=getCandidatesIteratively([container],options.includeContainer,{filter:isNodeMatchingSelectorTabbable.bind(null,options),flatten:false,getShadowRoot:options.getShadowRoot,shadowRootFilter:isValidShadowRootTabbable})}else{candidates=getCandidates(container,options.includeContainer,isNodeMatchingSelectorTabbable.bind(null,options))}return sortByOrder(candidates)};function getCssDimensions(element){const css=getComputedStyle$1(element);let width=parseFloat(css.width)||0;let height=parseFloat(css.height)||0;const hasOffset=isHTMLElement(element);const offsetWidth=hasOffset?element.offsetWidth:width;const offsetHeight=hasOffset?element.offsetHeight:height;const shouldFallback=round(width)!==offsetWidth||round(height)!==offsetHeight;if(shouldFallback){width=offsetWidth;height=offsetHeight}return{width:width,height:height,$:shouldFallback}}function unwrapElement(element){return!isElement(element)?element.contextElement:element}function getScale(element){const domElement=unwrapElement(element);if(!isHTMLElement(domElement)){return createCoords(1)}const rect=domElement.getBoundingClientRect();const{width:width,height:height,$:$}=getCssDimensions(domElement);let x=($?round(rect.width):rect.width)/width;let y=($?round(rect.height):rect.height)/height;if(!x||!Number.isFinite(x)){x=1}if(!y||!Number.isFinite(y)){y=1}return{x:x,y:y}}const noOffsets=createCoords(0);function getVisualOffsets(element){const win=getWindow(element);if(!isWebKit()||!win.visualViewport){return noOffsets}return{x:win.visualViewport.offsetLeft,y:win.visualViewport.offsetTop}}function shouldAddVisualOffsets(element,isFixed,floatingOffsetParent){if(isFixed===void 0){isFixed=false}if(!floatingOffsetParent||isFixed&&floatingOffsetParent!==getWindow(element)){return false}return isFixed}function getBoundingClientRect(element,includeScale,isFixedStrategy,offsetParent){if(includeScale===void 0){includeScale=false}if(isFixedStrategy===void 0){isFixedStrategy=false}const clientRect=element.getBoundingClientRect();const domElement=unwrapElement(element);let scale=createCoords(1);if(includeScale){if(offsetParent){if(isElement(offsetParent)){scale=getScale(offsetParent)}}else{scale=getScale(element)}}const visualOffsets=shouldAddVisualOffsets(domElement,isFixedStrategy,offsetParent)?getVisualOffsets(domElement):createCoords(0);let x=(clientRect.left+visualOffsets.x)/scale.x;let y=(clientRect.top+visualOffsets.y)/scale.y;let width=clientRect.width/scale.x;let height=clientRect.height/scale.y;if(domElement){const win=getWindow(domElement);const offsetWin=offsetParent&&isElement(offsetParent)?getWindow(offsetParent):offsetParent;let currentWin=win;let currentIFrame=getFrameElement(currentWin);while(currentIFrame&&offsetParent&&offsetWin!==currentWin){const iframeScale=getScale(currentIFrame);const iframeRect=currentIFrame.getBoundingClientRect();const css=getComputedStyle$1(currentIFrame);const left=iframeRect.left+(currentIFrame.clientLeft+parseFloat(css.paddingLeft))*iframeScale.x;const top=iframeRect.top+(currentIFrame.clientTop+parseFloat(css.paddingTop))*iframeScale.y;x*=iframeScale.x;y*=iframeScale.y;width*=iframeScale.x;height*=iframeScale.y;x+=left;y+=top;currentWin=getWindow(currentIFrame);currentIFrame=getFrameElement(currentWin)}}return rectToClientRect({width:width,height:height,x:x,y:y})}function getWindowScrollBarX(element,rect){const leftScroll=getNodeScroll(element).scrollLeft;if(!rect){return getBoundingClientRect(getDocumentElement(element)).left+leftScroll}return rect.left+leftScroll}function getHTMLOffset(documentElement,scroll,ignoreScrollbarX){if(ignoreScrollbarX===void 0){ignoreScrollbarX=false}const htmlRect=documentElement.getBoundingClientRect();const x=htmlRect.left+scroll.scrollLeft-(ignoreScrollbarX?0:getWindowScrollBarX(documentElement,htmlRect));const y=htmlRect.top+scroll.scrollTop;return{x:x,y:y}}function convertOffsetParentRelativeRectToViewportRelativeRect(_ref){let{elements:elements,rect:rect,offsetParent:offsetParent,strategy:strategy}=_ref;const isFixed=strategy==="fixed";const documentElement=getDocumentElement(offsetParent);const topLayer=elements?isTopLayer(elements.floating):false;if(offsetParent===documentElement||topLayer&&isFixed){return rect}let scroll={scrollLeft:0,scrollTop:0};let scale=createCoords(1);const offsets=createCoords(0);const isOffsetParentAnElement=isHTMLElement(offsetParent);if(isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed){if(getNodeName(offsetParent)!=="body"||isOverflowElement(documentElement)){scroll=getNodeScroll(offsetParent)}if(isHTMLElement(offsetParent)){const offsetRect=getBoundingClientRect(offsetParent);scale=getScale(offsetParent);offsets.x=offsetRect.x+offsetParent.clientLeft;offsets.y=offsetRect.y+offsetParent.clientTop}}const htmlOffset=documentElement&&!isOffsetParentAnElement&&!isFixed?getHTMLOffset(documentElement,scroll,true):createCoords(0);return{width:rect.width*scale.x,height:rect.height*scale.y,x:rect.x*scale.x-scroll.scrollLeft*scale.x+offsets.x+htmlOffset.x,y:rect.y*scale.y-scroll.scrollTop*scale.y+offsets.y+htmlOffset.y}}function getClientRects(element){return Array.from(element.getClientRects())}function getDocumentRect(element){const html=getDocumentElement(element);const scroll=getNodeScroll(element);const body=element.ownerDocument.body;const width=max(html.scrollWidth,html.clientWidth,body.scrollWidth,body.clientWidth);const height=max(html.scrollHeight,html.clientHeight,body.scrollHeight,body.clientHeight);let x=-scroll.scrollLeft+getWindowScrollBarX(element);const y=-scroll.scrollTop;if(getComputedStyle$1(body).direction==="rtl"){x+=max(html.clientWidth,body.clientWidth)-width}return{width:width,height:height,x:x,y:y}}function getViewportRect(element,strategy){const win=getWindow(element);const html=getDocumentElement(element);const visualViewport=win.visualViewport;let width=html.clientWidth;let height=html.clientHeight;let x=0;let y=0;if(visualViewport){width=visualViewport.width;height=visualViewport.height;const visualViewportBased=isWebKit();if(!visualViewportBased||visualViewportBased&&strategy==="fixed"){x=visualViewport.offsetLeft;y=visualViewport.offsetTop}}return{width:width,height:height,x:x,y:y}}function getInnerBoundingClientRect(element,strategy){const clientRect=getBoundingClientRect(element,true,strategy==="fixed");const top=clientRect.top+element.clientTop;const left=clientRect.left+element.clientLeft;const scale=isHTMLElement(element)?getScale(element):createCoords(1);const width=element.clientWidth*scale.x;const height=element.clientHeight*scale.y;const x=left*scale.x;const y=top*scale.y;return{width:width,height:height,x:x,y:y}}function getClientRectFromClippingAncestor(element,clippingAncestor,strategy){let rect;if(clippingAncestor==="viewport"){rect=getViewportRect(element,strategy)}else if(clippingAncestor==="document"){rect=getDocumentRect(getDocumentElement(element))}else if(isElement(clippingAncestor)){rect=getInnerBoundingClientRect(clippingAncestor,strategy)}else{const visualOffsets=getVisualOffsets(element);rect={x:clippingAncestor.x-visualOffsets.x,y:clippingAncestor.y-visualOffsets.y,width:clippingAncestor.width,height:clippingAncestor.height}}return rectToClientRect(rect)}function hasFixedPositionAncestor(element,stopNode){const parentNode=getParentNode(element);if(parentNode===stopNode||!isElement(parentNode)||isLastTraversableNode(parentNode)){return false}return getComputedStyle$1(parentNode).position==="fixed"||hasFixedPositionAncestor(parentNode,stopNode)}function getClippingElementAncestors(element,cache){const cachedResult=cache.get(element);if(cachedResult){return cachedResult}let result=getOverflowAncestors(element,[],false).filter((el=>isElement(el)&&getNodeName(el)!=="body"));let currentContainingBlockComputedStyle=null;const elementIsFixed=getComputedStyle$1(element).position==="fixed";let currentNode=elementIsFixed?getParentNode(element):element;while(isElement(currentNode)&&!isLastTraversableNode(currentNode)){const computedStyle=getComputedStyle$1(currentNode);const currentNodeIsContaining=isContainingBlock(currentNode);if(!currentNodeIsContaining&&computedStyle.position==="fixed"){currentContainingBlockComputedStyle=null}const shouldDropCurrentNode=elementIsFixed?!currentNodeIsContaining&&!currentContainingBlockComputedStyle:!currentNodeIsContaining&&computedStyle.position==="static"&&!!currentContainingBlockComputedStyle&&["absolute","fixed"].includes(currentContainingBlockComputedStyle.position)||isOverflowElement(currentNode)&&!currentNodeIsContaining&&hasFixedPositionAncestor(element,currentNode);if(shouldDropCurrentNode){result=result.filter((ancestor=>ancestor!==currentNode))}else{currentContainingBlockComputedStyle=computedStyle}currentNode=getParentNode(currentNode)}cache.set(element,result);return result}function getClippingRect(_ref){let{element:element,boundary:boundary,rootBoundary:rootBoundary,strategy:strategy}=_ref;const elementClippingAncestors=boundary==="clippingAncestors"?isTopLayer(element)?[]:getClippingElementAncestors(element,this._c):[].concat(boundary);const clippingAncestors=[...elementClippingAncestors,rootBoundary];const firstClippingAncestor=clippingAncestors[0];const clippingRect=clippingAncestors.reduce(((accRect,clippingAncestor)=>{const rect=getClientRectFromClippingAncestor(element,clippingAncestor,strategy);accRect.top=max(rect.top,accRect.top);accRect.right=min(rect.right,accRect.right);accRect.bottom=min(rect.bottom,accRect.bottom);accRect.left=max(rect.left,accRect.left);return accRect}),getClientRectFromClippingAncestor(element,firstClippingAncestor,strategy));return{width:clippingRect.right-clippingRect.left,height:clippingRect.bottom-clippingRect.top,x:clippingRect.left,y:clippingRect.top}}function getDimensions(element){const{width:width,height:height}=getCssDimensions(element);return{width:width,height:height}}function getRectRelativeToOffsetParent(element,offsetParent,strategy){const isOffsetParentAnElement=isHTMLElement(offsetParent);const documentElement=getDocumentElement(offsetParent);const isFixed=strategy==="fixed";const rect=getBoundingClientRect(element,true,isFixed,offsetParent);let scroll={scrollLeft:0,scrollTop:0};const offsets=createCoords(0);if(isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed){if(getNodeName(offsetParent)!=="body"||isOverflowElement(documentElement)){scroll=getNodeScroll(offsetParent)}if(isOffsetParentAnElement){const offsetRect=getBoundingClientRect(offsetParent,true,isFixed,offsetParent);offsets.x=offsetRect.x+offsetParent.clientLeft;offsets.y=offsetRect.y+offsetParent.clientTop}else if(documentElement){offsets.x=getWindowScrollBarX(documentElement)}}const htmlOffset=documentElement&&!isOffsetParentAnElement&&!isFixed?getHTMLOffset(documentElement,scroll):createCoords(0);const x=rect.left+scroll.scrollLeft-offsets.x-htmlOffset.x;const y=rect.top+scroll.scrollTop-offsets.y-htmlOffset.y;return{x:x,y:y,width:rect.width,height:rect.height}}function isStaticPositioned(element){return getComputedStyle$1(element).position==="static"}function getTrueOffsetParent(element,polyfill){if(!isHTMLElement(element)||getComputedStyle$1(element).position==="fixed"){return null}if(polyfill){return polyfill(element)}let rawOffsetParent=element.offsetParent;if(getDocumentElement(element)===rawOffsetParent){rawOffsetParent=rawOffsetParent.ownerDocument.body}return rawOffsetParent}function getOffsetParent(element,polyfill){const win=getWindow(element);if(isTopLayer(element)){return win}if(!isHTMLElement(element)){let svgOffsetParent=getParentNode(element);while(svgOffsetParent&&!isLastTraversableNode(svgOffsetParent)){if(isElement(svgOffsetParent)&&!isStaticPositioned(svgOffsetParent)){return svgOffsetParent}svgOffsetParent=getParentNode(svgOffsetParent)}return win}let offsetParent=getTrueOffsetParent(element,polyfill);while(offsetParent&&isTableElement(offsetParent)&&isStaticPositioned(offsetParent)){offsetParent=getTrueOffsetParent(offsetParent,polyfill)}if(offsetParent&&isLastTraversableNode(offsetParent)&&isStaticPositioned(offsetParent)&&!isContainingBlock(offsetParent)){return win}return offsetParent||getContainingBlock(element)||win}const getElementRects=async function(data){const getOffsetParentFn=this.getOffsetParent||getOffsetParent;const getDimensionsFn=this.getDimensions;const floatingDimensions=await getDimensionsFn(data.floating);return{reference:getRectRelativeToOffsetParent(data.reference,await getOffsetParentFn(data.floating),data.strategy),floating:{x:0,y:0,width:floatingDimensions.width,height:floatingDimensions.height}}};function isRTL(element){return getComputedStyle$1(element).direction==="rtl"}const platform={convertOffsetParentRelativeRectToViewportRelativeRect:convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect:getClippingRect,getOffsetParent:getOffsetParent,getElementRects:getElementRects,getClientRects:getClientRects,getDimensions:getDimensions,getScale:getScale,isElement:isElement,isRTL:isRTL};function observeMove(element,onMove){let io=null;let timeoutId2;const root=getDocumentElement(element);function cleanup(){var _io;clearTimeout(timeoutId2);(_io=io)==null||_io.disconnect();io=null}function refresh(skip,threshold){if(skip===void 0){skip=false}if(threshold===void 0){threshold=1}cleanup();const{left:left,top:top,width:width,height:height}=element.getBoundingClientRect();if(!skip){onMove()}if(!width||!height){return}const insetTop=floor(top);const insetRight=floor(root.clientWidth-(left+width));const insetBottom=floor(root.clientHeight-(top+height));const insetLeft=floor(left);const rootMargin=-insetTop+"px "+-insetRight+"px "+-insetBottom+"px "+-insetLeft+"px";const options={rootMargin:rootMargin,threshold:max(0,min(1,threshold))||1};let isFirstUpdate=true;function handleObserve(entries){const ratio=entries[0].intersectionRatio;if(ratio!==threshold){if(!isFirstUpdate){return refresh()}if(!ratio){timeoutId2=setTimeout((()=>{refresh(false,1e-7)}),1e3)}else{refresh(false,ratio)}}isFirstUpdate=false}try{io=new IntersectionObserver(handleObserve,{...options,root:root.ownerDocument})}catch(e){io=new IntersectionObserver(handleObserve,options)}io.observe(element)}refresh(true);return cleanup}function autoUpdate(reference,floating,update,options){if(options===void 0){options={}}const{ancestorScroll:ancestorScroll=true,ancestorResize:ancestorResize=true,elementResize:elementResize=typeof ResizeObserver==="function",layoutShift:layoutShift=typeof IntersectionObserver==="function",animationFrame:animationFrame=false}=options;const referenceEl=unwrapElement(reference);const ancestors=ancestorScroll||ancestorResize?[...referenceEl?getOverflowAncestors(referenceEl):[],...getOverflowAncestors(floating)]:[];ancestors.forEach((ancestor=>{ancestorScroll&&ancestor.addEventListener("scroll",update,{passive:true});ancestorResize&&ancestor.addEventListener("resize",update)}));const cleanupIo=referenceEl&&layoutShift?observeMove(referenceEl,update):null;let reobserveFrame=-1;let resizeObserver=null;if(elementResize){resizeObserver=new ResizeObserver((_ref=>{let[firstEntry]=_ref;if(firstEntry&&firstEntry.target===referenceEl&&resizeObserver){resizeObserver.unobserve(floating);cancelAnimationFrame(reobserveFrame);reobserveFrame=requestAnimationFrame((()=>{var _resizeObserver;(_resizeObserver=resizeObserver)==null||_resizeObserver.observe(floating)}))}update()}));if(referenceEl&&!animationFrame){resizeObserver.observe(referenceEl)}resizeObserver.observe(floating)}let frameId;let prevRefRect=animationFrame?getBoundingClientRect(reference):null;if(animationFrame){frameLoop()}function frameLoop(){const nextRefRect=getBoundingClientRect(reference);if(prevRefRect&&(nextRefRect.x!==prevRefRect.x||nextRefRect.y!==prevRefRect.y||nextRefRect.width!==prevRefRect.width||nextRefRect.height!==prevRefRect.height)){update()}prevRefRect=nextRefRect;frameId=requestAnimationFrame(frameLoop)}update();return()=>{var _resizeObserver2;ancestors.forEach((ancestor=>{ancestorScroll&&ancestor.removeEventListener("scroll",update);ancestorResize&&ancestor.removeEventListener("resize",update)}));cleanupIo==null||cleanupIo();(_resizeObserver2=resizeObserver)==null||_resizeObserver2.disconnect();resizeObserver=null;if(animationFrame){cancelAnimationFrame(frameId)}}}const offset$1=offset$2;const shift$1=shift$2;const flip$1=flip$2;const arrow$2=arrow$3;const computePosition=(reference,floating,options)=>{const cache=new Map;const mergedOptions={platform:platform,...options};const platformWithCache={...mergedOptions.platform,_c:cache};return computePosition$1(reference,floating,{...mergedOptions,platform:platformWithCache})};var index$1=typeof document!=="undefined"?useLayoutEffect:useEffect;function deepEqual(a,b){if(a===b){return true}if(typeof a!==typeof b){return false}if(typeof a==="function"&&a.toString()===b.toString()){return true}let length;let i;let keys;if(a&&b&&typeof a==="object"){if(Array.isArray(a)){length=a.length;if(length!==b.length)return false;for(i=length;i--!==0;){if(!deepEqual(a[i],b[i])){return false}}return true}keys=Object.keys(a);length=keys.length;if(length!==Object.keys(b).length){return false}for(i=length;i--!==0;){if(!{}.hasOwnProperty.call(b,keys[i])){return false}}for(i=length;i--!==0;){const key=keys[i];if(key==="_owner"&&a.$$typeof){continue}if(!deepEqual(a[key],b[key])){return false}}return true}return a!==a&&b!==b}function getDPR(element){if(typeof window==="undefined"){return 1}const win=element.ownerDocument.defaultView||window;return win.devicePixelRatio||1}function roundByDPR(element,value){const dpr=getDPR(element);return Math.round(value*dpr)/dpr}function useLatestRef$1(value){const ref=React.useRef(value);index$1((()=>{ref.current=value}));return ref}function useFloating$1(options){if(options===void 0){options={}}const{placement:placement="bottom",strategy:strategy="absolute",middleware:middleware=[],platform:platform2,elements:{reference:externalReference,floating:externalFloating}={},transform:transform=true,whileElementsMounted:whileElementsMounted,open:open}=options;const[data,setData]=React.useState({x:0,y:0,strategy:strategy,placement:placement,middlewareData:{},isPositioned:false});const[latestMiddleware,setLatestMiddleware]=React.useState(middleware);if(!deepEqual(latestMiddleware,middleware)){setLatestMiddleware(middleware)}const[_reference,_setReference]=React.useState(null);const[_floating,_setFloating]=React.useState(null);const setReference=React.useCallback((node=>{if(node!==referenceRef.current){referenceRef.current=node;_setReference(node)}}),[]);const setFloating=React.useCallback((node=>{if(node!==floatingRef.current){floatingRef.current=node;_setFloating(node)}}),[]);const referenceEl=externalReference||_reference;const floatingEl=externalFloating||_floating;const referenceRef=React.useRef(null);const floatingRef=React.useRef(null);const dataRef=React.useRef(data);const hasWhileElementsMounted=whileElementsMounted!=null;const whileElementsMountedRef=useLatestRef$1(whileElementsMounted);const platformRef=useLatestRef$1(platform2);const openRef=useLatestRef$1(open);const update=React.useCallback((()=>{if(!referenceRef.current||!floatingRef.current){return}const config={placement:placement,strategy:strategy,middleware:latestMiddleware};if(platformRef.current){config.platform=platformRef.current}computePosition(referenceRef.current,floatingRef.current,config).then((data2=>{const fullData={...data2,isPositioned:openRef.current!==false};if(isMountedRef.current&&!deepEqual(dataRef.current,fullData)){dataRef.current=fullData;ReactDOM.flushSync((()=>{setData(fullData)}))}}))}),[latestMiddleware,placement,strategy,platformRef,openRef]);index$1((()=>{if(open===false&&dataRef.current.isPositioned){dataRef.current.isPositioned=false;setData((data2=>({...data2,isPositioned:false})))}}),[open]);const isMountedRef=React.useRef(false);index$1((()=>{isMountedRef.current=true;return()=>{isMountedRef.current=false}}),[]);index$1((()=>{if(referenceEl)referenceRef.current=referenceEl;if(floatingEl)floatingRef.current=floatingEl;if(referenceEl&&floatingEl){if(whileElementsMountedRef.current){return whileElementsMountedRef.current(referenceEl,floatingEl,update)}update()}}),[referenceEl,floatingEl,update,whileElementsMountedRef,hasWhileElementsMounted]);const refs=React.useMemo((()=>({reference:referenceRef,floating:floatingRef,setReference:setReference,setFloating:setFloating})),[setReference,setFloating]);const elements=React.useMemo((()=>({reference:referenceEl,floating:floatingEl})),[referenceEl,floatingEl]);const floatingStyles=React.useMemo((()=>{const initialStyles={position:strategy,left:0,top:0};if(!elements.floating){return initialStyles}const x=roundByDPR(elements.floating,data.x);const y=roundByDPR(elements.floating,data.y);if(transform){return{...initialStyles,transform:"translate("+x+"px, "+y+"px)",...getDPR(elements.floating)>=1.5&&{willChange:"transform"}}}return{position:strategy,left:x,top:y}}),[strategy,transform,elements.floating,data.x,data.y]);return React.useMemo((()=>({...data,update:update,refs:refs,elements:elements,floatingStyles:floatingStyles})),[data,update,refs,elements,floatingStyles])}const arrow$1=options=>{function isRef(value){return{}.hasOwnProperty.call(value,"current")}return{name:"arrow",options:options,fn(state){const{element:element,padding:padding}=typeof options==="function"?options(state):options;if(element&&isRef(element)){if(element.current!=null){return arrow$2({element:element.current,padding:padding}).fn(state)}return{}}if(element){return arrow$2({element:element,padding:padding}).fn(state)}return{}}}};const offset=(options,deps)=>({...offset$1(options),options:[options,deps]});const shift=(options,deps)=>({...shift$1(options),options:[options,deps]});const flip=(options,deps)=>({...flip$1(options),options:[options,deps]});const arrow=(options,deps)=>({...arrow$1(options),options:[options,deps]});const SafeReact={...React};const useInsertionEffect=SafeReact.useInsertionEffect;const useSafeInsertionEffect=useInsertionEffect||(fn=>fn());function useEffectEvent(callback){const ref=React.useRef((()=>{}));useSafeInsertionEffect((()=>{ref.current=callback}));return React.useCallback((function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return ref.current==null?void 0:ref.current(...args)}),[])}var index=typeof document!=="undefined"?useLayoutEffect:useEffect;function _extends(){_extends=Object.assign?Object.assign.bind():function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}let serverHandoffComplete=false;let count=0;const genId=()=>"floating-ui-"+Math.random().toString(36).slice(2,6)+count++;function useFloatingId(){const[id,setId]=React.useState((()=>serverHandoffComplete?genId():void 0));index((()=>{if(id==null){setId(genId())}}),[]);React.useEffect((()=>{serverHandoffComplete=true}),[]);return id}const useReactId=SafeReact.useId;const useId=useReactId||useFloatingId;function createPubSub(){const map=new Map;return{emit(event,data){var _map$get;(_map$get=map.get(event))==null||_map$get.forEach((handler=>handler(data)))},on(event,listener){map.set(event,[...map.get(event)||[],listener])},off(event,listener){var _map$get2;map.set(event,((_map$get2=map.get(event))==null?void 0:_map$get2.filter((l=>l!==listener)))||[])}}}const FloatingNodeContext=React.createContext(null);const FloatingTreeContext=React.createContext(null);const useFloatingParentNodeId=()=>{var _React$useContext;return((_React$useContext=React.useContext(FloatingNodeContext))==null?void 0:_React$useContext.id)||null};const useFloatingTree=()=>React.useContext(FloatingTreeContext);function createAttribute(name){return"data-floating-ui-"+name}function useLatestRef(value){const ref=useRef(value);index((()=>{ref.current=value}));return ref}const safePolygonIdentifier=createAttribute("safe-polygon");function getDelay(value,prop,pointerType){if(pointerType&&!isMouseLikePointerType(pointerType)){return 0}if(typeof value==="number"){return value}return value==null?void 0:value[prop]}function useHover(context,props){if(props===void 0){props={}}const{open:open,onOpenChange:onOpenChange,dataRef:dataRef,events:events,elements:elements}=context;const{enabled:enabled=true,delay:delay=0,handleClose:handleClose=null,mouseOnly:mouseOnly=false,restMs:restMs=0,move:move=true}=props;const tree=useFloatingTree();const parentId=useFloatingParentNodeId();const handleCloseRef=useLatestRef(handleClose);const delayRef=useLatestRef(delay);const openRef=useLatestRef(open);const pointerTypeRef=React.useRef();const timeoutRef=React.useRef(-1);const handlerRef=React.useRef();const restTimeoutRef=React.useRef(-1);const blockMouseMoveRef=React.useRef(true);const performedPointerEventsMutationRef=React.useRef(false);const unbindMouseMoveRef=React.useRef((()=>{}));const restTimeoutPendingRef=React.useRef(false);const isHoverOpen=React.useCallback((()=>{var _dataRef$current$open;const type=(_dataRef$current$open=dataRef.current.openEvent)==null?void 0:_dataRef$current$open.type;return(type==null?void 0:type.includes("mouse"))&&type!=="mousedown"}),[dataRef]);React.useEffect((()=>{if(!enabled)return;function onOpenChange2(_ref){let{open:open2}=_ref;if(!open2){clearTimeout(timeoutRef.current);clearTimeout(restTimeoutRef.current);blockMouseMoveRef.current=true;restTimeoutPendingRef.current=false}}events.on("openchange",onOpenChange2);return()=>{events.off("openchange",onOpenChange2)}}),[enabled,events]);React.useEffect((()=>{if(!enabled)return;if(!handleCloseRef.current)return;if(!open)return;function onLeave(event){if(isHoverOpen()){onOpenChange(false,event,"hover")}}const html=getDocument(elements.floating).documentElement;html.addEventListener("mouseleave",onLeave);return()=>{html.removeEventListener("mouseleave",onLeave)}}),[elements.floating,open,onOpenChange,enabled,handleCloseRef,isHoverOpen]);const closeWithDelay=React.useCallback((function(event,runElseBranch,reason){if(runElseBranch===void 0){runElseBranch=true}if(reason===void 0){reason="hover"}const closeDelay=getDelay(delayRef.current,"close",pointerTypeRef.current);if(closeDelay&&!handlerRef.current){clearTimeout(timeoutRef.current);timeoutRef.current=window.setTimeout((()=>onOpenChange(false,event,reason)),closeDelay)}else if(runElseBranch){clearTimeout(timeoutRef.current);onOpenChange(false,event,reason)}}),[delayRef,onOpenChange]);const cleanupMouseMoveHandler=useEffectEvent((()=>{unbindMouseMoveRef.current();handlerRef.current=void 0}));const clearPointerEvents=useEffectEvent((()=>{if(performedPointerEventsMutationRef.current){const body=getDocument(elements.floating).body;body.style.pointerEvents="";body.removeAttribute(safePolygonIdentifier);performedPointerEventsMutationRef.current=false}}));const isClickLikeOpenEvent=useEffectEvent((()=>dataRef.current.openEvent?["click","mousedown"].includes(dataRef.current.openEvent.type):false));React.useEffect((()=>{if(!enabled)return;function onMouseEnter(event){clearTimeout(timeoutRef.current);blockMouseMoveRef.current=false;if(mouseOnly&&!isMouseLikePointerType(pointerTypeRef.current)||restMs>0&&!getDelay(delayRef.current,"open")){return}const openDelay=getDelay(delayRef.current,"open",pointerTypeRef.current);if(openDelay){timeoutRef.current=window.setTimeout((()=>{if(!openRef.current){onOpenChange(true,event,"hover")}}),openDelay)}else if(!open){onOpenChange(true,event,"hover")}}function onMouseLeave(event){if(isClickLikeOpenEvent())return;unbindMouseMoveRef.current();const doc=getDocument(elements.floating);clearTimeout(restTimeoutRef.current);restTimeoutPendingRef.current=false;if(handleCloseRef.current&&dataRef.current.floatingContext){if(!open){clearTimeout(timeoutRef.current)}handlerRef.current=handleCloseRef.current({...dataRef.current.floatingContext,tree:tree,x:event.clientX,y:event.clientY,onClose(){clearPointerEvents();cleanupMouseMoveHandler();if(!isClickLikeOpenEvent()){closeWithDelay(event,true,"safe-polygon")}}});const handler=handlerRef.current;doc.addEventListener("mousemove",handler);unbindMouseMoveRef.current=()=>{doc.removeEventListener("mousemove",handler)};return}const shouldClose=pointerTypeRef.current==="touch"?!contains(elements.floating,event.relatedTarget):true;if(shouldClose){closeWithDelay(event)}}function onScrollMouseLeave(event){if(isClickLikeOpenEvent())return;if(!dataRef.current.floatingContext)return;handleCloseRef.current==null||handleCloseRef.current({...dataRef.current.floatingContext,tree:tree,x:event.clientX,y:event.clientY,onClose(){clearPointerEvents();cleanupMouseMoveHandler();if(!isClickLikeOpenEvent()){closeWithDelay(event)}}})(event)}if(isElement(elements.domReference)){var _elements$floating;const ref=elements.domReference;open&&ref.addEventListener("mouseleave",onScrollMouseLeave);(_elements$floating=elements.floating)==null||_elements$floating.addEventListener("mouseleave",onScrollMouseLeave);move&&ref.addEventListener("mousemove",onMouseEnter,{once:true});ref.addEventListener("mouseenter",onMouseEnter);ref.addEventListener("mouseleave",onMouseLeave);return()=>{var _elements$floating2;open&&ref.removeEventListener("mouseleave",onScrollMouseLeave);(_elements$floating2=elements.floating)==null||_elements$floating2.removeEventListener("mouseleave",onScrollMouseLeave);move&&ref.removeEventListener("mousemove",onMouseEnter);ref.removeEventListener("mouseenter",onMouseEnter);ref.removeEventListener("mouseleave",onMouseLeave)}}}),[elements,enabled,context,mouseOnly,restMs,move,closeWithDelay,cleanupMouseMoveHandler,clearPointerEvents,onOpenChange,open,openRef,tree,delayRef,handleCloseRef,dataRef,isClickLikeOpenEvent]);index((()=>{var _handleCloseRef$curre;if(!enabled)return;if(open&&(_handleCloseRef$curre=handleCloseRef.current)!=null&&_handleCloseRef$curre.__options.blockPointerEvents&&isHoverOpen()){performedPointerEventsMutationRef.current=true;const floatingEl=elements.floating;if(isElement(elements.domReference)&&floatingEl){var _tree$nodesRef$curren;const body=getDocument(elements.floating).body;body.setAttribute(safePolygonIdentifier,"");const ref=elements.domReference;const parentFloating=tree==null||(_tree$nodesRef$curren=tree.nodesRef.current.find((node=>node.id===parentId)))==null||(_tree$nodesRef$curren=_tree$nodesRef$curren.context)==null?void 0:_tree$nodesRef$curren.elements.floating;if(parentFloating){parentFloating.style.pointerEvents=""}body.style.pointerEvents="none";ref.style.pointerEvents="auto";floatingEl.style.pointerEvents="auto";return()=>{body.style.pointerEvents="";ref.style.pointerEvents="";floatingEl.style.pointerEvents=""}}}}),[enabled,open,parentId,elements,tree,handleCloseRef,isHoverOpen]);index((()=>{if(!open){pointerTypeRef.current=void 0;restTimeoutPendingRef.current=false;cleanupMouseMoveHandler();clearPointerEvents()}}),[open,cleanupMouseMoveHandler,clearPointerEvents]);React.useEffect((()=>()=>{cleanupMouseMoveHandler();clearTimeout(timeoutRef.current);clearTimeout(restTimeoutRef.current);clearPointerEvents()}),[enabled,elements.domReference,cleanupMouseMoveHandler,clearPointerEvents]);const reference=React.useMemo((()=>{function setPointerRef(event){pointerTypeRef.current=event.pointerType}return{onPointerDown:setPointerRef,onPointerEnter:setPointerRef,onMouseMove(event){const{nativeEvent:nativeEvent}=event;function handleMouseMove(){if(!blockMouseMoveRef.current&&!openRef.current){onOpenChange(true,nativeEvent,"hover")}}if(mouseOnly&&!isMouseLikePointerType(pointerTypeRef.current)){return}if(open||restMs===0){return}if(restTimeoutPendingRef.current&&event.movementX**2+event.movementY**2<2){return}clearTimeout(restTimeoutRef.current);if(pointerTypeRef.current==="touch"){handleMouseMove()}else{restTimeoutPendingRef.current=true;restTimeoutRef.current=window.setTimeout(handleMouseMove,restMs)}}}}),[mouseOnly,onOpenChange,open,openRef,restMs]);const floating=React.useMemo((()=>({onMouseEnter(){clearTimeout(timeoutRef.current)},onMouseLeave(event){if(!isClickLikeOpenEvent()){closeWithDelay(event.nativeEvent,false)}}})),[closeWithDelay,isClickLikeOpenEvent]);return React.useMemo((()=>enabled?{reference:reference,floating:floating}:{}),[enabled,reference,floating])}function getChildren(nodes,id){let allChildren=nodes.filter((node=>{var _node$context;return node.parentId===id&&((_node$context=node.context)==null?void 0:_node$context.open)}));let currentChildren=allChildren;while(currentChildren.length){currentChildren=nodes.filter((node=>{var _currentChildren;return(_currentChildren=currentChildren)==null?void 0:_currentChildren.some((n=>{var _node$context2;return node.parentId===n.id&&((_node$context2=node.context)==null?void 0:_node$context2.open)}))}));allChildren=allChildren.concat(currentChildren)}return allChildren}const getTabbableOptions=()=>({getShadowRoot:true,displayCheck:typeof ResizeObserver==="function"&&ResizeObserver.toString().includes("[native code]")?"full":"none"});function getTabbableIn(container,direction){const allTabbable=tabbable(container,getTabbableOptions());if(direction==="prev"){allTabbable.reverse()}const activeIndex=allTabbable.indexOf(activeElement(getDocument(container)));const nextTabbableElements=allTabbable.slice(activeIndex+1);return nextTabbableElements[0]}function getNextTabbable(){return getTabbableIn(document.body,"next")}function getPreviousTabbable(){return getTabbableIn(document.body,"prev")}function isOutsideEvent(event,container){const containerElement=container||event.currentTarget;const relatedTarget=event.relatedTarget;return!relatedTarget||!contains(containerElement,relatedTarget)}function disableFocusInside(container){const tabbableElements=tabbable(container,getTabbableOptions());tabbableElements.forEach((element=>{element.dataset.tabindex=element.getAttribute("tabindex")||"";element.setAttribute("tabindex","-1")}))}function enableFocusInside(container){const elements=container.querySelectorAll("[data-tabindex]");elements.forEach((element=>{const tabindex=element.dataset.tabindex;delete element.dataset.tabindex;if(tabindex){element.setAttribute("tabindex",tabindex)}else{element.removeAttribute("tabindex")}}))}const HIDDEN_STYLES={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"fixed",whiteSpace:"nowrap",width:"1px",top:0,left:0};let timeoutId;function setActiveElementOnTab(event){if(event.key==="Tab"){event.target;clearTimeout(timeoutId)}}const FocusGuard=React.forwardRef((function FocusGuard2(props,ref){const[role,setRole]=React.useState();index((()=>{if(isSafari()){setRole("button")}document.addEventListener("keydown",setActiveElementOnTab);return()=>{document.removeEventListener("keydown",setActiveElementOnTab)}}),[]);const restProps={ref:ref,tabIndex:0,role:role,"aria-hidden":role?void 0:true,[createAttribute("focus-guard")]:"",style:HIDDEN_STYLES};return React.createElement("span",_extends({},props,restProps))}));const PortalContext=React.createContext(null);const attr=createAttribute("portal");function useFloatingPortalNode(props){if(props===void 0){props={}}const{id:id,root:root}=props;const uniqueId=useId();const portalContext=usePortalContext();const[portalNode,setPortalNode]=React.useState(null);const portalNodeRef=React.useRef(null);index((()=>()=>{portalNode==null||portalNode.remove();queueMicrotask((()=>{portalNodeRef.current=null}))}),[portalNode]);index((()=>{if(!uniqueId)return;if(portalNodeRef.current)return;const existingIdRoot=id?document.getElementById(id):null;if(!existingIdRoot)return;const subRoot=document.createElement("div");subRoot.id=uniqueId;subRoot.setAttribute(attr,"");existingIdRoot.appendChild(subRoot);portalNodeRef.current=subRoot;setPortalNode(subRoot)}),[id,uniqueId]);index((()=>{if(root===null)return;if(!uniqueId)return;if(portalNodeRef.current)return;let container=root||(portalContext==null?void 0:portalContext.portalNode);if(container&&!isElement(container))container=container.current;container=container||document.body;let idWrapper=null;if(id){idWrapper=document.createElement("div");idWrapper.id=id;container.appendChild(idWrapper)}const subRoot=document.createElement("div");subRoot.id=uniqueId;subRoot.setAttribute(attr,"");container=idWrapper||container;container.appendChild(subRoot);portalNodeRef.current=subRoot;setPortalNode(subRoot)}),[id,root,uniqueId,portalContext]);return portalNode}function FloatingPortal(props){const{children:children,id:id,root:root,preserveTabOrder:preserveTabOrder=true}=props;const portalNode=useFloatingPortalNode({id:id,root:root});const[focusManagerState,setFocusManagerState]=React.useState(null);const beforeOutsideRef=React.useRef(null);const afterOutsideRef=React.useRef(null);const beforeInsideRef=React.useRef(null);const afterInsideRef=React.useRef(null);const modal=focusManagerState==null?void 0:focusManagerState.modal;const open=focusManagerState==null?void 0:focusManagerState.open;const shouldRenderGuards=!!focusManagerState&&!focusManagerState.modal&&focusManagerState.open&&preserveTabOrder&&!!(root||portalNode);React.useEffect((()=>{if(!portalNode||!preserveTabOrder||modal){return}function onFocus(event){if(portalNode&&isOutsideEvent(event)){const focusing=event.type==="focusin";const manageFocus=focusing?enableFocusInside:disableFocusInside;manageFocus(portalNode)}}portalNode.addEventListener("focusin",onFocus,true);portalNode.addEventListener("focusout",onFocus,true);return()=>{portalNode.removeEventListener("focusin",onFocus,true);portalNode.removeEventListener("focusout",onFocus,true)}}),[portalNode,preserveTabOrder,modal]);React.useEffect((()=>{if(!portalNode)return;if(open)return;enableFocusInside(portalNode)}),[open,portalNode]);return React.createElement(PortalContext.Provider,{value:React.useMemo((()=>({preserveTabOrder:preserveTabOrder,beforeOutsideRef:beforeOutsideRef,afterOutsideRef:afterOutsideRef,beforeInsideRef:beforeInsideRef,afterInsideRef:afterInsideRef,portalNode:portalNode,setFocusManagerState:setFocusManagerState})),[preserveTabOrder,portalNode])},shouldRenderGuards&&portalNode&&React.createElement(FocusGuard,{"data-type":"outside",ref:beforeOutsideRef,onFocus:event=>{if(isOutsideEvent(event,portalNode)){var _beforeInsideRef$curr;(_beforeInsideRef$curr=beforeInsideRef.current)==null||_beforeInsideRef$curr.focus()}else{const prevTabbable=getPreviousTabbable()||(focusManagerState==null?void 0:focusManagerState.refs.domReference.current);prevTabbable==null||prevTabbable.focus()}}}),shouldRenderGuards&&portalNode&&React.createElement("span",{"aria-owns":portalNode.id,style:HIDDEN_STYLES}),portalNode&&ReactDOM.createPortal(children,portalNode),shouldRenderGuards&&portalNode&&React.createElement(FocusGuard,{"data-type":"outside",ref:afterOutsideRef,onFocus:event=>{if(isOutsideEvent(event,portalNode)){var _afterInsideRef$curre;(_afterInsideRef$curre=afterInsideRef.current)==null||_afterInsideRef$curre.focus()}else{const nextTabbable=getNextTabbable()||(focusManagerState==null?void 0:focusManagerState.refs.domReference.current);nextTabbable==null||nextTabbable.focus();(focusManagerState==null?void 0:focusManagerState.closeOnFocusOut)&&(focusManagerState==null?void 0:focusManagerState.onOpenChange(false,event.nativeEvent,"focus-out"))}}}))}const usePortalContext=()=>React.useContext(PortalContext);const FOCUSABLE_ATTRIBUTE="data-floating-ui-focusable";function isButtonTarget(event){return isHTMLElement(event.target)&&event.target.tagName==="BUTTON"}function isSpaceIgnored(element){return isTypeableElement(element)}function useClick(context,props){if(props===void 0){props={}}const{open:open,onOpenChange:onOpenChange,dataRef:dataRef,elements:{domReference:domReference}}=context;const{enabled:enabled=true,event:eventOption="click",toggle:toggle=true,ignoreMouse:ignoreMouse=false,keyboardHandlers:keyboardHandlers=true,stickIfOpen:stickIfOpen=true}=props;const pointerTypeRef=React.useRef();const didKeyDownRef=React.useRef(false);const reference=React.useMemo((()=>({onPointerDown(event){pointerTypeRef.current=event.pointerType},onMouseDown(event){const pointerType=pointerTypeRef.current;if(event.button!==0)return;if(eventOption==="click")return;if(isMouseLikePointerType(pointerType,true)&&ignoreMouse)return;if(open&&toggle&&(dataRef.current.openEvent&&stickIfOpen?dataRef.current.openEvent.type==="mousedown":true)){onOpenChange(false,event.nativeEvent,"click")}else{event.preventDefault();onOpenChange(true,event.nativeEvent,"click")}},onClick(event){const pointerType=pointerTypeRef.current;if(eventOption==="mousedown"&&pointerTypeRef.current){pointerTypeRef.current=void 0;return}if(isMouseLikePointerType(pointerType,true)&&ignoreMouse)return;if(open&&toggle&&(dataRef.current.openEvent&&stickIfOpen?dataRef.current.openEvent.type==="click":true)){onOpenChange(false,event.nativeEvent,"click")}else{onOpenChange(true,event.nativeEvent,"click")}},onKeyDown(event){pointerTypeRef.current=void 0;if(event.defaultPrevented||!keyboardHandlers||isButtonTarget(event)){return}if(event.key===" "&&!isSpaceIgnored(domReference)){event.preventDefault();didKeyDownRef.current=true}if(event.key==="Enter"){if(open&&toggle){onOpenChange(false,event.nativeEvent,"click")}else{onOpenChange(true,event.nativeEvent,"click")}}},onKeyUp(event){if(event.defaultPrevented||!keyboardHandlers||isButtonTarget(event)||isSpaceIgnored(domReference)){return}if(event.key===" "&&didKeyDownRef.current){didKeyDownRef.current=false;if(open&&toggle){onOpenChange(false,event.nativeEvent,"click")}else{onOpenChange(true,event.nativeEvent,"click")}}}})),[dataRef,domReference,eventOption,ignoreMouse,keyboardHandlers,onOpenChange,open,stickIfOpen,toggle]);return React.useMemo((()=>enabled?{reference:reference}:{}),[enabled,reference])}function useFloatingRootContext(options){const{open:open=false,onOpenChange:onOpenChangeProp,elements:elementsProp}=options;const floatingId=useId();const dataRef=React.useRef({});const[events]=React.useState((()=>createPubSub()));const nested=useFloatingParentNodeId()!=null;const[positionReference,setPositionReference]=React.useState(elementsProp.reference);const onOpenChange=useEffectEvent(((open2,event,reason)=>{dataRef.current.openEvent=open2?event:void 0;events.emit("openchange",{open:open2,event:event,reason:reason,nested:nested});onOpenChangeProp==null||onOpenChangeProp(open2,event,reason)}));const refs=React.useMemo((()=>({setPositionReference:setPositionReference})),[]);const elements=React.useMemo((()=>({reference:positionReference||elementsProp.reference||null,floating:elementsProp.floating||null,domReference:elementsProp.reference})),[positionReference,elementsProp.reference,elementsProp.floating]);return React.useMemo((()=>({dataRef:dataRef,open:open,onOpenChange:onOpenChange,elements:elements,events:events,floatingId:floatingId,refs:refs})),[open,onOpenChange,elements,events,floatingId,refs])}function useFloating(options){if(options===void 0){options={}}const{nodeId:nodeId}=options;const internalRootContext=useFloatingRootContext({...options,elements:{reference:null,floating:null,...options.elements}});const rootContext=options.rootContext||internalRootContext;const computedElements=rootContext.elements;const[_domReference,setDomReference]=React.useState(null);const[positionReference,_setPositionReference]=React.useState(null);const optionDomReference=computedElements==null?void 0:computedElements.domReference;const domReference=optionDomReference||_domReference;const domReferenceRef=React.useRef(null);const tree=useFloatingTree();index((()=>{if(domReference){domReferenceRef.current=domReference}}),[domReference]);const position=useFloating$1({...options,elements:{...computedElements,...positionReference&&{reference:positionReference}}});const setPositionReference=React.useCallback((node=>{const computedPositionReference=isElement(node)?{getBoundingClientRect:()=>node.getBoundingClientRect(),contextElement:node}:node;_setPositionReference(computedPositionReference);position.refs.setReference(computedPositionReference)}),[position.refs]);const setReference=React.useCallback((node=>{if(isElement(node)||node===null){domReferenceRef.current=node;setDomReference(node)}if(isElement(position.refs.reference.current)||position.refs.reference.current===null||node!==null&&!isElement(node)){position.refs.setReference(node)}}),[position.refs]);const refs=React.useMemo((()=>({...position.refs,setReference:setReference,setPositionReference:setPositionReference,domReference:domReferenceRef})),[position.refs,setReference,setPositionReference]);const elements=React.useMemo((()=>({...position.elements,domReference:domReference})),[position.elements,domReference]);const context=React.useMemo((()=>({...position,...rootContext,refs:refs,elements:elements,nodeId:nodeId})),[position,refs,elements,nodeId,rootContext]);index((()=>{rootContext.dataRef.current.floatingContext=context;const node=tree==null?void 0:tree.nodesRef.current.find((node2=>node2.id===nodeId));if(node){node.context=context}}));return React.useMemo((()=>({...position,context:context,refs:refs,elements:elements})),[position,refs,elements,context])}const ACTIVE_KEY="active";const SELECTED_KEY="selected";function mergeProps(userProps,propsList,elementKey){const map=new Map;const isItem=elementKey==="item";let domUserProps=userProps;if(isItem&&userProps){const{[ACTIVE_KEY]:_,[SELECTED_KEY]:__,...validProps}=userProps;domUserProps=validProps}return{...elementKey==="floating"&&{tabIndex:-1,[FOCUSABLE_ATTRIBUTE]:""},...domUserProps,...propsList.map((value=>{const propsOrGetProps=value?value[elementKey]:null;if(typeof propsOrGetProps==="function"){return userProps?propsOrGetProps(userProps):null}return propsOrGetProps})).concat(userProps).reduce(((acc,props)=>{if(!props){return acc}Object.entries(props).forEach((_ref=>{let[key,value]=_ref;if(isItem&&[ACTIVE_KEY,SELECTED_KEY].includes(key)){return}if(key.indexOf("on")===0){if(!map.has(key)){map.set(key,[])}if(typeof value==="function"){var _map$get;(_map$get=map.get(key))==null||_map$get.push(value);acc[key]=function(){var _map$get2;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return(_map$get2=map.get(key))==null?void 0:_map$get2.map((fn=>fn(...args))).find((val=>val!==void 0))}}}else{acc[key]=value}}));return acc}),{})}}function useInteractions(propsList){if(propsList===void 0){propsList=[]}const referenceDeps=propsList.map((key=>key==null?void 0:key.reference));const floatingDeps=propsList.map((key=>key==null?void 0:key.floating));const itemDeps=propsList.map((key=>key==null?void 0:key.item));const getReferenceProps=React.useCallback((userProps=>mergeProps(userProps,propsList,"reference")),referenceDeps);const getFloatingProps=React.useCallback((userProps=>mergeProps(userProps,propsList,"floating")),floatingDeps);const getItemProps=React.useCallback((userProps=>mergeProps(userProps,propsList,"item")),itemDeps);return React.useMemo((()=>({getReferenceProps:getReferenceProps,getFloatingProps:getFloatingProps,getItemProps:getItemProps})),[getReferenceProps,getFloatingProps,getItemProps])}function isPointInPolygon(point,polygon){const[x,y]=point;let isInside2=false;const length=polygon.length;for(let i=0,j=length-1;i<length;j=i++){const[xi,yi]=polygon[i]||[0,0];const[xj,yj]=polygon[j]||[0,0];const intersect=yi>=y!==yj>=y&&x<=(xj-xi)*(y-yi)/(yj-yi)+xi;if(intersect){isInside2=!isInside2}}return isInside2}function isInside(point,rect){return point[0]>=rect.x&&point[0]<=rect.x+rect.width&&point[1]>=rect.y&&point[1]<=rect.y+rect.height}function safePolygon(options){if(options===void 0){options={}}const{buffer:buffer=.5,blockPointerEvents:blockPointerEvents=false,requireIntent:requireIntent=true}=options;let timeoutId2;let hasLanded=false;let lastX=null;let lastY=null;let lastCursorTime=performance.now();function getCursorSpeed(x,y){const currentTime=performance.now();const elapsedTime=currentTime-lastCursorTime;if(lastX===null||lastY===null||elapsedTime===0){lastX=x;lastY=y;lastCursorTime=currentTime;return null}const deltaX=x-lastX;const deltaY=y-lastY;const distance=Math.sqrt(deltaX*deltaX+deltaY*deltaY);const speed=distance/elapsedTime;lastX=x;lastY=y;lastCursorTime=currentTime;return speed}const fn=_ref=>{let{x:x,y:y,placement:placement,elements:elements,onClose:onClose,nodeId:nodeId,tree:tree}=_ref;return function onMouseMove(event){function close(){clearTimeout(timeoutId2);onClose()}clearTimeout(timeoutId2);if(!elements.domReference||!elements.floating||placement==null||x==null||y==null){return}const{clientX:clientX,clientY:clientY}=event;const clientPoint=[clientX,clientY];const target=getTarget(event);const isLeave=event.type==="mouseleave";const isOverFloatingEl=contains(elements.floating,target);const isOverReferenceEl=contains(elements.domReference,target);const refRect=elements.domReference.getBoundingClientRect();const rect=elements.floating.getBoundingClientRect();const side=placement.split("-")[0];const cursorLeaveFromRight=x>rect.right-rect.width/2;const cursorLeaveFromBottom=y>rect.bottom-rect.height/2;const isOverReferenceRect=isInside(clientPoint,refRect);const isFloatingWider=rect.width>refRect.width;const isFloatingTaller=rect.height>refRect.height;const left=(isFloatingWider?refRect:rect).left;const right=(isFloatingWider?refRect:rect).right;const top=(isFloatingTaller?refRect:rect).top;const bottom=(isFloatingTaller?refRect:rect).bottom;if(isOverFloatingEl){hasLanded=true;if(!isLeave){return}}if(isOverReferenceEl){hasLanded=false}if(isOverReferenceEl&&!isLeave){hasLanded=true;return}if(isLeave&&isElement(event.relatedTarget)&&contains(elements.floating,event.relatedTarget)){return}if(tree&&getChildren(tree.nodesRef.current,nodeId).some((_ref2=>{let{context:context}=_ref2;return context==null?void 0:context.open}))){return}if(side==="top"&&y>=refRect.bottom-1||side==="bottom"&&y<=refRect.top+1||side==="left"&&x>=refRect.right-1||side==="right"&&x<=refRect.left+1){return close()}let rectPoly=[];switch(side){case"top":rectPoly=[[left,refRect.top+1],[left,rect.bottom-1],[right,rect.bottom-1],[right,refRect.top+1]];break;case"bottom":rectPoly=[[left,rect.top+1],[left,refRect.bottom-1],[right,refRect.bottom-1],[right,rect.top+1]];break;case"left":rectPoly=[[rect.right-1,bottom],[rect.right-1,top],[refRect.left+1,top],[refRect.left+1,bottom]];break;case"right":rectPoly=[[refRect.right-1,bottom],[refRect.right-1,top],[rect.left+1,top],[rect.left+1,bottom]];break}function getPolygon(_ref3){let[x2,y2]=_ref3;switch(side){case"top":{const cursorPointOne=[isFloatingWider?x2+buffer/2:cursorLeaveFromRight?x2+buffer*4:x2-buffer*4,y2+buffer+1];const cursorPointTwo=[isFloatingWider?x2-buffer/2:cursorLeaveFromRight?x2+buffer*4:x2-buffer*4,y2+buffer+1];const commonPoints=[[rect.left,cursorLeaveFromRight?rect.bottom-buffer:isFloatingWider?rect.bottom-buffer:rect.top],[rect.right,cursorLeaveFromRight?isFloatingWider?rect.bottom-buffer:rect.top:rect.bottom-buffer]];return[cursorPointOne,cursorPointTwo,...commonPoints]}case"bottom":{const cursorPointOne=[isFloatingWider?x2+buffer/2:cursorLeaveFromRight?x2+buffer*4:x2-buffer*4,y2-buffer];const cursorPointTwo=[isFloatingWider?x2-buffer/2:cursorLeaveFromRight?x2+buffer*4:x2-buffer*4,y2-buffer];const commonPoints=[[rect.left,cursorLeaveFromRight?rect.top+buffer:isFloatingWider?rect.top+buffer:rect.bottom],[rect.right,cursorLeaveFromRight?isFloatingWider?rect.top+buffer:rect.bottom:rect.top+buffer]];return[cursorPointOne,cursorPointTwo,...commonPoints]}case"left":{const cursorPointOne=[x2+buffer+1,isFloatingTaller?y2+buffer/2:cursorLeaveFromBottom?y2+buffer*4:y2-buffer*4];const cursorPointTwo=[x2+buffer+1,isFloatingTaller?y2-buffer/2:cursorLeaveFromBottom?y2+buffer*4:y2-buffer*4];const commonPoints=[[cursorLeaveFromBottom?rect.right-buffer:isFloatingTaller?rect.right-buffer:rect.left,rect.top],[cursorLeaveFromBottom?isFloatingTaller?rect.right-buffer:rect.left:rect.right-buffer,rect.bottom]];return[...commonPoints,cursorPointOne,cursorPointTwo]}case"right":{const cursorPointOne=[x2-buffer,isFloatingTaller?y2+buffer/2:cursorLeaveFromBottom?y2+buffer*4:y2-buffer*4];const cursorPointTwo=[x2-buffer,isFloatingTaller?y2-buffer/2:cursorLeaveFromBottom?y2+buffer*4:y2-buffer*4];const commonPoints=[[cursorLeaveFromBottom?rect.left+buffer:isFloatingTaller?rect.left+buffer:rect.right,rect.top],[cursorLeaveFromBottom?isFloatingTaller?rect.left+buffer:rect.right:rect.left+buffer,rect.bottom]];return[cursorPointOne,cursorPointTwo,...commonPoints]}}}if(isPointInPolygon([clientX,clientY],rectPoly)){return}if(hasLanded&&!isOverReferenceRect){return close()}if(!isLeave&&requireIntent){const cursorSpeed=getCursorSpeed(event.clientX,event.clientY);const cursorSpeedThreshold=.1;if(cursorSpeed!==null&&cursorSpeed<cursorSpeedThreshold){return close()}}if(!isPointInPolygon([clientX,clientY],getPolygon([x,y]))){close()}else if(!hasLanded&&requireIntent){timeoutId2=window.setTimeout(close,40)}}};fn.__options={blockPointerEvents:blockPointerEvents};return fn}const TOOLTIP_BOUNDARY_PADDING=8;const Tooltip=forwardRef(((props,ref)=>{const{aria:aria={},className:className,children:children,useClickToOpen:useClickToOpen=false,data:data={},delay:delay=0,height:height,htmlOptions:htmlOptions={},icon:icon=null,interaction:interaction=false,maxHeight:maxHeight,maxWidth:maxWidth,minHeight:minHeight,minWidth:minWidth,placement:preferredPlacement="top",position:position="absolute",text:text,showTooltip:showTooltip=true,width:width,zIndex:zIndex,forceOpenTooltip:forceOpenTooltip=false,...rest}=props;const dataProps=buildDataProps(data);const ariaProps=buildAriaProps(aria);const htmlProps=buildHtmlProps(htmlOptions);const css=classnames(globalProps({...rest}),className);const[open,setOpen]=useState(false);const arrowRef=useRef(null);const{context:context,middlewareData:{arrow:{x:arrowX,y:arrowY}={}},placement:placement,refs:refs,strategy:strategy,x:x,y:y}=useFloating({strategy:position,whileElementsMounted:autoUpdate,middleware:[offset(10),flip({fallbackPlacements:["top","right","bottom","left"],fallbackStrategy:"initialPlacement",flipAlignment:false,padding:TOOLTIP_BOUNDARY_PADDING}),shift({padding:TOOLTIP_BOUNDARY_PADDING}),arrow({element:arrowRef,padding:TOOLTIP_BOUNDARY_PADDING})],open:open,onOpenChange(open2){if(!showTooltip){return}else{setOpen(open2)}},placement:preferredPlacement});const hover=useHover(context,{delay:delay,handleClose:interaction?safePolygon({blockPointerEvents:false}):null,enabled:!useClickToOpen});const click=useClick(context,{enabled:useClickToOpen});const{getFloatingProps:getFloatingProps,getReferenceProps:getReferenceProps}=useInteractions([hover,click]);const staticSide={bottom:"top",left:"right",right:"left",top:"bottom"}[placement.split("-")[0]];const arrowPlacementStyle=staticSide?{[staticSide]:"-5px"}:{};const tooltipSizing=()=>Object.assign({},height?{height:height}:{},maxHeight?{maxHeight:maxHeight}:{},maxWidth?{maxWidth:maxWidth}:{},minHeight?{minHeight:minHeight}:{},minWidth?{minWidth:minWidth}:{},width?{width:width}:{});return jsxs(Fragment,{children:[jsx("div",{...getReferenceProps({className:`pb_tooltip_kit ${css}`,ref:element=>{refs.setReference(element);if(ref){if(typeof ref==="function"){ref(element)}else if(typeof ref==="object"){ref.current=element}}},role:"tooltip_trigger",style:{display:"inline-block"},...ariaProps,...dataProps,...htmlProps}),children:children}),(open||forceOpenTooltip)&&jsx(FloatingPortal,{children:jsxs("div",{"data-placement":placement,...getFloatingProps({className:classnames(`tooltip_tooltip ${placement} visible`,{dark:rest.dark}),ref:refs.setFloating,role:"tooltip",style:{...tooltipSizing(),position:strategy,top:y??0,left:x??0,...zIndex?{zIndex:zIndex}:{}}}),children:[jsxs(Flex,{align:"center",gap:"xs",children:[icon&&jsx("i",{className:`pb_icon_kit`,children:jsx(Icon,{icon:icon})}),text]}),jsx("div",{className:"arrow_bg",ref:arrowRef,style:{position:"absolute",left:arrowX!=null?`${arrowX}px`:"",top:arrowY!=null?`${arrowY}px`:"",...arrowPlacementStyle}})]})})]})}));Tooltip.displayName="Tooltip";const Title=props=>{if(props.variant);const{aria:aria={},children:children,className:className,color:color,data:data={},htmlOptions:htmlOptions={},id:id,size:size=3,displaySize:displaySize=null,bold:bold=true,tag:tag="h3",text:text,variant:variant=null}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const isSizeNumberOrString=typeof size==="number"||typeof size==="string";const buildResponsiveSizeCss=()=>{const classes2=[];if(!isSizeNumberOrString){Object.entries(size).forEach((sizeObj=>{classes2.push(`pb_title_${sizeObj[0]}_${sizeObj[1]}`)}))}return classes2};const buildDisplaySize=()=>{if(displaySize){return[`pb_title_dynamic_${displaySize}`]}return[]};const titleClasses=["pb_title_kit"];if(isSizeNumberOrString){titleClasses.push(`pb_title_${size}`)}if(variant)titleClasses.push(`pb_title_${variant}`);if(color)titleClasses.push(`pb_title_${color}`);if(!bold)titleClasses.push("pb_title_thin");titleClasses.push(...buildDisplaySize());titleClasses.push(...buildResponsiveSizeCss());const classes=classnames(titleClasses.join(" "),globalProps(props),className);const Tag=`${tag}`;return jsx(Tag,{...ariaProps,...dataProps,...htmlProps,...globalEventProps(props),className:classes,id:id,children:text||children})};const DialogContext=React__default.createContext(null);const Detail=props=>{const{aria:aria={},bold:bold=false,children:children,className:className,color:color="light",data:data={},htmlOptions:htmlOptions={},id:id="",tag:tag="div",text:text=""}=props;const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const isBold=bold?"bold":null;const classes=classnames(buildCss("pb_detail_kit",`color`,color),isBold,globalProps(props),className);const Tag=`${tag}`;return jsx(Tag,{...ariaProps,...dataProps,...htmlProps,className:classes,id:id,children:text||children})};export{Body as B,Caption as C,Detail as D,Flex as F,Highlight as H,Icon as I,Tooltip as T,Card as a,Draggable as b,DialogContext as c,Title as d,Image as e,DraggableProvider as f,DraggableContext as g,isValidEmoji as i};
|