@vritti/quantum-ui 0.2.9 → 0.3.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.
- package/dist/Alert.js +8 -31
- package/dist/Alert.js.map +1 -1
- package/dist/AppSelector.js +37 -0
- package/dist/AppSelector.js.map +1 -0
- package/dist/Avatar.js +5 -5
- package/dist/Avatar.js.map +1 -1
- package/dist/Badge.js +2 -28
- package/dist/Badge.js.map +1 -1
- package/dist/Badge2.js +30 -0
- package/dist/Badge2.js.map +1 -0
- package/dist/Breadcrumb.js +125 -0
- package/dist/Breadcrumb.js.map +1 -0
- package/dist/Button.js +8 -4
- package/dist/Button.js.map +1 -1
- package/dist/Button2.js +34 -15
- package/dist/Button2.js.map +1 -1
- package/dist/CardSkeleton.js +17 -0
- package/dist/CardSkeleton.js.map +1 -0
- package/dist/Chart.js +6195 -6401
- package/dist/Chart.js.map +1 -1
- package/dist/Checkbox.js +2 -289
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox2.js +293 -0
- package/dist/Checkbox2.js.map +1 -0
- package/dist/CheckboxGroup.js +74 -0
- package/dist/CheckboxGroup.js.map +1 -0
- package/dist/CloudProviderSelector.js +37 -0
- package/dist/CloudProviderSelector.js.map +1 -0
- package/dist/Collapsible.js +8 -0
- package/dist/Collapsible.js.map +1 -0
- package/dist/Combination.js +10 -2509
- package/dist/Combination.js.map +1 -1
- package/dist/ConfirmContext.js +75 -0
- package/dist/ConfirmContext.js.map +1 -0
- package/dist/CurrencySelector.js +194 -0
- package/dist/CurrencySelector.js.map +1 -0
- package/dist/DangerZoneSkeleton.js +52 -0
- package/dist/DangerZoneSkeleton.js.map +1 -0
- package/dist/DatePicker.js +36 -340
- package/dist/DatePicker.js.map +1 -1
- package/dist/DeploymentSelector.js +37 -0
- package/dist/DeploymentSelector.js.map +1 -0
- package/dist/Dialog.js +159 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/DropdownMenu.js +66 -1423
- package/dist/DropdownMenu.js.map +1 -1
- package/dist/Empty.js +49 -0
- package/dist/Empty.js.map +1 -0
- package/dist/ErrorBoundary.js +255 -0
- package/dist/ErrorBoundary.js.map +1 -0
- package/dist/FeatureSelector.js +37 -0
- package/dist/FeatureSelector.js.map +1 -0
- package/dist/FilePreview.js +194 -0
- package/dist/FilePreview.js.map +1 -0
- package/dist/Form.js +1938 -19
- package/dist/Form.js.map +1 -1
- package/dist/HierarchyGraph.js +10729 -0
- package/dist/HierarchyGraph.js.map +1 -0
- package/dist/IndustrySelector.js +37 -0
- package/dist/IndustrySelector.js.map +1 -0
- package/dist/Input.js +22 -0
- package/dist/Input.js.map +1 -0
- package/dist/Label.js +1 -21
- package/dist/Label.js.map +1 -1
- package/dist/LocaleSelector.js +111 -0
- package/dist/LocaleSelector.js.map +1 -0
- package/dist/MicrofrontendSelector.js +19 -0
- package/dist/MicrofrontendSelector.js.map +1 -0
- package/dist/OTPField.js +28 -26
- package/dist/OTPField.js.map +1 -1
- package/dist/PageHeaderSkeleton.js +35 -0
- package/dist/PageHeaderSkeleton.js.map +1 -0
- package/dist/PasswordField.js +1 -49
- package/dist/PasswordField.js.map +1 -1
- package/dist/PhoneField.js +11 -16
- package/dist/PhoneField.js.map +1 -1
- package/dist/PlanSelector.js +37 -0
- package/dist/PlanSelector.js.map +1 -0
- package/dist/Progress.js +4 -3
- package/dist/Progress.js.map +1 -1
- package/dist/RadioGroup.js +392 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RegionSelector.js +37 -0
- package/dist/RegionSelector.js.map +1 -0
- package/dist/Select.js +780 -0
- package/dist/Select.js.map +1 -0
- package/dist/SelectFilter.js +387 -0
- package/dist/SelectFilter.js.map +1 -0
- package/dist/Sidebar.js +616 -0
- package/dist/Sidebar.js.map +1 -0
- package/dist/SingleSelect.js +429 -0
- package/dist/SingleSelect.js.map +1 -0
- package/dist/Sonner.js +6 -1135
- package/dist/Sonner.js.map +1 -1
- package/dist/Sortable.js +4517 -0
- package/dist/Sortable.js.map +1 -0
- package/dist/StepProgressIndicator.js +42 -0
- package/dist/StepProgressIndicator.js.map +1 -0
- package/dist/Switch.js +15 -15
- package/dist/Switch.js.map +1 -1
- package/dist/TabsSkeleton.js +188 -0
- package/dist/TabsSkeleton.js.map +1 -0
- package/dist/TextArea.js +16 -19
- package/dist/TextArea.js.map +1 -1
- package/dist/TextField.js +5 -20
- package/dist/TextField.js.map +1 -1
- package/dist/ThemeContext.js +2 -8
- package/dist/ThemeContext.js.map +1 -1
- package/dist/TimezoneSelector.js +144 -0
- package/dist/TimezoneSelector.js.map +1 -0
- package/dist/Toggle.js +2 -32
- package/dist/Toggle.js.map +1 -1
- package/dist/UploadFile.js +232 -0
- package/dist/UploadFile.js.map +1 -0
- package/dist/ValueFilter.js +123 -0
- package/dist/ValueFilter.js.map +1 -0
- package/dist/ViewTabs.js +218 -0
- package/dist/ViewTabs.js.map +1 -0
- package/dist/_commonjsHelpers.js +3 -1
- package/dist/_commonjsHelpers.js.map +1 -1
- package/dist/assets/quantum-ui.css +827 -57
- package/dist/axios.js +1239 -892
- package/dist/axios.js.map +1 -1
- package/dist/{chevron-down.js → chevron-left.js} +4 -4
- package/dist/chevron-left.js.map +1 -0
- package/dist/circle-alert.js +19 -0
- package/dist/circle-alert.js.map +1 -0
- package/dist/circle-check.js +18 -0
- package/dist/circle-check.js.map +1 -0
- package/dist/collapsible2.js +154 -0
- package/dist/collapsible2.js.map +1 -0
- package/dist/components/Badge.js +2 -1
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Breadcrumb.js +2 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Card.js +1 -0
- package/dist/components/Card.js.map +1 -1
- package/dist/components/CheckboxGroup.js +2 -0
- package/dist/components/CheckboxGroup.js.map +1 -0
- package/dist/components/Collapsible.js +2 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/DangerZone.js +2 -0
- package/dist/components/DangerZone.js.map +1 -0
- package/dist/components/DataTable.js +2 -0
- package/dist/components/DataTable.js.map +1 -0
- package/dist/components/Dialog.js +2 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu.js +1 -1
- package/dist/components/Empty.js +2 -0
- package/dist/components/Empty.js.map +1 -0
- package/dist/components/ErrorBoundary.js +2 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/FilePreview.js +2 -0
- package/dist/components/FilePreview.js.map +1 -0
- package/dist/components/HierarchyGraph.js +2 -0
- package/dist/components/HierarchyGraph.js.map +1 -0
- package/dist/components/PageHeader.js +2 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/RadioGroup.js +2 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/RichTextEditor.js +4 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Select.js +29 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Sidebar.js +2 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/components/Sortable.js +2 -0
- package/dist/components/Sortable.js.map +1 -0
- package/dist/components/StepProgressIndicator.js +2 -0
- package/dist/components/StepProgressIndicator.js.map +1 -0
- package/dist/components/Tabs.js +2 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/UploadFile.js +2 -0
- package/dist/components/UploadFile.js.map +1 -0
- package/dist/components/ValueFilter.js +2 -0
- package/dist/components/ValueFilter.js.map +1 -0
- package/dist/components/ViewTabs.js +2 -0
- package/dist/components/ViewTabs.js.map +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/index.js.map +1 -1
- package/dist/dropdown-menu.js +1209 -0
- package/dist/dropdown-menu.js.map +1 -0
- package/dist/ellipsis.js +19 -0
- package/dist/ellipsis.js.map +1 -0
- package/dist/eye.js +52 -0
- package/dist/eye.js.map +1 -0
- package/dist/field.js +1 -1
- package/dist/file-text.js +27 -0
- package/dist/file-text.js.map +1 -0
- package/dist/grip-vertical.js +22 -0
- package/dist/grip-vertical.js.map +1 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/image-component.js +614 -0
- package/dist/image-component.js.map +1 -0
- package/dist/index.js +49 -9
- package/dist/index.js.map +1 -1
- package/dist/index10.js +175 -94
- package/dist/index10.js.map +1 -1
- package/dist/index11.js +202 -67
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +17 -38
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +204 -188
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +124 -192
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +79 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.js +16 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.js +1137 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.js +41 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.js +314 -0
- package/dist/index19.js.map +1 -0
- package/dist/index2.js +54033 -55
- package/dist/index2.js.map +1 -1
- package/dist/index20.js +488 -0
- package/dist/index20.js.map +1 -0
- package/dist/index21.js +2540 -0
- package/dist/index21.js.map +1 -0
- package/dist/index22.js +36 -0
- package/dist/index22.js.map +1 -0
- package/dist/index23.js +13 -0
- package/dist/index23.js.map +1 -0
- package/dist/index24.js +8 -0
- package/dist/index24.js.map +1 -0
- package/dist/index25.js +35 -0
- package/dist/index25.js.map +1 -0
- package/dist/index26.js +65 -0
- package/dist/index26.js.map +1 -0
- package/dist/index27.js +16 -0
- package/dist/index27.js.map +1 -0
- package/dist/index28.js +41 -0
- package/dist/index28.js.map +1 -0
- package/dist/index29.js +84 -0
- package/dist/index29.js.map +1 -0
- package/dist/index3.js +42 -10
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +199 -0
- package/dist/index30.js.map +1 -0
- package/dist/index4.js +290 -118
- package/dist/index4.js.map +1 -1
- package/dist/index5.js +96 -31
- package/dist/index5.js.map +1 -1
- package/dist/index6.js +36 -4
- package/dist/index6.js.map +1 -1
- package/dist/index7.js +1157 -11
- package/dist/index7.js.map +1 -1
- package/dist/index8.js +22 -42
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +25 -35
- package/dist/index9.js.map +1 -1
- package/dist/lib/components/Alert/Alert.d.ts +2 -1
- package/dist/lib/components/Alert/Alert.d.ts.map +1 -1
- package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts +17 -0
- package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/lib/components/Breadcrumb/index.d.ts +4 -0
- package/dist/lib/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/lib/components/Button/Button.d.ts +3 -1
- package/dist/lib/components/Button/Button.d.ts.map +1 -1
- package/dist/lib/components/Card/CardSkeleton.d.ts +9 -0
- package/dist/lib/components/Card/CardSkeleton.d.ts.map +1 -0
- package/dist/lib/components/Card/index.d.ts +1 -0
- package/dist/lib/components/Card/index.d.ts.map +1 -1
- package/dist/lib/components/Chart/Chart.d.ts +1 -1
- package/dist/lib/components/Chart/Chart.d.ts.map +1 -1
- package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts +24 -0
- package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/lib/components/CheckboxGroup/index.d.ts +3 -0
- package/dist/lib/components/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/lib/components/Collapsible/Collapsible.d.ts +5 -0
- package/dist/lib/components/Collapsible/Collapsible.d.ts.map +1 -0
- package/dist/lib/components/Collapsible/index.d.ts +2 -0
- package/dist/lib/components/Collapsible/index.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/DangerZone.d.ts +13 -0
- package/dist/lib/components/DangerZone/DangerZone.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/DangerZoneSkeleton.d.ts +9 -0
- package/dist/lib/components/DangerZone/DangerZoneSkeleton.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/index.d.ts +4 -0
- package/dist/lib/components/DangerZone/index.d.ts.map +1 -0
- package/dist/lib/components/DataTable/DataTable.d.ts +6 -0
- package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableColumnHeader.d.ts +12 -0
- package/dist/lib/components/DataTable/components/DataTableColumnHeader.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableEmpty.d.ts +13 -0
- package/dist/lib/components/DataTable/components/DataTableEmpty.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableFilters.d.ts +11 -0
- package/dist/lib/components/DataTable/components/DataTableFilters.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableImportDialog.d.ts +16 -0
- package/dist/lib/components/DataTable/components/DataTableImportDialog.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTablePagination.d.ts +12 -0
- package/dist/lib/components/DataTable/components/DataTablePagination.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableRowDensity.d.ts +11 -0
- package/dist/lib/components/DataTable/components/DataTableRowDensity.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableSearch.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableSearch.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableViewOptions.d.ts +11 -0
- package/dist/lib/components/DataTable/components/DataTableViewOptions.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableViewTabs.d.ts +7 -0
- package/dist/lib/components/DataTable/components/DataTableViewTabs.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableViewsMenu.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableViewsMenu.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/FilterWrapper.d.ts +21 -0
- package/dist/lib/components/DataTable/components/FilterWrapper.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/RowActions.d.ts +20 -0
- package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -0
- package/dist/lib/components/DataTable/hooks/useAutoUpsert.d.ts +3 -0
- package/dist/lib/components/DataTable/hooks/useAutoUpsert.d.ts.map +1 -0
- package/dist/lib/components/DataTable/hooks/useDataTable.d.ts +25 -0
- package/dist/lib/components/DataTable/hooks/useDataTable.d.ts.map +1 -0
- package/dist/lib/components/DataTable/index.d.ts +18 -0
- package/dist/lib/components/DataTable/index.d.ts.map +1 -0
- package/dist/lib/components/DataTable/store/store.d.ts +28 -0
- package/dist/lib/components/DataTable/store/store.d.ts.map +1 -0
- package/dist/lib/components/DataTable/store/useTableSlice.d.ts +18 -0
- package/dist/lib/components/DataTable/store/useTableSlice.d.ts.map +1 -0
- package/dist/lib/components/DataTable/types.d.ts +66 -0
- package/dist/lib/components/DataTable/types.d.ts.map +1 -0
- package/dist/lib/components/DataTable/utils.d.ts +10 -0
- package/dist/lib/components/DataTable/utils.d.ts.map +1 -0
- package/dist/lib/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/lib/components/Dialog/Dialog.d.ts +31 -0
- package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/lib/components/Dialog/index.d.ts +3 -0
- package/dist/lib/components/Dialog/index.d.ts.map +1 -0
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/lib/components/DropdownMenu/types.d.ts +10 -1
- package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -1
- package/dist/lib/components/Editor/context/editor-config-context.d.ts +9 -0
- package/dist/lib/components/Editor/context/editor-config-context.d.ts.map +1 -0
- package/dist/lib/components/Editor/context/toolbar-context.d.ts +18 -0
- package/dist/lib/components/Editor/context/toolbar-context.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-debounce.d.ts +2 -0
- package/dist/lib/components/Editor/editor-hooks/use-debounce.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-modal.d.ts +6 -0
- package/dist/lib/components/Editor/editor-hooks/use-modal.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-report.d.ts +2 -0
- package/dist/lib/components/Editor/editor-hooks/use-report.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-update-toolbar.d.ts +3 -0
- package/dist/lib/components/Editor/editor-hooks/use-update-toolbar.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/button-group.d.ts +12 -0
- package/dist/lib/components/Editor/editor-ui/button-group.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/button.d.ts +11 -0
- package/dist/lib/components/Editor/editor-ui/button.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/code-button.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/code-button.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/color-picker.d.ts +92 -0
- package/dist/lib/components/Editor/editor-ui/color-picker.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/command.d.ts +19 -0
- package/dist/lib/components/Editor/editor-ui/command.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/content-editable.d.ts +9 -0
- package/dist/lib/components/Editor/editor-ui/content-editable.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/dialog.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/dialog.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/image-component.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/image-component.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts +18 -0
- package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/input.d.ts +4 -0
- package/dist/lib/components/Editor/editor-ui/input.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/label.d.ts +5 -0
- package/dist/lib/components/Editor/editor-ui/label.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/popover.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/popover.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts +6 -0
- package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/select.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/select.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/separator.d.ts +5 -0
- package/dist/lib/components/Editor/editor-ui/separator.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/tabs.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/tabs.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/toggle.d.ts +10 -0
- package/dist/lib/components/Editor/editor-ui/toggle.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/tooltip.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/tooltip.d.ts.map +1 -0
- package/dist/lib/components/Editor/index.d.ts +4 -0
- package/dist/lib/components/Editor/index.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts +19 -0
- package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts +22 -0
- package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts +23 -0
- package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/emoji-node.d.ts +18 -0
- package/dist/lib/components/Editor/nodes/emoji-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/image-node.d.ts +49 -0
- package/dist/lib/components/Editor/nodes/image-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/keyword-node.d.ts +15 -0
- package/dist/lib/components/Editor/nodes/keyword-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/layout-container-node.d.ts +23 -0
- package/dist/lib/components/Editor/nodes/layout-container-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/layout-item-node.d.ts +15 -0
- package/dist/lib/components/Editor/nodes/layout-item-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/mention-node.d.ts +21 -0
- package/dist/lib/components/Editor/nodes/mention-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/nodes.d.ts +3 -0
- package/dist/lib/components/Editor/nodes/nodes.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes.d.ts +2 -0
- package/dist/lib/components/Editor/nodes.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/actions-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/actions/actions-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/clear-editor-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/clear-editor-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/edit-mode-toggle-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/edit-mode-toggle-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/import-export-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/import-export-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/markdown-toggle-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/actions/markdown-toggle-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/share-content-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/share-content-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/speech-to-text-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/actions/speech-to-text-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/tree-view-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/actions/tree-view-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/auto-link-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/auto-link-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/autocomplete-plugin.d.ts +11 -0
- package/dist/lib/components/Editor/plugins/autocomplete-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/code-action-menu-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/code-action-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/code-highlight-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/code-highlight-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts +9 -0
- package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/context-menu-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/context-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/drag-drop-paste-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/drag-drop-paste-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts +18 -0
- package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/emoji-picker-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/emoji-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/images-plugin.d.ts +25 -0
- package/dist/lib/components/Editor/plugins/images-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/layout-plugin.d.ts +13 -0
- package/dist/lib/components/Editor/plugins/layout-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/link-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/link-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/bulleted-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/bulleted-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/check-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/check-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/code-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/code-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/columns-layout-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/columns-layout-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-menu-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts +17 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/divider-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/divider-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/heading-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/heading-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/image-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/image-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/numbered-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/numbered-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/paragraph-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/paragraph-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/quote-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/quote-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/plugins.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/plugins.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/table-plugin.d.ts +34 -0
- package/dist/lib/components/Editor/plugins/table-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/block-format-data.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/block-format-data.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-bulleted-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-bulleted-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-check-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-check-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-code-block.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-code-block.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-heading.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-heading.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-numbered-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-numbered-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-paragraph.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-paragraph.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-quote.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-quote.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-columns-layout.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-columns-layout.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-embeds.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-embeds.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-horizontal-rule.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-horizontal-rule.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-image.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-image.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-table.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-table.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/code-language-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/code-language-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-background-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-background-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-color-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-color-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-family-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-family-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-format-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-size-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-size-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/history-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/history-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/horizontal-rule-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/horizontal-rule-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/image-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/image-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/subsuper-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/subsuper-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/table-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/table-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins.d.ts +2 -0
- package/dist/lib/components/Editor/plugins.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/can-use-dom.d.ts +2 -0
- package/dist/lib/components/Editor/shared/can-use-dom.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/caret-from-point.d.ts +5 -0
- package/dist/lib/components/Editor/shared/caret-from-point.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/environment.d.ts +18 -0
- package/dist/lib/components/Editor/shared/environment.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/invariant.d.ts +2 -0
- package/dist/lib/components/Editor/shared/invariant.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/normalize-class-names.d.ts +2 -0
- package/dist/lib/components/Editor/shared/normalize-class-names.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/react-patches.d.ts +2 -0
- package/dist/lib/components/Editor/shared/react-patches.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/react-test-utils.d.ts +3 -0
- package/dist/lib/components/Editor/shared/react-test-utils.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts +6 -0
- package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/use-layout-effect.d.ts +4 -0
- package/dist/lib/components/Editor/shared/use-layout-effect.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/warn-only-once.d.ts +2 -0
- package/dist/lib/components/Editor/shared/warn-only-once.d.ts.map +1 -0
- package/dist/lib/components/Editor/themes/editor-theme.d.ts +3 -0
- package/dist/lib/components/Editor/themes/editor-theme.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/index.d.ts +16 -0
- package/dist/lib/components/Editor/transformers/index.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-emoji-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-emoji-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-hr-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-hr-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-image-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-image-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-tweet-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-tweet-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/types.d.ts +23 -0
- package/dist/lib/components/Editor/types.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/can-use-dom.d.ts +2 -0
- package/dist/lib/components/Editor/utils/can-use-dom.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/collapsible.d.ts +3 -0
- package/dist/lib/components/Editor/utils/collapsible.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/doc-serialization.d.ts +4 -0
- package/dist/lib/components/Editor/utils/doc-serialization.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/emoji-list.d.ts +21 -0
- package/dist/lib/components/Editor/utils/emoji-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts +2 -0
- package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/get-selected-node.d.ts +3 -0
- package/dist/lib/components/Editor/utils/get-selected-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/guard.d.ts +2 -0
- package/dist/lib/components/Editor/utils/guard.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts +2 -0
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts +2 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts +2 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/swipe.d.ts +5 -0
- package/dist/lib/components/Editor/utils/swipe.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/url.d.ts +3 -0
- package/dist/lib/components/Editor/utils/url.d.ts.map +1 -0
- package/dist/lib/components/Empty/Empty.d.ts +12 -0
- package/dist/lib/components/Empty/Empty.d.ts.map +1 -0
- package/dist/lib/components/Empty/index.d.ts +3 -0
- package/dist/lib/components/Empty/index.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/ErrorBoundary.d.ts +7 -0
- package/dist/lib/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/ErrorPage.d.ts +38 -0
- package/dist/lib/components/ErrorBoundary/ErrorPage.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/index.d.ts +3 -0
- package/dist/lib/components/ErrorBoundary/index.d.ts.map +1 -0
- package/dist/lib/components/FilePreview/FilePreview.d.ts +8 -0
- package/dist/lib/components/FilePreview/FilePreview.d.ts.map +1 -0
- package/dist/lib/components/FilePreview/index.d.ts +2 -0
- package/dist/lib/components/FilePreview/index.d.ts.map +1 -0
- package/dist/lib/components/Form/Form.d.ts +6 -3
- package/dist/lib/components/Form/Form.d.ts.map +1 -1
- package/dist/lib/components/HierarchyGraph/HierarchyGraph.d.ts +24 -0
- package/dist/lib/components/HierarchyGraph/HierarchyGraph.d.ts.map +1 -0
- package/dist/lib/components/HierarchyGraph/index.d.ts +5 -0
- package/dist/lib/components/HierarchyGraph/index.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/PageHeader.d.ts +8 -0
- package/dist/lib/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/PageHeaderSkeleton.d.ts +10 -0
- package/dist/lib/components/PageHeader/PageHeaderSkeleton.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/index.d.ts +3 -0
- package/dist/lib/components/PageHeader/index.d.ts.map +1 -0
- package/dist/lib/components/PhoneField/PhoneField.d.ts +1 -0
- package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
- package/dist/lib/components/RadioGroup/RadioGroup.d.ts +23 -0
- package/dist/lib/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/lib/components/RadioGroup/index.d.ts +3 -0
- package/dist/lib/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/lib/components/Select/Select.d.ts +21 -0
- package/dist/lib/components/Select/Select.d.ts.map +1 -0
- package/dist/lib/components/Select/SelectFilter.d.ts +20 -0
- package/dist/lib/components/Select/SelectFilter.d.ts.map +1 -0
- package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts +27 -0
- package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -0
- package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts +28 -0
- package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts.map +1 -0
- package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts +41 -0
- package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts.map +1 -0
- package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts +28 -0
- package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts.map +1 -0
- package/dist/lib/components/Select/hooks/useMultiSelect.d.ts +33 -0
- package/dist/lib/components/Select/hooks/useMultiSelect.d.ts.map +1 -0
- package/dist/lib/components/Select/hooks/useSelect.d.ts +25 -0
- package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -0
- package/dist/lib/components/Select/hooks/useSingleSelect.d.ts +31 -0
- package/dist/lib/components/Select/hooks/useSingleSelect.d.ts.map +1 -0
- package/dist/lib/components/Select/index.d.ts +40 -0
- package/dist/lib/components/Select/index.d.ts.map +1 -0
- package/dist/lib/components/Select/types.d.ts +38 -0
- package/dist/lib/components/Select/types.d.ts.map +1 -0
- package/dist/lib/components/Sidebar/Sidebar.d.ts +24 -0
- package/dist/lib/components/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/lib/components/Sidebar/index.d.ts +2 -0
- package/dist/lib/components/Sidebar/index.d.ts.map +1 -0
- package/dist/lib/components/Sortable/Sortable.d.ts +39 -0
- package/dist/lib/components/Sortable/Sortable.d.ts.map +1 -0
- package/dist/lib/components/Sortable/index.d.ts +3 -0
- package/dist/lib/components/Sortable/index.d.ts.map +1 -0
- package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts +12 -0
- package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts.map +1 -0
- package/dist/lib/components/StepProgressIndicator/index.d.ts +3 -0
- package/dist/lib/components/StepProgressIndicator/index.d.ts.map +1 -0
- package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
- package/dist/lib/components/Tabs/Tabs.d.ts +27 -0
- package/dist/lib/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/lib/components/Tabs/TabsSkeleton.d.ts +11 -0
- package/dist/lib/components/Tabs/TabsSkeleton.d.ts.map +1 -0
- package/dist/lib/components/Tabs/index.d.ts +3 -0
- package/dist/lib/components/Tabs/index.d.ts.map +1 -0
- package/dist/lib/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
- package/dist/lib/components/UploadFile/UploadFile.d.ts +26 -0
- package/dist/lib/components/UploadFile/UploadFile.d.ts.map +1 -0
- package/dist/lib/components/UploadFile/index.d.ts +2 -0
- package/dist/lib/components/UploadFile/index.d.ts.map +1 -0
- package/dist/lib/components/ValueFilter/ValueFilter.d.ts +11 -0
- package/dist/lib/components/ValueFilter/ValueFilter.d.ts.map +1 -0
- package/dist/lib/components/ValueFilter/index.d.ts +3 -0
- package/dist/lib/components/ValueFilter/index.d.ts.map +1 -0
- package/dist/lib/components/ViewTabs/ViewTabs.d.ts +23 -0
- package/dist/lib/components/ViewTabs/ViewTabs.d.ts.map +1 -0
- package/dist/lib/components/ViewTabs/index.d.ts +3 -0
- package/dist/lib/components/ViewTabs/index.d.ts.map +1 -0
- package/dist/lib/components/index.d.ts +21 -1
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/config/index.d.ts +6 -0
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/context/ConfirmContext.d.ts +21 -0
- package/dist/lib/context/ConfirmContext.d.ts.map +1 -0
- package/dist/lib/context/ThemeContext.d.ts +1 -1
- package/dist/lib/context/ThemeContext.d.ts.map +1 -1
- package/dist/lib/context/index.d.ts +2 -1
- package/dist/lib/context/index.d.ts.map +1 -1
- package/dist/lib/hooks/index.d.ts +7 -1
- package/dist/lib/hooks/index.d.ts.map +1 -1
- package/dist/lib/hooks/useConfirm.d.ts +4 -0
- package/dist/lib/hooks/useConfirm.d.ts.map +1 -0
- package/dist/lib/hooks/useDialog.d.ts +11 -0
- package/dist/lib/hooks/useDialog.d.ts.map +1 -0
- package/dist/lib/hooks/useIsMobile.d.ts +2 -0
- package/dist/lib/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/lib/hooks/useSSE.d.ts +21 -0
- package/dist/lib/hooks/useSSE.d.ts.map +1 -0
- package/dist/lib/hooks/useSlugParams.d.ts +12 -0
- package/dist/lib/hooks/useSlugParams.d.ts.map +1 -0
- package/dist/lib/hooks/useTimer.d.ts +6 -0
- package/dist/lib/hooks/useTimer.d.ts.map +1 -0
- package/dist/lib/index.d.ts +3 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/selects/app/AppFilter.d.ts +11 -0
- package/dist/lib/selects/app/AppFilter.d.ts.map +1 -0
- package/dist/lib/selects/app/AppSelector.d.ts +4 -0
- package/dist/lib/selects/app/AppSelector.d.ts.map +1 -0
- package/dist/lib/selects/app/index.d.ts +3 -0
- package/dist/lib/selects/app/index.d.ts.map +1 -0
- package/dist/lib/selects/app-code/AppCodeFilter.d.ts +11 -0
- package/dist/lib/selects/app-code/AppCodeFilter.d.ts.map +1 -0
- package/dist/lib/selects/app-code/AppCodeSelector.d.ts +4 -0
- package/dist/lib/selects/app-code/AppCodeSelector.d.ts.map +1 -0
- package/dist/lib/selects/app-code/index.d.ts +3 -0
- package/dist/lib/selects/app-code/index.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/CloudProviderFilter.d.ts +11 -0
- package/dist/lib/selects/cloud-provider/CloudProviderFilter.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/CloudProviderSelector.d.ts +4 -0
- package/dist/lib/selects/cloud-provider/CloudProviderSelector.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/index.d.ts +3 -0
- package/dist/lib/selects/cloud-provider/index.d.ts.map +1 -0
- package/dist/lib/selects/currency/CurrencyFilter.d.ts +11 -0
- package/dist/lib/selects/currency/CurrencyFilter.d.ts.map +1 -0
- package/dist/lib/selects/currency/CurrencySelector.d.ts +4 -0
- package/dist/lib/selects/currency/CurrencySelector.d.ts.map +1 -0
- package/dist/lib/selects/currency/currencies.d.ts +3 -0
- package/dist/lib/selects/currency/currencies.d.ts.map +1 -0
- package/dist/lib/selects/currency/index.d.ts +3 -0
- package/dist/lib/selects/currency/index.d.ts.map +1 -0
- package/dist/lib/selects/deployment/DeploymentFilter.d.ts +11 -0
- package/dist/lib/selects/deployment/DeploymentFilter.d.ts.map +1 -0
- package/dist/lib/selects/deployment/DeploymentSelector.d.ts +4 -0
- package/dist/lib/selects/deployment/DeploymentSelector.d.ts.map +1 -0
- package/dist/lib/selects/deployment/index.d.ts +3 -0
- package/dist/lib/selects/deployment/index.d.ts.map +1 -0
- package/dist/lib/selects/feature/FeatureFilter.d.ts +11 -0
- package/dist/lib/selects/feature/FeatureFilter.d.ts.map +1 -0
- package/dist/lib/selects/feature/FeatureSelector.d.ts +4 -0
- package/dist/lib/selects/feature/FeatureSelector.d.ts.map +1 -0
- package/dist/lib/selects/feature/index.d.ts +3 -0
- package/dist/lib/selects/feature/index.d.ts.map +1 -0
- package/dist/lib/selects/index.d.ts +12 -0
- package/dist/lib/selects/index.d.ts.map +1 -0
- package/dist/lib/selects/industry/IndustryFilter.d.ts +11 -0
- package/dist/lib/selects/industry/IndustryFilter.d.ts.map +1 -0
- package/dist/lib/selects/industry/IndustrySelector.d.ts +4 -0
- package/dist/lib/selects/industry/IndustrySelector.d.ts.map +1 -0
- package/dist/lib/selects/industry/index.d.ts +3 -0
- package/dist/lib/selects/industry/index.d.ts.map +1 -0
- package/dist/lib/selects/locale/LocaleFilter.d.ts +11 -0
- package/dist/lib/selects/locale/LocaleFilter.d.ts.map +1 -0
- package/dist/lib/selects/locale/LocaleSelector.d.ts +4 -0
- package/dist/lib/selects/locale/LocaleSelector.d.ts.map +1 -0
- package/dist/lib/selects/locale/index.d.ts +3 -0
- package/dist/lib/selects/locale/index.d.ts.map +1 -0
- package/dist/lib/selects/locale/locales.d.ts +3 -0
- package/dist/lib/selects/locale/locales.d.ts.map +1 -0
- package/dist/lib/selects/microfrontend/MicrofrontendSelector.d.ts +4 -0
- package/dist/lib/selects/microfrontend/MicrofrontendSelector.d.ts.map +1 -0
- package/dist/lib/selects/microfrontend/index.d.ts +2 -0
- package/dist/lib/selects/microfrontend/index.d.ts.map +1 -0
- package/dist/lib/selects/plan/PlanFilter.d.ts +11 -0
- package/dist/lib/selects/plan/PlanFilter.d.ts.map +1 -0
- package/dist/lib/selects/plan/PlanSelector.d.ts +4 -0
- package/dist/lib/selects/plan/PlanSelector.d.ts.map +1 -0
- package/dist/lib/selects/plan/index.d.ts +3 -0
- package/dist/lib/selects/plan/index.d.ts.map +1 -0
- package/dist/lib/selects/region/RegionFilter.d.ts +11 -0
- package/dist/lib/selects/region/RegionFilter.d.ts.map +1 -0
- package/dist/lib/selects/region/RegionSelector.d.ts +4 -0
- package/dist/lib/selects/region/RegionSelector.d.ts.map +1 -0
- package/dist/lib/selects/region/index.d.ts +3 -0
- package/dist/lib/selects/region/index.d.ts.map +1 -0
- package/dist/lib/selects/timezone/TimezoneFilter.d.ts +11 -0
- package/dist/lib/selects/timezone/TimezoneFilter.d.ts.map +1 -0
- package/dist/lib/selects/timezone/TimezoneSelector.d.ts +4 -0
- package/dist/lib/selects/timezone/TimezoneSelector.d.ts.map +1 -0
- package/dist/lib/selects/timezone/index.d.ts +3 -0
- package/dist/lib/selects/timezone/index.d.ts.map +1 -0
- package/dist/lib/selects/timezone/timezones.d.ts +3 -0
- package/dist/lib/selects/timezone/timezones.d.ts.map +1 -0
- package/dist/lib/services/table-views.service.d.ts +25 -0
- package/dist/lib/services/table-views.service.d.ts.map +1 -0
- package/dist/lib/types/api-response.d.ts +21 -0
- package/dist/lib/types/api-response.d.ts.map +1 -0
- package/dist/lib/types/table-filter.d.ts +41 -0
- package/dist/lib/types/table-filter.d.ts.map +1 -0
- package/dist/lib/utils/axios.d.ts.map +1 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/motion.d.ts +2 -0
- package/dist/lib/utils/motion.d.ts.map +1 -0
- package/dist/lib/utils/slug.d.ts +7 -0
- package/dist/lib/utils/slug.d.ts.map +1 -0
- package/dist/plus.js +18 -0
- package/dist/plus.js.map +1 -0
- package/dist/popover.js +33 -0
- package/dist/popover.js.map +1 -0
- package/dist/proxy.js +11392 -0
- package/dist/proxy.js.map +1 -0
- package/dist/react-error-boundary.js +67 -0
- package/dist/react-error-boundary.js.map +1 -0
- package/dist/select2.js +116 -0
- package/dist/select2.js.map +1 -0
- package/dist/selects/app-code.js +37 -0
- package/dist/selects/app-code.js.map +1 -0
- package/dist/selects/app.js +2 -0
- package/dist/selects/app.js.map +1 -0
- package/dist/selects/cloud-provider.js +2 -0
- package/dist/selects/cloud-provider.js.map +1 -0
- package/dist/selects/currency.js +2 -0
- package/dist/selects/currency.js.map +1 -0
- package/dist/selects/deployment.js +2 -0
- package/dist/selects/deployment.js.map +1 -0
- package/dist/selects/feature.js +2 -0
- package/dist/selects/feature.js.map +1 -0
- package/dist/selects/industry.js +2 -0
- package/dist/selects/industry.js.map +1 -0
- package/dist/selects/locale.js +2 -0
- package/dist/selects/locale.js.map +1 -0
- package/dist/selects/microfrontend.js +2 -0
- package/dist/selects/microfrontend.js.map +1 -0
- package/dist/selects/plan.js +2 -0
- package/dist/selects/plan.js.map +1 -0
- package/dist/selects/region.js +2 -0
- package/dist/selects/region.js.map +1 -0
- package/dist/selects/timezone.js +2 -0
- package/dist/selects/timezone.js.map +1 -0
- package/dist/separator2.js +1 -27
- package/dist/separator2.js.map +1 -1
- package/dist/shadcn/index.d.ts +2 -0
- package/dist/shadcn/index.d.ts.map +1 -1
- package/dist/shadcn/shadcnAlert/alert.d.ts.map +1 -1
- package/dist/shadcn/shadcnAlert/index.d.ts +1 -1
- package/dist/shadcn/shadcnAlert/index.d.ts.map +1 -1
- package/dist/shadcn/shadcnBadge/Badge.d.ts +1 -1
- package/dist/shadcn/shadcnBreadcrumb/breadcrumb.d.ts +18 -0
- package/dist/shadcn/shadcnBreadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/shadcn/shadcnBreadcrumb/index.d.ts +2 -0
- package/dist/shadcn/shadcnBreadcrumb/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnButton/Button.d.ts +2 -2
- package/dist/shadcn/shadcnButton/Button.d.ts.map +1 -1
- package/dist/shadcn/shadcnCalendar/calendar.d.ts +1 -1
- package/dist/shadcn/shadcnCalendar/calendar.d.ts.map +1 -1
- package/dist/shadcn/shadcnChart/Chart.d.ts +2 -2
- package/dist/shadcn/shadcnChart/Chart.d.ts.map +1 -1
- package/dist/shadcn/shadcnCollapsible/collapsible.d.ts +7 -0
- package/dist/shadcn/shadcnCollapsible/collapsible.d.ts.map +1 -0
- package/dist/shadcn/shadcnCollapsible/index.d.ts +2 -0
- package/dist/shadcn/shadcnCollapsible/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnDialog/dialog.d.ts +20 -0
- package/dist/shadcn/shadcnDialog/dialog.d.ts.map +1 -0
- package/dist/shadcn/shadcnDialog/index.d.ts +2 -0
- package/dist/shadcn/shadcnDialog/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts +1 -1
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts.map +1 -1
- package/dist/shadcn/shadcnForm/form.d.ts +1 -1
- package/dist/shadcn/shadcnForm/form.d.ts.map +1 -1
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts +3 -3
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts.map +1 -1
- package/dist/shadcn/shadcnMultiSelect/index.d.ts +3 -0
- package/dist/shadcn/shadcnMultiSelect/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts +61 -0
- package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts.map +1 -0
- package/dist/shadcn/shadcnProgress/Progress.d.ts +1 -1
- package/dist/shadcn/shadcnProgress/Progress.d.ts.map +1 -1
- package/dist/shadcn/shadcnRadioGroup/RadioGroup.d.ts +6 -0
- package/dist/shadcn/shadcnRadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/shadcn/shadcnRadioGroup/index.d.ts +2 -0
- package/dist/shadcn/shadcnRadioGroup/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSheet/sheet.d.ts +1 -1
- package/dist/shadcn/shadcnSheet/sheet.d.ts.map +1 -1
- package/dist/shadcn/shadcnSidebar/index.d.ts +2 -0
- package/dist/shadcn/shadcnSidebar/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSidebar/sidebar.d.ts +86 -0
- package/dist/shadcn/shadcnSidebar/sidebar.d.ts.map +1 -0
- package/dist/shadcn/shadcnSingleSelect/index.d.ts +3 -0
- package/dist/shadcn/shadcnSingleSelect/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSingleSelect/single-select.d.ts +61 -0
- package/dist/shadcn/shadcnSingleSelect/single-select.d.ts.map +1 -0
- package/dist/shadcn/shadcnSonner/sonner.d.ts +1 -1
- package/dist/shadcn/shadcnSonner/sonner.d.ts.map +1 -1
- package/dist/shadcn/shadcnSwitch/Switch.d.ts.map +1 -1
- package/dist/shadcn/shadcnTable/table.d.ts +1 -1
- package/dist/shadcn/shadcnTable/table.d.ts.map +1 -1
- package/dist/shadcn/shadcnTabs/index.d.ts +2 -0
- package/dist/shadcn/shadcnTabs/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTabs/tabs.d.ts +8 -0
- package/dist/shadcn/shadcnTabs/tabs.d.ts.map +1 -0
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts +1 -1
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts.map +1 -1
- package/dist/share-2.js +42 -0
- package/dist/share-2.js.map +1 -0
- package/dist/text-align-justify.js +34 -0
- package/dist/text-align-justify.js.map +1 -0
- package/dist/trash-2.js +55 -0
- package/dist/trash-2.js.map +1 -0
- package/dist/types/api-response.js +2 -0
- package/dist/types/api-response.js.map +1 -0
- package/dist/types/table-filter.js +17 -0
- package/dist/types/table-filter.js.map +1 -0
- package/dist/upload.js +19 -0
- package/dist/upload.js.map +1 -0
- package/dist/useConfirm.js +37 -0
- package/dist/useConfirm.js.map +1 -0
- package/dist/useDataTable.js +26545 -0
- package/dist/useDataTable.js.map +1 -0
- package/dist/useIsMobile.js +19 -0
- package/dist/useIsMobile.js.map +1 -0
- package/dist/useTheme.js.map +1 -1
- package/dist/useTimer.js +112 -0
- package/dist/useTimer.js.map +1 -0
- package/dist/utils/axios.js +1 -1
- package/dist/utils/motion.js +4425 -0
- package/dist/utils/motion.js.map +1 -0
- package/dist/utils/slug.js +15 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils.js +204 -39
- package/dist/utils.js.map +1 -1
- package/dist/value.js +820 -0
- package/dist/value.js.map +1 -0
- package/dist/x.js +18 -0
- package/dist/x.js.map +1 -0
- package/package.json +196 -7
- package/dist/SelectField.js +0 -1351
- package/dist/SelectField.js.map +0 -1
- package/dist/chevron-down.js.map +0 -1
- package/dist/components/SelectField.js +0 -2
- package/dist/components/SelectField.js.map +0 -1
- package/dist/lib/components/SelectField/SelectField.d.ts +0 -24
- package/dist/lib/components/SelectField/SelectField.d.ts.map +0 -1
- package/dist/lib/components/SelectField/index.d.ts +0 -3
- package/dist/lib/components/SelectField/index.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HierarchyGraph.js","sources":["../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/zoom.js","../node_modules/.pnpm/@dagrejs+dagre@3.0.0/node_modules/@dagrejs/dagre/dist/dagre.esm.js","../node_modules/.pnpm/classcat@5.0.5/node_modules/classcat/index.js","../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/sourceEvent.js","../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/pointer.js","../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/noevent.js","../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/nodrag.js","../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/constant.js","../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/event.js","../node_modules/.pnpm/d3-drag@3.0.0/node_modules/d3-drag/src/drag.js","../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/constant.js","../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/event.js","../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/noevent.js","../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/zoom.js","../node_modules/.pnpm/@xyflow+system@0.0.75/node_modules/@xyflow/system/dist/esm/index.js","../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.3/node_modules/zustand/esm/vanilla.mjs","../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.3/node_modules/zustand/esm/traditional.mjs","../node_modules/.pnpm/zustand@4.5.7_@types+react@19.2.14_immer@11.1.4_react@19.2.3/node_modules/zustand/esm/shallow.mjs","../node_modules/.pnpm/@xyflow+react@12.10.1_@types+react@19.2.14_immer@11.1.4_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@xyflow/react/dist/esm/index.js","../lib/components/HierarchyGraph/HierarchyGraph.tsx"],"sourcesContent":["var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var ge=Object.defineProperty;var hn=(e,n,t)=>n in e?ge(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var fn=(e,n)=>{for(var t in n)ge(e,t,{get:n[t],enumerable:!0})};var pe=(e,n,t)=>hn(e,typeof n!=\"symbol\"?n+\"\":n,t);var z={};fn(z,{Graph:()=>p,alg:()=>R,json:()=>ye,version:()=>pn});var bn=Object.defineProperty,Le=(e,n)=>{for(var t in n)bn(e,t,{get:n[t],enumerable:!0})},p=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected=\"directed\"in e?e.directed:!0,this._isMultigraph=\"multigraph\"in e?e.multigraph:!1,this._isCompound=\"compound\"in e?e.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[\"\\0\"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!=\"function\"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,n){return e.forEach(t=>{n!==void 0?this.setNode(t,n):this.setNode(t)}),this}setNode(e,n){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=\"\\0\",this._children[e]={},this._children[\"\\0\"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let n=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(t=>{this.setParent(t)}),delete this._children[e]),Object.keys(this._in[e]).forEach(n),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n===void 0)n=\"\\0\";else{n+=\"\";for(let t=n;t!==void 0;t=this.parent(t))if(t===e)throw new Error(\"Setting \"+n+\" as parent of \"+e+\" would create a cycle\");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}parent(e){if(this._isCompound){let n=this._parent[e];if(n!==\"\\0\")return n}}children(e=\"\\0\"){if(this._isCompound){let n=this._children[e];if(n)return Object.keys(n)}else{if(e===\"\\0\")return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let n=this._preds[e];if(n)return Object.keys(n)}successors(e){let n=this._sucs[e];if(n)return Object.keys(n)}neighbors(e){let n=this.predecessors(e);if(n){let t=new Set(n);for(let r of this.successors(e))t.add(r);return Array.from(t.values())}}isLeaf(e){let n;return this.isDirected()?n=this.successors(e):n=this.neighbors(e),n.length===0}filterNodes(e){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,i])=>{e(o)&&n.setNode(o,i)}),Object.values(this._edgeObjs).forEach(o=>{n.hasNode(o.v)&&n.hasNode(o.w)&&n.setEdge(o,this.edge(o))});let t={},r=o=>{let i=this.parent(o);return!i||n.hasNode(i)?(t[o]=i!=null?i:void 0,i!=null?i:void 0):i in t?t[i]:r(i)};return this._isCompound&&n.nodes().forEach(o=>n.setParent(o,r(o))),n}setDefaultEdgeLabel(e){return typeof e!=\"function\"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,n){return e.reduce((t,r)=>(n!==void 0?this.setEdge(t,r,n):this.setEdge(t,r),r)),this}setEdge(e,n,t,r){let o,i,s,a,d=!1;typeof e==\"object\"&&e!==null&&\"v\"in e?(o=e.v,i=e.w,s=e.name,arguments.length===2&&(a=n,d=!0)):(o=e,i=n,s=r,arguments.length>2&&(a=t,d=!0)),o=\"\"+o,i=\"\"+i,s!==void 0&&(s=\"\"+s);let l=C(this._isDirected,o,i,s);if(l in this._edgeLabels)return d&&(this._edgeLabels[l]=a),this;if(s!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(o),this.setNode(i),this._edgeLabels[l]=d?a:this._defaultEdgeLabelFn(o,i,s);let u=gn(this._isDirected,o,i,s);return o=u.v,i=u.w,Object.freeze(u),this._edgeObjs[l]=u,me(this._preds[i],o),me(this._sucs[o],i),this._in[i][l]=u,this._out[o][l]=u,this._edgeCount++,this}edge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t);return this._edgeLabels[r]}edgeAsObj(e,n,t){let r=arguments.length===1?this.edge(e):this.edge(e,n,t);return typeof r!=\"object\"?{label:r}:r}hasEdge(e,n,t){return(arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t))in this._edgeLabels}removeEdge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t),o=this._edgeObjs[r];if(o){let i=o.v,s=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ee(this._preds[s],i),Ee(this._sucs[i],s),delete this._in[s][r],delete this._out[i][r],this._edgeCount--}return this}inEdges(e,n){return this.isDirected()?this.filterEdges(this._in[e],e,n):this.nodeEdges(e,n)}outEdges(e,n){return this.isDirected()?this.filterEdges(this._out[e],e,n):this.nodeEdges(e,n)}nodeEdges(e,n){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,n)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,n,t){if(!e)return;let r=Object.values(e);return t?r.filter(o=>o.v===n&&o.w===t||o.v===t&&o.w===n):r}};function me(e,n){e[n]?e[n]++:e[n]=1}function Ee(e,n){e[n]!==void 0&&!--e[n]&&delete e[n]}function C(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let s=o;o=i,i=s}return o+\"\u0001\"+i+\"\u0001\"+(r===void 0?\"\\0\":r)}function gn(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let a=o;o=i,i=a}let s={v:o,w:i};return r&&(s.name=r),s}function Y(e,n){return C(e,n.v,n.w,n.name)}var pn=\"4.0.1\",ye={};Le(ye,{read:()=>yn,write:()=>mn});function mn(e){let n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:En(e),edges:Ln(e)},t=e.graph();return t!==void 0&&(n.value=structuredClone(t)),n}function En(e){return e.nodes().map(n=>{let t=e.node(n),r=e.parent(n),o={v:n};return t!==void 0&&(o.value=t),r!==void 0&&(o.parent=r),o})}function Ln(e){return e.edges().map(n=>{let t=e.edge(n),r={v:n.v,w:n.w};return n.name!==void 0&&(r.name=n.name),t!==void 0&&(r.value=t),r})}function yn(e){let n=new p(e.options);return e.value!==void 0&&n.setGraph(e.value),e.nodes.forEach(t=>{n.setNode(t.v,t.value),t.parent&&n.setParent(t.v,t.parent)}),e.edges.forEach(t=>{n.setEdge({v:t.v,w:t.w,name:t.name},t.value)}),n}var R={};Le(R,{CycleException:()=>D,bellmanFord:()=>we,components:()=>Gn,dijkstra:()=>F,dijkstraAll:()=>_n,findCycles:()=>xn,floydWarshall:()=>On,isAcyclic:()=>Cn,postorder:()=>Pn,preorder:()=>Mn,prim:()=>jn,shortestPaths:()=>Sn,tarjan:()=>Ge,topsort:()=>ke});var wn=()=>1;function we(e,n,t,r){return Nn(e,String(n),t||wn,r||function(o){return e.outEdges(o)})}function Nn(e,n,t,r){let o={},i,s=0,a=e.nodes(),d=function(c){let h=t(c);o[c.v].distance+h<o[c.w].distance&&(o[c.w]={distance:o[c.v].distance+h,predecessor:c.v},i=!0)},l=function(){a.forEach(function(c){r(c).forEach(function(h){let f=h.v===c?h.v:h.w,g=f===h.v?h.w:h.v;d({v:f,w:g})})})};a.forEach(function(c){let h=c===n?0:Number.POSITIVE_INFINITY;o[c]={distance:h,predecessor:\"\"}});let u=a.length;for(let c=1;c<u&&(i=!1,s++,l(),!!i);c++);if(s===u-1&&(i=!1,l(),i))throw new Error(\"The graph contains a negative weight cycle\");return o}function Gn(e){let n={},t=[],r;function o(i){i in n||(n[i]=!0,r.push(i),e.successors(i).forEach(o),e.predecessors(i).forEach(o))}return e.nodes().forEach(function(i){r=[],o(i),r.length&&t.push(r)}),t}var Ne=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let n=this._keyIndices[e];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(e,n){let t=this._keyIndices,r=String(e);if(!(r in t)){let o=this._arr,i=o.length;return t[r]=i,o.push({key:r,priority:n}),this._decrease(i),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,n){let t=this._keyIndices[e];if(t===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[t].priority;if(n>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);this._arr[t].priority=n,this._decrease(t)}_heapify(e){let n=this._arr,t=2*e,r=t+1,o=e;t<n.length&&(o=n[t].priority<n[o].priority?t:o,r<n.length&&(o=n[r].priority<n[o].priority?r:o),o!==e&&(this._swap(e,o),this._heapify(o)))}_decrease(e){let n=this._arr,t=n[e].priority,r;for(;e!==0&&(r=e>>1,!(n[r].priority<t));)this._swap(e,r),e=r}_swap(e,n){let t=this._arr,r=this._keyIndices,o=t[e],i=t[n];t[e]=i,t[n]=o,r[i.key]=e,r[o.key]=n}},kn=()=>1;function F(e,n,t,r){let o=function(i){return e.outEdges(i)};return vn(e,String(n),t||kn,r||o)}function vn(e,n,t,r){let o={},i=new Ne,s,a,d=function(l){let u=l.v!==s?l.v:l.w,c=o[u],h=t(l),f=a.distance+h;if(h<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+l+\" Weight: \"+h);f<c.distance&&(c.distance=f,c.predecessor=s,i.decrease(u,f))};for(e.nodes().forEach(function(l){let u=l===n?0:Number.POSITIVE_INFINITY;o[l]={distance:u,predecessor:\"\"},i.add(l,u)});i.size()>0&&(s=i.removeMin(),a=o[s],a.distance!==Number.POSITIVE_INFINITY);)r(s).forEach(d);return o}function _n(e,n,t){return e.nodes().reduce(function(r,o){return r[o]=F(e,o,n,t),r},{})}function Ge(e){let n=0,t=[],r={},o=[];function i(s){let a=r[s]={onStack:!0,lowlink:n,index:n++};if(t.push(s),e.successors(s).forEach(function(d){d in r?r[d].onStack&&(a.lowlink=Math.min(a.lowlink,r[d].index)):(i(d),a.lowlink=Math.min(a.lowlink,r[d].lowlink))}),a.lowlink===a.index){let d=[],l;do l=t.pop(),r[l].onStack=!1,d.push(l);while(s!==l);o.push(d)}}return e.nodes().forEach(function(s){s in r||i(s)}),o}function xn(e){return Ge(e).filter(function(n){return n.length>1||n.length===1&&e.hasEdge(n[0],n[0])})}var Tn=()=>1;function On(e,n,t){return In(e,n||Tn,t||function(r){return e.outEdges(r)})}function In(e,n,t){let r={},o=e.nodes();return o.forEach(function(i){r[i]={},r[i][i]={distance:0,predecessor:\"\"},o.forEach(function(s){i!==s&&(r[i][s]={distance:Number.POSITIVE_INFINITY,predecessor:\"\"})}),t(i).forEach(function(s){let a=s.v===i?s.w:s.v,d=n(s);r[i][a]={distance:d,predecessor:i}})}),o.forEach(function(i){let s=r[i];o.forEach(function(a){let d=r[a];o.forEach(function(l){let u=d[i],c=s[l],h=d[l],f=u.distance+c.distance;f<h.distance&&(h.distance=f,h.predecessor=c.predecessor)})})}),r}var D=class extends Error{constructor(...e){super(...e)}};function ke(e){let n={},t={},r=[];function o(i){if(i in t)throw new D;i in n||(t[i]=!0,n[i]=!0,e.predecessors(i).forEach(o),delete t[i],r.push(i))}if(e.sinks().forEach(o),Object.keys(n).length!==e.nodeCount())throw new D;return r}function Cn(e){try{ke(e)}catch(n){if(n instanceof D)return!1;throw n}return!0}function Rn(e,n,t,r,o){Array.isArray(n)||(n=[n]);let i=(a=>{var d;return(d=e.isDirected()?e.successors(a):e.neighbors(a))!=null?d:[]}),s={};return n.forEach(function(a){if(!e.hasNode(a))throw new Error(\"Graph does not have node: \"+a);o=ve(e,a,t===\"post\",s,i,r,o)}),o}function ve(e,n,t,r,o,i,s){return n in r||(r[n]=!0,t||(s=i(s,n)),o(n).forEach(function(a){s=ve(e,a,t,r,o,i,s)}),t&&(s=i(s,n))),s}function _e(e,n,t){return Rn(e,n,t,function(r,o){return r.push(o),r},[])}function Pn(e,n){return _e(e,n,\"post\")}function Mn(e,n){return _e(e,n,\"pre\")}function jn(e,n){let t=new p,r={},o=new Ne,i;function s(d){let l=d.v===i?d.w:d.v,u=o.priority(l);if(u!==void 0){let c=n(d);c<u&&(r[l]=i,o.decrease(l,c))}}if(e.nodeCount()===0)return t;e.nodes().forEach(function(d){o.add(d,Number.POSITIVE_INFINITY),t.setNode(d)}),o.decrease(e.nodes()[0],0);let a=!1;for(;o.size()>0;){if(i=o.removeMin(),i in r)t.setEdge(i,r[i]);else{if(a)throw new Error(\"Input graph is not connected: \"+e);a=!0}e.nodeEdges(i).forEach(s)}return t}function Sn(e,n,t,r){return Fn(e,n,t,r!=null?r:(o=>{let i=e.outEdges(o);return i!=null?i:[]}))}function Fn(e,n,t,r){if(t===void 0)return F(e,n,t,r);let o=!1,i=e.nodes();for(let s=0;s<i.length;s++){let a=r(i[s]);for(let d=0;d<a.length;d++){let l=a[d],u=l.v===i[s]?l.v:l.w,c=u===l.v?l.w:l.v;t({v:u,w:c})<0&&(o=!0)}if(o)return we(e,n,t,r)}return F(e,n,t,r)}function w(e,n,t,r){let o=r;for(;e.hasNode(o);)o=j(r);return t.dummy=n,e.setNode(o,t),o}function xe(e){let n=new p().setGraph(e.graph());return e.nodes().forEach(t=>n.setNode(t,e.node(t))),e.edges().forEach(t=>{let r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),n}function A(e){let n=new p({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(t=>{e.children(t).length||n.setNode(t,e.node(t))}),e.edges().forEach(t=>{n.setEdge(t,e.edge(t))}),n}function H(e,n){let t=e.x,r=e.y,o=n.x-t,i=n.y-r,s=e.width/2,a=e.height/2;if(!o&&!i)throw new Error(\"Not possible to find intersection inside of the rectangle\");let d,l;return Math.abs(i)*s>Math.abs(o)*a?(i<0&&(a=-a),d=a*o/i,l=a):(o<0&&(s=-s),d=s,l=s*i/o),{x:t+d,y:r+l}}function N(e){let n=k(X(e)+1).map(()=>[]);return e.nodes().forEach(t=>{let r=e.node(t),o=r.rank;o!==void 0&&(n[o]||(n[o]=[]),n[o][r.order]=t)}),n}function Te(e){let n=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),t=L(Math.min,n);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,\"rank\")&&(o.rank-=t)})}function Oe(e){let n=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),t=L(Math.min,n),r=[];e.nodes().forEach(s=>{let a=e.node(s).rank-t;r[a]||(r[a]=[]),r[a].push(s)});let o=0,i=e.graph().nodeRankFactor;Array.from(r).forEach((s,a)=>{s===void 0&&a%i!==0?--o:s!==void 0&&o&&s.forEach(d=>e.node(d).rank+=o)})}function q(e,n,t,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),w(e,\"border\",o,n)}function Dn(e,n=Ie){let t=[];for(let r=0;r<e.length;r+=n){let o=e.slice(r,r+n);t.push(o)}return t}var Ie=65535;function L(e,n){if(n.length>Ie){let t=Dn(n);return e(...t.map(r=>e(...r)))}else return e(...n)}function X(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MIN_VALUE:o});return L(Math.max,t)}function Ce(e,n){let t={lhs:[],rhs:[]};return e.forEach(r=>{n(r)?t.lhs.push(r):t.rhs.push(r)}),t}function P(e,n){let t=Date.now();try{return n()}finally{console.log(e+\" time: \"+(Date.now()-t)+\"ms\")}}function M(e,n){return n()}var An=0;function j(e){let n=++An;return e+(\"\"+n)}function k(e,n,t=1){n==null&&(n=e,e=0);let r=i=>i<n;t<0&&(r=i=>n<i);let o=[];for(let i=e;r(i);i+=t)o.push(i);return o}function T(e,n){let t={};for(let r of n)e[r]!==void 0&&(t[r]=e[r]);return t}function O(e,n){let t;return typeof n==\"string\"?t=r=>r[n]:t=n,Object.entries(e).reduce((r,[o,i])=>(r[o]=t(i,o),r),{})}function Re(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}var _=\"\\0\";var U=\"3.0.0\";var K=class{constructor(){pe(this,\"_sentinel\");let n={};n._next=n._prev=n,this._sentinel=n}dequeue(){let n=this._sentinel,t=n._prev;if(t!==n)return Pe(t),t}enqueue(n){let t=this._sentinel;n._prev&&n._next&&Pe(n),n._next=t._next,t._next._prev=n,t._next=n,n._prev=t}toString(){let n=[],t=this._sentinel,r=t._prev;for(;r!==t;)n.push(JSON.stringify(r,Vn)),r=r._prev;return\"[\"+n.join(\", \")+\"]\"}};function Pe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Vn(e,n){if(e!==\"_next\"&&e!==\"_prev\")return n}var Me=K;var Wn=()=>1;function Q(e,n){if(e.nodeCount()<=1)return[];let t=Yn(e,n||Wn);return Bn(t.graph,t.buckets,t.zeroIdx).flatMap(o=>e.outEdges(o.v,o.w)||[])}function Bn(e,n,t){var a;let r=[],o=n[n.length-1],i=n[0],s;for(;e.nodeCount();){for(;s=i.dequeue();)$(e,n,t,s);for(;s=o.dequeue();)$(e,n,t,s);if(e.nodeCount()){for(let d=n.length-2;d>0;--d)if(s=(a=n[d])==null?void 0:a.dequeue(),s){r=r.concat($(e,n,t,s,!0)||[]);break}}}return r}function $(e,n,t,r,o){let i=[],s=o?i:void 0;return(e.inEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=e.node(a.v);o&&i.push({v:a.v,w:a.w}),l.out-=d,J(n,t,l)}),(e.outEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=a.w,u=e.node(l);u.in-=d,J(n,t,u)}),e.removeNode(r.v),s}function Yn(e,n){let t=new p,r=0,o=0;e.nodes().forEach(a=>{t.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let d=t.edge(a.v,a.w)||0,l=n(a),u=d+l;t.setEdge(a.v,a.w,u);let c=t.node(a.v),h=t.node(a.w);o=Math.max(o,c.out+=l),r=Math.max(r,h.in+=l)});let i=zn(o+r+3).map(()=>new Me),s=r+1;return t.nodes().forEach(a=>{J(i,s,t.node(a))}),{graph:t,buckets:i,zeroIdx:s}}function J(e,n,t){var r,o,i;t.out?t.in?(i=e[t.out-t.in+n])==null||i.enqueue(t):(o=e[e.length-1])==null||o.enqueue(t):(r=e[0])==null||r.enqueue(t)}function zn(e){let n=[];for(let t=0;t<e;t++)n.push(t);return n}function je(e){(e.graph().acyclicer===\"greedy\"?Q(e,t(e)):Hn(e)).forEach(r=>{let o=e.edge(r);e.removeEdge(r),o.forwardName=r.name,o.reversed=!0,e.setEdge(r.w,r.v,o,j(\"rev\"))});function t(r){return o=>r.edge(o).weight}}function Hn(e){let n=[],t={},r={};function o(i){Object.hasOwn(r,i)||(r[i]=!0,t[i]=!0,e.outEdges(i).forEach(s=>{Object.hasOwn(t,s.w)?n.push(s):o(s.w)}),delete t[i])}return e.nodes().forEach(o),n}function Se(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.reversed){e.removeEdge(n);let r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}function Fe(e){e.graph().dummyChains=[],e.edges().forEach(n=>Xn(e,n))}function Xn(e,n){let t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,s=n.name,a=e.edge(n),d=a.labelRank;if(i===r+1)return;e.removeEdge(n);let l,u,c;for(c=0,++r;r<i;++c,++r)a.points=[],u={width:0,height:0,edgeLabel:a,edgeObj:n,rank:r},l=w(e,\"edge\",u,\"_d\"),r===d&&(u.width=a.width,u.height=a.height,u.dummy=\"edge-label\",u.labelpos=a.labelpos),e.setEdge(t,l,{weight:a.weight},s),c===0&&e.graph().dummyChains.push(l),t=l;e.setEdge(t,o,{weight:a.weight},s)}function De(e){e.graph().dummyChains.forEach(n=>{let t=e.node(n),r=t.edgeLabel,o;for(e.setEdge(t.edgeObj,r);t.dummy;)o=e.successors(n)[0],e.removeNode(n),r.points.push({x:t.x,y:t.y}),t.dummy===\"edge-label\"&&(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height),n=o,t=e.node(n)})}function S(e){let n={};function t(r){let o=e.node(r);if(Object.hasOwn(n,r))return o.rank;n[r]=!0;let i=e.outEdges(r),s=i?i.map(d=>d==null?Number.POSITIVE_INFINITY:t(d.w)-e.edge(d).minlen):[],a=L(Math.min,s);return a===Number.POSITIVE_INFINITY&&(a=0),o.rank=a}e.sources().forEach(t)}function v(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}var V=Kn;function Kn(e){let n=new p({directed:!1}),t=e.nodes();if(t.length===0)throw new Error(\"Graph must have at least one node\");let r=t[0],o=e.nodeCount();n.setNode(r,{});let i,s;for(;$n(n,e)<o&&(i=Jn(n,e),!!i);)s=n.hasNode(i.v)?v(e,i):-v(e,i),Qn(n,e,s);return n}function $n(e,n){function t(r){let o=n.nodeEdges(r);o&&o.forEach(i=>{let s=i.v,a=r===s?i.w:s;!e.hasNode(a)&&!v(n,i)&&(e.setNode(a,{}),e.setEdge(r,a,{}),t(a))})}return e.nodes().forEach(t),e.nodeCount()}function Jn(e,n){return n.edges().reduce((r,o)=>{let i=Number.POSITIVE_INFINITY;return e.hasNode(o.v)!==e.hasNode(o.w)&&(i=v(n,o)),i<r[0]?[i,o]:r},[Number.POSITIVE_INFINITY,null])[1]}function Qn(e,n,t){e.nodes().forEach(r=>n.node(r).rank+=t)}var{preorder:Zn,postorder:et}=R,Ve=x;x.initLowLimValues=ee;x.initCutValues=Z;x.calcCutValue=We;x.leaveEdge=Ye;x.enterEdge=ze;x.exchangeEdges=He;function x(e){e=xe(e),S(e);let n=V(e);ee(n),Z(n,e);let t,r;for(;t=Ye(n);)r=ze(n,e,t),He(n,e,t,r)}function Z(e,n){let t=et(e,e.nodes());t=t.slice(0,t.length-1),t.forEach(r=>nt(e,n,r))}function nt(e,n,t){let o=e.node(t).parent,i=e.edge(t,o);i.cutvalue=We(e,n,t)}function We(e,n,t){let o=e.node(t).parent,i=!0,s=n.edge(t,o),a=0;s||(i=!1,s=n.edge(o,t)),a=s.weight;let d=n.nodeEdges(t);return d&&d.forEach(l=>{let u=l.v===t,c=u?l.w:l.v;if(c!==o){let h=u===i,f=n.edge(l).weight;if(a+=h?f:-f,rt(e,t,c)){let b=e.edge(t,c).cutvalue;a+=h?-b:b}}}),a}function ee(e,n){arguments.length<2&&(n=e.nodes()[0]),Be(e,{},1,n)}function Be(e,n,t,r,o){let i=t,s=e.node(r);n[r]=!0;let a=e.neighbors(r);return a&&a.forEach(d=>{Object.hasOwn(n,d)||(t=Be(e,n,t,d,r))}),s.low=i,s.lim=t++,o?s.parent=o:delete s.parent,t}function Ye(e){return e.edges().find(n=>e.edge(n).cutvalue<0)}function ze(e,n,t){let r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);let i=e.node(r),s=e.node(o),a=i,d=!1;return i.lim>s.lim&&(a=s,d=!0),n.edges().filter(u=>d===Ae(e,e.node(u.v),a)&&d!==Ae(e,e.node(u.w),a)).reduce((u,c)=>v(n,c)<v(n,u)?c:u)}function He(e,n,t,r){let o=t.v,i=t.w;e.removeEdge(o,i),e.setEdge(r.v,r.w,{}),ee(e),Z(e,n),tt(e,n)}function tt(e,n){let t=e.nodes().find(o=>!e.node(o).parent);if(!t)return;let r=Zn(e,[t]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=n.edge(o,s),d=!1;a||(a=n.edge(s,o),d=!0),n.node(o).rank=n.node(s).rank+(d?a.minlen:-a.minlen)})}function rt(e,n,t){return e.hasEdge(n,t)}function Ae(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}var Xe=ot;function ot(e){let n=e.graph().ranker;if(typeof n==\"function\")return n(e);switch(n){case\"network-simplex\":qe(e);break;case\"tight-tree\":st(e);break;case\"longest-path\":it(e);break;case\"none\":break;default:qe(e)}}var it=S;function st(e){S(e),V(e)}function qe(e){Ve(e)}var Ue=at;function at(e){let n=lt(e);e.graph().dummyChains.forEach(t=>{let r=e.node(t),o=r.edgeObj,i=dt(e,n,o.v,o.w),s=i.path,a=i.lca,d=0,l=s[d],u=!0;for(;t!==o.w;){if(r=e.node(t),u){for(;(l=s[d])!==a&&e.node(l).maxRank<r.rank;)d++;l===a&&(u=!1)}if(!u){for(;d<s.length-1&&e.node(s[d+1]).minRank<=r.rank;)d++;l=s[d]}l!==void 0&&e.setParent(t,l),t=e.successors(t)[0]}})}function dt(e,n,t,r){let o=[],i=[],s=Math.min(n[t].low,n[r].low),a=Math.max(n[t].lim,n[r].lim),d;d=t;do d=e.parent(d),o.push(d);while(d&&(n[d].low>s||a>n[d].lim));let l=d,u=r;for(;(u=e.parent(u))!==l;)i.push(u);return{path:o.concat(i.reverse()),lca:l}}function lt(e){let n={},t=0;function r(o){let i=t;e.children(o).forEach(r),n[o]={low:i,lim:t++}}return e.children(_).forEach(r),n}function Ke(e){let n=w(e,\"root\",{},\"_root\"),t=ut(e),r=Object.values(t),o=L(Math.max,r)-1,i=2*o+1;e.graph().nestingRoot=n,e.edges().forEach(a=>e.edge(a).minlen*=i);let s=ct(e)+1;e.children(_).forEach(a=>$e(e,n,i,s,o,t,a)),e.graph().nodeRankFactor=i}function $e(e,n,t,r,o,i,s){var c;let a=e.children(s);if(!a.length){s!==n&&e.setEdge(n,s,{weight:0,minlen:t});return}let d=q(e,\"_bt\"),l=q(e,\"_bb\"),u=e.node(s);e.setParent(d,s),u.borderTop=d,e.setParent(l,s),u.borderBottom=l,a.forEach(h=>{var y;$e(e,n,t,r,o,i,h);let f=e.node(h),g=f.borderTop?f.borderTop:h,b=f.borderBottom?f.borderBottom:h,m=f.borderTop?r:2*r,E=g!==b?1:o-((y=i[s])!=null?y:0)+1;e.setEdge(d,g,{weight:m,minlen:E,nestingEdge:!0}),e.setEdge(b,l,{weight:m,minlen:E,nestingEdge:!0})}),e.parent(s)||e.setEdge(n,d,{weight:0,minlen:o+((c=i[s])!=null?c:0)})}function ut(e){let n={};function t(r,o){let i=e.children(r);i&&i.length&&i.forEach(s=>t(s,o+1)),n[r]=o}return e.children(_).forEach(r=>t(r,1)),n}function ct(e){return e.edges().reduce((n,t)=>n+e.edge(t).weight,0)}function Je(e){let n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t)})}var Ze=ft;function ft(e){function n(t){let r=e.children(t),o=e.node(t);if(r.length&&r.forEach(n),Object.hasOwn(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(let i=o.minRank,s=o.maxRank+1;i<s;++i)Qe(e,\"borderLeft\",\"_bl\",t,o,i),Qe(e,\"borderRight\",\"_br\",t,o,i)}}e.children(_).forEach(n)}function Qe(e,n,t,r,o,i){let s={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],d=w(e,\"border\",s,t);o[n][i]=d,e.setParent(d,r),a&&e.setEdge(a,d,{weight:1})}function nn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"lr\"||n===\"rl\")&&rn(e)}function tn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"bt\"||n===\"rl\")&&bt(e),(n===\"lr\"||n===\"rl\")&&(gt(e),rn(e))}function rn(e){e.nodes().forEach(n=>en(e.node(n))),e.edges().forEach(n=>en(e.edge(n)))}function en(e){let n=e.width;e.width=e.height,e.height=n}function bt(e){e.nodes().forEach(n=>ne(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(ne),Object.hasOwn(t,\"y\")&&ne(t)})}function ne(e){e.y=-e.y}function gt(e){e.nodes().forEach(n=>te(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(te),Object.hasOwn(t,\"x\")&&te(t)})}function te(e){let n=e.x;e.x=e.y,e.y=n}function re(e){let n={},t=e.nodes().filter(d=>!e.children(d).length),r=t.map(d=>e.node(d).rank),o=L(Math.max,r),i=k(o+1).map(()=>[]);function s(d){if(n[d])return;n[d]=!0;let l=e.node(d);i[l.rank].push(d);let u=e.successors(d);u&&u.forEach(s)}return t.sort((d,l)=>e.node(d).rank-e.node(l).rank).forEach(s),i}function oe(e,n){let t=0;for(let r=1;r<n.length;++r)t+=mt(e,n[r-1],n[r]);return t}function mt(e,n,t){let r=Re(t,t.map((l,u)=>u)),o=n.flatMap(l=>{let u=e.outEdges(l);return u?u.map(c=>({pos:r[c.w],weight:e.edge(c).weight})).sort((c,h)=>c.pos-h.pos):[]}),i=1;for(;i<t.length;)i<<=1;let s=2*i-1;i-=1;let a=new Array(s).fill(0),d=0;return o.forEach(l=>{let u=l.pos+i;a[u]+=l.weight;let c=0;for(;u>0;)u%2&&(c+=a[u+1]),u=u-1>>1,a[u]+=l.weight;d+=l.weight*c}),d}function ie(e,n=[]){return n.map(t=>{let r=e.inEdges(t);if(!r||!r.length)return{v:t};{let o=r.reduce((i,s)=>{let a=e.edge(s),d=e.node(s.v);return{sum:i.sum+a.weight*d.order,weight:i.weight+a.weight}},{sum:0,weight:0});return{v:t,barycenter:o.sum/o.weight,weight:o.weight}}})}function se(e,n){let t={};e.forEach((o,i)=>{let s={indegree:0,in:[],out:[],vs:[o.v],i};o.barycenter!==void 0&&(s.barycenter=o.barycenter,s.weight=o.weight),t[o.v]=s}),n.edges().forEach(o=>{let i=t[o.v],s=t[o.w];i!==void 0&&s!==void 0&&(s.indegree++,i.out.push(s))});let r=Object.values(t).filter(o=>!o.indegree);return Et(r)}function Et(e){let n=[];function t(o){return i=>{i.merged||(i.barycenter===void 0||o.barycenter===void 0||i.barycenter>=o.barycenter)&&Lt(o,i)}}function r(o){return i=>{i.in.push(o),--i.indegree===0&&e.push(i)}}for(;e.length;){let o=e.pop();n.push(o),o.in.reverse().forEach(t(o)),o.out.forEach(r(o))}return n.filter(o=>!o.merged).map(o=>T(o,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function Lt(e,n){let t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight),n.weight&&(t+=n.barycenter*n.weight,r+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}function ae(e,n){let t=Ce(e,u=>Object.hasOwn(u,\"barycenter\")),r=t.lhs,o=t.rhs.sort((u,c)=>c.i-u.i),i=[],s=0,a=0,d=0;r.sort(yt(!!n)),d=on(i,o,d),r.forEach(u=>{d+=u.vs.length,i.push(u.vs),s+=u.barycenter*u.weight,a+=u.weight,d=on(i,o,d)});let l={vs:i.flat(1)};return a&&(l.barycenter=s/a,l.weight=a),l}function on(e,n,t){let r;for(;n.length&&(r=n[n.length-1]).i<=t;)n.pop(),e.push(r.vs),t++;return t}function yt(e){return(n,t)=>n.barycenter<t.barycenter?-1:n.barycenter>t.barycenter?1:e?t.i-n.i:n.i-t.i}function W(e,n,t,r){let o=e.children(n),i=e.node(n),s=i?i.borderLeft:void 0,a=i?i.borderRight:void 0,d={};s&&(o=o.filter(h=>h!==s&&h!==a));let l=ie(e,o);l.forEach(h=>{if(e.children(h.v).length){let f=W(e,h.v,t,r);d[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Nt(h,f)}});let u=se(l,t);wt(u,d);let c=ae(u,r);if(s&&a){c.vs=[s,c.vs,a].flat(1);let h=e.predecessors(s);if(h&&h.length){let f=e.node(h[0]),g=e.predecessors(a),b=e.node(g[0]);Object.hasOwn(c,\"barycenter\")||(c.barycenter=0,c.weight=0),c.barycenter=(c.barycenter*c.weight+f.order+b.order)/(c.weight+2),c.weight+=2}}return c}function wt(e,n){e.forEach(t=>{t.vs=t.vs.flatMap(r=>n[r]?n[r].vs:r)})}function Nt(e,n){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight):(e.barycenter=n.barycenter,e.weight=n.weight)}function de(e,n,t,r){r||(r=e.nodes());let o=Gt(e),i=new p({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(s=>e.node(s));return r.forEach(s=>{let a=e.node(s),d=e.parent(s);if(a.rank===n||a.minRank<=n&&n<=a.maxRank){i.setNode(s),i.setParent(s,d||o);let l=e[t](s);l&&l.forEach(u=>{let c=u.v===s?u.w:u.v,h=i.edge(c,s),f=h!==void 0?h.weight:0;i.setEdge(c,s,{weight:e.edge(u).weight+f})}),Object.hasOwn(a,\"minRank\")&&i.setNode(s,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]})}}),i}function Gt(e){let n;for(;e.hasNode(n=j(\"_root\")););return n}function le(e,n,t){let r={},o;t.forEach(i=>{let s=e.parent(i),a,d;for(;s;){if(a=e.parent(s),a?(d=r[a],r[a]=s):(d=o,o=s),d&&d!==s){n.setEdge(d,s);return}s=a}})}function B(e,n={}){if(typeof n.customOrder==\"function\"){n.customOrder(e,B);return}let t=X(e),r=sn(e,k(1,t+1),\"inEdges\"),o=sn(e,k(t-1,-1,-1),\"outEdges\"),i=re(e);if(an(e,i),n.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,d=n.constraints||[];for(let l=0,u=0;u<4;++l,++u){kt(l%2?r:o,l%4>=2,d),i=N(e);let c=oe(e,i);c<s?(u=0,a=Object.assign({},i),s=c):c===s&&(a=structuredClone(i))}an(e,a)}function sn(e,n,t){let r=new Map,o=(i,s)=>{r.has(i)||r.set(i,[]),r.get(i).push(s)};for(let i of e.nodes()){let s=e.node(i);if(typeof s.rank==\"number\"&&o(s.rank,i),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&o(a,i)}return n.map(function(i){return de(e,i,t,r.get(i)||[])})}function kt(e,n,t){let r=new p;e.forEach(function(o){t.forEach(a=>r.setEdge(a.left,a.right));let i=o.graph().root,s=W(o,i,r,n);s.vs.forEach((a,d)=>o.node(a).order=d),le(o,r,s.vs)})}function an(e,n){Object.values(n).forEach(t=>t.forEach((r,o)=>e.node(r).order=o))}function vt(e,n){let t={};function r(o,i){let s=0,a=0,d=o.length,l=i[i.length-1];return i.forEach((u,c)=>{let h=xt(e,u),f=h?e.node(h).order:d;(h||u===l)&&(i.slice(a,c+1).forEach(g=>{let b=e.predecessors(g);b&&b.forEach(m=>{let E=e.node(m),y=E.order;(y<s||f<y)&&!(E.dummy&&e.node(g).dummy)&&dn(t,m,g)})}),a=c+1,s=f)}),i}return n.length&&n.reduce(r),t}function _t(e,n){let t={};function r(i,s,a,d,l){k(s,a).forEach(u=>{let c=i[u];if(c!==void 0&&e.node(c).dummy){let h=e.predecessors(c);h&&h.forEach(f=>{if(f===void 0)return;let g=e.node(f);g.dummy&&(g.order<d||g.order>l)&&dn(t,f,c)})}})}function o(i,s){let a=-1,d=-1,l=0;return s.forEach((u,c)=>{if(e.node(u).dummy===\"border\"){let h=e.predecessors(u);if(h&&h.length){let f=h[0];if(f===void 0)return;d=e.node(f).order,r(s,l,c,a,d),l=c,a=d}}r(s,l,s.length,d,i.length)}),s}return n.length&&n.reduce(o),t}function xt(e,n){if(e.node(n).dummy){let t=e.predecessors(n);if(t)return t.find(r=>e.node(r).dummy)}}function dn(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];r||(e[n]=r={}),r[t]=!0}function Tt(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];return r!==void 0&&Object.hasOwn(r,t)}function Ot(e,n,t,r){let o={},i={},s={};return n.forEach(a=>{a.forEach((d,l)=>{o[d]=d,i[d]=d,s[d]=l})}),n.forEach(a=>{let d=-1;a.forEach(l=>{let u=r(l);if(u&&u.length){let c=u.sort((f,g)=>{let b=s[f],m=s[g];return(b!==void 0?b:0)-(m!==void 0?m:0)}),h=(c.length-1)/2;for(let f=Math.floor(h),g=Math.ceil(h);f<=g;++f){let b=c[f];if(b===void 0)continue;let m=s[b];if(m!==void 0&&i[l]===l&&d<m&&!Tt(t,l,b)){let E=o[b];E!==void 0&&(i[b]=l,i[l]=o[l]=E,d=m)}}}})}),{root:o,align:i}}function It(e,n,t,r,o=!1){let i={},s=Ct(e,n,t,o),a=o?\"borderLeft\":\"borderRight\";function d(f,g){let b=s.nodes().slice(),m={},E=b.pop();for(;E;){if(m[E])f(E);else{m[E]=!0,b.push(E);for(let y of g(E))b.push(y)}E=b.pop()}}function l(f){let g=s.inEdges(f);g?i[f]=g.reduce((b,m)=>{var I;let E=(I=i[m.v])!=null?I:0,y=s.edge(m);return Math.max(b,E+(y!==void 0?y:0))},0):i[f]=0}function u(f){let g=s.outEdges(f),b=Number.POSITIVE_INFINITY;g&&(b=g.reduce((E,y)=>{let I=i[y.w],be=s.edge(y);return Math.min(E,(I!==void 0?I:0)-(be!==void 0?be:0))},Number.POSITIVE_INFINITY));let m=e.node(f);b!==Number.POSITIVE_INFINITY&&m.borderType!==a&&(i[f]=Math.max(i[f]!==void 0?i[f]:0,b))}function c(f){return s.predecessors(f)||[]}function h(f){return s.successors(f)||[]}return d(l,c),d(u,h),Object.keys(r).forEach(f=>{var b;let g=t[f];g!==void 0&&(i[f]=(b=i[g])!=null?b:0)}),i}function Ct(e,n,t,r){let o=new p,i=e.graph(),s=jt(i.nodesep,i.edgesep,r);return n.forEach(a=>{let d;a.forEach(l=>{let u=t[l];if(u!==void 0){if(o.setNode(u),d!==void 0){let c=t[d];if(c!==void 0){let h=o.edge(c,u);o.setEdge(c,u,Math.max(s(e,l,d),h||0))}}d=l}})}),o}function Rt(e,n){return Object.values(n).reduce((t,r)=>{let o=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([a,d])=>{let l=St(e,a)/2;o=Math.max(d+l,o),i=Math.min(d-l,i)});let s=o-i;return s<t[0]&&(t=[s,r]),t},[Number.POSITIVE_INFINITY,null])[1]}function Pt(e,n){let t=Object.values(n),r=L(Math.min,t),o=L(Math.max,t);[\"u\",\"d\"].forEach(i=>{[\"l\",\"r\"].forEach(s=>{let a=i+s,d=e[a];if(!d||d===n)return;let l=Object.values(d),u=r-L(Math.min,l);s!==\"l\"&&(u=o-L(Math.max,l)),u&&(e[a]=O(d,c=>c+u))})})}function Mt(e,n=void 0){let t=e.ul;return t?O(t,(r,o)=>{var s,a;if(n){let d=n.toLowerCase(),l=e[d];if(l&&l[o]!==void 0)return l[o]}let i=Object.values(e).map(d=>{let l=d[o];return l!==void 0?l:0}).sort((d,l)=>d-l);return(((s=i[1])!=null?s:0)+((a=i[2])!=null?a:0))/2}):{}}function ln(e){let n=N(e),t=Object.assign(vt(e,n),_t(e,n)),r={},o;[\"u\",\"d\"].forEach(s=>{o=s===\"u\"?n:Object.values(n).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(o=o.map(c=>Object.values(c).reverse()));let l=Ot(e,o,t,c=>(s===\"u\"?e.predecessors(c):e.successors(c))||[]),u=It(e,o,l.root,l.align,a===\"r\");a===\"r\"&&(u=O(u,c=>-c)),r[s+a]=u})});let i=Rt(e,r);return Pt(r,i),Mt(r,e.graph().align)}function jt(e,n,t){return(r,o,i)=>{let s=r.node(o),a=r.node(i),d=0,l;if(d+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":l=-s.width/2;break;case\"r\":l=s.width/2;break}if(l&&(d+=t?l:-l),l=void 0,d+=(s.dummy?n:e)/2,d+=(a.dummy?n:e)/2,d+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":l=a.width/2;break;case\"r\":l=-a.width/2;break}return l&&(d+=t?l:-l),d}}function St(e,n){return e.node(n).width}function un(e){e=A(e),Ft(e),Object.entries(ln(e)).forEach(([n,t])=>e.node(n).x=t)}function Ft(e){let n=N(e),t=e.graph(),r=t.ranksep,o=t.rankalign,i=0;n.forEach(s=>{let a=s.reduce((d,l)=>{var c;let u=(c=e.node(l).height)!=null?c:0;return d>u?d:u},0);s.forEach(d=>{let l=e.node(d);o===\"top\"?l.y=i+l.height/2:o===\"bottom\"?l.y=i+a-l.height/2:l.y=i+a/2}),i+=a+r})}function he(e,n={}){let t=n.debugTiming?P:M;return t(\"layout\",()=>{let r=t(\" buildLayoutGraph\",()=>Xt(e));return t(\" runLayout\",()=>Dt(r,t,n)),t(\" updateInputGraph\",()=>At(e,r)),r})}function Dt(e,n,t){n(\" makeSpaceForEdgeLabels\",()=>Ut(e)),n(\" removeSelfEdges\",()=>rr(e)),n(\" acyclic\",()=>je(e)),n(\" nestingGraph.run\",()=>Ke(e)),n(\" rank\",()=>Xe(A(e))),n(\" injectEdgeLabelProxies\",()=>Kt(e)),n(\" removeEmptyRanks\",()=>Oe(e)),n(\" nestingGraph.cleanup\",()=>Je(e)),n(\" normalizeRanks\",()=>Te(e)),n(\" assignRankMinMax\",()=>$t(e)),n(\" removeEdgeLabelProxies\",()=>Jt(e)),n(\" normalize.run\",()=>Fe(e)),n(\" parentDummyChains\",()=>Ue(e)),n(\" addBorderSegments\",()=>Ze(e)),n(\" order\",()=>B(e,t)),n(\" insertSelfEdges\",()=>or(e)),n(\" adjustCoordinateSystem\",()=>nn(e)),n(\" position\",()=>un(e)),n(\" positionSelfEdges\",()=>ir(e)),n(\" removeBorderNodes\",()=>tr(e)),n(\" normalize.undo\",()=>De(e)),n(\" fixupEdgeLabelCoords\",()=>er(e)),n(\" undoCoordinateSystem\",()=>tn(e)),n(\" translateGraph\",()=>Qt(e)),n(\" assignNodeIntersects\",()=>Zt(e)),n(\" reversePoints\",()=>nr(e)),n(\" acyclic.undo\",()=>Se(e))}function At(e,n){e.nodes().forEach(t=>{let r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,n.children(t).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(t=>{let r=e.edge(t),o=n.edge(t);r.points=o.points,Object.hasOwn(o,\"x\")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}var Vt=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Wt={ranksep:50,edgesep:20,nodesep:50,rankdir:\"TB\",rankalign:\"center\"},Bt=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],Yt=[\"width\",\"height\",\"rank\"],cn={width:0,height:0},zt=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],Ht={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},qt=[\"labelpos\"];function Xt(e){let n=new p({multigraph:!0,compound:!0}),t=ce(e.graph());return n.setGraph(Object.assign({},Wt,ue(t,Vt),T(t,Bt))),e.nodes().forEach(r=>{let o=ce(e.node(r)),i=ue(o,Yt);Object.keys(cn).forEach(a=>{i[a]===void 0&&(i[a]=cn[a])}),n.setNode(r,i);let s=e.parent(r);s!==void 0&&n.setParent(r,s)}),e.edges().forEach(r=>{let o=ce(e.edge(r));n.setEdge(r,Object.assign({},Ht,ue(o,zt),T(o,qt)))}),n}function Ut(e){let n=e.graph();n.ranksep/=2,e.edges().forEach(t=>{let r=e.edge(t);r.minlen*=2,r.labelpos.toLowerCase()!==\"c\"&&(n.rankdir===\"TB\"||n.rankdir===\"BT\"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Kt(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.width&&t.height){let r=e.node(n.v),i={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};w(e,\"edge-proxy\",i,\"_ep\")}})}function $t(e){let n=0;e.nodes().forEach(t=>{let r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=Math.max(n,r.maxRank))}),e.graph().maxRank=n}function Jt(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"edge-proxy\"){let r=t;e.edge(r.e).labelRank=t.rank,e.removeNode(n)}})}function Qt(e){let n=Number.POSITIVE_INFINITY,t=0,r=Number.POSITIVE_INFINITY,o=0,i=e.graph(),s=i.marginx||0,a=i.marginy||0;function d(l){let u=l.x,c=l.y,h=l.width,f=l.height;n=Math.min(n,u-h/2),t=Math.max(t,u+h/2),r=Math.min(r,c-f/2),o=Math.max(o,c+f/2)}e.nodes().forEach(l=>d(e.node(l))),e.edges().forEach(l=>{let u=e.edge(l);Object.hasOwn(u,\"x\")&&d(u)}),n-=s,r-=a,e.nodes().forEach(l=>{let u=e.node(l);u.x-=n,u.y-=r}),e.edges().forEach(l=>{let u=e.edge(l);u.points.forEach(c=>{c.x-=n,c.y-=r}),Object.hasOwn(u,\"x\")&&(u.x-=n),Object.hasOwn(u,\"y\")&&(u.y-=r)}),i.width=t-n+s,i.height=o-r+a}function Zt(e){e.edges().forEach(n=>{let t=e.edge(n),r=e.node(n.v),o=e.node(n.w),i,s;t.points?(i=t.points[0],s=t.points[t.points.length-1]):(t.points=[],i=o,s=r),t.points.unshift(H(r,i)),t.points.push(H(o,s))})}function er(e){e.edges().forEach(n=>{let t=e.edge(n);if(Object.hasOwn(t,\"x\"))switch((t.labelpos===\"l\"||t.labelpos===\"r\")&&(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset;break}})}function nr(e){e.edges().forEach(n=>{let t=e.edge(n);t.reversed&&t.points.reverse()})}function tr(e){e.nodes().forEach(n=>{if(e.children(n).length){let t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(t.borderLeft[t.borderLeft.length-1]),s=e.node(t.borderRight[t.borderRight.length-1]);t.width=Math.abs(s.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),e.nodes().forEach(n=>{e.node(n).dummy===\"border\"&&e.removeNode(n)})}function rr(e){e.edges().forEach(n=>{if(n.v===n.w){let t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}function or(e){N(e).forEach(t=>{let r=0;t.forEach((o,i)=>{let s=e.node(o);s.order=i+r,(s.selfEdges||[]).forEach(a=>{w(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:i+ ++r,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function ir(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"selfedge\"){let r=t,o=e.node(r.e.v),i=o.x+o.width/2,s=o.y,a=t.x-i,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:i+2*a/3,y:s-d},{x:i+5*a/6,y:s-d},{x:i+a,y:s},{x:i+5*a/6,y:s+d},{x:i+2*a/3,y:s+d}],r.label.x=t.x,r.label.y=t.y}})}function ue(e,n){return O(T(e,n),Number)}function ce(e){let n={};return e&&Object.entries(e).forEach(([t,r])=>{typeof t==\"string\"&&(t=t.toLowerCase()),n[t]=r}),n}function fe(e){let n=N(e),t=new p({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{t.setNode(r,{label:r}),t.setParent(r,\"layer\"+e.node(r).rank)}),e.edges().forEach(r=>t.setEdge(r.v,r.w,{},r.name)),n.forEach((r,o)=>{let i=\"layer\"+o;t.setNode(i,{rank:\"same\"}),r.reduce((s,a)=>(t.setEdge(s,a,{style:\"invis\"}),a))}),t}var xo={time:P,notime:M},sr={graphlib:z,version:U,layout:he,debug:fe,util:{time:P,notime:M}},To=sr;export{p as Graph,fe as debug,To as default,z as graphlib,he as layout,xo as util,U as version};\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","export default function cc(names) {\n if (typeof names === \"string\" || typeof names === \"number\") return \"\" + names\n\n let out = \"\"\n\n if (Array.isArray(names)) {\n for (let i = 0, tmp; i < names.length; i++) {\n if ((tmp = cc(names[i])) !== \"\") {\n out += (out && \" \") + tmp\n }\n }\n } else {\n for (let k in names) {\n if (names[k]) out += (out && \" \") + k\n }\n }\n\n return out\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","import { drag } from 'd3-drag';\nimport { select, pointer } from 'd3-selection';\nimport { zoom, zoomIdentity, zoomTransform } from 'd3-zoom';\nimport { interpolateZoom, interpolate } from 'd3-interpolate';\n\nconst errorMessages = {\n error001: () => '[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001',\n error002: () => \"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.\",\n error003: (nodeType) => `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n error004: () => 'The React Flow parent container needs a width and a height to render the graph.',\n error005: () => 'Only child nodes can use a parent extent.',\n error006: () => \"Can't create edge. An edge needs a source and a target.\",\n error007: (id) => `The old edge with id=${id} does not exist.`,\n error009: (type) => `Marker type \"${type}\" doesn't exist.`,\n error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: \"${handleType === 'source' ? sourceHandle : targetHandle}\", edge id: ${id}.`,\n error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n error011: (edgeType) => `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n error012: (id) => `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n error013: (lib = 'react') => `It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`,\n error014: () => 'useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.',\n error015: () => 'It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.',\n};\nconst infiniteExtent = [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\nconst elementSelectionKeys = ['Enter', ' ', 'Escape'];\nconst defaultAriaLabelConfig = {\n 'node.a11yDescription.default': 'Press enter or space to select a node. Press delete to remove it and escape to cancel.',\n 'node.a11yDescription.keyboardDisabled': 'Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.',\n 'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }) => `Moved selected node ${direction}. New position, x: ${x}, y: ${y}`,\n 'edge.a11yDescription.default': 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.',\n // Control elements\n 'controls.ariaLabel': 'Control Panel',\n 'controls.zoomIn.ariaLabel': 'Zoom In',\n 'controls.zoomOut.ariaLabel': 'Zoom Out',\n 'controls.fitView.ariaLabel': 'Fit View',\n 'controls.interactive.ariaLabel': 'Toggle Interactivity',\n // Mini map\n 'minimap.ariaLabel': 'Mini Map',\n // Handle\n 'handle.ariaLabel': 'Handle',\n};\n\n/**\n * The `ConnectionMode` is used to set the mode of connection between nodes.\n * The `Strict` mode is the default one and only allows source to target edges.\n * `Loose` mode allows source to source and target to target edges as well.\n *\n * @public\n */\nvar ConnectionMode;\n(function (ConnectionMode) {\n ConnectionMode[\"Strict\"] = \"strict\";\n ConnectionMode[\"Loose\"] = \"loose\";\n})(ConnectionMode || (ConnectionMode = {}));\n/**\n * This enum is used to set the different modes of panning the viewport when the\n * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling\n * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict\n * scroll panning to only the vertical or horizontal axis, respectively.\n *\n * @public\n */\nvar PanOnScrollMode;\n(function (PanOnScrollMode) {\n PanOnScrollMode[\"Free\"] = \"free\";\n PanOnScrollMode[\"Vertical\"] = \"vertical\";\n PanOnScrollMode[\"Horizontal\"] = \"horizontal\";\n})(PanOnScrollMode || (PanOnScrollMode = {}));\nvar SelectionMode;\n(function (SelectionMode) {\n SelectionMode[\"Partial\"] = \"partial\";\n SelectionMode[\"Full\"] = \"full\";\n})(SelectionMode || (SelectionMode = {}));\nconst initialConnection = {\n inProgress: false,\n isValid: null,\n from: null,\n fromHandle: null,\n fromPosition: null,\n fromNode: null,\n to: null,\n toHandle: null,\n toPosition: null,\n toNode: null,\n pointer: null,\n};\n\n/**\n * If you set the `connectionLineType` prop on your [`<ReactFlow />`](/api-reference/react-flow#connection-connectionLineType)\n *component, it will dictate the style of connection line rendered when creating\n *new edges.\n *\n * @public\n *\n * @remarks If you choose to render a custom connection line component, this value will be\n *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props).\n */\nvar ConnectionLineType;\n(function (ConnectionLineType) {\n ConnectionLineType[\"Bezier\"] = \"default\";\n ConnectionLineType[\"Straight\"] = \"straight\";\n ConnectionLineType[\"Step\"] = \"step\";\n ConnectionLineType[\"SmoothStep\"] = \"smoothstep\";\n ConnectionLineType[\"SimpleBezier\"] = \"simplebezier\";\n})(ConnectionLineType || (ConnectionLineType = {}));\n/**\n * Edges may optionally have a marker on either end. The MarkerType type enumerates\n * the options available to you when configuring a given marker.\n *\n * @public\n */\nvar MarkerType;\n(function (MarkerType) {\n MarkerType[\"Arrow\"] = \"arrow\";\n MarkerType[\"ArrowClosed\"] = \"arrowclosed\";\n})(MarkerType || (MarkerType = {}));\n\n/**\n * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a\n * component in the corners of a container, the `Position` enum is less precise and used\n * primarily in relation to edges and handles.\n *\n * @public\n */\nvar Position;\n(function (Position) {\n Position[\"Left\"] = \"left\";\n Position[\"Top\"] = \"top\";\n Position[\"Right\"] = \"right\";\n Position[\"Bottom\"] = \"bottom\";\n})(Position || (Position = {}));\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top,\n};\n\n/**\n * @internal\n */\nfunction areConnectionMapsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.size !== b.size) {\n return false;\n }\n if (!a.size && !b.size) {\n return true;\n }\n for (const key of a.keys()) {\n if (!b.has(key)) {\n return false;\n }\n }\n return true;\n}\n/**\n * We call the callback for all connections in a that are not in b\n *\n * @internal\n */\nfunction handleConnectionChange(a, b, cb) {\n if (!cb) {\n return;\n }\n const diff = [];\n a.forEach((connection, key) => {\n if (!b?.has(key)) {\n diff.push(connection);\n }\n });\n if (diff.length) {\n cb(diff);\n }\n}\nfunction getConnectionStatus(isValid) {\n return isValid === null ? null : isValid ? 'valid' : 'invalid';\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Test whether an object is usable as an Edge\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Edge\n */\nconst isEdgeBase = (element) => 'id' in element && 'source' in element && 'target' in element;\n/**\n * Test whether an object is usable as a Node\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test\n * @returns A boolean indicating whether the element is an Node\n */\nconst isNodeBase = (element) => 'id' in element && 'position' in element && !('source' in element) && !('target' in element);\nconst isInternalNodeBase = (element) => 'id' in element && 'internals' in element && !('source' in element) && !('target' in element);\n/**\n * This util is used to tell you what nodes, if any, are connected to the given node\n * as the _target_ of an edge.\n * @public\n * @param node - The node to get the connected nodes from.\n * @param nodes - The array of all nodes.\n * @param edges - The array of all edges.\n * @returns An array of nodes that are connected over edges where the source is the given node.\n *\n * @example\n * ```ts\n *import { getOutgoers } from '@xyflow/react';\n *\n *const nodes = [];\n *const edges = [];\n *\n *const outgoers = getOutgoers(\n * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } },\n * nodes,\n * edges,\n *);\n *```\n */\nconst getOutgoers = (node, nodes, edges) => {\n if (!node.id) {\n return [];\n }\n const outgoerIds = new Set();\n edges.forEach((edge) => {\n if (edge.source === node.id) {\n outgoerIds.add(edge.target);\n }\n });\n return nodes.filter((n) => outgoerIds.has(n.id));\n};\n/**\n * This util is used to tell you what nodes, if any, are connected to the given node\n * as the _source_ of an edge.\n * @public\n * @param node - The node to get the connected nodes from.\n * @param nodes - The array of all nodes.\n * @param edges - The array of all edges.\n * @returns An array of nodes that are connected over edges where the target is the given node.\n *\n * @example\n * ```ts\n *import { getIncomers } from '@xyflow/react';\n *\n *const nodes = [];\n *const edges = [];\n *\n *const incomers = getIncomers(\n * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } },\n * nodes,\n * edges,\n *);\n *```\n */\nconst getIncomers = (node, nodes, edges) => {\n if (!node.id) {\n return [];\n }\n const incomersIds = new Set();\n edges.forEach((edge) => {\n if (edge.target === node.id) {\n incomersIds.add(edge.source);\n }\n });\n return nodes.filter((n) => incomersIds.has(n.id));\n};\nconst getNodePositionWithOrigin = (node, nodeOrigin = [0, 0]) => {\n const { width, height } = getNodeDimensions(node);\n const origin = node.origin ?? nodeOrigin;\n const offsetX = width * origin[0];\n const offsetY = height * origin[1];\n return {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n };\n};\n/**\n * Returns the bounding box that contains all the given nodes in an array. This can\n * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds)\n * to calculate the correct transform to fit the given nodes in a viewport.\n * @public\n * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport.\n * @param nodes - Nodes to calculate the bounds for.\n * @returns Bounding box enclosing all nodes.\n *\n * @remarks This function was previously called `getRectOfNodes`\n *\n * @example\n * ```js\n *import { getNodesBounds } from '@xyflow/react';\n *\n *const nodes = [\n * {\n * id: 'a',\n * position: { x: 0, y: 0 },\n * data: { label: 'a' },\n * width: 50,\n * height: 25,\n * },\n * {\n * id: 'b',\n * position: { x: 100, y: 100 },\n * data: { label: 'b' },\n * width: 50,\n * height: 25,\n * },\n *];\n *\n *const bounds = getNodesBounds(nodes);\n *```\n */\nconst getNodesBounds = (nodes, params = { nodeOrigin: [0, 0] }) => {\n if (process.env.NODE_ENV === 'development' && !params.nodeLookup) {\n console.warn('Please use `getNodesBounds` from `useReactFlow`/`useSvelteFlow` hook to ensure correct values for sub flows. If not possible, you have to provide a nodeLookup to support sub flows.');\n }\n if (nodes.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n const box = nodes.reduce((currBox, nodeOrId) => {\n const isId = typeof nodeOrId === 'string';\n let currentNode = !params.nodeLookup && !isId ? nodeOrId : undefined;\n if (params.nodeLookup) {\n currentNode = isId\n ? params.nodeLookup.get(nodeOrId)\n : !isInternalNodeBase(nodeOrId)\n ? params.nodeLookup.get(nodeOrId.id)\n : nodeOrId;\n }\n const nodeBox = currentNode ? nodeToBox(currentNode, params.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 };\n return getBoundsOfBoxes(currBox, nodeBox);\n }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity });\n return boxToRect(box);\n};\n/**\n * Determines a bounding box that contains all given nodes in an array\n * @internal\n */\nconst getInternalNodesBounds = (nodeLookup, params = {}) => {\n let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity };\n let hasVisibleNodes = false;\n nodeLookup.forEach((node) => {\n if (params.filter === undefined || params.filter(node)) {\n box = getBoundsOfBoxes(box, nodeToBox(node));\n hasVisibleNodes = true;\n }\n });\n return hasVisibleNodes ? boxToRect(box) : { x: 0, y: 0, width: 0, height: 0 };\n};\nconst getNodesInside = (nodes, rect, [tx, ty, tScale] = [0, 0, 1], partially = false, \n// set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\nexcludeNonSelectableNodes = false) => {\n const paneRect = {\n ...pointToRendererPoint(rect, [tx, ty, tScale]),\n width: rect.width / tScale,\n height: rect.height / tScale,\n };\n const visibleNodes = [];\n for (const node of nodes.values()) {\n const { measured, selectable = true, hidden = false } = node;\n if ((excludeNonSelectableNodes && !selectable) || hidden) {\n continue;\n }\n const width = measured.width ?? node.width ?? node.initialWidth ?? null;\n const height = measured.height ?? node.height ?? node.initialHeight ?? null;\n const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n const area = (width ?? 0) * (height ?? 0);\n const partiallyVisible = partially && overlappingArea > 0;\n const forceInitialRender = !node.internals.handleBounds;\n const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n return visibleNodes;\n};\n/**\n * This utility filters an array of edges, keeping only those where either the source or target\n * node is present in the given array of nodes.\n * @public\n * @param nodes - Nodes you want to get the connected edges for.\n * @param edges - All edges.\n * @returns Array of edges that connect any of the given nodes with each other.\n *\n * @example\n * ```js\n *import { getConnectedEdges } from '@xyflow/react';\n *\n *const nodes = [\n * { id: 'a', position: { x: 0, y: 0 } },\n * { id: 'b', position: { x: 100, y: 0 } },\n *];\n *\n *const edges = [\n * { id: 'a->c', source: 'a', target: 'c' },\n * { id: 'c->d', source: 'c', target: 'd' },\n *];\n *\n *const connectedEdges = getConnectedEdges(nodes, edges);\n * // => [{ id: 'a->c', source: 'a', target: 'c' }]\n *```\n */\nconst getConnectedEdges = (nodes, edges) => {\n const nodeIds = new Set();\n nodes.forEach((node) => {\n nodeIds.add(node.id);\n });\n return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n};\nfunction getFitViewNodes(nodeLookup, options) {\n const fitViewNodes = new Map();\n const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node) => node.id)) : null;\n nodeLookup.forEach((n) => {\n const isVisible = n.measured.width && n.measured.height && (options?.includeHiddenNodes || !n.hidden);\n if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) {\n fitViewNodes.set(n.id, n);\n }\n });\n return fitViewNodes;\n}\nasync function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom }, options) {\n if (nodes.size === 0) {\n return Promise.resolve(true);\n }\n const nodesToFit = getFitViewNodes(nodes, options);\n const bounds = getInternalNodesBounds(nodesToFit);\n const viewport = getViewportForBounds(bounds, width, height, options?.minZoom ?? minZoom, options?.maxZoom ?? maxZoom, options?.padding ?? 0.1);\n await panZoom.setViewport(viewport, {\n duration: options?.duration,\n ease: options?.ease,\n interpolate: options?.interpolate,\n });\n return Promise.resolve(true);\n}\n/**\n * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin.\n *\n * @internal\n * @returns position, positionAbsolute\n */\nfunction calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError, }) {\n const node = nodeLookup.get(nodeId);\n const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined;\n const { x: parentX, y: parentY } = parentNode ? parentNode.internals.positionAbsolute : { x: 0, y: 0 };\n const origin = node.origin ?? nodeOrigin;\n let extent = node.extent || nodeExtent;\n if (node.extent === 'parent' && !node.expandParent) {\n if (!parentNode) {\n onError?.('005', errorMessages['error005']());\n }\n else {\n const parentWidth = parentNode.measured.width;\n const parentHeight = parentNode.measured.height;\n if (parentWidth && parentHeight) {\n extent = [\n [parentX, parentY],\n [parentX + parentWidth, parentY + parentHeight],\n ];\n }\n }\n }\n else if (parentNode && isCoordinateExtent(node.extent)) {\n extent = [\n [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n ];\n }\n const positionAbsolute = isCoordinateExtent(extent)\n ? clampPosition(nextPosition, extent, node.measured)\n : nextPosition;\n if (node.measured.width === undefined || node.measured.height === undefined) {\n onError?.('015', errorMessages['error015']());\n }\n return {\n position: {\n x: positionAbsolute.x - parentX + (node.measured.width ?? 0) * origin[0],\n y: positionAbsolute.y - parentY + (node.measured.height ?? 0) * origin[1],\n },\n positionAbsolute,\n };\n}\n/**\n * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted\n * @internal\n * @param param.nodesToRemove - The nodes to remove\n * @param param.edgesToRemove - The edges to remove\n * @param param.nodes - All nodes\n * @param param.edges - All edges\n * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted\n * @returns nodes: nodes that can be deleted, edges: edges that can be deleted\n */\nasync function getElementsToRemove({ nodesToRemove = [], edgesToRemove = [], nodes, edges, onBeforeDelete, }) {\n const nodeIds = new Set(nodesToRemove.map((node) => node.id));\n const matchingNodes = [];\n for (const node of nodes) {\n if (node.deletable === false) {\n continue;\n }\n const isIncluded = nodeIds.has(node.id);\n const parentHit = !isIncluded && node.parentId && matchingNodes.find((n) => n.id === node.parentId);\n if (isIncluded || parentHit) {\n matchingNodes.push(node);\n }\n }\n const edgeIds = new Set(edgesToRemove.map((edge) => edge.id));\n const deletableEdges = edges.filter((edge) => edge.deletable !== false);\n const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges);\n const matchingEdges = connectedEdges;\n for (const edge of deletableEdges) {\n const isIncluded = edgeIds.has(edge.id);\n if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) {\n matchingEdges.push(edge);\n }\n }\n if (!onBeforeDelete) {\n return {\n edges: matchingEdges,\n nodes: matchingNodes,\n };\n }\n const onBeforeDeleteResult = await onBeforeDelete({\n nodes: matchingNodes,\n edges: matchingEdges,\n });\n if (typeof onBeforeDeleteResult === 'boolean') {\n return onBeforeDeleteResult ? { edges: matchingEdges, nodes: matchingNodes } : { edges: [], nodes: [] };\n }\n return onBeforeDeleteResult;\n}\n\nconst clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max);\nconst clampPosition = (position = { x: 0, y: 0 }, extent, dimensions) => ({\n x: clamp(position.x, extent[0][0], extent[1][0] - (dimensions?.width ?? 0)),\n y: clamp(position.y, extent[0][1], extent[1][1] - (dimensions?.height ?? 0)),\n});\nfunction clampPositionToParent(childPosition, childDimensions, parent) {\n const { width: parentWidth, height: parentHeight } = getNodeDimensions(parent);\n const { x: parentX, y: parentY } = parent.internals.positionAbsolute;\n return clampPosition(childPosition, [\n [parentX, parentY],\n [parentX + parentWidth, parentY + parentHeight],\n ], childDimensions);\n}\n/**\n * Calculates the velocity of panning when the mouse is close to the edge of the canvas\n * @internal\n * @param value - One dimensional poition of the mouse (x or y)\n * @param min - Minimal position on canvas before panning starts\n * @param max - Maximal position on canvas before panning starts\n * @returns - A number between 0 and 1 that represents the velocity of panning\n */\nconst calcAutoPanVelocity = (value, min, max) => {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, min) / min;\n }\n else if (value > max) {\n return -clamp(Math.abs(value - max), 1, min) / min;\n }\n return 0;\n};\nconst calcAutoPan = (pos, bounds, speed = 15, distance = 40) => {\n const xMovement = calcAutoPanVelocity(pos.x, distance, bounds.width - distance) * speed;\n const yMovement = calcAutoPanVelocity(pos.y, distance, bounds.height - distance) * speed;\n return [xMovement, yMovement];\n};\nconst getBoundsOfBoxes = (box1, box2) => ({\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2),\n});\nconst rectToBox = ({ x, y, width, height }) => ({\n x,\n y,\n x2: x + width,\n y2: y + height,\n});\nconst boxToRect = ({ x, y, x2, y2 }) => ({\n x,\n y,\n width: x2 - x,\n height: y2 - y,\n});\nconst nodeToRect = (node, nodeOrigin = [0, 0]) => {\n const { x, y } = isInternalNodeBase(node)\n ? node.internals.positionAbsolute\n : getNodePositionWithOrigin(node, nodeOrigin);\n return {\n x,\n y,\n width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n };\n};\nconst nodeToBox = (node, nodeOrigin = [0, 0]) => {\n const { x, y } = isInternalNodeBase(node)\n ? node.internals.positionAbsolute\n : getNodePositionWithOrigin(node, nodeOrigin);\n return {\n x,\n y,\n x2: x + (node.measured?.width ?? node.width ?? node.initialWidth ?? 0),\n y2: y + (node.measured?.height ?? node.height ?? node.initialHeight ?? 0),\n };\n};\nconst getBoundsOfRects = (rect1, rect2) => boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\nconst getOverlappingArea = (rectA, rectB) => {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nconst isNumeric = (n) => !isNaN(n) && isFinite(n);\n// used for a11y key board controls for nodes and edges\nconst devWarn = (id, message) => {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[React Flow]: ${message} Help: https://reactflow.dev/error#${id}`);\n }\n};\nconst snapPosition = (position, snapGrid = [1, 1]) => {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1]),\n };\n};\nconst pointToRendererPoint = ({ x, y }, [tx, ty, tScale], snapToGrid = false, snapGrid = [1, 1]) => {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale,\n };\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n};\nconst rendererPointToPoint = ({ x, y }, [tx, ty, tScale]) => {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty,\n };\n};\n/**\n * Parses a single padding value to a number\n * @internal\n * @param padding - Padding to parse\n * @param viewport - Width or height of the viewport\n * @returns The padding in pixels\n */\nfunction parsePadding(padding, viewport) {\n if (typeof padding === 'number') {\n return Math.floor((viewport - viewport / (1 + padding)) * 0.5);\n }\n if (typeof padding === 'string' && padding.endsWith('px')) {\n const paddingValue = parseFloat(padding);\n if (!Number.isNaN(paddingValue)) {\n return Math.floor(paddingValue);\n }\n }\n if (typeof padding === 'string' && padding.endsWith('%')) {\n const paddingValue = parseFloat(padding);\n if (!Number.isNaN(paddingValue)) {\n return Math.floor(viewport * paddingValue * 0.01);\n }\n }\n console.error(`[React Flow] The padding value \"${padding}\" is invalid. Please provide a number or a string with a valid unit (px or %).`);\n return 0;\n}\n/**\n * Parses the paddings to an object with top, right, bottom, left, x and y paddings\n * @internal\n * @param padding - Padding to parse\n * @param width - Width of the viewport\n * @param height - Height of the viewport\n * @returns An object with the paddings in pixels\n */\nfunction parsePaddings(padding, width, height) {\n if (typeof padding === 'string' || typeof padding === 'number') {\n const paddingY = parsePadding(padding, height);\n const paddingX = parsePadding(padding, width);\n return {\n top: paddingY,\n right: paddingX,\n bottom: paddingY,\n left: paddingX,\n x: paddingX * 2,\n y: paddingY * 2,\n };\n }\n if (typeof padding === 'object') {\n const top = parsePadding(padding.top ?? padding.y ?? 0, height);\n const bottom = parsePadding(padding.bottom ?? padding.y ?? 0, height);\n const left = parsePadding(padding.left ?? padding.x ?? 0, width);\n const right = parsePadding(padding.right ?? padding.x ?? 0, width);\n return { top, right, bottom, left, x: left + right, y: top + bottom };\n }\n return { top: 0, right: 0, bottom: 0, left: 0, x: 0, y: 0 };\n}\n/**\n * Calculates the resulting paddings if the new viewport is applied\n * @internal\n * @param bounds - Bounds to fit inside viewport\n * @param x - X position of the viewport\n * @param y - Y position of the viewport\n * @param zoom - Zoom level of the viewport\n * @param width - Width of the viewport\n * @param height - Height of the viewport\n * @returns An object with the minimum padding required to fit the bounds inside the viewport\n */\nfunction calculateAppliedPaddings(bounds, x, y, zoom, width, height) {\n const { x: left, y: top } = rendererPointToPoint(bounds, [x, y, zoom]);\n const { x: boundRight, y: boundBottom } = rendererPointToPoint({ x: bounds.x + bounds.width, y: bounds.y + bounds.height }, [x, y, zoom]);\n const right = width - boundRight;\n const bottom = height - boundBottom;\n return {\n left: Math.floor(left),\n top: Math.floor(top),\n right: Math.floor(right),\n bottom: Math.floor(bottom),\n };\n}\n/**\n * Returns a viewport that encloses the given bounds with padding.\n * @public\n * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects}\n * @param bounds - Bounds to fit inside viewport.\n * @param width - Width of the viewport.\n * @param height - Height of the viewport.\n * @param minZoom - Minimum zoom level of the resulting viewport.\n * @param maxZoom - Maximum zoom level of the resulting viewport.\n * @param padding - Padding around the bounds.\n * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}.\n * @example\n * const { x, y, zoom } = getViewportForBounds(\n * { x: 0, y: 0, width: 100, height: 100},\n * 1200, 800, 0.5, 2);\n */\nconst getViewportForBounds = (bounds, width, height, minZoom, maxZoom, padding) => {\n // First we resolve all the paddings to actual pixel values\n const p = parsePaddings(padding, width, height);\n const xZoom = (width - p.x) / bounds.width;\n const yZoom = (height - p.y) / bounds.height;\n // We calculate the new x, y, zoom for a centered view\n const zoom = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom;\n const y = height / 2 - boundsCenterY * clampedZoom;\n // Then we calculate the minimum padding, to respect asymmetric paddings\n const newPadding = calculateAppliedPaddings(bounds, x, y, clampedZoom, width, height);\n // We only want to have an offset if the newPadding is smaller than the required padding\n const offset = {\n left: Math.min(newPadding.left - p.left, 0),\n top: Math.min(newPadding.top - p.top, 0),\n right: Math.min(newPadding.right - p.right, 0),\n bottom: Math.min(newPadding.bottom - p.bottom, 0),\n };\n return {\n x: x - offset.left + offset.right,\n y: y - offset.top + offset.bottom,\n zoom: clampedZoom,\n };\n};\nconst isMacOs = () => typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\nfunction isCoordinateExtent(extent) {\n return extent !== undefined && extent !== null && extent !== 'parent';\n}\nfunction getNodeDimensions(node) {\n return {\n width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0,\n height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0,\n };\n}\nfunction nodeHasDimensions(node) {\n return ((node.measured?.width ?? node.width ?? node.initialWidth) !== undefined &&\n (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined);\n}\n/**\n * Convert child position to aboslute position\n *\n * @internal\n * @param position\n * @param parentId\n * @param nodeLookup\n * @param nodeOrigin\n * @returns an internal node with an absolute position\n */\nfunction evaluateAbsolutePosition(position, dimensions = { width: 0, height: 0 }, parentId, nodeLookup, nodeOrigin) {\n const positionAbsolute = { ...position };\n const parent = nodeLookup.get(parentId);\n if (parent) {\n const origin = parent.origin || nodeOrigin;\n positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0];\n positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1];\n }\n return positionAbsolute;\n}\nfunction areSetsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Polyfill for Promise.withResolvers until we can use it in all browsers\n * @internal\n */\nfunction withResolvers() {\n let resolve;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nfunction mergeAriaLabelConfig(partial) {\n return { ...defaultAriaLabelConfig, ...(partial || {}) };\n}\n\nfunction getPointerPosition(event, { snapGrid = [0, 0], snapToGrid = false, transform, containerBounds }) {\n const { x, y } = getEventPosition(event);\n const pointerPos = pointToRendererPoint({ x: x - (containerBounds?.left ?? 0), y: y - (containerBounds?.top ?? 0) }, transform);\n const { x: xSnapped, y: ySnapped } = snapToGrid ? snapPosition(pointerPos, snapGrid) : pointerPos;\n // we need the snapped position in order to be able to skip unnecessary drag events\n return {\n xSnapped,\n ySnapped,\n ...pointerPos,\n };\n}\nconst getDimensions = (node) => ({\n width: node.offsetWidth,\n height: node.offsetHeight,\n});\nconst getHostForElement = (element) => element?.getRootNode?.() || window?.document;\nconst inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];\nfunction isInputDOMNode(event) {\n // using composed path for handling shadow dom\n const target = (event.composedPath?.()?.[0] || event.target);\n if (target?.nodeType !== 1 /* Node.ELEMENT_NODE */)\n return false;\n const isInput = inputTags.includes(target.nodeName) || target.hasAttribute('contenteditable');\n // when an input field is focused we don't want to trigger deletion or movement of nodes\n return isInput || !!target.closest('.nokey');\n}\nconst isMouseEvent = (event) => 'clientX' in event;\nconst getEventPosition = (event, bounds) => {\n const isMouse = isMouseEvent(event);\n const evtX = isMouse ? event.clientX : event.touches?.[0].clientX;\n const evtY = isMouse ? event.clientY : event.touches?.[0].clientY;\n return {\n x: evtX - (bounds?.left ?? 0),\n y: evtY - (bounds?.top ?? 0),\n };\n};\n/*\n * The handle bounds are calculated relative to the node element.\n * We store them in the internals object of the node in order to avoid\n * unnecessary recalculations.\n */\nconst getHandleBounds = (type, nodeElement, nodeBounds, zoom, nodeId) => {\n const handles = nodeElement.querySelectorAll(`.${type}`);\n if (!handles || !handles.length) {\n return null;\n }\n return Array.from(handles).map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute('data-handleid'),\n type,\n nodeId,\n position: handle.getAttribute('data-handlepos'),\n x: (handleBounds.left - nodeBounds.left) / zoom,\n y: (handleBounds.top - nodeBounds.top) / zoom,\n ...getDimensions(handle),\n };\n });\n};\n\nfunction getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }) {\n /*\n * cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n * https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n */\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance, curvature) {\n if (distance >= 0) {\n return 0.5 * distance;\n }\n return curvature * 25 * Math.sqrt(-distance);\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n switch (pos) {\n case Position.Left:\n return [x1 - calculateControlOffset(x1 - x2, c), y1];\n case Position.Right:\n return [x1 + calculateControlOffset(x2 - x1, c), y1];\n case Position.Top:\n return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n case Position.Bottom:\n return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n }\n}\n/**\n * The `getBezierPath` util returns everything you need to render a bezier edge\n *between two nodes.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n * const source = { x: 0, y: 20 };\n * const target = { x: 150, y: 100 };\n *\n * const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({\n * sourceX: source.x,\n * sourceY: source.y,\n * sourcePosition: Position.Right,\n * targetX: target.x,\n * targetY: target.y,\n * targetPosition: Position.Left,\n *});\n *```\n *\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to\n *work with multiple edge paths at once.\n */\nfunction getBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, curvature = 0.25, }) {\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature,\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\n\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nfunction getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\n/**\n * Returns the z-index for an edge based on the node it connects and whether it is selected.\n * By default, edges are rendered below nodes. This behaviour is different for edges that are\n * connected to nodes with a parent, as they are rendered above the parent node.\n */\nfunction getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) {\n if (zIndexMode === 'manual') {\n return zIndex;\n }\n const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex;\n const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0);\n return edgeZ + nodeZ;\n}\nfunction isEdgeVisible({ sourceNode, targetNode, width, height, transform }) {\n const edgeBox = getBoundsOfBoxes(nodeToBox(sourceNode), nodeToBox(targetNode));\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewRect = {\n x: -transform[0] / transform[2],\n y: -transform[1] / transform[2],\n width: width / transform[2],\n height: height / transform[2],\n };\n return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;\n}\n/**\n * The default edge ID generator function. Generates an ID based on the source, target, and handles.\n * @public\n * @param params - The connection or edge to generate an ID for.\n * @returns The generated edge ID.\n */\nconst getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\nconst connectionExists = (edge, edges) => {\n return edges.some((el) => el.source === edge.source &&\n el.target === edge.target &&\n (el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) &&\n (el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle)));\n};\n/**\n * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one.\n * @public\n * @param edgeParams - Either an `Edge` or a `Connection` you want to add.\n * @param edges - The array of all current edges.\n * @param options - Optional configuration object.\n * @returns A new array of edges with the new edge added.\n *\n * @remarks If an edge with the same `target` and `source` already exists (and the same\n *`targetHandle` and `sourceHandle` if those are set), then this util won't add\n *a new edge even if the `id` property is different.\n *\n */\nconst addEdge = (edgeParams, edges, options = {}) => {\n if (!edgeParams.source || !edgeParams.target) {\n devWarn('006', errorMessages['error006']());\n return edges;\n }\n const edgeIdGenerator = options.getEdgeId || getEdgeId;\n let edge;\n if (isEdgeBase(edgeParams)) {\n edge = { ...edgeParams };\n }\n else {\n edge = {\n ...edgeParams,\n id: edgeIdGenerator(edgeParams),\n };\n }\n if (connectionExists(edge, edges)) {\n return edges;\n }\n if (edge.sourceHandle === null) {\n delete edge.sourceHandle;\n }\n if (edge.targetHandle === null) {\n delete edge.targetHandle;\n }\n return edges.concat(edge);\n};\n/**\n * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties.\n *This searches your edge array for an edge with a matching `id` and updates its\n *properties with the connection you provide.\n * @public\n * @param oldEdge - The edge you want to update.\n * @param newConnection - The new connection you want to update the edge with.\n * @param edges - The array of all current edges.\n * @returns The updated edges array.\n *\n * @example\n * ```js\n *const onReconnect = useCallback(\n * (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]);\n *```\n */\nconst reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => {\n const { id: oldEdgeId, ...rest } = oldEdge;\n if (!newConnection.source || !newConnection.target) {\n devWarn('006', errorMessages['error006']());\n return edges;\n }\n const foundEdge = edges.find((e) => e.id === oldEdge.id);\n if (!foundEdge) {\n devWarn('007', errorMessages['error007'](oldEdgeId));\n return edges;\n }\n const edgeIdGenerator = options.getEdgeId || getEdgeId;\n // Remove old edge and create the new edge with parameters of old edge.\n const edge = {\n ...rest,\n id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle,\n };\n return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n\n/**\n * Calculates the straight line path between two points.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n *\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n * const source = { x: 0, y: 20 };\n * const target = { x: 150, y: 100 };\n *\n * const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({\n * sourceX: source.x,\n * sourceY: source.y,\n * sourcePosition: Position.Right,\n * targetX: target.x,\n * targetY: target.y,\n * targetPosition: Position.Left,\n * });\n * ```\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once.\n */\nfunction getStraightPath({ sourceX, sourceY, targetX, targetY, }) {\n const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\n\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 },\n};\nconst getDirection = ({ source, sourcePosition = Position.Bottom, target, }) => {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\nconst distance = (a, b) => Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n/*\n * With this function we try to mimic an orthogonal edge routing behaviour\n * It's not as good as a real orthogonal edge routing, but it's faster and good enough as a default for step and smooth step edges\n */\nfunction getPoints({ source, sourcePosition = Position.Bottom, target, targetPosition = Position.Top, center, offset, stepPosition, }) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped,\n });\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[dirAccessor];\n let points = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [, , defaultOffsetX, defaultOffsetY] = getEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n });\n // opposite handle positions, default case\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n if (dirAccessor === 'x') {\n // Primary direction is horizontal, so stepPosition affects X coordinate\n centerX = center.x ?? (sourceGapped.x + (targetGapped.x - sourceGapped.x) * stepPosition);\n centerY = center.y ?? (sourceGapped.y + targetGapped.y) / 2;\n }\n else {\n // Primary direction is vertical, so stepPosition affects Y coordinate \n centerX = center.x ?? (sourceGapped.x + targetGapped.x) / 2;\n centerY = center.y ?? (sourceGapped.y + (targetGapped.y - sourceGapped.y) * stepPosition);\n }\n /*\n * --->\n * |\n * >---\n */\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n /*\n * |\n * ---\n * |\n */\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n }\n else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n }\n else {\n // sourceTarget means we take x from source and y from target, targetSource is the opposite\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n // this handles edges with same handle positions\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n }\n else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n }\n else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n // these are conditions for handling mixed handle positions like Right -> Bottom for example\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n // we want to place the label on the longest segment of the edge\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n }\n else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target,\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n // no bend\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${x} ${y}`;\n }\n // first segment is horizontal\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${y + bendSize * yDir}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\n/**\n * The `getSmoothStepPath` util returns everything you need to render a stepped path\n * between two nodes. The `borderRadius` property can be used to choose how rounded\n * the corners of those steps are.\n * @public\n * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path)\n * and `offsetX`, `offsetY` between source handle and label.\n *\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n * @example\n * ```js\n * const source = { x: 0, y: 20 };\n * const target = { x: 150, y: 100 };\n *\n * const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({\n * sourceX: source.x,\n * sourceY: source.y,\n * sourcePosition: Position.Right,\n * targetX: target.x,\n * targetY: target.y,\n * targetPosition: Position.Left,\n * });\n * ```\n * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once.\n */\nfunction getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, borderRadius = 5, centerX, centerY, offset = 20, stepPosition = 0.5, }) {\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset,\n stepPosition,\n });\n const path = points.reduce((res, p, i) => {\n let segment = '';\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n }\n else {\n segment = `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, '');\n return [path, labelX, labelY, offsetX, offsetY];\n}\n\nfunction isNodeInitialized(node) {\n return (node &&\n !!(node.internals.handleBounds || node.handles?.length) &&\n !!(node.measured.width || node.width || node.initialWidth));\n}\nfunction getEdgePosition(params) {\n const { sourceNode, targetNode } = params;\n if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) {\n return null;\n }\n const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);\n const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);\n const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle);\n const targetHandle = getHandle$1(\n // when connection type is loose we can define all handles as sources and connect source -> source\n params.connectionMode === ConnectionMode.Strict\n ? targetHandleBounds?.target ?? []\n : (targetHandleBounds?.target ?? []).concat(targetHandleBounds?.source ?? []), params.targetHandle);\n if (!sourceHandle || !targetHandle) {\n params.onError?.('008', errorMessages['error008'](!sourceHandle ? 'source' : 'target', {\n id: params.id,\n sourceHandle: params.sourceHandle,\n targetHandle: params.targetHandle,\n }));\n return null;\n }\n const sourcePosition = sourceHandle?.position || Position.Bottom;\n const targetPosition = targetHandle?.position || Position.Top;\n const source = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n const target = getHandlePosition(targetNode, targetHandle, targetPosition);\n return {\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n sourcePosition,\n targetPosition,\n };\n}\nfunction toHandleBounds(handles) {\n if (!handles) {\n return null;\n }\n const source = [];\n const target = [];\n for (const handle of handles) {\n handle.width = handle.width ?? 1;\n handle.height = handle.height ?? 1;\n if (handle.type === 'source') {\n source.push(handle);\n }\n else if (handle.type === 'target') {\n target.push(handle);\n }\n }\n return {\n source,\n target,\n };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x;\n const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n if (center) {\n return { x: x + width / 2, y: y + height / 2 };\n }\n const position = handle?.position ?? fallbackPosition;\n switch (position) {\n case Position.Top:\n return { x: x + width / 2, y };\n case Position.Right:\n return { x: x + width, y: y + height / 2 };\n case Position.Bottom:\n return { x: x + width / 2, y: y + height };\n case Position.Left:\n return { x, y: y + height / 2 };\n }\n}\nfunction getHandle$1(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n // if no handleId is given, we use the first handle, otherwise we check for the id\n return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\n\nfunction getMarkerId(marker, id) {\n if (!marker) {\n return '';\n }\n if (typeof marker === 'string') {\n return marker;\n }\n const idPrefix = id ? `${id}__` : '';\n return `${idPrefix}${Object.keys(marker)\n .sort()\n .map((key) => `${key}=${marker[key]}`)\n .join('&')}`;\n}\nfunction createMarkerIds(edges, { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }) {\n const ids = new Set();\n return edges\n .reduce((markers, edge) => {\n [edge.markerStart || defaultMarkerStart, edge.markerEnd || defaultMarkerEnd].forEach((marker) => {\n if (marker && typeof marker === 'object') {\n const markerId = getMarkerId(marker, id);\n if (!ids.has(markerId)) {\n markers.push({ id: markerId, color: marker.color || defaultColor, ...marker });\n ids.add(markerId);\n }\n }\n });\n return markers;\n }, [])\n .sort((a, b) => a.id.localeCompare(b.id));\n}\n\nfunction getNodeToolbarTransform(nodeRect, viewport, position, offset, align) {\n let alignmentOffset = 0.5;\n if (align === 'start') {\n alignmentOffset = 0;\n }\n else if (align === 'end') {\n alignmentOffset = 1;\n }\n /*\n * position === Position.Top\n * we set the x any y position of the toolbar based on the nodes position\n */\n let pos = [\n (nodeRect.x + nodeRect.width * alignmentOffset) * viewport.zoom + viewport.x,\n nodeRect.y * viewport.zoom + viewport.y - offset,\n ];\n // and than shift it based on the alignment. The shift values are in %.\n let shift = [-100 * alignmentOffset, -100];\n switch (position) {\n case Position.Right:\n pos = [\n (nodeRect.x + nodeRect.width) * viewport.zoom + viewport.x + offset,\n (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y,\n ];\n shift = [0, -100 * alignmentOffset];\n break;\n case Position.Bottom:\n pos[1] = (nodeRect.y + nodeRect.height) * viewport.zoom + viewport.y + offset;\n shift[1] = 0;\n break;\n case Position.Left:\n pos = [\n nodeRect.x * viewport.zoom + viewport.x - offset,\n (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y,\n ];\n shift = [-100, -100 * alignmentOffset];\n break;\n }\n return `translate(${pos[0]}px, ${pos[1]}px) translate(${shift[0]}%, ${shift[1]}%)`;\n}\n\nconst alignXToPercent = {\n left: 0,\n center: 50,\n right: 100,\n};\nconst alignYToPercent = {\n top: 0,\n center: 50,\n bottom: 100,\n};\nfunction getEdgeToolbarTransform(x, y, zoom, alignX = 'center', alignY = 'center') {\n return `translate(${x}px, ${y}px) scale(${1 / zoom}) translate(${-(alignXToPercent[alignX] ?? 50)}%, ${-(alignYToPercent[alignY] ?? 50)}%)`;\n}\n\nconst SELECTED_NODE_Z = 1000;\nconst ROOT_PARENT_Z_INCREMENT = 10;\nconst defaultOptions = {\n nodeOrigin: [0, 0],\n nodeExtent: infiniteExtent,\n elevateNodesOnSelect: true,\n zIndexMode: 'basic',\n defaults: {},\n};\nconst adoptUserNodesDefaultOptions = {\n ...defaultOptions,\n checkEquality: true,\n};\nfunction mergeObjects(base, incoming) {\n const result = { ...base };\n for (const key in incoming) {\n if (incoming[key] !== undefined) {\n // typecast is safe here, because we check for undefined\n result[key] = incoming[key];\n }\n }\n return result;\n}\nfunction updateAbsolutePositions(nodeLookup, parentLookup, options) {\n const _options = mergeObjects(defaultOptions, options);\n for (const node of nodeLookup.values()) {\n if (node.parentId) {\n updateChildNode(node, nodeLookup, parentLookup, _options);\n }\n else {\n const positionWithOrigin = getNodePositionWithOrigin(node, _options.nodeOrigin);\n const extent = isCoordinateExtent(node.extent) ? node.extent : _options.nodeExtent;\n const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(node));\n node.internals.positionAbsolute = clampedPosition;\n }\n }\n}\nfunction parseHandles(userNode, internalNode) {\n if (!userNode.handles) {\n return !userNode.measured ? undefined : internalNode?.internals.handleBounds;\n }\n const source = [];\n const target = [];\n for (const handle of userNode.handles) {\n const handleBounds = {\n id: handle.id,\n width: handle.width ?? 1,\n height: handle.height ?? 1,\n nodeId: userNode.id,\n x: handle.x,\n y: handle.y,\n position: handle.position,\n type: handle.type,\n };\n if (handle.type === 'source') {\n source.push(handleBounds);\n }\n else if (handle.type === 'target') {\n target.push(handleBounds);\n }\n }\n return {\n source,\n target,\n };\n}\nfunction isManualZIndexMode(zIndexMode) {\n return zIndexMode === 'manual';\n}\nfunction adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {\n const _options = mergeObjects(adoptUserNodesDefaultOptions, options);\n const rootParentIndex = { i: 0 };\n const tmpLookup = new Map(nodeLookup);\n const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0;\n let nodesInitialized = nodes.length > 0;\n nodeLookup.clear();\n parentLookup.clear();\n for (const userNode of nodes) {\n let internalNode = tmpLookup.get(userNode.id);\n if (_options.checkEquality && userNode === internalNode?.internals.userNode) {\n nodeLookup.set(userNode.id, internalNode);\n }\n else {\n const positionWithOrigin = getNodePositionWithOrigin(userNode, _options.nodeOrigin);\n const extent = isCoordinateExtent(userNode.extent) ? userNode.extent : _options.nodeExtent;\n const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(userNode));\n internalNode = {\n ..._options.defaults,\n ...userNode,\n measured: {\n width: userNode.measured?.width,\n height: userNode.measured?.height,\n },\n internals: {\n positionAbsolute: clampedPosition,\n // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured\n handleBounds: parseHandles(userNode, internalNode),\n z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode),\n userNode,\n },\n };\n nodeLookup.set(userNode.id, internalNode);\n }\n if ((internalNode.measured === undefined ||\n internalNode.measured.width === undefined ||\n internalNode.measured.height === undefined) &&\n !internalNode.hidden) {\n nodesInitialized = false;\n }\n if (userNode.parentId) {\n updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex);\n }\n }\n return nodesInitialized;\n}\nfunction updateParentLookup(node, parentLookup) {\n if (!node.parentId) {\n return;\n }\n const childNodes = parentLookup.get(node.parentId);\n if (childNodes) {\n childNodes.set(node.id, node);\n }\n else {\n parentLookup.set(node.parentId, new Map([[node.id, node]]));\n }\n}\n/**\n * Updates positionAbsolute and zIndex of a child node and the parentLookup.\n */\nfunction updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) {\n const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options);\n const parentId = node.parentId;\n const parentNode = nodeLookup.get(parentId);\n if (!parentNode) {\n console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);\n return;\n }\n updateParentLookup(node, parentLookup);\n // We just want to set the rootParentIndex for the first child\n if (rootParentIndex &&\n !parentNode.parentId &&\n parentNode.internals.rootParentIndex === undefined &&\n zIndexMode === 'auto') {\n parentNode.internals.rootParentIndex = ++rootParentIndex.i;\n parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT;\n }\n // But we need to update rootParentIndex.i also when parent has not been updated\n if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) {\n rootParentIndex.i = parentNode.internals.rootParentIndex;\n }\n const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0;\n const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode);\n const { positionAbsolute } = node.internals;\n const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y;\n if (positionChanged || z !== node.internals.z) {\n // we create a new object to mark the node as updated\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n positionAbsolute: positionChanged ? { x, y } : positionAbsolute,\n z,\n },\n });\n }\n}\nfunction calculateZ(node, selectedNodeZ, zIndexMode) {\n const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0;\n if (isManualZIndexMode(zIndexMode)) {\n return zIndex;\n }\n return zIndex + (node.selected ? selectedNodeZ : 0);\n}\nfunction calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) {\n const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute;\n const childDimensions = getNodeDimensions(childNode);\n const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin);\n const clampedPosition = isCoordinateExtent(childNode.extent)\n ? clampPosition(positionWithOrigin, childNode.extent, childDimensions)\n : positionWithOrigin;\n let absolutePosition = clampPosition({ x: parentX + clampedPosition.x, y: parentY + clampedPosition.y }, nodeExtent, childDimensions);\n if (childNode.extent === 'parent') {\n absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode);\n }\n const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode);\n const parentZ = parentNode.internals.z ?? 0;\n return {\n x: absolutePosition.x,\n y: absolutePosition.y,\n z: parentZ >= childZ ? parentZ + 1 : childZ,\n };\n}\nfunction handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0, 0]) {\n const changes = [];\n const parentExpansions = new Map();\n // determine the expanded rectangle the child nodes would take for each parent\n for (const child of children) {\n const parent = nodeLookup.get(child.parentId);\n if (!parent) {\n continue;\n }\n const parentRect = parentExpansions.get(child.parentId)?.expandedRect ?? nodeToRect(parent);\n const expandedRect = getBoundsOfRects(parentRect, child.rect);\n parentExpansions.set(child.parentId, { expandedRect, parent });\n }\n if (parentExpansions.size > 0) {\n parentExpansions.forEach(({ expandedRect, parent }, parentId) => {\n // determine the position & dimensions of the parent\n const positionAbsolute = parent.internals.positionAbsolute;\n const dimensions = getNodeDimensions(parent);\n const origin = parent.origin ?? nodeOrigin;\n // determine how much the parent expands in width and position\n const xChange = expandedRect.x < positionAbsolute.x ? Math.round(Math.abs(positionAbsolute.x - expandedRect.x)) : 0;\n const yChange = expandedRect.y < positionAbsolute.y ? Math.round(Math.abs(positionAbsolute.y - expandedRect.y)) : 0;\n const newWidth = Math.max(dimensions.width, Math.round(expandedRect.width));\n const newHeight = Math.max(dimensions.height, Math.round(expandedRect.height));\n const widthChange = (newWidth - dimensions.width) * origin[0];\n const heightChange = (newHeight - dimensions.height) * origin[1];\n // We need to correct the position of the parent node if the origin is not [0,0]\n if (xChange > 0 || yChange > 0 || widthChange || heightChange) {\n changes.push({\n id: parentId,\n type: 'position',\n position: {\n x: parent.position.x - xChange + widthChange,\n y: parent.position.y - yChange + heightChange,\n },\n });\n /*\n * We move all child nodes in the oppsite direction\n * so the x,y changes of the parent do not move the children\n */\n parentLookup.get(parentId)?.forEach((childNode) => {\n if (!children.some((child) => child.id === childNode.id)) {\n changes.push({\n id: childNode.id,\n type: 'position',\n position: {\n x: childNode.position.x + xChange,\n y: childNode.position.y + yChange,\n },\n });\n }\n });\n }\n // We need to correct the dimensions of the parent node if the origin is not [0,0]\n if (dimensions.width < expandedRect.width || dimensions.height < expandedRect.height || xChange || yChange) {\n changes.push({\n id: parentId,\n type: 'dimensions',\n setAttributes: true,\n dimensions: {\n width: newWidth + (xChange ? origin[0] * xChange - widthChange : 0),\n height: newHeight + (yChange ? origin[1] * yChange - heightChange : 0),\n },\n });\n }\n });\n }\n return changes;\n}\nfunction updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) {\n const viewportNode = domNode?.querySelector('.xyflow__viewport');\n let updatedInternals = false;\n if (!viewportNode) {\n return { changes: [], updatedInternals };\n }\n const changes = [];\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n // in this array we collect nodes, that might trigger changes (like expanding parent)\n const parentExpandChildren = [];\n for (const update of updates.values()) {\n const node = nodeLookup.get(update.id);\n if (!node) {\n continue;\n }\n if (node.hidden) {\n nodeLookup.set(node.id, {\n ...node,\n internals: {\n ...node.internals,\n handleBounds: undefined,\n },\n });\n updatedInternals = true;\n continue;\n }\n const dimensions = getDimensions(update.nodeElement);\n const dimensionChanged = node.measured.width !== dimensions.width || node.measured.height !== dimensions.height;\n const doUpdate = !!(dimensions.width &&\n dimensions.height &&\n (dimensionChanged || !node.internals.handleBounds || update.force));\n if (doUpdate) {\n const nodeBounds = update.nodeElement.getBoundingClientRect();\n const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent;\n let { positionAbsolute } = node.internals;\n if (node.parentId && node.extent === 'parent') {\n positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, nodeLookup.get(node.parentId));\n }\n else if (extent) {\n positionAbsolute = clampPosition(positionAbsolute, extent, dimensions);\n }\n const newNode = {\n ...node,\n measured: dimensions,\n internals: {\n ...node.internals,\n positionAbsolute,\n handleBounds: {\n source: getHandleBounds('source', update.nodeElement, nodeBounds, zoom, node.id),\n target: getHandleBounds('target', update.nodeElement, nodeBounds, zoom, node.id),\n },\n },\n };\n nodeLookup.set(node.id, newNode);\n if (node.parentId) {\n updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode });\n }\n updatedInternals = true;\n if (dimensionChanged) {\n changes.push({\n id: node.id,\n type: 'dimensions',\n dimensions,\n });\n if (node.expandParent && node.parentId) {\n parentExpandChildren.push({\n id: node.id,\n parentId: node.parentId,\n rect: nodeToRect(newNode, nodeOrigin),\n });\n }\n }\n }\n }\n if (parentExpandChildren.length > 0) {\n const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin);\n changes.push(...parentExpandChanges);\n }\n return { changes, updatedInternals };\n}\nasync function panBy({ delta, panZoom, transform, translateExtent, width, height, }) {\n if (!panZoom || (!delta.x && !delta.y)) {\n return Promise.resolve(false);\n }\n const nextViewport = await panZoom.setViewportConstrained({\n x: transform[0] + delta.x,\n y: transform[1] + delta.y,\n zoom: transform[2],\n }, [\n [0, 0],\n [width, height],\n ], translateExtent);\n const transformChanged = !!nextViewport &&\n (nextViewport.x !== transform[0] || nextViewport.y !== transform[1] || nextViewport.k !== transform[2]);\n return Promise.resolve(transformChanged);\n}\n/**\n * this function adds the connection to the connectionLookup\n * at the following keys: nodeId-type-handleId, nodeId-type and nodeId\n * @param type type of the connection\n * @param connection connection that should be added to the lookup\n * @param connectionKey at which key the connection should be added\n * @param connectionLookup reference to the connection lookup\n * @param nodeId nodeId of the connection\n * @param handleId handleId of the conneciton\n */\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n /*\n * We add the connection to the connectionLookup at the following keys\n * 1. nodeId, 2. nodeId-type, 3. nodeId-type-handleId\n * If the key already exists, we add the connection to the existing map\n */\n let key = nodeId;\n const nodeMap = connectionLookup.get(key) || new Map();\n connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n key = `${nodeId}-${type}`;\n const typeMap = connectionLookup.get(key) || new Map();\n connectionLookup.set(key, typeMap.set(connectionKey, connection));\n if (handleId) {\n key = `${nodeId}-${type}-${handleId}`;\n const handleMap = connectionLookup.get(key) || new Map();\n connectionLookup.set(key, handleMap.set(connectionKey, connection));\n }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n connectionLookup.clear();\n edgeLookup.clear();\n for (const edge of edges) {\n const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle);\n edgeLookup.set(edge.id, edge);\n }\n}\n\nfunction shallowNodeData(a, b) {\n if (a === null || b === null) {\n return false;\n }\n const _a = Array.isArray(a) ? a : [a];\n const _b = Array.isArray(b) ? b : [b];\n if (_a.length !== _b.length) {\n return false;\n }\n for (let i = 0; i < _a.length; i++) {\n if (_a[i].id !== _b[i].id || _a[i].type !== _b[i].type || !Object.is(_a[i].data, _b[i].data)) {\n return false;\n }\n }\n return true;\n}\n\nfunction isParentSelected(node, nodeLookup) {\n if (!node.parentId) {\n return false;\n }\n const parentNode = nodeLookup.get(node.parentId);\n if (!parentNode) {\n return false;\n }\n if (parentNode.selected) {\n return true;\n }\n return isParentSelected(parentNode, nodeLookup);\n}\nfunction hasSelector(target, selector, domNode) {\n let current = target;\n do {\n if (current?.matches?.(selector))\n return true;\n if (current === domNode)\n return false;\n current = current?.parentElement;\n } while (current);\n return false;\n}\n// looks for all selected nodes and created a NodeDragItem for each of them\nfunction getDragItems(nodeLookup, nodesDraggable, mousePos, nodeId) {\n const dragItems = new Map();\n for (const [id, node] of nodeLookup) {\n if ((node.selected || node.id === nodeId) &&\n (!node.parentId || !isParentSelected(node, nodeLookup)) &&\n (node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'))) {\n const internalNode = nodeLookup.get(id);\n if (internalNode) {\n dragItems.set(id, {\n id,\n position: internalNode.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - internalNode.internals.positionAbsolute.x,\n y: mousePos.y - internalNode.internals.positionAbsolute.y,\n },\n extent: internalNode.extent,\n parentId: internalNode.parentId,\n origin: internalNode.origin,\n expandParent: internalNode.expandParent,\n internals: {\n positionAbsolute: internalNode.internals.positionAbsolute || { x: 0, y: 0 },\n },\n measured: {\n width: internalNode.measured.width ?? 0,\n height: internalNode.measured.height ?? 0,\n },\n });\n }\n }\n }\n return dragItems;\n}\n/*\n * returns two params:\n * 1. the dragged node (or the first of the list, if we are dragging a node selection)\n * 2. array of selected nodes (for multi selections)\n */\nfunction getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging = true, }) {\n const nodesFromDragItems = [];\n for (const [id, dragItem] of dragItems) {\n const node = nodeLookup.get(id)?.internals.userNode;\n if (node) {\n nodesFromDragItems.push({\n ...node,\n position: dragItem.position,\n dragging,\n });\n }\n }\n if (!nodeId) {\n return [nodesFromDragItems[0], nodesFromDragItems];\n }\n const node = nodeLookup.get(nodeId)?.internals.userNode;\n return [\n !node\n ? nodesFromDragItems[0]\n : {\n ...node,\n position: dragItems.get(nodeId)?.position || node.position,\n dragging,\n },\n nodesFromDragItems,\n ];\n}\n/**\n * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection.\n * This function calculates the snap offset based on the first node in the selection.\n */\nfunction calculateSnapOffset({ dragItems, snapGrid, x, y, }) {\n const refDragItem = dragItems.values().next().value;\n if (!refDragItem) {\n return null;\n }\n const refPos = {\n x: x - refDragItem.distance.x,\n y: y - refDragItem.distance.y,\n };\n const refPosSnapped = snapPosition(refPos, snapGrid);\n return {\n x: refPosSnapped.x - refPos.x,\n y: refPosSnapped.y - refPos.y,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }) {\n let lastPos = { x: null, y: null };\n let autoPanId = 0;\n let dragItems = new Map();\n let autoPanStarted = false;\n let mousePosition = { x: 0, y: 0 };\n let containerBounds = null;\n let dragStarted = false;\n let d3Selection = null;\n let abortDrag = false; // prevents unintentional dragging on multitouch\n let nodePositionsChanged = false;\n // we store the last drag event to be able to use it in the update function\n let dragEvent = null;\n // public functions\n function update({ noDragClassName, handleSelector, domNode, isSelectable, nodeId, nodeClickDistance = 0, }) {\n d3Selection = select(domNode);\n function updateNodes({ x, y }) {\n const { nodeLookup, nodeExtent, snapGrid, snapToGrid, nodeOrigin, onNodeDrag, onSelectionDrag, onError, updateNodePositions, } = getStoreItems();\n lastPos = { x, y };\n let hasChange = false;\n const isMultiDrag = dragItems.size > 1;\n const nodesBox = isMultiDrag && nodeExtent ? rectToBox(getInternalNodesBounds(dragItems)) : null;\n const multiDragSnapOffset = isMultiDrag && snapToGrid\n ? calculateSnapOffset({\n dragItems,\n snapGrid,\n x,\n y,\n })\n : null;\n for (const [id, dragItem] of dragItems) {\n /*\n * if the node is not in the nodeLookup anymore, it was probably deleted while dragging\n */\n if (!nodeLookup.has(id)) {\n continue;\n }\n let nextPosition = { x: x - dragItem.distance.x, y: y - dragItem.distance.y };\n if (snapToGrid) {\n nextPosition = multiDragSnapOffset\n ? {\n x: Math.round(nextPosition.x + multiDragSnapOffset.x),\n y: Math.round(nextPosition.y + multiDragSnapOffset.y),\n }\n : snapPosition(nextPosition, snapGrid);\n }\n let adjustedNodeExtent = null;\n if (isMultiDrag && nodeExtent && !dragItem.extent && nodesBox) {\n const { positionAbsolute } = dragItem.internals;\n const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n const x2 = positionAbsolute.x + dragItem.measured.width - nodesBox.x2 + nodeExtent[1][0];\n const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n const y2 = positionAbsolute.y + dragItem.measured.height - nodesBox.y2 + nodeExtent[1][1];\n adjustedNodeExtent = [\n [x1, y1],\n [x2, y2],\n ];\n }\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: id,\n nextPosition,\n nodeLookup,\n nodeExtent: adjustedNodeExtent ? adjustedNodeExtent : nodeExtent,\n nodeOrigin,\n onError,\n });\n // we want to make sure that we only fire a change event when there is a change\n hasChange = hasChange || dragItem.position.x !== position.x || dragItem.position.y !== position.y;\n dragItem.position = position;\n dragItem.internals.positionAbsolute = positionAbsolute;\n }\n nodePositionsChanged = nodePositionsChanged || hasChange;\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems, true);\n if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n onDrag?.(dragEvent, dragItems, currentNode, currentNodes);\n onNodeDrag?.(dragEvent, currentNode, currentNodes);\n if (!nodeId) {\n onSelectionDrag?.(dragEvent, currentNodes);\n }\n }\n }\n async function autoPan() {\n if (!containerBounds) {\n return;\n }\n const { transform, panBy, autoPanSpeed, autoPanOnNodeDrag } = getStoreItems();\n if (!autoPanOnNodeDrag) {\n autoPanStarted = false;\n cancelAnimationFrame(autoPanId);\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed);\n if (xMovement !== 0 || yMovement !== 0) {\n lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2];\n lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2];\n if (await panBy({ x: xMovement, y: yMovement })) {\n updateNodes(lastPos);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n }\n function startDrag(event) {\n const { nodeLookup, multiSelectionActive, nodesDraggable, transform, snapGrid, snapToGrid, selectNodesOnDrag, onNodeDragStart, onSelectionDragStart, unselectNodesAndEdges, } = getStoreItems();\n dragStarted = true;\n if ((!selectNodesOnDrag || !isSelectable) && !multiSelectionActive && nodeId) {\n if (!nodeLookup.get(nodeId)?.selected) {\n // we need to reset selected nodes when selectNodesOnDrag=false\n unselectNodesAndEdges();\n }\n }\n if (isSelectable && selectNodesOnDrag && nodeId) {\n onNodeMouseDown?.(nodeId);\n }\n const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n lastPos = pointerPos;\n dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId);\n if (dragItems.size > 0 && (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n });\n onDragStart?.(event.sourceEvent, dragItems, currentNode, currentNodes);\n onNodeDragStart?.(event.sourceEvent, currentNode, currentNodes);\n if (!nodeId) {\n onSelectionDragStart?.(event.sourceEvent, currentNodes);\n }\n }\n }\n const d3DragInstance = drag()\n .clickDistance(nodeClickDistance)\n .on('start', (event) => {\n const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } = getStoreItems();\n containerBounds = domNode?.getBoundingClientRect() || null;\n abortDrag = false;\n nodePositionsChanged = false;\n dragEvent = event.sourceEvent;\n if (nodeDragThreshold === 0) {\n startDrag(event);\n }\n const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n lastPos = pointerPos;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n })\n .on('drag', (event) => {\n const { autoPanOnNodeDrag, transform, snapGrid, snapToGrid, nodeDragThreshold, nodeLookup } = getStoreItems();\n const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds });\n dragEvent = event.sourceEvent;\n if ((event.sourceEvent.type === 'touchmove' && event.sourceEvent.touches.length > 1) ||\n // if user deletes a node while dragging, we need to abort the drag to prevent errors\n (nodeId && !nodeLookup.has(nodeId))) {\n abortDrag = true;\n }\n if (abortDrag) {\n return;\n }\n if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) {\n autoPanStarted = true;\n autoPan();\n }\n if (!dragStarted) {\n // Calculate distance in client coordinates for consistent drag threshold behavior across zoom levels\n const currentMousePosition = getEventPosition(event.sourceEvent, containerBounds);\n const x = currentMousePosition.x - mousePosition.x;\n const y = currentMousePosition.y - mousePosition.y;\n const distance = Math.sqrt(x * x + y * y);\n if (distance > nodeDragThreshold) {\n startDrag(event);\n }\n }\n // skip events without movement\n if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems && dragStarted) {\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n updateNodes(pointerPos);\n }\n })\n .on('end', (event) => {\n if (!dragStarted || abortDrag) {\n return;\n }\n autoPanStarted = false;\n dragStarted = false;\n cancelAnimationFrame(autoPanId);\n if (dragItems.size > 0) {\n const { nodeLookup, updateNodePositions, onNodeDragStop, onSelectionDragStop } = getStoreItems();\n if (nodePositionsChanged) {\n updateNodePositions(dragItems, false);\n nodePositionsChanged = false;\n }\n if (onDragStop || onNodeDragStop || (!nodeId && onSelectionDragStop)) {\n const [currentNode, currentNodes] = getEventHandlerParams({\n nodeId,\n dragItems,\n nodeLookup,\n dragging: false,\n });\n onDragStop?.(event.sourceEvent, dragItems, currentNode, currentNodes);\n onNodeDragStop?.(event.sourceEvent, currentNode, currentNodes);\n if (!nodeId) {\n onSelectionDragStop?.(event.sourceEvent, currentNodes);\n }\n }\n }\n })\n .filter((event) => {\n const target = event.target;\n const isDraggable = !event.button &&\n (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, domNode)) &&\n (!handleSelector || hasSelector(target, handleSelector, domNode));\n return isDraggable;\n });\n d3Selection.call(d3DragInstance);\n }\n function destroy() {\n d3Selection?.on('.drag', null);\n }\n return {\n update,\n destroy,\n };\n}\n\nfunction getNodesWithinDistance(position, nodeLookup, distance) {\n const nodes = [];\n const rect = {\n x: position.x - distance,\n y: position.y - distance,\n width: distance * 2,\n height: distance * 2,\n };\n for (const node of nodeLookup.values()) {\n if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n nodes.push(node);\n }\n }\n return nodes;\n}\n/*\n * this distance is used for the area around the user pointer\n * while doing a connection for finding the closest nodes\n */\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n let closestHandles = [];\n let minDistance = Infinity;\n const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n for (const node of closeNodes) {\n const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];\n for (const handle of allHandles) {\n // if the handle is the same as the fromHandle we skip it\n if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n continue;\n }\n // determine absolute position of the handle\n const { x, y } = getHandlePosition(node, handle, handle.position, true);\n const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2));\n if (distance > connectionRadius) {\n continue;\n }\n if (distance < minDistance) {\n closestHandles = [{ ...handle, x, y }];\n minDistance = distance;\n }\n else if (distance === minDistance) {\n // when multiple handles are on the same distance we collect all of them\n closestHandles.push({ ...handle, x, y });\n }\n }\n }\n if (!closestHandles.length) {\n return null;\n }\n // when multiple handles overlay each other we prefer the opposite handle\n if (closestHandles.length > 1) {\n const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source';\n return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n }\n return closestHandles[0];\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n const node = nodeLookup.get(nodeId);\n if (!node) {\n return null;\n }\n const handles = connectionMode === 'strict'\n ? node.internals.handleBounds?.[handleType]\n : [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];\n const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null;\n return handle && withAbsolutePosition\n ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) }\n : handle;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n }\n else if (handleDomNode?.classList.contains('target')) {\n return 'target';\n }\n else if (handleDomNode?.classList.contains('source')) {\n return 'source';\n }\n return null;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n let isValid = null;\n if (isHandleValid) {\n isValid = true;\n }\n else if (isInsideConnectionRadius && !isHandleValid) {\n isValid = false;\n }\n return isValid;\n}\n\nconst alwaysValid = () => true;\nfunction onPointerDown(event, { connectionMode, connectionRadius, handleId, nodeId, edgeUpdaterType, isTarget, domNode, nodeLookup, lib, autoPanOnConnect, flowId, panBy, cancelConnection, onConnectStart, onConnect, onConnectEnd, isValidConnection = alwaysValid, onReconnectEnd, updateConnection, getTransform, getFromHandle, autoPanSpeed, dragThreshold = 1, handleDomNode, }) {\n // when xyflow is used inside a shadow root we can't use document\n const doc = getHostForElement(event.target);\n let autoPanId = 0;\n let closestHandle;\n const { x, y } = getEventPosition(event);\n const handleType = getHandleType(edgeUpdaterType, handleDomNode);\n const containerBounds = domNode?.getBoundingClientRect();\n let connectionStarted = false;\n if (!containerBounds || !handleType) {\n return;\n }\n const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode);\n if (!fromHandleInternal) {\n return;\n }\n let position = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n let connection = null;\n let isValid = false;\n let resultHandleDomNode = null;\n // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n function autoPan() {\n if (!autoPanOnConnect || !containerBounds) {\n return;\n }\n const [x, y] = calcAutoPan(position, containerBounds, autoPanSpeed);\n panBy({ x, y });\n autoPanId = requestAnimationFrame(autoPan);\n }\n // Stays the same for all consecutive pointermove events\n const fromHandle = {\n ...fromHandleInternal,\n nodeId,\n type: handleType,\n position: fromHandleInternal.position,\n };\n const fromInternalNode = nodeLookup.get(nodeId);\n const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true);\n let previousConnection = {\n inProgress: true,\n isValid: null,\n from,\n fromHandle,\n fromPosition: fromHandle.position,\n fromNode: fromInternalNode,\n to: position,\n toHandle: null,\n toPosition: oppositePosition[fromHandle.position],\n toNode: null,\n pointer: position,\n };\n function startConnection() {\n connectionStarted = true;\n updateConnection(previousConnection);\n onConnectStart?.(event, { nodeId, handleId, handleType });\n }\n if (dragThreshold === 0) {\n startConnection();\n }\n function onPointerMove(event) {\n if (!connectionStarted) {\n const { x: evtX, y: evtY } = getEventPosition(event);\n const dx = evtX - x;\n const dy = evtY - y;\n const nextConnectionStarted = dx * dx + dy * dy > dragThreshold * dragThreshold;\n if (!nextConnectionStarted) {\n return;\n }\n startConnection();\n }\n if (!getFromHandle() || !fromHandle) {\n onPointerUp(event);\n return;\n }\n const transform = getTransform();\n position = getEventPosition(event, containerBounds);\n closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle);\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n const result = isValidHandle(event, {\n handle: closestHandle,\n connectionMode,\n fromNodeId: nodeId,\n fromHandleId: handleId,\n fromType: isTarget ? 'target' : 'source',\n isValidConnection,\n doc,\n lib,\n flowId,\n nodeLookup,\n });\n resultHandleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = isConnectionValid(!!closestHandle, result.isValid);\n const fromInternalNode = nodeLookup.get(nodeId);\n const from = fromInternalNode\n ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true)\n : previousConnection.from;\n const newConnection = {\n ...previousConnection,\n from,\n isValid,\n to: result.toHandle && isValid\n ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform)\n : position,\n toHandle: result.toHandle,\n toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null,\n pointer: position,\n };\n updateConnection(newConnection);\n previousConnection = newConnection;\n }\n function onPointerUp(event) {\n // Prevent multi-touch aborting connection\n if ('touches' in event && event.touches.length > 0) {\n return;\n }\n if (connectionStarted) {\n if ((closestHandle || resultHandleDomNode) && connection && isValid) {\n onConnect?.(connection);\n }\n /*\n * it's important to get a fresh reference from the store here\n * in order to get the latest state of onConnectEnd\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { inProgress, ...connectionState } = previousConnection;\n const finalConnectionState = {\n ...connectionState,\n toPosition: previousConnection.toHandle ? previousConnection.toPosition : null,\n };\n onConnectEnd?.(event, finalConnectionState);\n if (edgeUpdaterType) {\n onReconnectEnd?.(event, finalConnectionState);\n }\n }\n cancelConnection();\n cancelAnimationFrame(autoPanId);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n resultHandleDomNode = null;\n doc.removeEventListener('mousemove', onPointerMove);\n doc.removeEventListener('mouseup', onPointerUp);\n doc.removeEventListener('touchmove', onPointerMove);\n doc.removeEventListener('touchend', onPointerUp);\n }\n doc.addEventListener('mousemove', onPointerMove);\n doc.addEventListener('mouseup', onPointerUp);\n doc.addEventListener('touchmove', onPointerMove);\n doc.addEventListener('touchend', onPointerUp);\n}\n// checks if and returns connection in fom of an object { source: 123, target: 312 }\nfunction isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) {\n const isTarget = fromType === 'target';\n const handleDomNode = handle\n ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`)\n : null;\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n /*\n * we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n * because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n */\n const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`) ? handleBelow : handleDomNode;\n const result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n toHandle: null,\n };\n if (handleToCheck) {\n const handleType = getHandleType(undefined, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n const handleId = handleToCheck.getAttribute('data-handleid');\n const connectable = handleToCheck.classList.contains('connectable');\n const connectableEnd = handleToCheck.classList.contains('connectableend');\n if (!handleNodeId || !handleType) {\n return result;\n }\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId,\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n // in strict mode we don't allow target to target or source to source connections\n const isValid = isConnectable &&\n (connectionMode === ConnectionMode.Strict\n ? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target')\n : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n result.isValid = isValid && isValidConnection(connection);\n result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, connectionMode, true);\n }\n return result;\n}\nconst XYHandle = {\n onPointerDown,\n isValid: isValidHandle,\n};\n\nfunction XYMinimap({ domNode, panZoom, getTransform, getViewScale }) {\n const selection = select(domNode);\n function update({ translateExtent, width, height, zoomStep = 1, pannable = true, zoomable = true, inversePan = false, }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const zoomHandler = (event) => {\n if (event.sourceEvent.type !== 'wheel' || !panZoom) {\n return;\n }\n const transform = getTransform();\n const factor = event.sourceEvent.ctrlKey && isMacOs() ? 10 : 1;\n const pinchDelta = -event.sourceEvent.deltaY *\n (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) *\n zoomStep;\n const nextZoom = transform[2] * Math.pow(2, pinchDelta * factor);\n panZoom.scaleTo(nextZoom);\n };\n let panStart = [0, 0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const panStartHandler = (event) => {\n if (event.sourceEvent.type === 'mousedown' || event.sourceEvent.type === 'touchstart') {\n panStart = [\n event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX,\n event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY,\n ];\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const panHandler = (event) => {\n const transform = getTransform();\n if ((event.sourceEvent.type !== 'mousemove' && event.sourceEvent.type !== 'touchmove') || !panZoom) {\n return;\n }\n const panCurrent = [\n event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX,\n event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY,\n ];\n const panDelta = [panCurrent[0] - panStart[0], panCurrent[1] - panStart[1]];\n panStart = panCurrent;\n const moveScale = getViewScale() * Math.max(transform[2], Math.log(transform[2])) * (inversePan ? -1 : 1);\n const position = {\n x: transform[0] - panDelta[0] * moveScale,\n y: transform[1] - panDelta[1] * moveScale,\n };\n const extent = [\n [0, 0],\n [width, height],\n ];\n panZoom.setViewportConstrained({\n x: position.x,\n y: position.y,\n zoom: transform[2],\n }, extent, translateExtent);\n };\n const zoomAndPanHandler = zoom()\n .on('start', panStartHandler)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .on('zoom', pannable ? panHandler : null)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .on('zoom.wheel', zoomable ? zoomHandler : null);\n selection.call(zoomAndPanHandler, {});\n }\n function destroy() {\n selection.on('zoom', null);\n }\n return {\n update,\n destroy,\n pointer,\n };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst transformToViewport = (transform) => ({\n x: transform.x,\n y: transform.y,\n zoom: transform.k,\n});\nconst viewportToTransform = ({ x, y, zoom }) => zoomIdentity.translate(x, y).scale(zoom);\nconst isWrappedWithClass = (event, className) => event.target.closest(`.${className}`);\nconst isRightClickPan = (panOnDrag, usedButton) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\n// taken from d3-ease: https://github.com/d3/d3-ease/blob/main/src/cubic.js\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nconst getD3Transition = (selection, duration = 0, ease = defaultEase, onEnd = () => { }) => {\n const hasDuration = typeof duration === 'number' && duration > 0;\n if (!hasDuration) {\n onEnd();\n }\n return hasDuration ? selection.transition().duration(duration).ease(ease).on('end', onEnd) : selection;\n};\nconst wheelDelta = (event) => {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * factor;\n};\n\nfunction createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }) {\n return (event) => {\n if (isWrappedWithClass(event, noWheelClassName)) {\n if (event.ctrlKey) {\n event.preventDefault(); // stop native page zoom for pinch zooming\n }\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property('__zoom').k || 1;\n // macos sets ctrlKey=true for pinch gesture on a trackpad\n if (event.ctrlKey && zoomOnPinch) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom = currentZoom * Math.pow(2, pinchDelta);\n // @ts-ignore\n d3Zoom.scaleTo(d3Selection, zoom, point, event);\n return;\n }\n /*\n * increase scroll speed in firefox\n * firefox: deltaMode === 1; chrome: deltaMode === 0\n */\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n // this enables vertical scrolling with shift + scroll on windows\n if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) {\n deltaX = event.deltaY * deltaNormalize;\n deltaY = 0;\n }\n d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed, \n // @ts-ignore\n { internal: true });\n const nextViewport = transformToViewport(d3Selection.property('__zoom'));\n clearTimeout(zoomPanValues.panScrollTimeout);\n /*\n * for pan on scroll we need to handle the event calls on our own\n * we can't use the start, zoom and end events from d3-zoom\n * because start and move gets called on every scroll event and not once at the beginning\n */\n if (!zoomPanValues.isPanScrolling) {\n zoomPanValues.isPanScrolling = true;\n onPanZoomStart?.(event, nextViewport);\n }\n else {\n onPanZoom?.(event, nextViewport);\n zoomPanValues.panScrollTimeout = setTimeout(() => {\n onPanZoomEnd?.(event, nextViewport);\n zoomPanValues.isPanScrolling = false;\n }, 150);\n }\n };\n}\nfunction createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) {\n return function (event, d) {\n const isWheel = event.type === 'wheel';\n // we still want to enable pinch zooming even if preventScrolling is set to false\n const preventZoom = !preventScrolling && isWheel && !event.ctrlKey;\n const hasNoWheelClass = isWrappedWithClass(event, noWheelClassName);\n // if user is pinch zooming above a nowheel element, we don't want the browser to zoom\n if (event.ctrlKey && isWheel && hasNoWheelClass) {\n event.preventDefault();\n }\n if (preventZoom || hasNoWheelClass) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n };\n}\nfunction createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }) {\n return (event) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n const viewport = transformToViewport(event.transform);\n // we need to remember it here, because it's always 0 in the \"zoom\" event\n zoomPanValues.mouseButton = event.sourceEvent?.button || 0;\n zoomPanValues.isZoomingOrPanning = true;\n zoomPanValues.prevViewport = viewport;\n if (event.sourceEvent?.type === 'mousedown') {\n onDraggingChange(true);\n }\n if (onPanZoomStart) {\n onPanZoomStart?.(event.sourceEvent, viewport);\n }\n };\n}\nfunction createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }) {\n return (event) => {\n zoomPanValues.usedRightMouseButton = !!(onPaneContextMenu && isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0));\n if (!event.sourceEvent?.sync) {\n onTransformChange([event.transform.x, event.transform.y, event.transform.k]);\n }\n if (onPanZoom && !event.sourceEvent?.internal) {\n onPanZoom?.(event.sourceEvent, transformToViewport(event.transform));\n }\n };\n}\nfunction createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }) {\n return (event) => {\n if (event.sourceEvent?.internal) {\n return;\n }\n zoomPanValues.isZoomingOrPanning = false;\n if (onPaneContextMenu &&\n isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) &&\n !zoomPanValues.usedRightMouseButton &&\n event.sourceEvent) {\n onPaneContextMenu(event.sourceEvent);\n }\n zoomPanValues.usedRightMouseButton = false;\n onDraggingChange(false);\n if (onPanZoomEnd) {\n const viewport = transformToViewport(event.transform);\n zoomPanValues.prevViewport = viewport;\n clearTimeout(zoomPanValues.timerId);\n zoomPanValues.timerId = setTimeout(() => {\n onPanZoomEnd?.(event.sourceEvent, viewport);\n }, \n // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll\n panOnScroll ? 150 : 0);\n }\n };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }) {\n return (event) => {\n const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n const pinchZoom = zoomOnPinch && event.ctrlKey;\n const isWheelEvent = event.type === 'wheel';\n if (event.button === 1 &&\n event.type === 'mousedown' &&\n (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))) {\n return true;\n }\n // if all interactions are disabled, we prevent all zoom events\n if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n }\n // during a selection we prevent all other interactions\n if (userSelectionActive) {\n return false;\n }\n // we want to disable pinch-zooming while making a connection\n if (connectionInProgress && !isWheelEvent) {\n return false;\n }\n // if the target element is inside an element with the nowheel class, we prevent zooming\n if (isWrappedWithClass(event, noWheelClassName) && isWheelEvent) {\n return false;\n }\n // if the target element is inside an element with the nopan class, we prevent panning\n if (isWrappedWithClass(event, noPanClassName) &&\n (!isWheelEvent || (panOnScroll && isWheelEvent && !zoomActivationKeyPressed))) {\n return false;\n }\n if (!zoomOnPinch && event.ctrlKey && isWheelEvent) {\n return false;\n }\n if (!zoomOnPinch && event.type === 'touchstart' && event.touches?.length > 1) {\n event.preventDefault(); // if you manage to start with 2 touches, we prevent native zoom\n return false;\n }\n // when there is no scroll handling enabled, we prevent all wheel events\n if (!zoomScroll && !panOnScroll && !pinchZoom && isWheelEvent) {\n return false;\n }\n // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n return false;\n }\n // if the pane is only movable using allowed clicks\n if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n return false;\n }\n // We only allow right clicks if pan on drag is set to right click\n const buttonAllowed = (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n // default filter for d3-zoom\n return (!event.ctrlKey || isWheelEvent) && buttonAllowed;\n };\n}\n\nfunction XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }) {\n const zoomPanValues = {\n isZoomingOrPanning: false,\n usedRightMouseButton: false,\n prevViewport: { x: 0, y: 0, zoom: 0 },\n mouseButton: 0,\n timerId: undefined,\n panScrollTimeout: undefined,\n isPanScrolling: false,\n };\n const bbox = domNode.getBoundingClientRect();\n const d3ZoomInstance = zoom().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent);\n const d3Selection = select(domNode).call(d3ZoomInstance);\n setViewportConstrained({\n x: viewport.x,\n y: viewport.y,\n zoom: clamp(viewport.zoom, minZoom, maxZoom),\n }, [\n [0, 0],\n [bbox.width, bbox.height],\n ], translateExtent);\n const d3ZoomHandler = d3Selection.on('wheel.zoom');\n const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom');\n d3ZoomInstance.wheelDelta(wheelDelta);\n function setTransform(transform, options) {\n if (d3Selection) {\n return new Promise((resolve) => {\n d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).transform(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), transform);\n });\n }\n return Promise.resolve(false);\n }\n // public functions\n function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange, connectionInProgress, paneClickDistance, selectionOnDrag, }) {\n if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {\n destroy();\n }\n const isPanOnScroll = panOnScroll && !zoomActivationKeyPressed && !userSelectionActive;\n d3ZoomInstance.clickDistance(selectionOnDrag ? Infinity : !isNumeric(paneClickDistance) || paneClickDistance < 0 ? 0 : paneClickDistance);\n const wheelHandler = isPanOnScroll\n ? createPanOnScrollHandler({\n zoomPanValues,\n noWheelClassName,\n d3Selection,\n d3Zoom: d3ZoomInstance,\n panOnScrollMode,\n panOnScrollSpeed,\n zoomOnPinch,\n onPanZoomStart,\n onPanZoom,\n onPanZoomEnd,\n })\n : createZoomOnScrollHandler({\n noWheelClassName,\n preventScrolling,\n d3ZoomHandler,\n });\n d3Selection.on('wheel.zoom', wheelHandler, { passive: false });\n if (!userSelectionActive) {\n // pan zoom start\n const startHandler = createPanZoomStartHandler({\n zoomPanValues,\n onDraggingChange,\n onPanZoomStart,\n });\n d3ZoomInstance.on('start', startHandler);\n // pan zoom\n const panZoomHandler = createPanZoomHandler({\n zoomPanValues,\n panOnDrag,\n onPaneContextMenu: !!onPaneContextMenu,\n onPanZoom,\n onTransformChange,\n });\n d3ZoomInstance.on('zoom', panZoomHandler);\n // pan zoom end\n const panZoomEndHandler = createPanZoomEndHandler({\n zoomPanValues,\n panOnDrag,\n panOnScroll,\n onPaneContextMenu,\n onPanZoomEnd,\n onDraggingChange,\n });\n d3ZoomInstance.on('end', panZoomEndHandler);\n }\n const filter = createFilter({\n zoomActivationKeyPressed,\n panOnDrag,\n zoomOnScroll,\n panOnScroll,\n zoomOnDoubleClick,\n zoomOnPinch,\n userSelectionActive,\n noPanClassName,\n noWheelClassName,\n lib,\n connectionInProgress,\n });\n d3ZoomInstance.filter(filter);\n /*\n * We cannot add zoomOnDoubleClick to the filter above because\n * double tapping on touch screens circumvents the filter and\n * dblclick.zoom is fired on the selection directly\n */\n if (zoomOnDoubleClick) {\n d3Selection.on('dblclick.zoom', d3DblClickZoomHandler);\n }\n else {\n d3Selection.on('dblclick.zoom', null);\n }\n }\n function destroy() {\n d3ZoomInstance.on('zoom', null);\n }\n async function setViewportConstrained(viewport, extent, translateExtent) {\n const nextTransform = viewportToTransform(viewport);\n const contrainedTransform = d3ZoomInstance?.constrain()(nextTransform, extent, translateExtent);\n if (contrainedTransform) {\n await setTransform(contrainedTransform);\n }\n return new Promise((resolve) => resolve(contrainedTransform));\n }\n async function setViewport(viewport, options) {\n const nextTransform = viewportToTransform(viewport);\n await setTransform(nextTransform, options);\n return new Promise((resolve) => resolve(nextTransform));\n }\n function syncViewport(viewport) {\n if (d3Selection) {\n const nextTransform = viewportToTransform(viewport);\n const currentTransform = d3Selection.property('__zoom');\n if (currentTransform.k !== viewport.zoom ||\n currentTransform.x !== viewport.x ||\n currentTransform.y !== viewport.y) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n d3ZoomInstance?.transform(d3Selection, nextTransform, null, { sync: true });\n }\n }\n }\n function getViewport() {\n const transform = d3Selection ? zoomTransform(d3Selection.node()) : { x: 0, y: 0, k: 1 };\n return { x: transform.x, y: transform.y, zoom: transform.k };\n }\n function scaleTo(zoom, options) {\n if (d3Selection) {\n return new Promise((resolve) => {\n d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleTo(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), zoom);\n });\n }\n return Promise.resolve(false);\n }\n function scaleBy(factor, options) {\n if (d3Selection) {\n return new Promise((resolve) => {\n d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleBy(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), factor);\n });\n }\n return Promise.resolve(false);\n }\n function setScaleExtent(scaleExtent) {\n d3ZoomInstance?.scaleExtent(scaleExtent);\n }\n function setTranslateExtent(translateExtent) {\n d3ZoomInstance?.translateExtent(translateExtent);\n }\n function setClickDistance(distance) {\n const validDistance = !isNumeric(distance) || distance < 0 ? 0 : distance;\n d3ZoomInstance?.clickDistance(validDistance);\n }\n return {\n update,\n destroy,\n setViewport,\n setViewportConstrained,\n getViewport,\n scaleTo,\n scaleBy,\n setScaleExtent,\n setTranslateExtent,\n syncViewport,\n setClickDistance,\n };\n}\n\n/**\n * Used to determine the variant of the resize control\n *\n * @public\n */\nvar ResizeControlVariant;\n(function (ResizeControlVariant) {\n ResizeControlVariant[\"Line\"] = \"line\";\n ResizeControlVariant[\"Handle\"] = \"handle\";\n})(ResizeControlVariant || (ResizeControlVariant = {}));\nconst XY_RESIZER_HANDLE_POSITIONS = ['top-left', 'top-right', 'bottom-left', 'bottom-right'];\nconst XY_RESIZER_LINE_POSITIONS = ['top', 'right', 'bottom', 'left'];\n\n/**\n * Get all connecting edges for a given set of nodes\n * @param width - new width of the node\n * @param prevWidth - previous width of the node\n * @param height - new height of the node\n * @param prevHeight - previous height of the node\n * @param affectsX - whether to invert the resize direction for the x axis\n * @param affectsY - whether to invert the resize direction for the y axis\n * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease\n */\nfunction getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }) {\n const deltaWidth = width - prevWidth;\n const deltaHeight = height - prevHeight;\n const direction = [deltaWidth > 0 ? 1 : deltaWidth < 0 ? -1 : 0, deltaHeight > 0 ? 1 : deltaHeight < 0 ? -1 : 0];\n if (deltaWidth && affectsX) {\n direction[0] = direction[0] * -1;\n }\n if (deltaHeight && affectsY) {\n direction[1] = direction[1] * -1;\n }\n return direction;\n}\n/**\n * Parses the control position that is being dragged to dimensions that are being resized\n * @param controlPosition - position of the control that is being dragged\n * @returns isHorizontal, isVertical, affectsX, affectsY,\n */\nfunction getControlDirection(controlPosition) {\n const isHorizontal = controlPosition.includes('right') || controlPosition.includes('left');\n const isVertical = controlPosition.includes('bottom') || controlPosition.includes('top');\n const affectsX = controlPosition.includes('left');\n const affectsY = controlPosition.includes('top');\n return {\n isHorizontal,\n isVertical,\n affectsX,\n affectsY,\n };\n}\nfunction getLowerExtentClamp(lowerExtent, lowerBound) {\n return Math.max(0, lowerBound - lowerExtent);\n}\nfunction getUpperExtentClamp(upperExtent, upperBound) {\n return Math.max(0, upperExtent - upperBound);\n}\nfunction getSizeClamp(size, minSize, maxSize) {\n return Math.max(0, minSize - size, size - maxSize);\n}\nfunction xor(a, b) {\n return a ? !b : b;\n}\n/**\n * Calculates new width & height and x & y of node after resize based on pointer position\n * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize,\n * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed\n * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes\n * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio!\n * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the\n * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio,\n * the resize amount is always kept in distX & distY amount (the distance in mouse movement)\n * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values.\n * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0],\n * then calculating the restrictions as usual\n * @param startValues - starting values of resize\n * @param controlDirection - dimensions affected by the resize\n * @param pointerPosition - the current pointer position corrected for snapping\n * @param boundaries - minimum and maximum dimensions of the node\n * @param keepAspectRatio - prevent changes of asprect ratio\n * @returns x, y, width and height of the node after resize\n */\nfunction getDimensionsAfterResize(startValues, controlDirection, pointerPosition, boundaries, keepAspectRatio, nodeOrigin, extent, childExtent) {\n let { affectsX, affectsY } = controlDirection;\n const { isHorizontal, isVertical } = controlDirection;\n const isDiagonal = isHorizontal && isVertical;\n const { xSnapped, ySnapped } = pointerPosition;\n const { minWidth, maxWidth, minHeight, maxHeight } = boundaries;\n const { x: startX, y: startY, width: startWidth, height: startHeight, aspectRatio } = startValues;\n let distX = Math.floor(isHorizontal ? xSnapped - startValues.pointerX : 0);\n let distY = Math.floor(isVertical ? ySnapped - startValues.pointerY : 0);\n const newWidth = startWidth + (affectsX ? -distX : distX);\n const newHeight = startHeight + (affectsY ? -distY : distY);\n const originOffsetX = -nodeOrigin[0] * startWidth;\n const originOffsetY = -nodeOrigin[1] * startHeight;\n // Check if maxWidth, minWWidth, maxHeight, minHeight are restricting the resize\n let clampX = getSizeClamp(newWidth, minWidth, maxWidth);\n let clampY = getSizeClamp(newHeight, minHeight, maxHeight);\n // Check if extent is restricting the resize\n if (extent) {\n let xExtentClamp = 0;\n let yExtentClamp = 0;\n if (affectsX && distX < 0) {\n xExtentClamp = getLowerExtentClamp(startX + distX + originOffsetX, extent[0][0]);\n }\n else if (!affectsX && distX > 0) {\n xExtentClamp = getUpperExtentClamp(startX + newWidth + originOffsetX, extent[1][0]);\n }\n if (affectsY && distY < 0) {\n yExtentClamp = getLowerExtentClamp(startY + distY + originOffsetY, extent[0][1]);\n }\n else if (!affectsY && distY > 0) {\n yExtentClamp = getUpperExtentClamp(startY + newHeight + originOffsetY, extent[1][1]);\n }\n clampX = Math.max(clampX, xExtentClamp);\n clampY = Math.max(clampY, yExtentClamp);\n }\n // Check if the child extent is restricting the resize\n if (childExtent) {\n let xExtentClamp = 0;\n let yExtentClamp = 0;\n if (affectsX && distX > 0) {\n xExtentClamp = getUpperExtentClamp(startX + distX, childExtent[0][0]);\n }\n else if (!affectsX && distX < 0) {\n xExtentClamp = getLowerExtentClamp(startX + newWidth, childExtent[1][0]);\n }\n if (affectsY && distY > 0) {\n yExtentClamp = getUpperExtentClamp(startY + distY, childExtent[0][1]);\n }\n else if (!affectsY && distY < 0) {\n yExtentClamp = getLowerExtentClamp(startY + newHeight, childExtent[1][1]);\n }\n clampX = Math.max(clampX, xExtentClamp);\n clampY = Math.max(clampY, yExtentClamp);\n }\n // Check if the aspect ratio resizing of the other side is restricting the resize\n if (keepAspectRatio) {\n if (isHorizontal) {\n // Check if the max dimensions might be restricting the resize\n const aspectHeightClamp = getSizeClamp(newWidth / aspectRatio, minHeight, maxHeight) * aspectRatio;\n clampX = Math.max(clampX, aspectHeightClamp);\n // Check if the extent is restricting the resize\n if (extent) {\n let aspectExtentClamp = 0;\n if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) {\n aspectExtentClamp =\n getUpperExtentClamp(startY + originOffsetY + newWidth / aspectRatio, extent[1][1]) * aspectRatio;\n }\n else {\n aspectExtentClamp =\n getLowerExtentClamp(startY + originOffsetY + (affectsX ? distX : -distX) / aspectRatio, extent[0][1]) *\n aspectRatio;\n }\n clampX = Math.max(clampX, aspectExtentClamp);\n }\n // Check if the child extent is restricting the resize\n if (childExtent) {\n let aspectExtentClamp = 0;\n if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) {\n aspectExtentClamp = getLowerExtentClamp(startY + newWidth / aspectRatio, childExtent[1][1]) * aspectRatio;\n }\n else {\n aspectExtentClamp =\n getUpperExtentClamp(startY + (affectsX ? distX : -distX) / aspectRatio, childExtent[0][1]) * aspectRatio;\n }\n clampX = Math.max(clampX, aspectExtentClamp);\n }\n }\n // Do the same thing for vertical resizing\n if (isVertical) {\n const aspectWidthClamp = getSizeClamp(newHeight * aspectRatio, minWidth, maxWidth) / aspectRatio;\n clampY = Math.max(clampY, aspectWidthClamp);\n if (extent) {\n let aspectExtentClamp = 0;\n if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) {\n aspectExtentClamp =\n getUpperExtentClamp(startX + newHeight * aspectRatio + originOffsetX, extent[1][0]) / aspectRatio;\n }\n else {\n aspectExtentClamp =\n getLowerExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio + originOffsetX, extent[0][0]) /\n aspectRatio;\n }\n clampY = Math.max(clampY, aspectExtentClamp);\n }\n if (childExtent) {\n let aspectExtentClamp = 0;\n if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) {\n aspectExtentClamp = getLowerExtentClamp(startX + newHeight * aspectRatio, childExtent[1][0]) / aspectRatio;\n }\n else {\n aspectExtentClamp =\n getUpperExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio, childExtent[0][0]) / aspectRatio;\n }\n clampY = Math.max(clampY, aspectExtentClamp);\n }\n }\n }\n distY = distY + (distY < 0 ? clampY : -clampY);\n distX = distX + (distX < 0 ? clampX : -clampX);\n if (keepAspectRatio) {\n if (isDiagonal) {\n if (newWidth > newHeight * aspectRatio) {\n distY = (xor(affectsX, affectsY) ? -distX : distX) / aspectRatio;\n }\n else {\n distX = (xor(affectsX, affectsY) ? -distY : distY) * aspectRatio;\n }\n }\n else {\n if (isHorizontal) {\n distY = distX / aspectRatio;\n affectsY = affectsX;\n }\n else {\n distX = distY * aspectRatio;\n affectsX = affectsY;\n }\n }\n }\n const x = affectsX ? startX + distX : startX;\n const y = affectsY ? startY + distY : startY;\n return {\n width: startWidth + (affectsX ? -distX : distX),\n height: startHeight + (affectsY ? -distY : distY),\n x: nodeOrigin[0] * distX * (!affectsX ? 1 : -1) + x,\n y: nodeOrigin[1] * distY * (!affectsY ? 1 : -1) + y,\n };\n}\n\nconst initPrevValues = { width: 0, height: 0, x: 0, y: 0 };\nconst initStartValues = {\n ...initPrevValues,\n pointerX: 0,\n pointerY: 0,\n aspectRatio: 1,\n};\nfunction nodeToParentExtent(node) {\n return [\n [0, 0],\n [node.measured.width, node.measured.height],\n ];\n}\nfunction nodeToChildExtent(child, parent, nodeOrigin) {\n const x = parent.position.x + child.position.x;\n const y = parent.position.y + child.position.y;\n const width = child.measured.width ?? 0;\n const height = child.measured.height ?? 0;\n const originOffsetX = nodeOrigin[0] * width;\n const originOffsetY = nodeOrigin[1] * height;\n return [\n [x - originOffsetX, y - originOffsetY],\n [x + width - originOffsetX, y + height - originOffsetY],\n ];\n}\nfunction XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {\n const selection = select(domNode);\n let params = {\n controlDirection: getControlDirection('bottom-right'),\n boundaries: {\n minWidth: 0,\n minHeight: 0,\n maxWidth: Number.MAX_VALUE,\n maxHeight: Number.MAX_VALUE,\n },\n resizeDirection: undefined,\n keepAspectRatio: false,\n };\n function update({ controlPosition, boundaries, keepAspectRatio, resizeDirection, onResizeStart, onResize, onResizeEnd, shouldResize, }) {\n let prevValues = { ...initPrevValues };\n let startValues = { ...initStartValues };\n params = {\n boundaries,\n resizeDirection,\n keepAspectRatio,\n controlDirection: getControlDirection(controlPosition),\n };\n let node = undefined;\n let containerBounds = null;\n let childNodes = [];\n let parentNode = undefined; // Needed to fix expandParent\n let parentExtent = undefined;\n let childExtent = undefined;\n // we only want to trigger onResizeEnd if onResize was actually called\n let resizeDetected = false;\n const dragHandler = drag()\n .on('start', (event) => {\n const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, paneDomNode } = getStoreItems();\n node = nodeLookup.get(nodeId);\n if (!node) {\n return;\n }\n containerBounds = paneDomNode?.getBoundingClientRect() ?? null;\n const { xSnapped, ySnapped } = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n containerBounds,\n });\n prevValues = {\n width: node.measured.width ?? 0,\n height: node.measured.height ?? 0,\n x: node.position.x ?? 0,\n y: node.position.y ?? 0,\n };\n startValues = {\n ...prevValues,\n pointerX: xSnapped,\n pointerY: ySnapped,\n aspectRatio: prevValues.width / prevValues.height,\n };\n parentNode = undefined;\n if (node.parentId && (node.extent === 'parent' || node.expandParent)) {\n parentNode = nodeLookup.get(node.parentId);\n parentExtent = parentNode && node.extent === 'parent' ? nodeToParentExtent(parentNode) : undefined;\n }\n /*\n * Collect all child nodes to correct their relative positions when top/left changes\n * Determine largest minimal extent the parent node is allowed to resize to\n */\n childNodes = [];\n childExtent = undefined;\n for (const [childId, child] of nodeLookup) {\n if (child.parentId === nodeId) {\n childNodes.push({\n id: childId,\n position: { ...child.position },\n extent: child.extent,\n });\n if (child.extent === 'parent' || child.expandParent) {\n const extent = nodeToChildExtent(child, node, child.origin ?? nodeOrigin);\n if (childExtent) {\n childExtent = [\n [Math.min(extent[0][0], childExtent[0][0]), Math.min(extent[0][1], childExtent[0][1])],\n [Math.max(extent[1][0], childExtent[1][0]), Math.max(extent[1][1], childExtent[1][1])],\n ];\n }\n else {\n childExtent = extent;\n }\n }\n }\n }\n onResizeStart?.(event, { ...prevValues });\n })\n .on('drag', (event) => {\n const { transform, snapGrid, snapToGrid, nodeOrigin: storeNodeOrigin } = getStoreItems();\n const pointerPosition = getPointerPosition(event.sourceEvent, {\n transform,\n snapGrid,\n snapToGrid,\n containerBounds,\n });\n const childChanges = [];\n if (!node) {\n return;\n }\n const { x: prevX, y: prevY, width: prevWidth, height: prevHeight } = prevValues;\n const change = {};\n const nodeOrigin = node.origin ?? storeNodeOrigin;\n const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, parentExtent, childExtent);\n const isWidthChange = width !== prevWidth;\n const isHeightChange = height !== prevHeight;\n const isXPosChange = x !== prevX && isWidthChange;\n const isYPosChange = y !== prevY && isHeightChange;\n if (!isXPosChange && !isYPosChange && !isWidthChange && !isHeightChange) {\n return;\n }\n if (isXPosChange || isYPosChange || nodeOrigin[0] === 1 || nodeOrigin[1] === 1) {\n change.x = isXPosChange ? x : prevValues.x;\n change.y = isYPosChange ? y : prevValues.y;\n prevValues.x = change.x;\n prevValues.y = change.y;\n /*\n * when top/left changes, correct the relative positions of child nodes\n * so that they stay in the same position\n */\n if (childNodes.length > 0) {\n const xChange = x - prevX;\n const yChange = y - prevY;\n for (const childNode of childNodes) {\n childNode.position = {\n x: childNode.position.x - xChange + nodeOrigin[0] * (width - prevWidth),\n y: childNode.position.y - yChange + nodeOrigin[1] * (height - prevHeight),\n };\n childChanges.push(childNode);\n }\n }\n }\n if (isWidthChange || isHeightChange) {\n change.width =\n isWidthChange && (!params.resizeDirection || params.resizeDirection === 'horizontal')\n ? width\n : prevValues.width;\n change.height =\n isHeightChange && (!params.resizeDirection || params.resizeDirection === 'vertical')\n ? height\n : prevValues.height;\n prevValues.width = change.width;\n prevValues.height = change.height;\n }\n // Fix expandParent when resizing from top/left\n if (parentNode && node.expandParent) {\n const xLimit = nodeOrigin[0] * (change.width ?? 0);\n if (change.x && change.x < xLimit) {\n prevValues.x = xLimit;\n startValues.x = startValues.x - (change.x - xLimit);\n }\n const yLimit = nodeOrigin[1] * (change.height ?? 0);\n if (change.y && change.y < yLimit) {\n prevValues.y = yLimit;\n startValues.y = startValues.y - (change.y - yLimit);\n }\n }\n const direction = getResizeDirection({\n width: prevValues.width,\n prevWidth,\n height: prevValues.height,\n prevHeight,\n affectsX: params.controlDirection.affectsX,\n affectsY: params.controlDirection.affectsY,\n });\n const nextValues = { ...prevValues, direction };\n const callResize = shouldResize?.(event, nextValues);\n if (callResize === false) {\n return;\n }\n resizeDetected = true;\n onResize?.(event, nextValues);\n onChange(change, childChanges);\n })\n .on('end', (event) => {\n if (!resizeDetected) {\n return;\n }\n onResizeEnd?.(event, { ...prevValues });\n onEnd?.({ ...prevValues });\n resizeDetected = false;\n });\n selection.call(dragHandler);\n }\n function destroy() {\n selection.on('.drag', null);\n }\n return {\n update,\n destroy,\n };\n}\n\nexport { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","\"use client\"\nimport { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { createContext, useContext, useMemo, forwardRef, useEffect, useRef, useState, useLayoutEffect, useCallback, memo } from 'react';\nimport cc from 'classcat';\nimport { errorMessages, mergeAriaLabelConfig, infiniteExtent, isInputDOMNode, getViewportForBounds, pointToRendererPoint, rendererPointToPoint, isNodeBase, isEdgeBase, getElementsToRemove, isRectObject, nodeToRect, getOverlappingArea, getNodesBounds, withResolvers, evaluateAbsolutePosition, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, getNodesInside, areSetsEqual, XYDrag, snapPosition, calculateNodePosition, Position, ConnectionMode, isMouseEvent, XYHandle, getHostForElement, addEdge, getInternalNodesBounds, isNumeric, nodeHasDimensions, getNodeDimensions, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, getConnectionStatus, ConnectionLineType, updateConnectionLookup, adoptUserNodes, initialConnection, devWarn, defaultAriaLabelConfig, updateNodeInternals, updateAbsolutePositions, getHandlePosition, handleExpandParent, panBy, fitViewport, isMacOs, areConnectionMapsEqual, handleConnectionChange, shallowNodeData, XYMinimap, getBoundsOfRects, ResizeControlVariant, XYResizer, XY_RESIZER_LINE_POSITIONS, XY_RESIZER_HANDLE_POSITIONS, getNodeToolbarTransform, getEdgeToolbarTransform } from '@xyflow/system';\nexport { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, addEdge, getBezierEdgeCenter, getBezierPath, getConnectedEdges, getEdgeCenter, getIncomers, getNodesBounds, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds, reconnectEdge } from '@xyflow/system';\nimport { useStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport { createPortal } from 'react-dom';\n\nconst StoreContext = createContext(null);\nconst Provider$1 = StoreContext.Provider;\n\nconst zustandErrorMessage = errorMessages['error001']();\n/**\n * This hook can be used to subscribe to internal state changes of the React Flow\n * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand)\n * state management library, so you should check out their docs for more details.\n *\n * @public\n * @param selector - A selector function that returns a slice of the flow's internal state.\n * Extracting or transforming just the state you need is a good practice to avoid unnecessary\n * re-renders.\n * @param equalityFn - A function to compare the previous and next value. This is incredibly useful\n * for preventing unnecessary re-renders. Good sensible defaults are using `Object.is` or importing\n * `zustand/shallow`, but you can be as granular as you like.\n * @returns The selected state slice.\n *\n * @example\n * ```ts\n * const nodes = useStore((state) => state.nodes);\n * ```\n *\n * @remarks This hook should only be used if there is no other way to access the internal\n * state. For many of the common use cases, there are dedicated hooks available\n * such as {@link useReactFlow}, {@link useViewport}, etc.\n */\nfunction useStore(selector, equalityFn) {\n const store = useContext(StoreContext);\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n return useStoreWithEqualityFn(store, selector, equalityFn);\n}\n/**\n * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions.\n *\n * @returns The store object.\n * @example\n * ```ts\n * const store = useStoreApi();\n * ```\n *\n * @remarks This hook should only be used if there is no other way to access the internal\n * state. For many of the common use cases, there are dedicated hooks available\n * such as {@link useReactFlow}, {@link useViewport}, etc.\n */\nfunction useStoreApi() {\n const store = useContext(StoreContext);\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n return useMemo(() => ({\n getState: store.getState,\n setState: store.setState,\n subscribe: store.subscribe,\n }), [store]);\n}\n\nconst style = { display: 'none' };\nconst ariaLiveStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0px, 0px, 0px, 0px)',\n clipPath: 'inset(100%)',\n};\nconst ARIA_NODE_DESC_KEY = 'react-flow__node-desc';\nconst ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';\nconst ARIA_LIVE_MESSAGE = 'react-flow__aria-live';\nconst ariaLiveSelector = (s) => s.ariaLiveMessage;\nconst ariaLabelConfigSelector = (s) => s.ariaLabelConfig;\nfunction AriaLiveMessage({ rfId }) {\n const ariaLiveMessage = useStore(ariaLiveSelector);\n return (jsx(\"div\", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, \"aria-live\": \"assertive\", \"aria-atomic\": \"true\", style: ariaLiveStyle, children: ariaLiveMessage }));\n}\nfunction A11yDescriptions({ rfId, disableKeyboardA11y }) {\n const ariaLabelConfig = useStore(ariaLabelConfigSelector);\n return (jsxs(Fragment, { children: [jsx(\"div\", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: disableKeyboardA11y\n ? ariaLabelConfig['node.a11yDescription.default']\n : ariaLabelConfig['node.a11yDescription.keyboardDisabled'] }), jsx(\"div\", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: ariaLabelConfig['edge.a11yDescription.default'] }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] }));\n}\n\n/**\n * The `<Panel />` component helps you position content above the viewport.\n * It is used internally by the [`<MiniMap />`](/api-reference/components/minimap)\n * and [`<Controls />`](/api-reference/components/controls) components.\n *\n * @public\n *\n * @example\n * ```jsx\n *import { ReactFlow, Background, Panel } from '@xyflow/react';\n *\n *export default function Flow() {\n * return (\n * <ReactFlow nodes={[]} fitView>\n * <Panel position=\"top-left\">top-left</Panel>\n * <Panel position=\"top-center\">top-center</Panel>\n * <Panel position=\"top-right\">top-right</Panel>\n * <Panel position=\"bottom-left\">bottom-left</Panel>\n * <Panel position=\"bottom-center\">bottom-center</Panel>\n * <Panel position=\"bottom-right\">bottom-right</Panel>\n * </ReactFlow>\n * );\n *}\n *```\n */\nconst Panel = forwardRef(({ position = 'top-left', children, className, style, ...rest }, ref) => {\n const positionClasses = `${position}`.split('-');\n return (jsx(\"div\", { className: cc(['react-flow__panel', className, ...positionClasses]), style: style, ref: ref, ...rest, children: children }));\n});\nPanel.displayName = 'Panel';\n\nfunction Attribution({ proOptions, position = 'bottom-right' }) {\n if (proOptions?.hideAttribution) {\n return null;\n }\n return (jsx(Panel, { position: position, className: \"react-flow__attribution\", \"data-message\": \"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev\", children: jsx(\"a\", { href: \"https://reactflow.dev\", target: \"_blank\", rel: \"noopener noreferrer\", \"aria-label\": \"React Flow attribution\", children: \"React Flow\" }) }));\n}\n\nconst selector$m = (s) => {\n const selectedNodes = [];\n const selectedEdges = [];\n for (const [, node] of s.nodeLookup) {\n if (node.selected) {\n selectedNodes.push(node.internals.userNode);\n }\n }\n for (const [, edge] of s.edgeLookup) {\n if (edge.selected) {\n selectedEdges.push(edge);\n }\n }\n return { selectedNodes, selectedEdges };\n};\nconst selectId = (obj) => obj.id;\nfunction areEqual(a, b) {\n return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) &&\n shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId)));\n}\nfunction SelectionListenerInner({ onSelectionChange, }) {\n const store = useStoreApi();\n const { selectedNodes, selectedEdges } = useStore(selector$m, areEqual);\n useEffect(() => {\n const params = { nodes: selectedNodes, edges: selectedEdges };\n onSelectionChange?.(params);\n store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params));\n }, [selectedNodes, selectedEdges, onSelectionChange]);\n return null;\n}\nconst changeSelector = (s) => !!s.onSelectionChangeHandlers;\nfunction SelectionListener({ onSelectionChange, }) {\n const storeHasSelectionChangeHandlers = useStore(changeSelector);\n if (onSelectionChange || storeHasSelectionChangeHandlers) {\n return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange });\n }\n return null;\n}\n\nconst defaultNodeOrigin = [0, 0];\nconst defaultViewport = { x: 0, y: 0, zoom: 1 };\n\n/*\n * This component helps us to update the store with the values coming from the user.\n * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`)\n * and values that have a dedicated setter function in the store (like `setNodes`).\n */\n// These fields exist in the global store, and we need to keep them up to date\nconst reactFlowFieldsToTrack = [\n 'nodes',\n 'edges',\n 'defaultNodes',\n 'defaultEdges',\n 'onConnect',\n 'onConnectStart',\n 'onConnectEnd',\n 'onClickConnectStart',\n 'onClickConnectEnd',\n 'nodesDraggable',\n 'autoPanOnNodeFocus',\n 'nodesConnectable',\n 'nodesFocusable',\n 'edgesFocusable',\n 'edgesReconnectable',\n 'elevateNodesOnSelect',\n 'elevateEdgesOnSelect',\n 'minZoom',\n 'maxZoom',\n 'nodeExtent',\n 'onNodesChange',\n 'onEdgesChange',\n 'elementsSelectable',\n 'connectionMode',\n 'snapGrid',\n 'snapToGrid',\n 'translateExtent',\n 'connectOnClick',\n 'defaultEdgeOptions',\n 'fitView',\n 'fitViewOptions',\n 'onNodesDelete',\n 'onEdgesDelete',\n 'onDelete',\n 'onNodeDrag',\n 'onNodeDragStart',\n 'onNodeDragStop',\n 'onSelectionDrag',\n 'onSelectionDragStart',\n 'onSelectionDragStop',\n 'onMoveStart',\n 'onMove',\n 'onMoveEnd',\n 'noPanClassName',\n 'nodeOrigin',\n 'autoPanOnConnect',\n 'autoPanOnNodeDrag',\n 'onError',\n 'connectionRadius',\n 'isValidConnection',\n 'selectNodesOnDrag',\n 'nodeDragThreshold',\n 'connectionDragThreshold',\n 'onBeforeDelete',\n 'debug',\n 'autoPanSpeed',\n 'ariaLabelConfig',\n 'zIndexMode',\n];\n// rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update\nconst fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId'];\nconst selector$l = (s) => ({\n setNodes: s.setNodes,\n setEdges: s.setEdges,\n setMinZoom: s.setMinZoom,\n setMaxZoom: s.setMaxZoom,\n setTranslateExtent: s.setTranslateExtent,\n setNodeExtent: s.setNodeExtent,\n reset: s.reset,\n setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n});\nconst initPrevValues = {\n /*\n * these are values that are also passed directly to other components\n * than the StoreUpdater. We can reduce the number of setStore calls\n * by setting the same values here as prev fields.\n */\n translateExtent: infiniteExtent,\n nodeOrigin: defaultNodeOrigin,\n minZoom: 0.5,\n maxZoom: 2,\n elementsSelectable: true,\n noPanClassName: 'nopan',\n rfId: '1',\n};\nfunction StoreUpdater(props) {\n const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges, } = useStore(selector$l, shallow);\n const store = useStoreApi();\n useEffect(() => {\n setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);\n return () => {\n // when we reset the store we also need to reset the previous fields\n previousFields.current = initPrevValues;\n reset();\n };\n }, []);\n const previousFields = useRef(initPrevValues);\n useEffect(() => {\n for (const fieldName of fieldsToTrack) {\n const fieldValue = props[fieldName];\n const previousFieldValue = previousFields.current[fieldName];\n if (fieldValue === previousFieldValue)\n continue;\n if (typeof props[fieldName] === 'undefined')\n continue;\n // Custom handling with dedicated setters for some fields\n if (fieldName === 'nodes')\n setNodes(fieldValue);\n else if (fieldName === 'edges')\n setEdges(fieldValue);\n else if (fieldName === 'minZoom')\n setMinZoom(fieldValue);\n else if (fieldName === 'maxZoom')\n setMaxZoom(fieldValue);\n else if (fieldName === 'translateExtent')\n setTranslateExtent(fieldValue);\n else if (fieldName === 'nodeExtent')\n setNodeExtent(fieldValue);\n else if (fieldName === 'ariaLabelConfig')\n store.setState({ ariaLabelConfig: mergeAriaLabelConfig(fieldValue) });\n // Renamed fields\n else if (fieldName === 'fitView')\n store.setState({ fitViewQueued: fieldValue });\n else if (fieldName === 'fitViewOptions')\n store.setState({ fitViewOptions: fieldValue });\n // General case\n else\n store.setState({ [fieldName]: fieldValue });\n }\n previousFields.current = props;\n }, \n // Only re-run the effect if one of the fields we track changes\n fieldsToTrack.map((fieldName) => props[fieldName]));\n return null;\n}\n\nfunction getMediaQuery() {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return null;\n }\n return window.matchMedia('(prefers-color-scheme: dark)');\n}\n/**\n * Hook for receiving the current color mode class 'dark' or 'light'.\n *\n * @internal\n * @param colorMode - The color mode to use ('dark', 'light' or 'system')\n */\nfunction useColorModeClass(colorMode) {\n const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);\n useEffect(() => {\n if (colorMode !== 'system') {\n setColorModeClass(colorMode);\n return;\n }\n const mediaQuery = getMediaQuery();\n const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');\n updateColorModeClass();\n mediaQuery?.addEventListener('change', updateColorModeClass);\n return () => {\n mediaQuery?.removeEventListener('change', updateColorModeClass);\n };\n }, [colorMode]);\n return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';\n}\n\nconst defaultDoc = typeof document !== 'undefined' ? document : null;\n/**\n * This hook lets you listen for specific key codes and tells you whether they are\n * currently pressed or not.\n *\n * @public\n * @param options - Options\n *\n * @example\n * ```tsx\n *import { useKeyPress } from '@xyflow/react';\n *\n *export default function () {\n * const spacePressed = useKeyPress('Space');\n * const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']);\n *\n * return (\n * <div>\n * {spacePressed && <p>Space pressed!</p>}\n * {cmdAndSPressed && <p>Cmd + S pressed!</p>}\n * </div>\n * );\n *}\n *```\n */\nfunction useKeyPress(\n/**\n * The key code (string or array of strings) specifies which key(s) should trigger\n * an action.\n *\n * A **string** can represent:\n * - A **single key**, e.g. `'a'`\n * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'`\n *\n * An **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']`\n * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`.\n * @default null\n */\nkeyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) {\n const [keyPressed, setKeyPressed] = useState(false);\n // we need to remember if a modifier key is pressed in order to track it\n const modifierPressed = useRef(false);\n // we need to remember the pressed keys in order to support combinations\n const pressedKeys = useRef(new Set([]));\n /*\n * keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n * keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n * used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n * we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n * and the key is \"Meta\". We want users to be able to pass keys and codes so we assume that the key is meant when\n * we can't find it in the list of keysToWatch.\n */\n const [keyCodes, keysToWatch] = useMemo(() => {\n if (keyCode !== null) {\n const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n const keys = keyCodeArr\n .filter((kc) => typeof kc === 'string')\n /*\n * we first replace all '+' with '\\n' which we will use to split the keys on\n * then we replace '\\n\\n' with '\\n+', this way we can also support the combination 'key++'\n * in the end we simply split on '\\n' to get the key array\n */\n .map((kc) => kc.replace('+', '\\n').replace('\\n\\n', '\\n+').split('\\n'));\n const keysFlat = keys.reduce((res, item) => res.concat(...item), []);\n return [keys, keysFlat];\n }\n return [[], []];\n }, [keyCode]);\n useEffect(() => {\n const target = options?.target ?? defaultDoc;\n const actInsideInputWithModifier = options?.actInsideInputWithModifier ?? true;\n if (keyCode !== null) {\n const downHandler = (event) => {\n modifierPressed.current = event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n const preventAction = (!modifierPressed.current || (modifierPressed.current && !actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n pressedKeys.current.add(event[keyOrCode]);\n if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n const target = (event.composedPath?.()?.[0] || event.target);\n const isInteractiveElement = target?.nodeName === 'BUTTON' || target?.nodeName === 'A';\n if (options.preventDefault !== false && (modifierPressed.current || !isInteractiveElement)) {\n event.preventDefault();\n }\n setKeyPressed(true);\n }\n };\n const upHandler = (event) => {\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n setKeyPressed(false);\n pressedKeys.current.clear();\n }\n else {\n pressedKeys.current.delete(event[keyOrCode]);\n }\n // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key\n if (event.key === 'Meta') {\n pressedKeys.current.clear();\n }\n modifierPressed.current = false;\n };\n const resetHandler = () => {\n pressedKeys.current.clear();\n setKeyPressed(false);\n };\n target?.addEventListener('keydown', downHandler);\n target?.addEventListener('keyup', upHandler);\n window.addEventListener('blur', resetHandler);\n window.addEventListener('contextmenu', resetHandler);\n return () => {\n target?.removeEventListener('keydown', downHandler);\n target?.removeEventListener('keyup', upHandler);\n window.removeEventListener('blur', resetHandler);\n window.removeEventListener('contextmenu', resetHandler);\n };\n }\n }, [keyCode, setKeyPressed]);\n return keyPressed;\n}\n// utils\nfunction isMatchingKey(keyCodes, pressedKeys, isUp) {\n return (keyCodes\n /*\n * we only want to compare same sizes of keyCode definitions\n * and pressed keys. When the user specified 'Meta' as a key somewhere\n * this would also be truthy without this filter when user presses 'Meta' + 'r'\n */\n .filter((keys) => isUp || keys.length === pressedKeys.size)\n /*\n * since we want to support multiple possibilities only one of the\n * combinations need to be part of the pressed keys\n */\n .some((keys) => keys.every((k) => pressedKeys.has(k))));\n}\nfunction useKeyOrCode(eventCode, keysToWatch) {\n return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n\n/**\n * Hook for getting viewport helper functions.\n *\n * @internal\n * @returns viewport helper functions\n */\nconst useViewportHelper = () => {\n const store = useStoreApi();\n return useMemo(() => {\n return {\n zoomIn: (options) => {\n const { panZoom } = store.getState();\n return panZoom ? panZoom.scaleBy(1.2, { duration: options?.duration }) : Promise.resolve(false);\n },\n zoomOut: (options) => {\n const { panZoom } = store.getState();\n return panZoom ? panZoom.scaleBy(1 / 1.2, { duration: options?.duration }) : Promise.resolve(false);\n },\n zoomTo: (zoomLevel, options) => {\n const { panZoom } = store.getState();\n return panZoom ? panZoom.scaleTo(zoomLevel, { duration: options?.duration }) : Promise.resolve(false);\n },\n getZoom: () => store.getState().transform[2],\n setViewport: async (viewport, options) => {\n const { transform: [tX, tY, tZoom], panZoom, } = store.getState();\n if (!panZoom) {\n return Promise.resolve(false);\n }\n await panZoom.setViewport({\n x: viewport.x ?? tX,\n y: viewport.y ?? tY,\n zoom: viewport.zoom ?? tZoom,\n }, options);\n return Promise.resolve(true);\n },\n getViewport: () => {\n const [x, y, zoom] = store.getState().transform;\n return { x, y, zoom };\n },\n setCenter: async (x, y, options) => {\n return store.getState().setCenter(x, y, options);\n },\n fitBounds: async (bounds, options) => {\n const { width, height, minZoom, maxZoom, panZoom } = store.getState();\n const viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1);\n if (!panZoom) {\n return Promise.resolve(false);\n }\n await panZoom.setViewport(viewport, {\n duration: options?.duration,\n ease: options?.ease,\n interpolate: options?.interpolate,\n });\n return Promise.resolve(true);\n },\n screenToFlowPosition: (clientPosition, options = {}) => {\n const { transform, snapGrid, snapToGrid, domNode } = store.getState();\n if (!domNode) {\n return clientPosition;\n }\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const correctedPosition = {\n x: clientPosition.x - domX,\n y: clientPosition.y - domY,\n };\n const _snapGrid = options.snapGrid ?? snapGrid;\n const _snapToGrid = options.snapToGrid ?? snapToGrid;\n return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid);\n },\n flowToScreenPosition: (flowPosition) => {\n const { transform, domNode } = store.getState();\n if (!domNode) {\n return flowPosition;\n }\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const rendererPosition = rendererPointToPoint(flowPosition, transform);\n return {\n x: rendererPosition.x + domX,\n y: rendererPosition.y + domY,\n };\n },\n };\n }, []);\n};\n\n/*\n * This function applies changes to nodes or edges that are triggered by React Flow internally.\n * When you drag a node for example, React Flow will send a position change update.\n * This function then applies the changes and returns the updated elements.\n */\nfunction applyChanges(changes, elements) {\n const updatedElements = [];\n /*\n * By storing a map of changes for each element, we can a quick lookup as we\n * iterate over the elements array!\n */\n const changesMap = new Map();\n const addItemChanges = [];\n for (const change of changes) {\n if (change.type === 'add') {\n addItemChanges.push(change);\n continue;\n }\n else if (change.type === 'remove' || change.type === 'replace') {\n /*\n * For a 'remove' change we can safely ignore any other changes queued for\n * the same element, it's going to be removed anyway!\n */\n changesMap.set(change.id, [change]);\n }\n else {\n const elementChanges = changesMap.get(change.id);\n if (elementChanges) {\n /*\n * If we have some changes queued already, we can do a mutable update of\n * that array and save ourselves some copying.\n */\n elementChanges.push(change);\n }\n else {\n changesMap.set(change.id, [change]);\n }\n }\n }\n for (const element of elements) {\n const changes = changesMap.get(element.id);\n /*\n * When there are no changes for an element we can just push it unmodified,\n * no need to copy it.\n */\n if (!changes) {\n updatedElements.push(element);\n continue;\n }\n // If we have a 'remove' change queued, it'll be the only change in the array\n if (changes[0].type === 'remove') {\n continue;\n }\n if (changes[0].type === 'replace') {\n updatedElements.push({ ...changes[0].item });\n continue;\n }\n /**\n * For other types of changes, we want to start with a shallow copy of the\n * object so React knows this element has changed. Sequential changes will\n * each _mutate_ this object, so there's only ever one copy.\n */\n const updatedElement = { ...element };\n for (const change of changes) {\n applyChange(change, updatedElement);\n }\n updatedElements.push(updatedElement);\n }\n /*\n * we need to wait for all changes to be applied before adding new items\n * to be able to add them at the correct index\n */\n if (addItemChanges.length) {\n addItemChanges.forEach((change) => {\n if (change.index !== undefined) {\n updatedElements.splice(change.index, 0, { ...change.item });\n }\n else {\n updatedElements.push({ ...change.item });\n }\n });\n }\n return updatedElements;\n}\n// Applies a single change to an element. This is a *mutable* update.\nfunction applyChange(change, element) {\n switch (change.type) {\n case 'select': {\n element.selected = change.selected;\n break;\n }\n case 'position': {\n if (typeof change.position !== 'undefined') {\n element.position = change.position;\n }\n if (typeof change.dragging !== 'undefined') {\n element.dragging = change.dragging;\n }\n break;\n }\n case 'dimensions': {\n if (typeof change.dimensions !== 'undefined') {\n element.measured = {\n ...change.dimensions,\n };\n if (change.setAttributes) {\n if (change.setAttributes === true || change.setAttributes === 'width') {\n element.width = change.dimensions.width;\n }\n if (change.setAttributes === true || change.setAttributes === 'height') {\n element.height = change.dimensions.height;\n }\n }\n }\n if (typeof change.resizing === 'boolean') {\n element.resizing = change.resizing;\n }\n break;\n }\n }\n}\n/**\n * Drop in function that applies node changes to an array of nodes.\n * @public\n * @param changes - Array of changes to apply.\n * @param nodes - Array of nodes to apply the changes to.\n * @returns Array of updated nodes.\n * @example\n *```tsx\n *import { useState, useCallback } from 'react';\n *import { ReactFlow, applyNodeChanges, type Node, type Edge, type OnNodesChange } from '@xyflow/react';\n *\n *export default function Flow() {\n * const [nodes, setNodes] = useState<Node[]>([]);\n * const [edges, setEdges] = useState<Edge[]>([]);\n * const onNodesChange: OnNodesChange = useCallback(\n * (changes) => {\n * setNodes((oldNodes) => applyNodeChanges(changes, oldNodes));\n * },\n * [setNodes],\n * );\n *\n * return (\n * <ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} />\n * );\n *}\n *```\n * @remarks Various events on the <ReactFlow /> component can produce an {@link NodeChange}\n * that describes how to update the edges of your flow in some way.\n * If you don't need any custom behaviour, this util can be used to take an array\n * of these changes and apply them to your edges.\n */\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\n/**\n * Drop in function that applies edge changes to an array of edges.\n * @public\n * @param changes - Array of changes to apply.\n * @param edges - Array of edge to apply the changes to.\n * @returns Array of updated edges.\n * @example\n * ```tsx\n *import { useState, useCallback } from 'react';\n *import { ReactFlow, applyEdgeChanges } from '@xyflow/react';\n *\n *export default function Flow() {\n * const [nodes, setNodes] = useState([]);\n * const [edges, setEdges] = useState([]);\n * const onEdgesChange = useCallback(\n * (changes) => {\n * setEdges((oldEdges) => applyEdgeChanges(changes, oldEdges));\n * },\n * [setEdges],\n * );\n *\n * return (\n * <ReactFlow nodes={nodes} edges={edges} onEdgesChange={onEdgesChange} />\n * );\n *}\n *```\n * @remarks Various events on the <ReactFlow /> component can produce an {@link EdgeChange}\n * that describes how to update the edges of your flow in some way.\n * If you don't need any custom behaviour, this util can be used to take an array\n * of these changes and apply them to your edges.\n */\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nfunction createSelectionChange(id, selected) {\n return {\n id,\n type: 'select',\n selected,\n };\n}\nfunction getSelectionChanges(items, selectedIds = new Set(), mutateItem = false) {\n const changes = [];\n for (const [id, item] of items) {\n const willBeSelected = selectedIds.has(id);\n // we don't want to set all items to selected=false on the first selection\n if (!(item.selected === undefined && !willBeSelected) && item.selected !== willBeSelected) {\n if (mutateItem) {\n /*\n * this hack is needed for nodes. When the user dragged a node, it's selected.\n * When another node gets dragged, we need to deselect the previous one,\n * in order to have only one selected node at a time - the onNodesChange callback comes too late here :/\n */\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n return changes;\n}\nfunction getElementsDiffChanges({ items = [], lookup, }) {\n const changes = [];\n const itemsLookup = new Map(items.map((item) => [item.id, item]));\n for (const [index, item] of items.entries()) {\n const lookupItem = lookup.get(item.id);\n const storeItem = lookupItem?.internals?.userNode ?? lookupItem;\n if (storeItem !== undefined && storeItem !== item) {\n changes.push({ id: item.id, item: item, type: 'replace' });\n }\n if (storeItem === undefined) {\n changes.push({ item: item, type: 'add', index });\n }\n }\n for (const [id] of lookup) {\n const nextNode = itemsLookup.get(id);\n if (nextNode === undefined) {\n changes.push({ id, type: 'remove' });\n }\n }\n return changes;\n}\nfunction elementToRemoveChange(item) {\n return {\n id: item.id,\n type: 'remove',\n };\n}\n\n/**\n * Test whether an object is usable as an [`Node`](/api-reference/types/node).\n * In TypeScript this is a type guard that will narrow the type of whatever you pass in to\n * [`Node`](/api-reference/types/node) if it returns `true`.\n *\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true\n * @param element - The element to test.\n * @returns Tests whether the provided value can be used as a `Node`. If you're using TypeScript,\n * this function acts as a type guard and will narrow the type of the value to `Node` if it returns\n * `true`.\n *\n * @example\n * ```js\n *import { isNode } from '@xyflow/react';\n *\n *if (isNode(node)) {\n * // ...\n *}\n *```\n */\nconst isNode = (element) => isNodeBase(element);\n/**\n * Test whether an object is usable as an [`Edge`](/api-reference/types/edge).\n * In TypeScript this is a type guard that will narrow the type of whatever you pass in to\n * [`Edge`](/api-reference/types/edge) if it returns `true`.\n *\n * @public\n * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true\n * @param element - The element to test\n * @returns Tests whether the provided value can be used as an `Edge`. If you're using TypeScript,\n * this function acts as a type guard and will narrow the type of the value to `Edge` if it returns\n * `true`.\n *\n * @example\n * ```js\n *import { isEdge } from '@xyflow/react';\n *\n *if (isEdge(edge)) {\n * // ...\n *}\n *```\n */\nconst isEdge = (element) => isEdgeBase(element);\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nfunction fixedForwardRef(render) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return forwardRef(render);\n}\n\n// we need this hook to prevent a warning when using react-flow in SSR\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n/**\n * This hook returns a queue that can be used to batch updates.\n *\n * @param runQueue - a function that gets called when the queue is flushed\n * @internal\n *\n * @returns a Queue object\n */\nfunction useQueue(runQueue) {\n /*\n * Because we're using a ref above, we need some way to let React know when to\n * actually process the queue. We increment this number any time we mutate the\n * queue, creating a new state to trigger the layout effect below.\n * Using a boolean dirty flag here instead would lead to issues related to\n * automatic batching. (https://github.com/xyflow/xyflow/issues/4779)\n */\n const [serial, setSerial] = useState(BigInt(0));\n /*\n * A reference of all the batched updates to process before the next render. We\n * want a reference here so multiple synchronous calls to `setNodes` etc can be\n * batched together.\n */\n const [queue] = useState(() => createQueue(() => setSerial(n => n + BigInt(1))));\n /*\n * Layout effects are guaranteed to run before the next render which means we\n * shouldn't run into any issues with stale state or weird issues that come from\n * rendering things one frame later than expected (we used to use `setTimeout`).\n */\n useIsomorphicLayoutEffect(() => {\n const queueItems = queue.get();\n if (queueItems.length) {\n runQueue(queueItems);\n queue.reset();\n }\n }, [serial]);\n return queue;\n}\nfunction createQueue(cb) {\n let queue = [];\n return {\n get: () => queue,\n reset: () => {\n queue = [];\n },\n push: (item) => {\n queue.push(item);\n cb();\n },\n };\n}\n\nconst BatchContext = createContext(null);\n/**\n * This is a context provider that holds and processes the node and edge update queues\n * that are needed to handle setNodes, addNodes, setEdges and addEdges.\n *\n * @internal\n */\nfunction BatchProvider({ children, }) {\n const store = useStoreApi();\n const nodeQueueHandler = useCallback((queueItems) => {\n const { nodes = [], setNodes, hasDefaultNodes, onNodesChange, nodeLookup, fitViewQueued, onNodesChangeMiddlewareMap, } = store.getState();\n /*\n * This is essentially an `Array.reduce` in imperative clothing. Processing\n * this queue is a relatively hot path so we'd like to avoid the overhead of\n * array methods where we can.\n */\n let next = nodes;\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n let changes = getElementsDiffChanges({\n items: next,\n lookup: nodeLookup,\n });\n for (const middleware of onNodesChangeMiddlewareMap.values()) {\n changes = middleware(changes);\n }\n if (hasDefaultNodes) {\n setNodes(next);\n }\n // We only want to fire onNodesChange if there are changes to the nodes\n if (changes.length > 0) {\n onNodesChange?.(changes);\n }\n else if (fitViewQueued) {\n // If there are no changes to the nodes, we still need to call setNodes\n // to trigger a re-render and fitView.\n window.requestAnimationFrame(() => {\n const { fitViewQueued, nodes, setNodes } = store.getState();\n if (fitViewQueued) {\n setNodes(nodes);\n }\n });\n }\n }, []);\n const nodeQueue = useQueue(nodeQueueHandler);\n const edgeQueueHandler = useCallback((queueItems) => {\n const { edges = [], setEdges, hasDefaultEdges, onEdgesChange, edgeLookup } = store.getState();\n let next = edges;\n for (const payload of queueItems) {\n next = typeof payload === 'function' ? payload(next) : payload;\n }\n if (hasDefaultEdges) {\n setEdges(next);\n }\n else if (onEdgesChange) {\n onEdgesChange(getElementsDiffChanges({\n items: next,\n lookup: edgeLookup,\n }));\n }\n }, []);\n const edgeQueue = useQueue(edgeQueueHandler);\n const value = useMemo(() => ({ nodeQueue, edgeQueue }), []);\n return jsx(BatchContext.Provider, { value: value, children: children });\n}\nfunction useBatchContext() {\n const batchContext = useContext(BatchContext);\n if (!batchContext) {\n throw new Error('useBatchContext must be used within a BatchProvider');\n }\n return batchContext;\n}\n\nconst selector$k = (s) => !!s.panZoom;\n/**\n * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow.\n *\n * @public\n * @example\n * ```jsx\n *import { useCallback, useState } from 'react';\n *import { useReactFlow } from '@xyflow/react';\n *\n *export function NodeCounter() {\n * const reactFlow = useReactFlow();\n * const [count, setCount] = useState(0);\n * const countNodes = useCallback(() => {\n * setCount(reactFlow.getNodes().length);\n * // you need to pass it as a dependency if you are using it with useEffect or useCallback\n * // because at the first render, it's not initialized yet and some functions might not work.\n * }, [reactFlow]);\n *\n * return (\n * <div>\n * <button onClick={countNodes}>Update count</button>\n * <p>There are {count} nodes in the flow.</p>\n * </div>\n * );\n *}\n *```\n */\nfunction useReactFlow() {\n const viewportHelper = useViewportHelper();\n const store = useStoreApi();\n const batchContext = useBatchContext();\n const viewportInitialized = useStore(selector$k);\n const generalHelper = useMemo(() => {\n const getInternalNode = (id) => store.getState().nodeLookup.get(id);\n const setNodes = (payload) => {\n batchContext.nodeQueue.push(payload);\n };\n const setEdges = (payload) => {\n batchContext.edgeQueue.push(payload);\n };\n const getNodeRect = (node) => {\n const { nodeLookup, nodeOrigin } = store.getState();\n const nodeToUse = isNode(node) ? node : nodeLookup.get(node.id);\n const position = nodeToUse.parentId\n ? evaluateAbsolutePosition(nodeToUse.position, nodeToUse.measured, nodeToUse.parentId, nodeLookup, nodeOrigin)\n : nodeToUse.position;\n const nodeWithPosition = {\n ...nodeToUse,\n position,\n width: nodeToUse.measured?.width ?? nodeToUse.width,\n height: nodeToUse.measured?.height ?? nodeToUse.height,\n };\n return nodeToRect(nodeWithPosition);\n };\n const updateNode = (id, nodeUpdate, options = { replace: false }) => {\n setNodes((prevNodes) => prevNodes.map((node) => {\n if (node.id === id) {\n const nextNode = typeof nodeUpdate === 'function' ? nodeUpdate(node) : nodeUpdate;\n return options.replace && isNode(nextNode) ? nextNode : { ...node, ...nextNode };\n }\n return node;\n }));\n };\n const updateEdge = (id, edgeUpdate, options = { replace: false }) => {\n setEdges((prevEdges) => prevEdges.map((edge) => {\n if (edge.id === id) {\n const nextEdge = typeof edgeUpdate === 'function' ? edgeUpdate(edge) : edgeUpdate;\n return options.replace && isEdge(nextEdge) ? nextEdge : { ...edge, ...nextEdge };\n }\n return edge;\n }));\n };\n return {\n getNodes: () => store.getState().nodes.map((n) => ({ ...n })),\n getNode: (id) => getInternalNode(id)?.internals.userNode,\n getInternalNode,\n getEdges: () => {\n const { edges = [] } = store.getState();\n return edges.map((e) => ({ ...e }));\n },\n getEdge: (id) => store.getState().edgeLookup.get(id),\n setNodes,\n setEdges,\n addNodes: (payload) => {\n const newNodes = Array.isArray(payload) ? payload : [payload];\n batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]);\n },\n addEdges: (payload) => {\n const newEdges = Array.isArray(payload) ? payload : [payload];\n batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]);\n },\n toObject: () => {\n const { nodes = [], edges = [], transform } = store.getState();\n const [x, y, zoom] = transform;\n return {\n nodes: nodes.map((n) => ({ ...n })),\n edges: edges.map((e) => ({ ...e })),\n viewport: {\n x,\n y,\n zoom,\n },\n };\n },\n deleteElements: async ({ nodes: nodesToRemove = [], edges: edgesToRemove = [] }) => {\n const { nodes, edges, onNodesDelete, onEdgesDelete, triggerNodeChanges, triggerEdgeChanges, onDelete, onBeforeDelete, } = store.getState();\n const { nodes: matchingNodes, edges: matchingEdges } = await getElementsToRemove({\n nodesToRemove,\n edgesToRemove,\n nodes,\n edges,\n onBeforeDelete,\n });\n const hasMatchingEdges = matchingEdges.length > 0;\n const hasMatchingNodes = matchingNodes.length > 0;\n if (hasMatchingEdges) {\n const edgeChanges = matchingEdges.map(elementToRemoveChange);\n onEdgesDelete?.(matchingEdges);\n triggerEdgeChanges(edgeChanges);\n }\n if (hasMatchingNodes) {\n const nodeChanges = matchingNodes.map(elementToRemoveChange);\n onNodesDelete?.(matchingNodes);\n triggerNodeChanges(nodeChanges);\n }\n if (hasMatchingNodes || hasMatchingEdges) {\n onDelete?.({ nodes: matchingNodes, edges: matchingEdges });\n }\n return { deletedNodes: matchingNodes, deletedEdges: matchingEdges };\n },\n /**\n * Partial is defined as \"the 2 nodes/areas are intersecting partially\".\n * If a is contained in b or b is contained in a, they are both\n * considered fully intersecting.\n */\n getIntersectingNodes: (nodeOrRect, partially = true, nodes) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n const hasNodesOption = nodes !== undefined;\n if (!nodeRect) {\n return [];\n }\n return (nodes || store.getState().nodes).filter((n) => {\n const internalNode = store.getState().nodeLookup.get(n.id);\n if (internalNode && !isRect && (n.id === nodeOrRect.id || !internalNode.internals.positionAbsolute)) {\n return false;\n }\n const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n return (partiallyVisible ||\n overlappingArea >= currNodeRect.width * currNodeRect.height ||\n overlappingArea >= nodeRect.width * nodeRect.height);\n });\n },\n isNodeIntersecting: (nodeOrRect, area, partially = true) => {\n const isRect = isRectObject(nodeOrRect);\n const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return (partiallyVisible ||\n overlappingArea >= area.width * area.height ||\n overlappingArea >= nodeRect.width * nodeRect.height);\n },\n updateNode,\n updateNodeData: (id, dataUpdate, options = { replace: false }) => {\n updateNode(id, (node) => {\n const nextData = typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate;\n return options.replace ? { ...node, data: nextData } : { ...node, data: { ...node.data, ...nextData } };\n }, options);\n },\n updateEdge,\n updateEdgeData: (id, dataUpdate, options = { replace: false }) => {\n updateEdge(id, (edge) => {\n const nextData = typeof dataUpdate === 'function' ? dataUpdate(edge) : dataUpdate;\n return options.replace ? { ...edge, data: nextData } : { ...edge, data: { ...edge.data, ...nextData } };\n }, options);\n },\n getNodesBounds: (nodes) => {\n const { nodeLookup, nodeOrigin } = store.getState();\n return getNodesBounds(nodes, { nodeLookup, nodeOrigin });\n },\n getHandleConnections: ({ type, id, nodeId }) => Array.from(store\n .getState()\n .connectionLookup.get(`${nodeId}-${type}${id ? `-${id}` : ''}`)\n ?.values() ?? []),\n getNodeConnections: ({ type, handleId, nodeId }) => Array.from(store\n .getState()\n .connectionLookup.get(`${nodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`)\n ?.values() ?? []),\n fitView: async (options) => {\n // We either create a new Promise or reuse the existing one\n // Even if fitView is called multiple times in a row, we only end up with a single Promise\n const fitViewResolver = store.getState().fitViewResolver ?? withResolvers();\n // We schedule a fitView by setting fitViewQueued and triggering a setNodes\n store.setState({ fitViewQueued: true, fitViewOptions: options, fitViewResolver });\n batchContext.nodeQueue.push((nodes) => [...nodes]);\n return fitViewResolver.promise;\n },\n };\n }, []);\n return useMemo(() => {\n return {\n ...generalHelper,\n ...viewportHelper,\n viewportInitialized,\n };\n }, [viewportInitialized]);\n}\n\nconst selected = (item) => item.selected;\nconst win$1 = typeof window !== 'undefined' ? window : undefined;\n/**\n * Hook for handling global key events.\n *\n * @internal\n */\nfunction useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) {\n const store = useStoreApi();\n const { deleteElements } = useReactFlow();\n const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode, { target: win$1 });\n useEffect(() => {\n if (deleteKeyPressed) {\n const { edges, nodes } = store.getState();\n deleteElements({ nodes: nodes.filter(selected), edges: edges.filter(selected) });\n store.setState({ nodesSelectionActive: false });\n }\n }, [deleteKeyPressed]);\n useEffect(() => {\n store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n }, [multiSelectionKeyPressed]);\n}\n\n/**\n * Hook for handling resize events.\n *\n * @internal\n */\nfunction useResizeHandler(domNode) {\n const store = useStoreApi();\n useEffect(() => {\n const updateDimensions = () => {\n if (!domNode.current || !(domNode.current.checkVisibility?.() ?? true)) {\n return false;\n }\n const size = getDimensions(domNode.current);\n if (size.height === 0 || size.width === 0) {\n store.getState().onError?.('004', errorMessages['error004']());\n }\n store.setState({ width: size.width || 500, height: size.height || 500 });\n };\n if (domNode.current) {\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n const resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(domNode.current);\n return () => {\n window.removeEventListener('resize', updateDimensions);\n if (resizeObserver && domNode.current) {\n resizeObserver.unobserve(domNode.current);\n }\n };\n }\n }, []);\n}\n\nconst containerStyle = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n};\n\nconst selector$j = (s) => ({\n userSelectionActive: s.userSelectionActive,\n lib: s.lib,\n connectionInProgress: s.connection.inProgress,\n});\nfunction ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }) {\n const store = useStoreApi();\n const zoomPane = useRef(null);\n const { userSelectionActive, lib, connectionInProgress } = useStore(selector$j, shallow);\n const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n const panZoom = useRef();\n useResizeHandler(zoomPane);\n const onTransformChange = useCallback((transform) => {\n onViewportChange?.({ x: transform[0], y: transform[1], zoom: transform[2] });\n if (!isControlledViewport) {\n store.setState({ transform });\n }\n }, [onViewportChange, isControlledViewport]);\n useEffect(() => {\n if (zoomPane.current) {\n panZoom.current = XYPanZoom({\n domNode: zoomPane.current,\n minZoom,\n maxZoom,\n translateExtent,\n viewport: defaultViewport,\n onDraggingChange: (paneDragging) => store.setState((prevState) => prevState.paneDragging === paneDragging ? prevState : { paneDragging }),\n onPanZoomStart: (event, vp) => {\n const { onViewportChangeStart, onMoveStart } = store.getState();\n onMoveStart?.(event, vp);\n onViewportChangeStart?.(vp);\n },\n onPanZoom: (event, vp) => {\n const { onViewportChange, onMove } = store.getState();\n onMove?.(event, vp);\n onViewportChange?.(vp);\n },\n onPanZoomEnd: (event, vp) => {\n const { onViewportChangeEnd, onMoveEnd } = store.getState();\n onMoveEnd?.(event, vp);\n onViewportChangeEnd?.(vp);\n },\n });\n const { x, y, zoom } = panZoom.current.getViewport();\n store.setState({\n panZoom: panZoom.current,\n transform: [x, y, zoom],\n domNode: zoomPane.current.closest('.react-flow'),\n });\n return () => {\n panZoom.current?.destroy();\n };\n }\n }, []);\n useEffect(() => {\n panZoom.current?.update({\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n onTransformChange,\n connectionInProgress,\n selectionOnDrag,\n paneClickDistance,\n });\n }, [\n onPaneContextMenu,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n panOnScrollSpeed,\n panOnScrollMode,\n zoomOnDoubleClick,\n panOnDrag,\n zoomActivationKeyPressed,\n preventScrolling,\n noPanClassName,\n userSelectionActive,\n noWheelClassName,\n lib,\n onTransformChange,\n connectionInProgress,\n selectionOnDrag,\n paneClickDistance,\n ]);\n return (jsx(\"div\", { className: \"react-flow__renderer\", ref: zoomPane, style: containerStyle, children: children }));\n}\n\nconst selector$i = (s) => ({\n userSelectionActive: s.userSelectionActive,\n userSelectionRect: s.userSelectionRect,\n});\nfunction UserSelection() {\n const { userSelectionActive, userSelectionRect } = useStore(selector$i, shallow);\n const isActive = userSelectionActive && userSelectionRect;\n if (!isActive) {\n return null;\n }\n return (jsx(\"div\", { className: \"react-flow__selection react-flow__container\", style: {\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n } }));\n}\n\nconst wrapHandler = (handler, containerRef) => {\n return (event) => {\n if (event.target !== containerRef.current) {\n return;\n }\n handler?.(event);\n };\n};\nconst selector$h = (s) => ({\n userSelectionActive: s.userSelectionActive,\n elementsSelectable: s.elementsSelectable,\n connectionInProgress: s.connection.inProgress,\n dragging: s.paneDragging,\n});\nfunction Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) {\n const store = useStoreApi();\n const { userSelectionActive, elementsSelectable, dragging, connectionInProgress } = useStore(selector$h, shallow);\n const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive);\n const container = useRef(null);\n const containerBounds = useRef();\n const selectedNodeIds = useRef(new Set());\n const selectedEdgeIds = useRef(new Set());\n // Used to prevent click events when the user lets go of the selectionKey during a selection\n const selectionInProgress = useRef(false);\n const onClick = (event) => {\n // We prevent click events when the user let go of the selectionKey during a selection\n // We also prevent click events when a connection is in progress\n if (selectionInProgress.current || connectionInProgress) {\n selectionInProgress.current = false;\n return;\n }\n onPaneClick?.(event);\n store.getState().resetSelectedElements();\n store.setState({ nodesSelectionActive: false });\n };\n const onContextMenu = (event) => {\n if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n event.preventDefault();\n return;\n }\n onPaneContextMenu?.(event);\n };\n const onWheel = onPaneScroll ? (event) => onPaneScroll(event) : undefined;\n const onClickCapture = (event) => {\n if (selectionInProgress.current) {\n event.stopPropagation();\n selectionInProgress.current = false;\n }\n };\n // We are using capture here in order to prevent other pointer events\n // to be able to create a selection above a node or an edge\n const onPointerDownCapture = (event) => {\n const { domNode } = store.getState();\n containerBounds.current = domNode?.getBoundingClientRect();\n if (!containerBounds.current)\n return;\n const eventTargetIsContainer = event.target === container.current;\n // if a child element has the 'nokey' class, we don't want to swallow the event and don't start a selection\n const isNoKeyEvent = !eventTargetIsContainer && !!event.target.closest('.nokey');\n const isSelectionActive = (selectionOnDrag && eventTargetIsContainer) || selectionKeyPressed;\n if (isNoKeyEvent || !isSelecting || !isSelectionActive || event.button !== 0 || !event.isPrimary) {\n return;\n }\n event.target?.setPointerCapture?.(event.pointerId);\n selectionInProgress.current = false;\n const { x, y } = getEventPosition(event.nativeEvent, containerBounds.current);\n store.setState({\n userSelectionRect: {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y,\n },\n });\n if (!eventTargetIsContainer) {\n event.stopPropagation();\n event.preventDefault();\n }\n };\n const onPointerMove = (event) => {\n const { userSelectionRect, transform, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions, resetSelectedElements, } = store.getState();\n if (!containerBounds.current || !userSelectionRect) {\n return;\n }\n const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current);\n const { startX, startY } = userSelectionRect;\n if (!selectionInProgress.current) {\n const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance;\n const distance = Math.hypot(mouseX - startX, mouseY - startY);\n if (distance <= requiredDistance) {\n return;\n }\n resetSelectedElements();\n onSelectionStart?.(event);\n }\n selectionInProgress.current = true;\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY),\n };\n const prevSelectedNodeIds = selectedNodeIds.current;\n const prevSelectedEdgeIds = selectedEdgeIds.current;\n selectedNodeIds.current = new Set(getNodesInside(nodeLookup, nextUserSelectRect, transform, selectionMode === SelectionMode.Partial, true).map((node) => node.id));\n selectedEdgeIds.current = new Set();\n const edgesSelectable = defaultEdgeOptions?.selectable ?? true;\n // We look for all edges connected to the selected nodes\n for (const nodeId of selectedNodeIds.current) {\n const connections = connectionLookup.get(nodeId);\n if (!connections)\n continue;\n for (const { edgeId } of connections.values()) {\n const edge = edgeLookup.get(edgeId);\n if (edge && (edge.selectable ?? edgesSelectable)) {\n selectedEdgeIds.current.add(edgeId);\n }\n }\n }\n if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.current)) {\n const changes = getSelectionChanges(nodeLookup, selectedNodeIds.current, true);\n triggerNodeChanges(changes);\n }\n if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.current)) {\n const changes = getSelectionChanges(edgeLookup, selectedEdgeIds.current);\n triggerEdgeChanges(changes);\n }\n store.setState({\n userSelectionRect: nextUserSelectRect,\n userSelectionActive: true,\n nodesSelectionActive: false,\n });\n };\n const onPointerUp = (event) => {\n if (event.button !== 0) {\n return;\n }\n event.target?.releasePointerCapture?.(event.pointerId);\n /*\n * We only want to trigger click functions when in selection mode if\n * the user did not move the mouse.\n */\n if (!userSelectionActive && event.target === container.current && store.getState().userSelectionRect) {\n onClick?.(event);\n }\n store.setState({\n userSelectionActive: false,\n userSelectionRect: null,\n });\n if (selectionInProgress.current) {\n onSelectionEnd?.(event);\n store.setState({\n nodesSelectionActive: selectedNodeIds.current.size > 0,\n });\n }\n };\n const draggable = panOnDrag === true || (Array.isArray(panOnDrag) && panOnDrag.includes(0));\n return (jsxs(\"div\", { className: cc(['react-flow__pane', { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? undefined : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: isSelectionEnabled ? onPointerUp : undefined, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : undefined, onClickCapture: isSelectionEnabled ? onClickCapture : undefined, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] }));\n}\n\n/*\n * this handler is called by\n * 1. the click handler when node is not draggable or selectNodesOnDrag = false\n * or\n * 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\n */\nfunction handleNodeClick({ id, store, unselect = false, nodeRef, }) {\n const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeLookup, onError } = store.getState();\n const node = nodeLookup.get(id);\n if (!node) {\n onError?.('012', errorMessages['error012'](id));\n return;\n }\n store.setState({ nodesSelectionActive: false });\n if (!node.selected) {\n addSelectedNodes([id]);\n }\n else if (unselect || (node.selected && multiSelectionActive)) {\n unselectNodesAndEdges({ nodes: [node], edges: [] });\n requestAnimationFrame(() => nodeRef?.current?.blur());\n }\n}\n\n/**\n * Hook for calling XYDrag helper from @xyflow/system.\n *\n * @internal\n */\nfunction useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }) {\n const store = useStoreApi();\n const [dragging, setDragging] = useState(false);\n const xyDrag = useRef();\n useEffect(() => {\n xyDrag.current = XYDrag({\n getStoreItems: () => store.getState(),\n onNodeMouseDown: (id) => {\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n },\n onDragStart: () => {\n setDragging(true);\n },\n onDragStop: () => {\n setDragging(false);\n },\n });\n }, []);\n useEffect(() => {\n if (disabled || !nodeRef.current || !xyDrag.current) {\n return;\n }\n xyDrag.current.update({\n noDragClassName,\n handleSelector,\n domNode: nodeRef.current,\n isSelectable,\n nodeId,\n nodeClickDistance,\n });\n return () => {\n xyDrag.current?.destroy();\n };\n }, [noDragClassName, handleSelector, disabled, isSelectable, nodeRef, nodeId, nodeClickDistance]);\n return dragging;\n}\n\nconst selectedAndDraggable = (nodesDraggable) => (n) => n.selected && (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined'));\n/**\n * Hook for updating node positions by passing a direction and factor\n *\n * @internal\n * @returns function for updating node positions\n */\nfunction useMoveSelectedNodes() {\n const store = useStoreApi();\n const moveSelectedNodes = useCallback((params) => {\n const { nodeExtent, snapToGrid, snapGrid, nodesDraggable, onError, updateNodePositions, nodeLookup, nodeOrigin } = store.getState();\n const nodeUpdates = new Map();\n const isSelected = selectedAndDraggable(nodesDraggable);\n /*\n * by default a node moves 5px on each key press\n * if snap grid is enabled, we use that for the velocity\n */\n const xVelo = snapToGrid ? snapGrid[0] : 5;\n const yVelo = snapToGrid ? snapGrid[1] : 5;\n const xDiff = params.direction.x * xVelo * params.factor;\n const yDiff = params.direction.y * yVelo * params.factor;\n for (const [, node] of nodeLookup) {\n if (!isSelected(node)) {\n continue;\n }\n let nextPosition = {\n x: node.internals.positionAbsolute.x + xDiff,\n y: node.internals.positionAbsolute.y + yDiff,\n };\n if (snapToGrid) {\n nextPosition = snapPosition(nextPosition, snapGrid);\n }\n const { position, positionAbsolute } = calculateNodePosition({\n nodeId: node.id,\n nextPosition,\n nodeLookup,\n nodeExtent,\n nodeOrigin,\n onError,\n });\n node.position = position;\n node.internals.positionAbsolute = positionAbsolute;\n nodeUpdates.set(node.id, node);\n }\n updateNodePositions(nodeUpdates);\n }, []);\n return moveSelectedNodes;\n}\n\nconst NodeIdContext = createContext(null);\nconst Provider = NodeIdContext.Provider;\nNodeIdContext.Consumer;\n/**\n * You can use this hook to get the id of the node it is used inside. It is useful\n * if you need the node's id deeper in the render tree but don't want to manually\n * drill down the id as a prop.\n *\n * @public\n * @returns The id for a node in the flow.\n *\n * @example\n *```jsx\n *import { useNodeId } from '@xyflow/react';\n *\n *export default function CustomNode() {\n * return (\n * <div>\n * <span>This node has an id of </span>\n * <NodeIdDisplay />\n * </div>\n * );\n *}\n *\n *function NodeIdDisplay() {\n * const nodeId = useNodeId();\n *\n * return <span>{nodeId}</span>;\n *}\n *```\n */\nconst useNodeId = () => {\n const nodeId = useContext(NodeIdContext);\n return nodeId;\n};\n\nconst selector$g = (s) => ({\n connectOnClick: s.connectOnClick,\n noPanClassName: s.noPanClassName,\n rfId: s.rfId,\n});\nconst connectingSelector = (nodeId, handleId, type) => (state) => {\n const { connectionClickStartHandle: clickHandle, connectionMode, connection } = state;\n const { fromHandle, toHandle, isValid } = connection;\n const connectingTo = toHandle?.nodeId === nodeId && toHandle?.id === handleId && toHandle?.type === type;\n return {\n connectingFrom: fromHandle?.nodeId === nodeId && fromHandle?.id === handleId && fromHandle?.type === type,\n connectingTo,\n clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.id === handleId && clickHandle?.type === type,\n isPossibleEndHandle: connectionMode === ConnectionMode.Strict\n ? fromHandle?.type !== type\n : nodeId !== fromHandle?.nodeId || handleId !== fromHandle?.id,\n connectionInProcess: !!fromHandle,\n clickConnectionInProcess: !!clickHandle,\n valid: connectingTo && isValid,\n };\n};\nfunction HandleComponent({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) {\n const handleId = id || null;\n const isTarget = type === 'target';\n const store = useStoreApi();\n const nodeId = useNodeId();\n const { connectOnClick, noPanClassName, rfId } = useStore(selector$g, shallow);\n const { connectingFrom, connectingTo, clickConnecting, isPossibleEndHandle, connectionInProcess, clickConnectionInProcess, valid, } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n if (!nodeId) {\n store.getState().onError?.('010', errorMessages['error010']());\n }\n const onConnectExtended = (params) => {\n const { defaultEdgeOptions, onConnect: onConnectAction, hasDefaultEdges } = store.getState();\n const edgeParams = {\n ...defaultEdgeOptions,\n ...params,\n };\n if (hasDefaultEdges) {\n const { edges, setEdges } = store.getState();\n setEdges(addEdge(edgeParams, edges));\n }\n onConnectAction?.(edgeParams);\n onConnect?.(edgeParams);\n };\n const onPointerDown = (event) => {\n if (!nodeId) {\n return;\n }\n const isMouseTriggered = isMouseEvent(event.nativeEvent);\n if (isConnectableStart &&\n ((isMouseTriggered && event.button === 0) || !isMouseTriggered)) {\n const currentStore = store.getState();\n XYHandle.onPointerDown(event.nativeEvent, {\n handleDomNode: event.currentTarget,\n autoPanOnConnect: currentStore.autoPanOnConnect,\n connectionMode: currentStore.connectionMode,\n connectionRadius: currentStore.connectionRadius,\n domNode: currentStore.domNode,\n nodeLookup: currentStore.nodeLookup,\n lib: currentStore.lib,\n isTarget,\n handleId,\n nodeId,\n flowId: currentStore.rfId,\n panBy: currentStore.panBy,\n cancelConnection: currentStore.cancelConnection,\n onConnectStart: currentStore.onConnectStart,\n onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args),\n updateConnection: currentStore.updateConnection,\n onConnect: onConnectExtended,\n isValidConnection: isValidConnection || ((...args) => store.getState().isValidConnection?.(...args) ?? true),\n getTransform: () => store.getState().transform,\n getFromHandle: () => store.getState().connection.fromHandle,\n autoPanSpeed: currentStore.autoPanSpeed,\n dragThreshold: currentStore.connectionDragThreshold,\n });\n }\n if (isMouseTriggered) {\n onMouseDown?.(event);\n }\n else {\n onTouchStart?.(event);\n }\n };\n const onClick = (event) => {\n const { onClickConnectStart, onClickConnectEnd, connectionClickStartHandle, connectionMode, isValidConnection: isValidConnectionStore, lib, rfId: flowId, nodeLookup, connection: connectionState, } = store.getState();\n if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n return;\n }\n if (!connectionClickStartHandle) {\n onClickConnectStart?.(event.nativeEvent, { nodeId, handleId, handleType: type });\n store.setState({ connectionClickStartHandle: { nodeId, type, id: handleId } });\n return;\n }\n const doc = getHostForElement(event.target);\n const isValidConnectionHandler = isValidConnection || isValidConnectionStore;\n const { connection, isValid } = XYHandle.isValid(event.nativeEvent, {\n handle: {\n nodeId,\n id: handleId,\n type,\n },\n connectionMode,\n fromNodeId: connectionClickStartHandle.nodeId,\n fromHandleId: connectionClickStartHandle.id || null,\n fromType: connectionClickStartHandle.type,\n isValidConnection: isValidConnectionHandler,\n flowId,\n doc,\n lib,\n nodeLookup,\n });\n if (isValid && connection) {\n onConnectExtended(connection);\n }\n const connectionClone = structuredClone(connectionState);\n delete connectionClone.inProgress;\n connectionClone.toPosition = connectionClone.toHandle ? connectionClone.toHandle.position : null;\n onClickConnectEnd?.(event, connectionClone);\n store.setState({ connectionClickStartHandle: null });\n };\n return (jsx(\"div\", { \"data-handleid\": handleId, \"data-nodeid\": nodeId, \"data-handlepos\": position, \"data-id\": `${rfId}-${nodeId}-${handleId}-${type}`, className: cc([\n 'react-flow__handle',\n `react-flow__handle-${position}`,\n 'nodrag',\n noPanClassName,\n className,\n {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable,\n connectablestart: isConnectableStart,\n connectableend: isConnectableEnd,\n clickconnecting: clickConnecting,\n connectingfrom: connectingFrom,\n connectingto: connectingTo,\n valid,\n /*\n * shows where you can start a connection from\n * and where you can end it while connecting\n */\n connectionindicator: isConnectable &&\n (!connectionInProcess || isPossibleEndHandle) &&\n (connectionInProcess || clickConnectionInProcess ? isConnectableEnd : isConnectableStart),\n },\n ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children }));\n}\n/**\n * The `<Handle />` component is used in your [custom nodes](/learn/customization/custom-nodes)\n * to define connection points.\n *\n *@public\n *\n *@example\n *\n *```jsx\n *import { Handle, Position } from '@xyflow/react';\n *\n *export function CustomNode({ data }) {\n * return (\n * <>\n * <div style={{ padding: '10px 20px' }}>\n * {data.label}\n * </div>\n *\n * <Handle type=\"target\" position={Position.Left} />\n * <Handle type=\"source\" position={Position.Right} />\n * </>\n * );\n *};\n *```\n */\nconst Handle = memo(fixedForwardRef(HandleComponent));\n\nfunction InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) {\n return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })] }));\n}\n\nfunction DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) {\n return (jsxs(Fragment, { children: [jsx(Handle, { type: \"target\", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })] }));\n}\n\nfunction GroupNode() {\n return null;\n}\n\nfunction OutputNode({ data, isConnectable, targetPosition = Position.Top }) {\n return (jsxs(Fragment, { children: [jsx(Handle, { type: \"target\", position: targetPosition, isConnectable: isConnectable }), data?.label] }));\n}\n\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 },\n};\nconst builtinNodeTypes = {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode,\n group: GroupNode,\n};\nfunction getNodeInlineStyleDimensions(node) {\n if (node.internals.handleBounds === undefined) {\n return {\n width: node.width ?? node.initialWidth ?? node.style?.width,\n height: node.height ?? node.initialHeight ?? node.style?.height,\n };\n }\n return {\n width: node.width ?? node.style?.width,\n height: node.height ?? node.style?.height,\n };\n}\n\nconst selector$f = (s) => {\n const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, {\n filter: (node) => !!node.selected,\n });\n return {\n width: isNumeric(width) ? width : null,\n height: isNumeric(height) ? height : null,\n userSelectionActive: s.userSelectionActive,\n transformString: `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]}) translate(${x}px,${y}px)`,\n };\n};\nfunction NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }) {\n const store = useStoreApi();\n const { width, height, transformString, userSelectionActive } = useStore(selector$f, shallow);\n const moveSelectedNodes = useMoveSelectedNodes();\n const nodeRef = useRef(null);\n useEffect(() => {\n if (!disableKeyboardA11y) {\n nodeRef.current?.focus({\n preventScroll: true,\n });\n }\n }, [disableKeyboardA11y]);\n const shouldRender = !userSelectionActive && width !== null && height !== null;\n useDrag({\n nodeRef,\n disabled: !shouldRender,\n });\n if (!shouldRender) {\n return null;\n }\n const onContextMenu = onSelectionContextMenu\n ? (event) => {\n const selectedNodes = store.getState().nodes.filter((n) => n.selected);\n onSelectionContextMenu(event, selectedNodes);\n }\n : undefined;\n const onKeyDown = (event) => {\n if (Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n event.preventDefault();\n moveSelectedNodes({\n direction: arrowKeyDiffs[event.key],\n factor: event.shiftKey ? 4 : 1,\n });\n }\n };\n return (jsx(\"div\", { className: cc(['react-flow__nodesselection', 'react-flow__container', noPanClassName]), style: {\n transform: transformString,\n }, children: jsx(\"div\", { ref: nodeRef, className: \"react-flow__nodesselection-rect\", onContextMenu: onContextMenu, tabIndex: disableKeyboardA11y ? undefined : -1, onKeyDown: disableKeyboardA11y ? undefined : onKeyDown, style: {\n width,\n height,\n } }) }));\n}\n\nconst win = typeof window !== 'undefined' ? window : undefined;\nconst selector$e = (s) => {\n return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive };\n};\nfunction FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) {\n const { nodesSelectionActive, userSelectionActive } = useStore(selector$e, shallow);\n const selectionKeyPressed = useKeyPress(selectionKeyCode, { target: win });\n const panActivationKeyPressed = useKeyPress(panActivationKeyCode, { target: win });\n const panOnDrag = panActivationKeyPressed || _panOnDrag;\n const panOnScroll = panActivationKeyPressed || _panOnScroll;\n const _selectionOnDrag = selectionOnDrag && panOnDrag !== true;\n const isSelecting = selectionKeyPressed || userSelectionActive || _selectionOnDrag;\n useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, selectionKeyPressed: selectionKeyPressed, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) }));\n}\nFlowRendererComponent.displayName = 'FlowRenderer';\nconst FlowRenderer = memo(FlowRendererComponent);\n\nconst selector$d = (onlyRenderVisible) => (s) => {\n return onlyRenderVisible\n ? getNodesInside(s.nodeLookup, { x: 0, y: 0, width: s.width, height: s.height }, s.transform, true).map((node) => node.id)\n : Array.from(s.nodeLookup.keys());\n};\n/**\n * Hook for getting the visible node ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible node ids\n */\nfunction useVisibleNodeIds(onlyRenderVisible) {\n const nodeIds = useStore(useCallback(selector$d(onlyRenderVisible), [onlyRenderVisible]), shallow);\n return nodeIds;\n}\n\nconst selector$c = (s) => s.updateNodeInternals;\nfunction useResizeObserver() {\n const updateNodeInternals = useStore(selector$c);\n const [resizeObserver] = useState(() => {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n return new ResizeObserver((entries) => {\n const updates = new Map();\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('data-id');\n updates.set(id, {\n id,\n nodeElement: entry.target,\n force: true,\n });\n });\n updateNodeInternals(updates);\n });\n });\n useEffect(() => {\n return () => {\n resizeObserver?.disconnect();\n };\n }, [resizeObserver]);\n return resizeObserver;\n}\n\n/**\n * Hook to handle the resize observation + internal updates for the passed node.\n *\n * @internal\n * @returns nodeRef - reference to the node element\n */\nfunction useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }) {\n const store = useStoreApi();\n const nodeRef = useRef(null);\n const observedNode = useRef(null);\n const prevSourcePosition = useRef(node.sourcePosition);\n const prevTargetPosition = useRef(node.targetPosition);\n const prevType = useRef(nodeType);\n const isInitialized = hasDimensions && !!node.internals.handleBounds;\n useEffect(() => {\n if (nodeRef.current && !node.hidden && (!isInitialized || observedNode.current !== nodeRef.current)) {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n }\n resizeObserver?.observe(nodeRef.current);\n observedNode.current = nodeRef.current;\n }\n }, [isInitialized, node.hidden]);\n useEffect(() => {\n return () => {\n if (observedNode.current) {\n resizeObserver?.unobserve(observedNode.current);\n observedNode.current = null;\n }\n };\n }, []);\n useEffect(() => {\n if (nodeRef.current) {\n /*\n * when the user programmatically changes the source or handle position, we need to update the internals\n * to make sure the edges are updated correctly\n */\n const typeChanged = prevType.current !== nodeType;\n const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition;\n const targetPosChanged = prevTargetPosition.current !== node.targetPosition;\n if (typeChanged || sourcePosChanged || targetPosChanged) {\n prevType.current = nodeType;\n prevSourcePosition.current = node.sourcePosition;\n prevTargetPosition.current = node.targetPosition;\n store\n .getState()\n .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]]));\n }\n }\n }, [node.id, nodeType, node.sourcePosition, node.targetPosition]);\n return nodeRef;\n}\n\nfunction NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }) {\n const { node, internals, isParent } = useStore((s) => {\n const node = s.nodeLookup.get(id);\n const isParent = s.parentLookup.has(id);\n return {\n node,\n internals: node.internals,\n isParent,\n };\n }, shallow);\n let nodeType = node.type || 'default';\n let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType];\n if (NodeComponent === undefined) {\n onError?.('003', errorMessages['error003'](nodeType));\n nodeType = 'default';\n NodeComponent = nodeTypes?.['default'] || builtinNodeTypes.default;\n }\n const isDraggable = !!(node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'));\n const isSelectable = !!(node.selectable || (elementsSelectable && typeof node.selectable === 'undefined'));\n const isConnectable = !!(node.connectable || (nodesConnectable && typeof node.connectable === 'undefined'));\n const isFocusable = !!(node.focusable || (nodesFocusable && typeof node.focusable === 'undefined'));\n const store = useStoreApi();\n const hasDimensions = nodeHasDimensions(node);\n const nodeRef = useNodeObserver({ node, nodeType, hasDimensions, resizeObserver });\n const dragging = useDrag({\n nodeRef,\n disabled: node.hidden || !isDraggable,\n noDragClassName,\n handleSelector: node.dragHandle,\n nodeId: id,\n isSelectable,\n nodeClickDistance,\n });\n const moveSelectedNodes = useMoveSelectedNodes();\n if (node.hidden) {\n return null;\n }\n const nodeDimensions = getNodeDimensions(node);\n const inlineDimensions = getNodeInlineStyleDimensions(node);\n const hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave;\n const onMouseEnterHandler = onMouseEnter\n ? (event) => onMouseEnter(event, { ...internals.userNode })\n : undefined;\n const onMouseMoveHandler = onMouseMove\n ? (event) => onMouseMove(event, { ...internals.userNode })\n : undefined;\n const onMouseLeaveHandler = onMouseLeave\n ? (event) => onMouseLeave(event, { ...internals.userNode })\n : undefined;\n const onContextMenuHandler = onContextMenu\n ? (event) => onContextMenu(event, { ...internals.userNode })\n : undefined;\n const onDoubleClickHandler = onDoubleClick\n ? (event) => onDoubleClick(event, { ...internals.userNode })\n : undefined;\n const onSelectNodeHandler = (event) => {\n const { selectNodesOnDrag, nodeDragThreshold } = store.getState();\n if (isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)) {\n /*\n * this handler gets called by XYDrag on drag start when selectNodesOnDrag=true\n * here we only need to call it when selectNodesOnDrag=false\n */\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n }\n if (onClick) {\n onClick(event, { ...internals.userNode });\n }\n };\n const onKeyDown = (event) => {\n if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable) {\n const unselect = event.key === 'Escape';\n handleNodeClick({\n id,\n store,\n unselect,\n nodeRef,\n });\n }\n else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n // prevent default scrolling behavior on arrow key press when node is moved\n event.preventDefault();\n const { ariaLabelConfig } = store.getState();\n store.setState({\n ariaLiveMessage: ariaLabelConfig['node.a11yDescription.ariaLiveMessage']({\n direction: event.key.replace('Arrow', '').toLowerCase(),\n x: ~~internals.positionAbsolute.x,\n y: ~~internals.positionAbsolute.y,\n }),\n });\n moveSelectedNodes({\n direction: arrowKeyDiffs[event.key],\n factor: event.shiftKey ? 4 : 1,\n });\n }\n };\n const onFocus = () => {\n if (disableKeyboardA11y || !nodeRef.current?.matches(':focus-visible')) {\n return;\n }\n const { transform, width, height, autoPanOnNodeFocus, setCenter } = store.getState();\n if (!autoPanOnNodeFocus) {\n return;\n }\n const withinViewport = getNodesInside(new Map([[id, node]]), { x: 0, y: 0, width, height }, transform, true).length > 0;\n if (!withinViewport) {\n setCenter(node.position.x + nodeDimensions.width / 2, node.position.y + nodeDimensions.height / 2, {\n zoom: transform[2],\n });\n }\n };\n return (jsx(\"div\", { className: cc([\n 'react-flow__node',\n `react-flow__node-${nodeType}`,\n {\n // this is overwritable by passing `nopan` as a class name\n [noPanClassName]: isDraggable,\n },\n node.className,\n {\n selected: node.selected,\n selectable: isSelectable,\n parent: isParent,\n draggable: isDraggable,\n dragging,\n },\n ]), ref: nodeRef, style: {\n zIndex: internals.z,\n transform: `translate(${internals.positionAbsolute.x}px,${internals.positionAbsolute.y}px)`,\n pointerEvents: hasPointerEvents ? 'all' : 'none',\n visibility: hasDimensions ? 'visible' : 'hidden',\n ...node.style,\n ...inlineDimensions,\n }, \"data-id\": id, \"data-testid\": `rf__node-${id}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, onFocus: isFocusable ? onFocus : undefined, role: node.ariaRole ?? (isFocusable ? 'group' : undefined), \"aria-roledescription\": \"node\", \"aria-describedby\": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, \"aria-label\": node.ariaLabel, ...node.domAttributes, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, positionAbsoluteX: internals.positionAbsolute.x, positionAbsoluteY: internals.positionAbsolute.y, selected: node.selected ?? false, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? true, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) }));\n}\nvar NodeWrapper$1 = memo(NodeWrapper);\n\nconst selector$b = (s) => ({\n nodesDraggable: s.nodesDraggable,\n nodesConnectable: s.nodesConnectable,\n nodesFocusable: s.nodesFocusable,\n elementsSelectable: s.elementsSelectable,\n onError: s.onError,\n});\nfunction NodeRendererComponent(props) {\n const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$b, shallow);\n const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);\n const resizeObserver = useResizeObserver();\n return (jsx(\"div\", { className: \"react-flow__nodes\", style: containerStyle, children: nodeIds.map((nodeId) => {\n return (\n /*\n * The split of responsibilities between NodeRenderer and\n * NodeComponentWrapper may appear weird. However, it’s designed to\n * minimize the cost of updates when individual nodes change.\n *\n * For example, when you’re dragging a single node, that node gets\n * updated multiple times per second. If `NodeRenderer` were to update\n * every time, it would have to re-run the `nodes.map()` loop every\n * time. This gets pricey with hundreds of nodes, especially if every\n * loop cycle does more than just rendering a JSX element!\n *\n * As a result of this choice, we took the following implementation\n * decisions:\n * - NodeRenderer subscribes *only* to node IDs – and therefore\n * rerender *only* when visible nodes are added or removed.\n * - NodeRenderer performs all operations the result of which can be\n * shared between nodes (such as creating the `ResizeObserver`\n * instance, or subscribing to `selector`). This means extra prop\n * drilling into `NodeComponentWrapper`, but it means we need to run\n * these operations only once – instead of once per node.\n * - Any operations that you’d normally write inside `nodes.map` are\n * moved into `NodeComponentWrapper`. This ensures they are\n * memorized – so if `NodeRenderer` *has* to rerender, it only\n * needs to regenerate the list of nodes, nothing else.\n */\n jsx(NodeWrapper$1, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, nodeClickDistance: props.nodeClickDistance, onError: onError }, nodeId));\n }) }));\n}\nNodeRendererComponent.displayName = 'NodeRenderer';\nconst NodeRenderer = memo(NodeRendererComponent);\n\n/**\n * Hook for getting the visible edge ids from the store.\n *\n * @internal\n * @param onlyRenderVisible\n * @returns array with visible edge ids\n */\nfunction useVisibleEdgeIds(onlyRenderVisible) {\n const edgeIds = useStore(useCallback((s) => {\n if (!onlyRenderVisible) {\n return s.edges.map((edge) => edge.id);\n }\n const visibleEdgeIds = [];\n if (s.width && s.height) {\n for (const edge of s.edges) {\n const sourceNode = s.nodeLookup.get(edge.source);\n const targetNode = s.nodeLookup.get(edge.target);\n if (sourceNode &&\n targetNode &&\n isEdgeVisible({\n sourceNode,\n targetNode,\n width: s.width,\n height: s.height,\n transform: s.transform,\n })) {\n visibleEdgeIds.push(edge.id);\n }\n }\n }\n return visibleEdgeIds;\n }, [onlyRenderVisible]), shallow);\n return edgeIds;\n}\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n const style = {\n strokeWidth,\n ...(color && { stroke: color }),\n };\n return (jsx(\"polyline\", { className: \"arrow\", style: style, strokeLinecap: \"round\", fill: \"none\", strokeLinejoin: \"round\", points: \"-5,-4 0,0 -5,4\" }));\n};\nconst ArrowClosedSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n const style = {\n strokeWidth,\n ...(color && { stroke: color, fill: color }),\n };\n return (jsx(\"polyline\", { className: \"arrowclosed\", style: style, strokeLinecap: \"round\", strokeLinejoin: \"round\", points: \"-5,-4 0,0 -5,4 -5,-4\" }));\n};\nconst MarkerSymbols = {\n [MarkerType.Arrow]: ArrowSymbol,\n [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\nfunction useMarkerSymbol(type) {\n const store = useStoreApi();\n const symbol = useMemo(() => {\n const symbolExists = Object.prototype.hasOwnProperty.call(MarkerSymbols, type);\n if (!symbolExists) {\n store.getState().onError?.('009', errorMessages['error009'](type));\n return null;\n }\n return MarkerSymbols[type];\n }, [type]);\n return symbol;\n}\n\nconst Marker = ({ id, type, color, width = 12.5, height = 12.5, markerUnits = 'strokeWidth', strokeWidth, orient = 'auto-start-reverse', }) => {\n const Symbol = useMarkerSymbol(type);\n if (!Symbol) {\n return null;\n }\n return (jsx(\"marker\", { className: \"react-flow__arrowhead\", id: id, markerWidth: `${width}`, markerHeight: `${height}`, viewBox: \"-10 -10 20 20\", markerUnits: markerUnits, orient: orient, refX: \"0\", refY: \"0\", children: jsx(Symbol, { color: color, strokeWidth: strokeWidth }) }));\n};\n/*\n * when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n * when they do have markers with the same ids. To prevent this the user can pass a unique id to the react flow wrapper\n * that we can then use for creating our unique marker ids\n */\nconst MarkerDefinitions = ({ defaultColor, rfId }) => {\n const edges = useStore((s) => s.edges);\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n const markers = useMemo(() => {\n const markers = createMarkerIds(edges, {\n id: rfId,\n defaultColor,\n defaultMarkerStart: defaultEdgeOptions?.markerStart,\n defaultMarkerEnd: defaultEdgeOptions?.markerEnd,\n });\n return markers;\n }, [edges, defaultEdgeOptions, rfId, defaultColor]);\n if (!markers.length) {\n return null;\n }\n return (jsx(\"svg\", { className: \"react-flow__marker\", \"aria-hidden\": \"true\", children: jsx(\"defs\", { children: markers.map((marker) => (jsx(Marker, { id: marker.id, type: marker.type, color: marker.color, width: marker.width, height: marker.height, markerUnits: marker.markerUnits, strokeWidth: marker.strokeWidth, orient: marker.orient }, marker.id))) }) }));\n};\nMarkerDefinitions.displayName = 'MarkerDefinitions';\nvar MarkerDefinitions$1 = memo(MarkerDefinitions);\n\nfunction EdgeTextComponent({ x, y, label, labelStyle, labelShowBg = true, labelBgStyle, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) {\n const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 });\n const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]);\n const edgeTextRef = useRef(null);\n useEffect(() => {\n if (edgeTextRef.current) {\n const textBbox = edgeTextRef.current.getBBox();\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height,\n });\n }\n }, [label]);\n if (!label) {\n return null;\n }\n return (jsxs(\"g\", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx(\"rect\", { width: edgeTextBbox.width + 2 * labelBgPadding[0], x: -labelBgPadding[0], y: -labelBgPadding[1], height: edgeTextBbox.height + 2 * labelBgPadding[1], className: \"react-flow__edge-textbg\", style: labelBgStyle, rx: labelBgBorderRadius, ry: labelBgBorderRadius })), jsx(\"text\", { className: \"react-flow__edge-text\", y: edgeTextBbox.height / 2, dy: \"0.3em\", ref: edgeTextRef, style: labelStyle, children: label }), children] }));\n}\nEdgeTextComponent.displayName = 'EdgeText';\n/**\n * You can use the `<EdgeText />` component as a helper component to display text\n * within your custom edges.\n *\n * @public\n *\n * @example\n * ```jsx\n * import { EdgeText } from '@xyflow/react';\n *\n * export function CustomEdgeLabel({ label }) {\n * return (\n * <EdgeText\n * x={100}\n * y={100}\n * label={label}\n * labelStyle={{ fill: 'white' }}\n * labelShowBg\n * labelBgStyle={{ fill: 'red' }}\n * labelBgPadding={[2, 4]}\n * labelBgBorderRadius={2}\n * />\n * );\n * }\n *```\n */\nconst EdgeText = memo(EdgeTextComponent);\n\n/**\n * The `<BaseEdge />` component gets used internally for all the edges. It can be\n * used inside a custom edge and handles the invisible helper edge and the edge label\n * for you.\n *\n * @public\n * @example\n * ```jsx\n *import { BaseEdge } from '@xyflow/react';\n *\n *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) {\n * const [edgePath] = getStraightPath({\n * sourceX,\n * sourceY,\n * targetX,\n * targetY,\n * });\n *\n * return <BaseEdge path={edgePath} {...props} />;\n *}\n *```\n *\n * @remarks If you want to use an edge marker with the [`<BaseEdge />`](/api-reference/components/base-edge) component,\n * you can pass the `markerStart` or `markerEnd` props passed to your custom edge\n * through to the [`<BaseEdge />`](/api-reference/components/base-edge) component.\n * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type.\n */\nfunction BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth = 20, ...props }) {\n return (jsxs(Fragment, { children: [jsx(\"path\", { ...props, d: path, fill: \"none\", className: cc(['react-flow__edge-path', props.className]) }), interactionWidth ? (jsx(\"path\", { d: path, fill: \"none\", strokeOpacity: 0, strokeWidth: interactionWidth, className: \"react-flow__edge-interaction\" })) : null, label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] }));\n}\n\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n if (pos === Position.Left || pos === Position.Right) {\n return [0.5 * (x1 + x2), y1];\n }\n return [x1, 0.5 * (y1 + y2)];\n}\n/**\n * The `getSimpleBezierPath` util returns everything you need to render a simple\n * bezier edge between two nodes.\n * @public\n * @returns\n * - `path`: the path to use in an SVG `<path>` element.\n * - `labelX`: the `x` position you can use to render a label for this edge.\n * - `labelY`: the `y` position you can use to render a label for this edge.\n * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the\n * middle of this path.\n * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the\n * middle of this path.\n */\nfunction getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, }) {\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\nfunction createSimpleBezierEdge(params) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n const _id = params.isInternal ? undefined : id;\n return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n });\n}\nconst SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false });\nconst SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true });\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\nSimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal';\n\nfunction createSmoothStepEdge(params) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition = Position.Bottom, targetPosition = Position.Top, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n const [path, labelX, labelY] = getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n borderRadius: pathOptions?.borderRadius,\n offset: pathOptions?.offset,\n stepPosition: pathOptions?.stepPosition,\n });\n const _id = params.isInternal ? undefined : id;\n return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n });\n}\n/**\n * Component that can be used inside a custom edge to render a smooth step edge.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { SmoothStepEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n * return (\n * <SmoothStepEdge\n * sourceX={sourceX}\n * sourceY={sourceY}\n * targetX={targetX}\n * targetY={targetY}\n * sourcePosition={sourcePosition}\n * targetPosition={targetPosition}\n * />\n * );\n * }\n * ```\n */\nconst SmoothStepEdge = createSmoothStepEdge({ isInternal: false });\n/**\n * @internal\n */\nconst SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true });\nSmoothStepEdge.displayName = 'SmoothStepEdge';\nSmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal';\n\nfunction createStepEdge(params) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, ...props }) => {\n const _id = params.isInternal ? undefined : id;\n return (jsx(SmoothStepEdge, { ...props, id: _id, pathOptions: useMemo(() => ({ borderRadius: 0, offset: props.pathOptions?.offset }), [props.pathOptions?.offset]) }));\n });\n}\n/**\n * Component that can be used inside a custom edge to render a step edge.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { StepEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n * return (\n * <StepEdge\n * sourceX={sourceX}\n * sourceY={sourceY}\n * targetX={targetX}\n * targetY={targetY}\n * sourcePosition={sourcePosition}\n * targetPosition={targetPosition}\n * />\n * );\n * }\n * ```\n */\nconst StepEdge = createStepEdge({ isInternal: false });\n/**\n * @internal\n */\nconst StepEdgeInternal = createStepEdge({ isInternal: true });\nStepEdge.displayName = 'StepEdge';\nStepEdgeInternal.displayName = 'StepEdgeInternal';\n\nfunction createStraightEdge(params) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY });\n const _id = params.isInternal ? undefined : id;\n return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n });\n}\n/**\n * Component that can be used inside a custom edge to render a straight line.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { StraightEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY }) {\n * return (\n * <StraightEdge\n * sourceX={sourceX}\n * sourceY={sourceY}\n * targetX={targetX}\n * targetY={targetY}\n * />\n * );\n * }\n * ```\n */\nconst StraightEdge = createStraightEdge({ isInternal: false });\n/**\n * @internal\n */\nconst StraightEdgeInternal = createStraightEdge({ isInternal: true });\nStraightEdge.displayName = 'StraightEdge';\nStraightEdgeInternal.displayName = 'StraightEdgeInternal';\n\nfunction createBezierEdge(params) {\n // eslint-disable-next-line react/display-name\n return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n const [path, labelX, labelY] = getBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n curvature: pathOptions?.curvature,\n });\n const _id = params.isInternal ? undefined : id;\n return (jsx(BaseEdge, { id: _id, path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n });\n}\n/**\n * Component that can be used inside a custom edge to render a bezier curve.\n *\n * @public\n * @example\n *\n * ```tsx\n * import { BezierEdge } from '@xyflow/react';\n *\n * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) {\n * return (\n * <BezierEdge\n * sourceX={sourceX}\n * sourceY={sourceY}\n * targetX={targetX}\n * targetY={targetY}\n * sourcePosition={sourcePosition}\n * targetPosition={targetPosition}\n * />\n * );\n * }\n * ```\n */\nconst BezierEdge = createBezierEdge({ isInternal: false });\n/**\n * @internal\n */\nconst BezierEdgeInternal = createBezierEdge({ isInternal: true });\nBezierEdge.displayName = 'BezierEdge';\nBezierEdgeInternal.displayName = 'BezierEdgeInternal';\n\nconst builtinEdgeTypes = {\n default: BezierEdgeInternal,\n straight: StraightEdgeInternal,\n step: StepEdgeInternal,\n smoothstep: SmoothStepEdgeInternal,\n simplebezier: SimpleBezierEdgeInternal,\n};\nconst nullPosition = {\n sourceX: null,\n sourceY: null,\n targetX: null,\n targetY: null,\n sourcePosition: null,\n targetPosition: null,\n};\n\nconst shiftX = (x, shift, position) => {\n if (position === Position.Left)\n return x - shift;\n if (position === Position.Right)\n return x + shift;\n return x;\n};\nconst shiftY = (y, shift, position) => {\n if (position === Position.Top)\n return y - shift;\n if (position === Position.Bottom)\n return y + shift;\n return y;\n};\nconst EdgeUpdaterClassName = 'react-flow__edgeupdater';\n/**\n * @internal\n */\nfunction EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) {\n return (jsx(\"circle\", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: \"transparent\", fill: \"transparent\" }));\n}\n\nfunction EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }) {\n const store = useStoreApi();\n const handleEdgeUpdater = (event, oppositeHandle) => {\n // avoid triggering edge updater if mouse btn is not left\n if (event.button !== 0) {\n return;\n }\n const { autoPanOnConnect, domNode, connectionMode, connectionRadius, lib, onConnectStart, cancelConnection, nodeLookup, rfId: flowId, panBy, updateConnection, } = store.getState();\n const isTarget = oppositeHandle.type === 'target';\n const _onReconnectEnd = (evt, connectionState) => {\n setReconnecting(false);\n onReconnectEnd?.(evt, edge, oppositeHandle.type, connectionState);\n };\n const onConnectEdge = (connection) => onReconnect?.(edge, connection);\n const _onConnectStart = (_event, params) => {\n setReconnecting(true);\n onReconnectStart?.(event, edge, oppositeHandle.type);\n onConnectStart?.(_event, params);\n };\n XYHandle.onPointerDown(event.nativeEvent, {\n autoPanOnConnect,\n connectionMode,\n connectionRadius,\n domNode,\n handleId: oppositeHandle.id,\n nodeId: oppositeHandle.nodeId,\n nodeLookup,\n isTarget,\n edgeUpdaterType: oppositeHandle.type,\n lib,\n flowId,\n cancelConnection,\n panBy,\n isValidConnection: (...args) => store.getState().isValidConnection?.(...args) ?? true,\n onConnect: onConnectEdge,\n onConnectStart: _onConnectStart,\n onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args),\n onReconnectEnd: _onReconnectEnd,\n updateConnection,\n getTransform: () => store.getState().transform,\n getFromHandle: () => store.getState().connection.fromHandle,\n dragThreshold: store.getState().connectionDragThreshold,\n handleDomNode: event.currentTarget,\n });\n };\n const onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.target, id: edge.targetHandle ?? null, type: 'target' });\n const onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.source, id: edge.sourceHandle ?? null, type: 'source' });\n const onReconnectMouseEnter = () => setUpdateHover(true);\n const onReconnectMouseOut = () => setUpdateHover(false);\n return (jsxs(Fragment, { children: [(isReconnectable === true || isReconnectable === 'source') && (jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: \"source\" })), (isReconnectable === true || isReconnectable === 'target') && (jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: \"target\" }))] }));\n}\n\nfunction EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }) {\n let edge = useStore((s) => s.edgeLookup.get(id));\n const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);\n edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge;\n let edgeType = edge.type || 'default';\n let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType];\n if (EdgeComponent === undefined) {\n onError?.('011', errorMessages['error011'](edgeType));\n edgeType = 'default';\n EdgeComponent = edgeTypes?.['default'] || builtinEdgeTypes.default;\n }\n const isFocusable = !!(edge.focusable || (edgesFocusable && typeof edge.focusable === 'undefined'));\n const isReconnectable = typeof onReconnect !== 'undefined' &&\n (edge.reconnectable || (edgesReconnectable && typeof edge.reconnectable === 'undefined'));\n const isSelectable = !!(edge.selectable || (elementsSelectable && typeof edge.selectable === 'undefined'));\n const edgeRef = useRef(null);\n const [updateHover, setUpdateHover] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const store = useStoreApi();\n const { zIndex, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition } = useStore(useCallback((store) => {\n const sourceNode = store.nodeLookup.get(edge.source);\n const targetNode = store.nodeLookup.get(edge.target);\n if (!sourceNode || !targetNode) {\n return {\n zIndex: edge.zIndex,\n ...nullPosition,\n };\n }\n const edgePosition = getEdgePosition({\n id,\n sourceNode,\n targetNode,\n sourceHandle: edge.sourceHandle || null,\n targetHandle: edge.targetHandle || null,\n connectionMode: store.connectionMode,\n onError,\n });\n const zIndex = getElevatedEdgeZIndex({\n selected: edge.selected,\n zIndex: edge.zIndex,\n sourceNode,\n targetNode,\n elevateOnSelect: store.elevateEdgesOnSelect,\n zIndexMode: store.zIndexMode,\n });\n return {\n zIndex,\n ...(edgePosition || nullPosition),\n };\n }, [edge.source, edge.target, edge.sourceHandle, edge.targetHandle, edge.selected, edge.zIndex]), shallow);\n const markerStartUrl = useMemo(() => (edge.markerStart ? `url('#${getMarkerId(edge.markerStart, rfId)}')` : undefined), [edge.markerStart, rfId]);\n const markerEndUrl = useMemo(() => (edge.markerEnd ? `url('#${getMarkerId(edge.markerEnd, rfId)}')` : undefined), [edge.markerEnd, rfId]);\n if (edge.hidden || sourceX === null || sourceY === null || targetX === null || targetY === null) {\n return null;\n }\n const onEdgeClick = (event) => {\n const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState();\n if (isSelectable) {\n store.setState({ nodesSelectionActive: false });\n if (edge.selected && multiSelectionActive) {\n unselectNodesAndEdges({ nodes: [], edges: [edge] });\n edgeRef.current?.blur();\n }\n else {\n addSelectedEdges([id]);\n }\n }\n if (onClick) {\n onClick(event, edge);\n }\n };\n const onEdgeDoubleClick = onDoubleClick\n ? (event) => {\n onDoubleClick(event, { ...edge });\n }\n : undefined;\n const onEdgeContextMenu = onContextMenu\n ? (event) => {\n onContextMenu(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseEnter = onMouseEnter\n ? (event) => {\n onMouseEnter(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseMove = onMouseMove\n ? (event) => {\n onMouseMove(event, { ...edge });\n }\n : undefined;\n const onEdgeMouseLeave = onMouseLeave\n ? (event) => {\n onMouseLeave(event, { ...edge });\n }\n : undefined;\n const onKeyDown = (event) => {\n if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) {\n const { unselectNodesAndEdges, addSelectedEdges } = store.getState();\n const unselect = event.key === 'Escape';\n if (unselect) {\n edgeRef.current?.blur();\n unselectNodesAndEdges({ edges: [edge] });\n }\n else {\n addSelectedEdges([id]);\n }\n }\n };\n return (jsx(\"svg\", { style: { zIndex }, children: jsxs(\"g\", { className: cc([\n 'react-flow__edge',\n `react-flow__edge-${edgeType}`,\n edge.className,\n noPanClassName,\n {\n selected: edge.selected,\n animated: edge.animated,\n inactive: !isSelectable && !onClick,\n updating: updateHover,\n selectable: isSelectable,\n },\n ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: edge.ariaRole ?? (isFocusable ? 'group' : 'img'), \"aria-roledescription\": \"edge\", \"data-id\": id, \"data-testid\": `rf__edge-${id}`, \"aria-label\": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, \"aria-describedby\": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, ...edge.domAttributes, children: [!reconnecting && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? true, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isReconnectable && (jsx(EdgeUpdateAnchors, { edge: edge, isReconnectable: isReconnectable, reconnectRadius: reconnectRadius, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setReconnecting: setReconnecting }))] }) }));\n}\nvar EdgeWrapper$1 = memo(EdgeWrapper);\n\nconst selector$a = (s) => ({\n edgesFocusable: s.edgesFocusable,\n edgesReconnectable: s.edgesReconnectable,\n elementsSelectable: s.elementsSelectable,\n connectionMode: s.connectionMode,\n onError: s.onError,\n});\nfunction EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }) {\n const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$a, shallow);\n const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);\n return (jsxs(\"div\", { className: \"react-flow__edges\", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => {\n return (jsx(EdgeWrapper$1, { id: id, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onReconnect: onReconnect, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, reconnectRadius: reconnectRadius, onDoubleClick: onEdgeDoubleClick, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes, disableKeyboardA11y: disableKeyboardA11y }, id));\n })] }));\n}\nEdgeRendererComponent.displayName = 'EdgeRenderer';\nconst EdgeRenderer = memo(EdgeRendererComponent);\n\nconst selector$9 = (s) => `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\nfunction Viewport({ children }) {\n const transform = useStore(selector$9);\n return (jsx(\"div\", { className: \"react-flow__viewport xyflow__viewport react-flow__container\", style: { transform }, children: children }));\n}\n\n/**\n * Hook for calling onInit handler.\n *\n * @internal\n */\nfunction useOnInitHandler(onInit) {\n const rfInstance = useReactFlow();\n const isInitialized = useRef(false);\n useEffect(() => {\n if (!isInitialized.current && rfInstance.viewportInitialized && onInit) {\n setTimeout(() => onInit(rfInstance), 1);\n isInitialized.current = true;\n }\n }, [onInit, rfInstance.viewportInitialized]);\n}\n\nconst selector$8 = (state) => state.panZoom?.syncViewport;\n/**\n * Hook for syncing the viewport with the panzoom instance.\n *\n * @internal\n * @param viewport\n */\nfunction useViewportSync(viewport) {\n const syncViewport = useStore(selector$8);\n const store = useStoreApi();\n useEffect(() => {\n if (viewport) {\n syncViewport?.(viewport);\n store.setState({ transform: [viewport.x, viewport.y, viewport.zoom] });\n }\n }, [viewport, syncViewport]);\n return null;\n}\n\nfunction storeSelector$1(s) {\n return s.connection.inProgress\n ? { ...s.connection, to: pointToRendererPoint(s.connection.to, s.transform) }\n : { ...s.connection };\n}\nfunction getSelector(connectionSelector) {\n if (connectionSelector) {\n const combinedSelector = (s) => {\n const connection = storeSelector$1(s);\n return connectionSelector(connection);\n };\n return combinedSelector;\n }\n return storeSelector$1;\n}\n/**\n * The `useConnection` hook returns the current connection when there is an active\n * connection interaction. If no connection interaction is active, it returns null\n * for every property. A typical use case for this hook is to colorize handles\n * based on a certain condition (e.g. if the connection is valid or not).\n *\n * @public\n * @param connectionSelector - An optional selector function used to extract a slice of the\n * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't\n * otherwise care about might change. If a selector is not provided, the entire `ConnectionState`\n * object is returned unchanged.\n * @example\n *\n * ```tsx\n *import { useConnection } from '@xyflow/react';\n *\n *function App() {\n * const connection = useConnection();\n *\n * return (\n * <div> {connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'}\n *\n * </div>\n * );\n * }\n * ```\n *\n * @returns ConnectionState\n */\nfunction useConnection(connectionSelector) {\n const combinedSelector = getSelector(connectionSelector);\n return useStore(combinedSelector, shallow);\n}\n\nconst selector$7 = (s) => ({\n nodesConnectable: s.nodesConnectable,\n isValid: s.connection.isValid,\n inProgress: s.connection.inProgress,\n width: s.width,\n height: s.height,\n});\nfunction ConnectionLineWrapper({ containerStyle, style, type, component, }) {\n const { nodesConnectable, width, height, isValid, inProgress } = useStore(selector$7, shallow);\n const renderConnection = !!(width && nodesConnectable && inProgress);\n if (!renderConnection) {\n return null;\n }\n return (jsx(\"svg\", { style: containerStyle, width: width, height: height, className: \"react-flow__connectionline react-flow__container\", children: jsx(\"g\", { className: cc(['react-flow__connection', getConnectionStatus(isValid)]), children: jsx(ConnectionLine, { style: style, type: type, CustomComponent: component, isValid: isValid }) }) }));\n}\nconst ConnectionLine = ({ style, type = ConnectionLineType.Bezier, CustomComponent, isValid, }) => {\n const { inProgress, from, fromNode, fromHandle, fromPosition, to, toNode, toHandle, toPosition, pointer } = useConnection();\n if (!inProgress) {\n return;\n }\n if (CustomComponent) {\n return (jsx(CustomComponent, { connectionLineType: type, connectionLineStyle: style, fromNode: fromNode, fromHandle: fromHandle, fromX: from.x, fromY: from.y, toX: to.x, toY: to.y, fromPosition: fromPosition, toPosition: toPosition, connectionStatus: getConnectionStatus(isValid), toNode: toNode, toHandle: toHandle, pointer: pointer }));\n }\n let path = '';\n const pathParams = {\n sourceX: from.x,\n sourceY: from.y,\n sourcePosition: fromPosition,\n targetX: to.x,\n targetY: to.y,\n targetPosition: toPosition,\n };\n switch (type) {\n case ConnectionLineType.Bezier:\n [path] = getBezierPath(pathParams);\n break;\n case ConnectionLineType.SimpleBezier:\n [path] = getSimpleBezierPath(pathParams);\n break;\n case ConnectionLineType.Step:\n [path] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0,\n });\n break;\n case ConnectionLineType.SmoothStep:\n [path] = getSmoothStepPath(pathParams);\n break;\n default:\n [path] = getStraightPath(pathParams);\n }\n return jsx(\"path\", { d: path, fill: \"none\", className: \"react-flow__connection-path\", style: style });\n};\nConnectionLine.displayName = 'ConnectionLine';\n\nconst emptyTypes = {};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) {\n const typesRef = useRef(nodeOrEdgeTypes);\n const store = useStoreApi();\n useEffect(() => {\n if (process.env.NODE_ENV === 'development') {\n const usedKeys = new Set([...Object.keys(typesRef.current), ...Object.keys(nodeOrEdgeTypes)]);\n for (const key of usedKeys) {\n if (typesRef.current[key] !== nodeOrEdgeTypes[key]) {\n store.getState().onError?.('002', errorMessages['error002']());\n break;\n }\n }\n typesRef.current = nodeOrEdgeTypes;\n }\n }, [nodeOrEdgeTypes]);\n}\n\nfunction useStylesLoadedWarning() {\n const store = useStoreApi();\n const checked = useRef(false);\n useEffect(() => {\n if (process.env.NODE_ENV === 'development') {\n if (!checked.current) {\n const pane = document.querySelector('.react-flow__pane');\n if (pane && !(window.getComputedStyle(pane).zIndex === '1')) {\n store.getState().onError?.('013', errorMessages['error013']('react'));\n }\n checked.current = true;\n }\n }\n }, []);\n}\n\nfunction GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, }) {\n useNodeOrEdgeTypesWarning(nodeTypes);\n useNodeOrEdgeTypesWarning(edgeTypes);\n useStylesLoadedWarning();\n useOnInitHandler(onInit);\n useViewportSync(viewport);\n return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, paneClickDistance: paneClickDistance, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx(\"div\", { className: \"react-flow__edgelabel-renderer\" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, nodeClickDistance: nodeClickDistance, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, rfId: rfId }), jsx(\"div\", { className: \"react-flow__viewport-portal\" })] }) }));\n}\nGraphViewComponent.displayName = 'GraphView';\nconst GraphView = memo(GraphViewComponent);\n\nconst getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = 'basic', } = {}) => {\n const nodeLookup = new Map();\n const parentLookup = new Map();\n const connectionLookup = new Map();\n const edgeLookup = new Map();\n const storeEdges = defaultEdges ?? edges ?? [];\n const storeNodes = defaultNodes ?? nodes ?? [];\n const storeNodeOrigin = nodeOrigin ?? [0, 0];\n const storeNodeExtent = nodeExtent ?? infiniteExtent;\n updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);\n const nodesInitialized = adoptUserNodes(storeNodes, nodeLookup, parentLookup, {\n nodeOrigin: storeNodeOrigin,\n nodeExtent: storeNodeExtent,\n zIndexMode,\n });\n let transform = [0, 0, 1];\n if (fitView && width && height) {\n const bounds = getInternalNodesBounds(nodeLookup, {\n filter: (node) => !!((node.width || node.initialWidth) && (node.height || node.initialHeight)),\n });\n const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, fitViewOptions?.padding ?? 0.1);\n transform = [x, y, zoom];\n }\n return {\n rfId: '1',\n width: width ?? 0,\n height: height ?? 0,\n transform,\n nodes: storeNodes,\n nodesInitialized,\n nodeLookup,\n parentLookup,\n edges: storeEdges,\n edgeLookup,\n connectionLookup,\n onNodesChange: null,\n onEdgesChange: null,\n hasDefaultNodes: defaultNodes !== undefined,\n hasDefaultEdges: defaultEdges !== undefined,\n panZoom: null,\n minZoom,\n maxZoom,\n translateExtent: infiniteExtent,\n nodeExtent: storeNodeExtent,\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n connectionMode: ConnectionMode.Strict,\n domNode: null,\n paneDragging: false,\n noPanClassName: 'nopan',\n nodeOrigin: storeNodeOrigin,\n nodeDragThreshold: 1,\n connectionDragThreshold: 1,\n snapGrid: [15, 15],\n snapToGrid: false,\n nodesDraggable: true,\n nodesConnectable: true,\n nodesFocusable: true,\n edgesFocusable: true,\n edgesReconnectable: true,\n elementsSelectable: true,\n elevateNodesOnSelect: true,\n elevateEdgesOnSelect: true,\n selectNodesOnDrag: true,\n multiSelectionActive: false,\n fitViewQueued: fitView ?? false,\n fitViewOptions,\n fitViewResolver: null,\n connection: { ...initialConnection },\n connectionClickStartHandle: null,\n connectOnClick: true,\n ariaLiveMessage: '',\n autoPanOnConnect: true,\n autoPanOnNodeDrag: true,\n autoPanOnNodeFocus: true,\n autoPanSpeed: 15,\n connectionRadius: 20,\n onError: devWarn,\n isValidConnection: undefined,\n onSelectionChangeHandlers: [],\n lib: 'react',\n debug: false,\n ariaLabelConfig: defaultAriaLabelConfig,\n zIndexMode,\n onNodesChangeMiddlewareMap: new Map(),\n onEdgesChangeMiddlewareMap: new Map(),\n };\n};\n\nconst createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) => createWithEqualityFn((set, get) => {\n async function resolveFitView() {\n const { nodeLookup, panZoom, fitViewOptions, fitViewResolver, width, height, minZoom, maxZoom } = get();\n if (!panZoom) {\n return;\n }\n await fitViewport({\n nodes: nodeLookup,\n width,\n height,\n panZoom,\n minZoom,\n maxZoom,\n }, fitViewOptions);\n fitViewResolver?.resolve(true);\n /**\n * wait for the fitViewport to resolve before deleting the resolver,\n * we want to reuse the old resolver if the user calls fitView again in the mean time\n */\n set({ fitViewResolver: null });\n }\n return {\n ...getInitialState({\n nodes,\n edges,\n width,\n height,\n fitView,\n fitViewOptions,\n minZoom,\n maxZoom,\n nodeOrigin,\n nodeExtent,\n defaultNodes,\n defaultEdges,\n zIndexMode,\n }),\n setNodes: (nodes) => {\n const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, fitViewQueued, zIndexMode } = get();\n /*\n * setNodes() is called exclusively in response to user actions:\n * - either when the `<ReactFlow nodes>` prop is updated in the controlled ReactFlow setup,\n * - or when the user calls something like `reactFlowInstance.setNodes()` in an uncontrolled ReactFlow setup.\n *\n * When this happens, we take the note objects passed by the user and extend them with fields\n * relevant for internal React Flow operations.\n */\n const nodesInitialized = adoptUserNodes(nodes, nodeLookup, parentLookup, {\n nodeOrigin,\n nodeExtent,\n elevateNodesOnSelect,\n checkEquality: true,\n zIndexMode,\n });\n if (fitViewQueued && nodesInitialized) {\n resolveFitView();\n set({ nodes, nodesInitialized, fitViewQueued: false, fitViewOptions: undefined });\n }\n else {\n set({ nodes, nodesInitialized });\n }\n },\n setEdges: (edges) => {\n const { connectionLookup, edgeLookup } = get();\n updateConnectionLookup(connectionLookup, edgeLookup, edges);\n set({ edges });\n },\n setDefaultNodesAndEdges: (nodes, edges) => {\n if (nodes) {\n const { setNodes } = get();\n setNodes(nodes);\n set({ hasDefaultNodes: true });\n }\n if (edges) {\n const { setEdges } = get();\n setEdges(edges);\n set({ hasDefaultEdges: true });\n }\n },\n /*\n * Every node gets registerd at a ResizeObserver. Whenever a node\n * changes its dimensions, this function is called to measure the\n * new dimensions and update the nodes.\n */\n updateNodeInternals: (updates) => {\n const { triggerNodeChanges, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, debug, fitViewQueued, zIndexMode, } = get();\n const { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode);\n if (!updatedInternals) {\n return;\n }\n updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin, nodeExtent, zIndexMode });\n if (fitViewQueued) {\n resolveFitView();\n set({ fitViewQueued: false, fitViewOptions: undefined });\n }\n else {\n // we always want to trigger useStore calls whenever updateNodeInternals is called\n set({});\n }\n if (changes?.length > 0) {\n if (debug) {\n console.log('React Flow: trigger node changes', changes);\n }\n triggerNodeChanges?.(changes);\n }\n },\n updateNodePositions: (nodeDragItems, dragging = false) => {\n const parentExpandChildren = [];\n let changes = [];\n const { nodeLookup, triggerNodeChanges, connection, updateConnection, onNodesChangeMiddlewareMap } = get();\n for (const [id, dragItem] of nodeDragItems) {\n // we are using the nodelookup to be sure to use the current expandParent and parentId value\n const node = nodeLookup.get(id);\n const expandParent = !!(node?.expandParent && node?.parentId && dragItem?.position);\n const change = {\n id,\n type: 'position',\n position: expandParent\n ? {\n x: Math.max(0, dragItem.position.x),\n y: Math.max(0, dragItem.position.y),\n }\n : dragItem.position,\n dragging,\n };\n if (node && connection.inProgress && connection.fromNode.id === node.id) {\n const updatedFrom = getHandlePosition(node, connection.fromHandle, Position.Left, true);\n updateConnection({ ...connection, from: updatedFrom });\n }\n if (expandParent && node.parentId) {\n parentExpandChildren.push({\n id,\n parentId: node.parentId,\n rect: {\n ...dragItem.internals.positionAbsolute,\n width: dragItem.measured.width ?? 0,\n height: dragItem.measured.height ?? 0,\n },\n });\n }\n changes.push(change);\n }\n if (parentExpandChildren.length > 0) {\n const { parentLookup, nodeOrigin } = get();\n const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin);\n changes.push(...parentExpandChanges);\n }\n for (const middleware of onNodesChangeMiddlewareMap.values()) {\n changes = middleware(changes);\n }\n triggerNodeChanges(changes);\n },\n triggerNodeChanges: (changes) => {\n const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } = get();\n if (changes?.length) {\n if (hasDefaultNodes) {\n const updatedNodes = applyNodeChanges(changes, nodes);\n setNodes(updatedNodes);\n }\n if (debug) {\n console.log('React Flow: trigger node changes', changes);\n }\n onNodesChange?.(changes);\n }\n },\n triggerEdgeChanges: (changes) => {\n const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } = get();\n if (changes?.length) {\n if (hasDefaultEdges) {\n const updatedEdges = applyEdgeChanges(changes, edges);\n setEdges(updatedEdges);\n }\n if (debug) {\n console.log('React Flow: trigger edge changes', changes);\n }\n onEdgesChange?.(changes);\n }\n },\n addSelectedNodes: (selectedNodeIds) => {\n const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n if (multiSelectionActive) {\n const nodeChanges = selectedNodeIds.map((nodeId) => createSelectionChange(nodeId, true));\n triggerNodeChanges(nodeChanges);\n return;\n }\n triggerNodeChanges(getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true));\n triggerEdgeChanges(getSelectionChanges(edgeLookup));\n },\n addSelectedEdges: (selectedEdgeIds) => {\n const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n if (multiSelectionActive) {\n const changedEdges = selectedEdgeIds.map((edgeId) => createSelectionChange(edgeId, true));\n triggerEdgeChanges(changedEdges);\n return;\n }\n triggerEdgeChanges(getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds])));\n triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true));\n },\n unselectNodesAndEdges: ({ nodes, edges } = {}) => {\n const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get();\n const nodesToUnselect = nodes ? nodes : storeNodes;\n const edgesToUnselect = edges ? edges : storeEdges;\n const nodeChanges = [];\n for (const node of nodesToUnselect) {\n if (!node.selected) {\n continue; // skip changing nodes that are not selected\n }\n const internalNode = nodeLookup.get(node.id);\n if (internalNode) {\n /*\n * we need to unselect the internal node that was selected previously before we\n * send the change to the user to prevent it to be selected while dragging the new node\n */\n internalNode.selected = false;\n }\n nodeChanges.push(createSelectionChange(node.id, false));\n }\n const edgeChanges = [];\n for (const edge of edgesToUnselect) {\n if (!edge.selected) {\n continue; // skip changing edges that are not selected\n }\n edgeChanges.push(createSelectionChange(edge.id, false));\n }\n triggerNodeChanges(nodeChanges);\n triggerEdgeChanges(edgeChanges);\n },\n setMinZoom: (minZoom) => {\n const { panZoom, maxZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n set({ minZoom });\n },\n setMaxZoom: (maxZoom) => {\n const { panZoom, minZoom } = get();\n panZoom?.setScaleExtent([minZoom, maxZoom]);\n set({ maxZoom });\n },\n setTranslateExtent: (translateExtent) => {\n get().panZoom?.setTranslateExtent(translateExtent);\n set({ translateExtent });\n },\n resetSelectedElements: () => {\n const { edges, nodes, triggerNodeChanges, triggerEdgeChanges, elementsSelectable } = get();\n if (!elementsSelectable) {\n return;\n }\n const nodeChanges = nodes.reduce((res, node) => (node.selected ? [...res, createSelectionChange(node.id, false)] : res), []);\n const edgeChanges = edges.reduce((res, edge) => (edge.selected ? [...res, createSelectionChange(edge.id, false)] : res), []);\n triggerNodeChanges(nodeChanges);\n triggerEdgeChanges(edgeChanges);\n },\n setNodeExtent: (nextNodeExtent) => {\n const { nodes, nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, nodeExtent, zIndexMode } = get();\n if (nextNodeExtent[0][0] === nodeExtent[0][0] &&\n nextNodeExtent[0][1] === nodeExtent[0][1] &&\n nextNodeExtent[1][0] === nodeExtent[1][0] &&\n nextNodeExtent[1][1] === nodeExtent[1][1]) {\n return;\n }\n adoptUserNodes(nodes, nodeLookup, parentLookup, {\n nodeOrigin,\n nodeExtent: nextNodeExtent,\n elevateNodesOnSelect,\n checkEquality: false,\n zIndexMode,\n });\n set({ nodeExtent: nextNodeExtent });\n },\n panBy: (delta) => {\n const { transform, width, height, panZoom, translateExtent } = get();\n return panBy({ delta, panZoom, transform, translateExtent, width, height });\n },\n setCenter: async (x, y, options) => {\n const { width, height, maxZoom, panZoom } = get();\n if (!panZoom) {\n return Promise.resolve(false);\n }\n const nextZoom = typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n await panZoom.setViewport({\n x: width / 2 - x * nextZoom,\n y: height / 2 - y * nextZoom,\n zoom: nextZoom,\n }, { duration: options?.duration, ease: options?.ease, interpolate: options?.interpolate });\n return Promise.resolve(true);\n },\n cancelConnection: () => {\n set({\n connection: { ...initialConnection },\n });\n },\n updateConnection: (connection) => {\n set({ connection });\n },\n reset: () => set({ ...getInitialState() }),\n };\n}, Object.is);\n\n/**\n * The `<ReactFlowProvider />` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#)\n * that makes it possible to access a flow's internal state outside of the\n * [`<ReactFlow />`](/api-reference/react-flow) component. Many of the hooks we\n * provide rely on this component to work.\n * @public\n *\n * @example\n * ```tsx\n *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react'\n *\n *export default function Flow() {\n * return (\n * <ReactFlowProvider>\n * <ReactFlow nodes={...} edges={...} />\n * <Sidebar />\n * </ReactFlowProvider>\n * );\n *}\n *\n *function Sidebar() {\n * // This hook will only work if the component it's used in is a child of a\n * // <ReactFlowProvider />.\n * const nodes = useNodes()\n *\n * return <aside>do something with nodes</aside>;\n *}\n *```\n *\n * @remarks If you're using a router and want your flow's state to persist across routes,\n * it's vital that you place the `<ReactFlowProvider />` component _outside_ of\n * your router. If you have multiple flows on the same page you will need to use a separate\n * `<ReactFlowProvider />` for each flow.\n */\nfunction ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }) {\n const [store] = useState(() => createStore({\n nodes,\n edges,\n defaultNodes,\n defaultEdges,\n width,\n height,\n fitView,\n minZoom,\n maxZoom,\n fitViewOptions,\n nodeOrigin,\n nodeExtent,\n zIndexMode,\n }));\n return (jsx(Provider$1, { value: store, children: jsx(BatchProvider, { children: children }) }));\n}\n\nfunction Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) {\n const isWrapped = useContext(StoreContext);\n if (isWrapped) {\n /*\n * we need to wrap it with a fragment because it's not allowed for children to be a ReactNode\n * https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n */\n return jsx(Fragment, { children: children });\n }\n return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView, initialFitViewOptions: fitViewOptions, initialMinZoom: minZoom, initialMaxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: children }));\n}\n\nconst wrapperStyle = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n zIndex: 0,\n};\nfunction ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', debug, onScroll, ariaLabelConfig, zIndexMode = 'basic', ...rest }, ref) {\n const rfId = id || '1';\n const colorModeClassName = useColorModeClass(colorMode);\n // Undo scroll events, preventing viewport from shifting when nodes outside of it are focused\n const wrapperOnScroll = useCallback((e) => {\n e.currentTarget.scrollTo({ top: 0, left: 0, behavior: 'instant' });\n onScroll?.(e);\n }, [onScroll]);\n return (jsx(\"div\", { \"data-testid\": \"rf__wrapper\", ...rest, onScroll: wrapperOnScroll, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), id: id, role: \"application\", children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, fitViewOptions: fitViewOptions, minZoom: minZoom, maxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: [jsx(GraphView, { onInit: onInit, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, paneClickDistance: paneClickDistance, nodeClickDistance: nodeClickDistance, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange }), jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, autoPanOnNodeFocus: autoPanOnNodeFocus, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, autoPanSpeed: autoPanSpeed, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, connectionDragThreshold: connectionDragThreshold, onBeforeDelete: onBeforeDelete, debug: debug, ariaLabelConfig: ariaLabelConfig, zIndexMode: zIndexMode }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) }));\n}\n/**\n * The `<ReactFlow />` component is the heart of your React Flow application.\n * It renders your nodes and edges and handles user interaction\n *\n * @public\n *\n * @example\n * ```tsx\n *import { ReactFlow } from '@xyflow/react'\n *\n *export default function Flow() {\n * return (<ReactFlow\n * nodes={...}\n * edges={...}\n * onNodesChange={...}\n * ...\n * />);\n *}\n *```\n */\nvar index = fixedForwardRef(ReactFlow);\n\nconst selector$6 = (s) => s.domNode?.querySelector('.react-flow__edgelabel-renderer');\n/**\n * Edges are SVG-based. If you want to render more complex labels you can use the\n * `<EdgeLabelRenderer />` component to access a div based renderer. This component\n * is a portal that renders the label in a `<div />` that is positioned on top of\n * the edges. You can see an example usage of the component in the\n * [edge label renderer example](/examples/edges/edge-label-renderer).\n * @public\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react';\n *\n * export function CustomEdge({ id, data, ...props }) {\n * const [edgePath, labelX, labelY] = getBezierPath(props);\n *\n * return (\n * <>\n * <BaseEdge id={id} path={edgePath} />\n * <EdgeLabelRenderer>\n * <div\n * style={{\n * position: 'absolute',\n * transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,\n * background: '#ffcc00',\n * padding: 10,\n * }}\n * className=\"nodrag nopan\"\n * >\n * {data.label}\n * </div>\n * </EdgeLabelRenderer>\n * </>\n * );\n * };\n * ```\n *\n * @remarks The `<EdgeLabelRenderer />` has no pointer events by default. If you want to\n * add mouse interactions you need to set the style `pointerEvents: all` and add\n * the `nopan` class on the label or the element you want to interact with.\n */\nfunction EdgeLabelRenderer({ children }) {\n const edgeLabelRenderer = useStore(selector$6);\n if (!edgeLabelRenderer) {\n return null;\n }\n return createPortal(children, edgeLabelRenderer);\n}\n\nconst selector$5 = (s) => s.domNode?.querySelector('.react-flow__viewport-portal');\n/**\n * The `<ViewportPortal />` component can be used to add components to the same viewport\n * of the flow where nodes and edges are rendered. This is useful when you want to render\n * your own components that are adhere to the same coordinate system as the nodes & edges\n * and are also affected by zooming and panning\n * @public\n * @example\n *\n * ```jsx\n *import React from 'react';\n *import { ViewportPortal } from '@xyflow/react';\n *\n *export default function () {\n * return (\n * <ViewportPortal>\n * <div\n * style={{ transform: 'translate(100px, 100px)', position: 'absolute' }}\n * >\n * This div is positioned at [100, 100] on the flow.\n * </div>\n * </ViewportPortal>\n * );\n *}\n *```\n */\nfunction ViewportPortal({ children }) {\n const viewPortalDiv = useStore(selector$5);\n if (!viewPortalDiv) {\n return null;\n }\n return createPortal(children, viewPortalDiv);\n}\n\n/**\n * When you programmatically add or remove handles to a node or update a node's\n * handle position, you need to let React Flow know about it using this hook. This\n * will update the internal dimensions of the node and properly reposition handles\n * on the canvas if necessary.\n *\n * @public\n * @returns Use this function to tell React Flow to update the internal state of one or more nodes\n * that you have changed programmatically.\n *\n * @example\n * ```jsx\n *import { useCallback, useState } from 'react';\n *import { Handle, useUpdateNodeInternals } from '@xyflow/react';\n *\n *export default function RandomHandleNode({ id }) {\n * const updateNodeInternals = useUpdateNodeInternals();\n * const [handleCount, setHandleCount] = useState(0);\n * const randomizeHandleCount = useCallback(() => {\n * setHandleCount(Math.floor(Math.random() * 10));\n * updateNodeInternals(id);\n * }, [id, updateNodeInternals]);\n *\n * return (\n * <>\n * {Array.from({ length: handleCount }).map((_, index) => (\n * <Handle\n * key={index}\n * type=\"target\"\n * position=\"left\"\n * id={`handle-${index}`}\n * />\n * ))}\n *\n * <div>\n * <button onClick={randomizeHandleCount}>Randomize handle count</button>\n * <p>There are {handleCount} handles on this node.</p>\n * </div>\n * </>\n * );\n *}\n *```\n * @remarks This hook can only be used in a component that is a child of a\n *{@link ReactFlowProvider} or a {@link ReactFlow} component.\n */\nfunction useUpdateNodeInternals() {\n const store = useStoreApi();\n return useCallback((id) => {\n const { domNode, updateNodeInternals } = store.getState();\n const updateIds = Array.isArray(id) ? id : [id];\n const updates = new Map();\n updateIds.forEach((updateId) => {\n const nodeElement = domNode?.querySelector(`.react-flow__node[data-id=\"${updateId}\"]`);\n if (nodeElement) {\n updates.set(updateId, { id: updateId, nodeElement, force: true });\n }\n });\n requestAnimationFrame(() => updateNodeInternals(updates, { triggerFitView: false }));\n }, []);\n}\n\nconst nodesSelector = (state) => state.nodes;\n/**\n * This hook returns an array of the current nodes. Components that use this hook\n * will re-render **whenever any node changes**, including when a node is selected\n * or moved.\n *\n * @public\n * @returns An array of all nodes currently in the flow.\n *\n * @example\n * ```jsx\n *import { useNodes } from '@xyflow/react';\n *\n *export default function() {\n * const nodes = useNodes();\n *\n * return <div>There are currently {nodes.length} nodes!</div>;\n *}\n *```\n */\nfunction useNodes() {\n const nodes = useStore(nodesSelector, shallow);\n return nodes;\n}\n\nconst edgesSelector = (state) => state.edges;\n/**\n * This hook returns an array of the current edges. Components that use this hook\n * will re-render **whenever any edge changes**.\n *\n * @public\n * @returns An array of all edges currently in the flow.\n *\n * @example\n * ```tsx\n *import { useEdges } from '@xyflow/react';\n *\n *export default function () {\n * const edges = useEdges();\n *\n * return <div>There are currently {edges.length} edges!</div>;\n *}\n *```\n */\nfunction useEdges() {\n const edges = useStore(edgesSelector, shallow);\n return edges;\n}\n\nconst viewportSelector = (state) => ({\n x: state.transform[0],\n y: state.transform[1],\n zoom: state.transform[2],\n});\n/**\n * The `useViewport` hook is a convenient way to read the current state of the\n * {@link Viewport} in a component. Components that use this hook\n * will re-render **whenever the viewport changes**.\n *\n * @public\n * @returns The current viewport.\n *\n * @example\n *\n *```jsx\n *import { useViewport } from '@xyflow/react';\n *\n *export default function ViewportDisplay() {\n * const { x, y, zoom } = useViewport();\n *\n * return (\n * <div>\n * <p>\n * The viewport is currently at ({x}, {y}) and zoomed to {zoom}.\n * </p>\n * </div>\n * );\n *}\n *```\n *\n * @remarks This hook can only be used in a component that is a child of a\n *{@link ReactFlowProvider} or a {@link ReactFlow} component.\n */\nfunction useViewport() {\n const viewport = useStore(viewportSelector, shallow);\n return viewport;\n}\n\n/**\n * This hook makes it easy to prototype a controlled flow where you manage the\n * state of nodes and edges outside the `ReactFlowInstance`. You can think of it\n * like React's `useState` hook with an additional helper callback.\n *\n * @public\n * @returns\n * - `nodes`: The current array of nodes. You might pass this directly to the `nodes` prop of your\n * `<ReactFlow />` component, or you may want to manipulate it first to perform some layouting,\n * for example.\n * - `setNodes`: A function that you can use to update the nodes. You can pass it a new array of\n * nodes or a callback that receives the current array of nodes and returns a new array of nodes.\n * This is the same as the second element of the tuple returned by React's `useState` hook.\n * - `onNodesChange`: A handy callback that can take an array of `NodeChanges` and update the nodes\n * state accordingly. You'll typically pass this directly to the `onNodesChange` prop of your\n * `<ReactFlow />` component.\n * @example\n *\n *```tsx\n *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react';\n *\n *const initialNodes = [];\n *const initialEdges = [];\n *\n *export default function () {\n * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);\n *\n * return (\n * <ReactFlow\n * nodes={nodes}\n * edges={edges}\n * onNodesChange={onNodesChange}\n * onEdgesChange={onEdgesChange}\n * />\n * );\n *}\n *```\n *\n * @remarks This hook was created to make prototyping easier and our documentation\n * examples clearer. Although it is OK to use this hook in production, in\n * practice you may want to use a more sophisticated state management solution\n * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead.\n *\n */\nfunction useNodesState(initialNodes) {\n const [nodes, setNodes] = useState(initialNodes);\n const onNodesChange = useCallback((changes) => setNodes((nds) => applyNodeChanges(changes, nds)), []);\n return [nodes, setNodes, onNodesChange];\n}\n/**\n * This hook makes it easy to prototype a controlled flow where you manage the\n * state of nodes and edges outside the `ReactFlowInstance`. You can think of it\n * like React's `useState` hook with an additional helper callback.\n *\n * @public\n * @returns\n * - `edges`: The current array of edges. You might pass this directly to the `edges` prop of your\n * `<ReactFlow />` component, or you may want to manipulate it first to perform some layouting,\n * for example.\n *\n * - `setEdges`: A function that you can use to update the edges. You can pass it a new array of\n * edges or a callback that receives the current array of edges and returns a new array of edges.\n * This is the same as the second element of the tuple returned by React's `useState` hook.\n *\n * - `onEdgesChange`: A handy callback that can take an array of `EdgeChanges` and update the edges\n * state accordingly. You'll typically pass this directly to the `onEdgesChange` prop of your\n * `<ReactFlow />` component.\n * @example\n *\n *```tsx\n *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react';\n *\n *const initialNodes = [];\n *const initialEdges = [];\n *\n *export default function () {\n * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);\n *\n * return (\n * <ReactFlow\n * nodes={nodes}\n * edges={edges}\n * onNodesChange={onNodesChange}\n * onEdgesChange={onEdgesChange}\n * />\n * );\n *}\n *```\n *\n * @remarks This hook was created to make prototyping easier and our documentation\n * examples clearer. Although it is OK to use this hook in production, in\n * practice you may want to use a more sophisticated state management solution\n * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead.\n *\n */\nfunction useEdgesState(initialEdges) {\n const [edges, setEdges] = useState(initialEdges);\n const onEdgesChange = useCallback((changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), []);\n return [edges, setEdges, onEdgesChange];\n}\n\n/**\n * The `useOnViewportChange` hook lets you listen for changes to the viewport such\n * as panning and zooming. You can provide a callback for each phase of a viewport\n * change: `onStart`, `onChange`, and `onEnd`.\n *\n * @public\n * @example\n * ```jsx\n *import { useCallback } from 'react';\n *import { useOnViewportChange } from '@xyflow/react';\n *\n *function ViewportChangeLogger() {\n * useOnViewportChange({\n * onStart: (viewport: Viewport) => console.log('start', viewport),\n * onChange: (viewport: Viewport) => console.log('change', viewport),\n * onEnd: (viewport: Viewport) => console.log('end', viewport),\n * });\n *\n * return null;\n *}\n *```\n */\nfunction useOnViewportChange({ onStart, onChange, onEnd }) {\n const store = useStoreApi();\n useEffect(() => {\n store.setState({ onViewportChangeStart: onStart });\n }, [onStart]);\n useEffect(() => {\n store.setState({ onViewportChange: onChange });\n }, [onChange]);\n useEffect(() => {\n store.setState({ onViewportChangeEnd: onEnd });\n }, [onEnd]);\n}\n\n/**\n * This hook lets you listen for changes to both node and edge selection. As the\n *name implies, the callback you provide will be called whenever the selection of\n *_either_ nodes or edges changes.\n *\n * @public\n * @example\n * ```jsx\n *import { useState } from 'react';\n *import { ReactFlow, useOnSelectionChange } from '@xyflow/react';\n *\n *function SelectionDisplay() {\n * const [selectedNodes, setSelectedNodes] = useState([]);\n * const [selectedEdges, setSelectedEdges] = useState([]);\n *\n * // the passed handler has to be memoized, otherwise the hook will not work correctly\n * const onChange = useCallback(({ nodes, edges }) => {\n * setSelectedNodes(nodes.map((node) => node.id));\n * setSelectedEdges(edges.map((edge) => edge.id));\n * }, []);\n *\n * useOnSelectionChange({\n * onChange,\n * });\n *\n * return (\n * <div>\n * <p>Selected nodes: {selectedNodes.join(', ')}</p>\n * <p>Selected edges: {selectedEdges.join(', ')}</p>\n * </div>\n * );\n *}\n *```\n *\n * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly.\n */\nfunction useOnSelectionChange({ onChange, }) {\n const store = useStoreApi();\n useEffect(() => {\n const nextOnSelectionChangeHandlers = [...store.getState().onSelectionChangeHandlers, onChange];\n store.setState({ onSelectionChangeHandlers: nextOnSelectionChangeHandlers });\n return () => {\n const nextHandlers = store.getState().onSelectionChangeHandlers.filter((fn) => fn !== onChange);\n store.setState({ onSelectionChangeHandlers: nextHandlers });\n };\n }, [onChange]);\n}\n\nconst selector$4 = (options) => (s) => {\n if (!options.includeHiddenNodes) {\n return s.nodesInitialized;\n }\n if (s.nodeLookup.size === 0) {\n return false;\n }\n for (const [, { internals }] of s.nodeLookup) {\n if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) {\n return false;\n }\n }\n return true;\n};\n/**\n * This hook tells you whether all the nodes in a flow have been measured and given\n *a width and height. When you add a node to the flow, this hook will return\n *`false` and then `true` again once the node has been measured.\n *\n * @public\n * @returns Whether or not the nodes have been initialized by the `<ReactFlow />` component and\n * given a width and height.\n *\n * @example\n * ```jsx\n *import { useReactFlow, useNodesInitialized } from '@xyflow/react';\n *import { useEffect, useState } from 'react';\n *\n *const options = {\n * includeHiddenNodes: false,\n *};\n *\n *export default function useLayout() {\n * const { getNodes } = useReactFlow();\n * const nodesInitialized = useNodesInitialized(options);\n * const [layoutedNodes, setLayoutedNodes] = useState(getNodes());\n *\n * useEffect(() => {\n * if (nodesInitialized) {\n * setLayoutedNodes(yourLayoutingFunction(getNodes()));\n * }\n * }, [nodesInitialized]);\n *\n * return layoutedNodes;\n *}\n *```\n */\nfunction useNodesInitialized(options = {\n includeHiddenNodes: false,\n}) {\n const initialized = useStore(selector$4(options));\n return initialized;\n}\n\n/**\n * Hook to check if a <Handle /> is connected to another <Handle /> and get the connections.\n *\n * @public\n * @deprecated Use `useNodeConnections` instead.\n * @returns An array with handle connections.\n */\nfunction useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }) {\n console.warn('[DEPRECATED] `useHandleConnections` is deprecated. Instead use `useNodeConnections` https://reactflow.dev/api-reference/hooks/useNodeConnections');\n const _nodeId = useNodeId();\n const currentNodeId = nodeId ?? _nodeId;\n const prevConnections = useRef(null);\n const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}-${type}${id ? `-${id}` : ''}`), areConnectionMapsEqual);\n useEffect(() => {\n // @todo dicuss if onConnect/onDisconnect should be called when the component mounts/unmounts\n if (prevConnections.current && prevConnections.current !== connections) {\n const _connections = connections ?? new Map();\n handleConnectionChange(prevConnections.current, _connections, onDisconnect);\n handleConnectionChange(_connections, prevConnections.current, onConnect);\n }\n prevConnections.current = connections ?? new Map();\n }, [connections, onConnect, onDisconnect]);\n return useMemo(() => Array.from(connections?.values() ?? []), [connections]);\n}\n\nconst error014 = errorMessages['error014']();\n/**\n * This hook returns an array of connections on a specific node, handle type ('source', 'target') or handle ID.\n *\n * @public\n * @returns An array with connections.\n *\n * @example\n * ```jsx\n *import { useNodeConnections } from '@xyflow/react';\n *\n *export default function () {\n * const connections = useNodeConnections({\n * handleType: 'target',\n * handleId: 'my-handle',\n * });\n *\n * return (\n * <div>There are currently {connections.length} incoming connections!</div>\n * );\n *}\n *```\n */\nfunction useNodeConnections({ id, handleType, handleId, onConnect, onDisconnect, } = {}) {\n const nodeId = useNodeId();\n const currentNodeId = id ?? nodeId;\n if (!currentNodeId) {\n throw new Error(error014);\n }\n const prevConnections = useRef(null);\n const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`), areConnectionMapsEqual);\n useEffect(() => {\n // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts\n if (prevConnections.current && prevConnections.current !== connections) {\n const _connections = connections ?? new Map();\n handleConnectionChange(prevConnections.current, _connections, onDisconnect);\n handleConnectionChange(_connections, prevConnections.current, onConnect);\n }\n prevConnections.current = connections ?? new Map();\n }, [connections, onConnect, onDisconnect]);\n return useMemo(() => Array.from(connections?.values() ?? []), [connections]);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction useNodesData(nodeIds) {\n const nodesData = useStore(useCallback((s) => {\n const data = [];\n const isArrayOfIds = Array.isArray(nodeIds);\n const _nodeIds = isArrayOfIds ? nodeIds : [nodeIds];\n for (const nodeId of _nodeIds) {\n const node = s.nodeLookup.get(nodeId);\n if (node) {\n data.push({\n id: node.id,\n type: node.type,\n data: node.data,\n });\n }\n }\n return isArrayOfIds ? data : data[0] ?? null;\n }, [nodeIds]), shallowNodeData);\n return nodesData;\n}\n\n/**\n * This hook returns the internal representation of a specific node.\n * Components that use this hook will re-render **whenever the node changes**,\n * including when a node is selected or moved.\n *\n * @public\n * @param id - The ID of a node you want to observe.\n * @returns The `InternalNode` object for the node with the given ID.\n *\n * @example\n * ```tsx\n *import { useInternalNode } from '@xyflow/react';\n *\n *export default function () {\n * const internalNode = useInternalNode('node-1');\n * const absolutePosition = internalNode.internals.positionAbsolute;\n *\n * return (\n * <div>\n * The absolute position of the node is at:\n * <p>x: {absolutePosition.x}</p>\n * <p>y: {absolutePosition.y}</p>\n * </div>\n * );\n *}\n *```\n */\nfunction useInternalNode(id) {\n const node = useStore(useCallback((s) => s.nodeLookup.get(id), [id]), shallow);\n return node;\n}\n\n/**\n * Registers a middleware function to transform node changes.\n *\n * @public\n * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration.\n */\nfunction experimental_useOnNodesChangeMiddleware(fn) {\n const store = useStoreApi();\n const [symbol] = useState(() => Symbol());\n useEffect(() => {\n const { onNodesChangeMiddlewareMap } = store.getState();\n onNodesChangeMiddlewareMap.set(symbol, fn);\n }, [fn]);\n useEffect(() => {\n const { onNodesChangeMiddlewareMap } = store.getState();\n return () => {\n onNodesChangeMiddlewareMap.delete(symbol);\n };\n }, []);\n}\n\n/**\n * Registers a middleware function to transform edge changes.\n *\n * @public\n * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration.\n */\nfunction experimental_useOnEdgesChangeMiddleware(fn) {\n const store = useStoreApi();\n const [symbol] = useState(() => Symbol());\n useEffect(() => {\n const { onEdgesChangeMiddlewareMap } = store.getState();\n onEdgesChangeMiddlewareMap.set(symbol, fn);\n }, [fn]);\n useEffect(() => {\n const { onEdgesChangeMiddlewareMap } = store.getState();\n return () => {\n onEdgesChangeMiddlewareMap.delete(symbol);\n };\n }, []);\n}\n\nfunction LinePattern({ dimensions, lineWidth, variant, className }) {\n return (jsx(\"path\", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) }));\n}\nfunction DotPattern({ radius, className }) {\n return (jsx(\"circle\", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) }));\n}\n\n/**\n * The three variants are exported as an enum for convenience. You can either import\n * the enum and use it like `BackgroundVariant.Lines` or you can use the raw string\n * value directly.\n * @public\n */\nvar BackgroundVariant;\n(function (BackgroundVariant) {\n BackgroundVariant[\"Lines\"] = \"lines\";\n BackgroundVariant[\"Dots\"] = \"dots\";\n BackgroundVariant[\"Cross\"] = \"cross\";\n})(BackgroundVariant || (BackgroundVariant = {}));\n\nconst defaultSize = {\n [BackgroundVariant.Dots]: 1,\n [BackgroundVariant.Lines]: 1,\n [BackgroundVariant.Cross]: 6,\n};\nconst selector$3 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` });\nfunction BackgroundComponent({ id, variant = BackgroundVariant.Dots, \n// only used for dots and cross\ngap = 20, \n// only used for lines and cross\nsize, lineWidth = 1, offset = 0, color, bgColor, style, className, patternClassName, }) {\n const ref = useRef(null);\n const { transform, patternId } = useStore(selector$3, shallow);\n const patternSize = size || defaultSize[variant];\n const isDots = variant === BackgroundVariant.Dots;\n const isCross = variant === BackgroundVariant.Cross;\n const gapXY = Array.isArray(gap) ? gap : [gap, gap];\n const scaledGap = [gapXY[0] * transform[2] || 1, gapXY[1] * transform[2] || 1];\n const scaledSize = patternSize * transform[2];\n const offsetXY = Array.isArray(offset) ? offset : [offset, offset];\n const patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap;\n const scaledOffset = [\n offsetXY[0] * transform[2] || 1 + patternDimensions[0] / 2,\n offsetXY[1] * transform[2] || 1 + patternDimensions[1] / 2,\n ];\n const _patternId = `${patternId}${id ? id : ''}`;\n return (jsxs(\"svg\", { className: cc(['react-flow__background', className]), style: {\n ...style,\n ...containerStyle,\n '--xy-background-color-props': bgColor,\n '--xy-background-pattern-color-props': color,\n }, ref: ref, \"data-testid\": \"rf__background\", children: [jsx(\"pattern\", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: \"userSpaceOnUse\", patternTransform: `translate(-${scaledOffset[0]},-${scaledOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / 2, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx(\"rect\", { x: \"0\", y: \"0\", width: \"100%\", height: \"100%\", fill: `url(#${_patternId})` })] }));\n}\nBackgroundComponent.displayName = 'Background';\n/**\n * The `<Background />` component makes it convenient to render different types of backgrounds common in node-based UIs. It comes with three variants: lines, dots and cross.\n *\n * @example\n *\n * A simple example of how to use the Background component.\n *\n * ```tsx\n * import { useState } from 'react';\n * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react';\n *\n * export default function Flow() {\n * return (\n * <ReactFlow defaultNodes={[...]} defaultEdges={[...]}>\n * <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n * </ReactFlow>\n * );\n * }\n * ```\n *\n * @example\n *\n * In this example you can see how to combine multiple backgrounds\n *\n * ```tsx\n * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react';\n * import '@xyflow/react/dist/style.css';\n *\n * export default function Flow() {\n * return (\n * <ReactFlow defaultNodes={[...]} defaultEdges={[...]}>\n * <Background\n * id=\"1\"\n * gap={10}\n * color=\"#f1f1f1\"\n * variant={BackgroundVariant.Lines}\n * />\n * <Background\n * id=\"2\"\n * gap={100}\n * color=\"#ccc\"\n * variant={BackgroundVariant.Lines}\n * />\n * </ReactFlow>\n * );\n * }\n * ```\n *\n * @remarks\n *\n * When combining multiple <Background /> components it’s important to give each of them a unique id prop!\n *\n */\nconst Background = memo(BackgroundComponent);\n\nfunction PlusIcon() {\n return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 32\", children: jsx(\"path\", { d: \"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z\" }) }));\n}\n\nfunction MinusIcon() {\n return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 5\", children: jsx(\"path\", { d: \"M0 0h32v4.2H0z\" }) }));\n}\n\nfunction FitViewIcon() {\n return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 30\", children: jsx(\"path\", { d: \"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z\" }) }));\n}\n\nfunction LockIcon() {\n return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 25 32\", children: jsx(\"path\", { d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\" }) }));\n}\n\nfunction UnlockIcon() {\n return (jsx(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 25 32\", children: jsx(\"path\", { d: \"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\" }) }));\n}\n\n/**\n * You can add buttons to the control panel by using the `<ControlButton />` component\n * and pass it as a child to the [`<Controls />`](/api-reference/components/controls) component.\n *\n * @public\n * @example\n *```jsx\n *import { MagicWand } from '@radix-ui/react-icons'\n *import { ReactFlow, Controls, ControlButton } from '@xyflow/react'\n *\n *export default function Flow() {\n * return (\n * <ReactFlow nodes={[...]} edges={[...]}>\n * <Controls>\n * <ControlButton onClick={() => alert('Something magical just happened. ✨')}>\n * <MagicWand />\n * </ControlButton>\n * </Controls>\n * </ReactFlow>\n * )\n *}\n *```\n */\nfunction ControlButton({ children, className, ...rest }) {\n return (jsx(\"button\", { type: \"button\", className: cc(['react-flow__controls-button', className]), ...rest, children: children }));\n}\n\nconst selector$2 = (s) => ({\n isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,\n minZoomReached: s.transform[2] <= s.minZoom,\n maxZoomReached: s.transform[2] >= s.maxZoom,\n ariaLabelConfig: s.ariaLabelConfig,\n});\nfunction ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', orientation = 'vertical', 'aria-label': ariaLabel, }) {\n const store = useStoreApi();\n const { isInteractive, minZoomReached, maxZoomReached, ariaLabelConfig } = useStore(selector$2, shallow);\n const { zoomIn, zoomOut, fitView } = useReactFlow();\n const onZoomInHandler = () => {\n zoomIn();\n onZoomIn?.();\n };\n const onZoomOutHandler = () => {\n zoomOut();\n onZoomOut?.();\n };\n const onFitViewHandler = () => {\n fitView(fitViewOptions);\n onFitView?.();\n };\n const onToggleInteractivity = () => {\n store.setState({\n nodesDraggable: !isInteractive,\n nodesConnectable: !isInteractive,\n elementsSelectable: !isInteractive,\n });\n onInteractiveChange?.(!isInteractive);\n };\n const orientationClass = orientation === 'horizontal' ? 'horizontal' : 'vertical';\n return (jsxs(Panel, { className: cc(['react-flow__controls', orientationClass, className]), position: position, style: style, \"data-testid\": \"rf__controls\", \"aria-label\": ariaLabel ?? ariaLabelConfig['controls.ariaLabel'], children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: \"react-flow__controls-zoomin\", title: ariaLabelConfig['controls.zoomIn.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.zoomIn.ariaLabel'], disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: \"react-flow__controls-zoomout\", title: ariaLabelConfig['controls.zoomOut.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.zoomOut.ariaLabel'], disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: \"react-flow__controls-fitview\", onClick: onFitViewHandler, title: ariaLabelConfig['controls.fitView.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.fitView.ariaLabel'], children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: \"react-flow__controls-interactive\", onClick: onToggleInteractivity, title: ariaLabelConfig['controls.interactive.ariaLabel'], \"aria-label\": ariaLabelConfig['controls.interactive.ariaLabel'], children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] }));\n}\nControlsComponent.displayName = 'Controls';\n/**\n * The `<Controls />` component renders a small panel that contains convenient\n * buttons to zoom in, zoom out, fit the view, and lock the viewport.\n *\n * @public\n * @example\n *```tsx\n *import { ReactFlow, Controls } from '@xyflow/react'\n *\n *export default function Flow() {\n * return (\n * <ReactFlow nodes={[...]} edges={[...]}>\n * <Controls />\n * </ReactFlow>\n * )\n *}\n *```\n *\n * @remarks To extend or customise the controls, you can use the [`<ControlButton />`](/api-reference/components/control-button) component\n *\n */\nconst Controls = memo(ControlsComponent);\n\nfunction MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) {\n const { background, backgroundColor } = style || {};\n const fill = (color || background || backgroundColor);\n return (jsx(\"rect\", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: {\n fill,\n stroke: strokeColor,\n strokeWidth,\n }, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined }));\n}\nconst MiniMapNode = memo(MiniMapNodeComponent);\n\nconst selectorNodeIds = (s) => s.nodes.map((node) => node.id);\nconst getAttrFunction = (func) => func instanceof Function ? func : () => func;\nfunction MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, \n/*\n * We need to rename the prop to be `CapitalCase` so that JSX will render it as\n * a component properly.\n */\nnodeComponent: NodeComponent = MiniMapNode, onClick, }) {\n const nodeIds = useStore(selectorNodeIds, shallow);\n const nodeColorFunc = getAttrFunction(nodeColor);\n const nodeStrokeColorFunc = getAttrFunction(nodeStrokeColor);\n const nodeClassNameFunc = getAttrFunction(nodeClassName);\n const shapeRendering = typeof window === 'undefined' || !!window.chrome ? 'crispEdges' : 'geometricPrecision';\n return (jsx(Fragment, { children: nodeIds.map((nodeId) => (\n /*\n * The split of responsibilities between MiniMapNodes and\n * NodeComponentWrapper may appear weird. However, it’s designed to\n * minimize the cost of updates when individual nodes change.\n *\n * For more details, see a similar commit in `NodeRenderer/index.tsx`.\n */\n jsx(NodeComponentWrapper, { id: nodeId, nodeColorFunc: nodeColorFunc, nodeStrokeColorFunc: nodeStrokeColorFunc, nodeClassNameFunc: nodeClassNameFunc, nodeBorderRadius: nodeBorderRadius, nodeStrokeWidth: nodeStrokeWidth, NodeComponent: NodeComponent, onClick: onClick, shapeRendering: shapeRendering }, nodeId))) }));\n}\nfunction NodeComponentWrapperInner({ id, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick, }) {\n const { node, x, y, width, height } = useStore((s) => {\n const node = s.nodeLookup.get(id);\n if (!node) {\n return { node: undefined, x: 0, y: 0, width: 0, height: 0 };\n }\n const userNode = node.internals.userNode;\n const { x, y } = node.internals.positionAbsolute;\n const { width, height } = getNodeDimensions(userNode);\n return {\n node: userNode,\n x,\n y,\n width,\n height,\n };\n }, shallow);\n if (!node || node.hidden || !nodeHasDimensions(node)) {\n return null;\n }\n return (jsx(NodeComponent, { x: x, y: y, width: width, height: height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering: shapeRendering, onClick: onClick, id: node.id }));\n}\nconst NodeComponentWrapper = memo(NodeComponentWrapperInner);\nvar MiniMapNodes$1 = memo(MiniMapNodes);\n\nconst defaultWidth = 200;\nconst defaultHeight = 150;\nconst filterHidden = (node) => !node.hidden;\nconst selector$1 = (s) => {\n const viewBB = {\n x: -s.transform[0] / s.transform[2],\n y: -s.transform[1] / s.transform[2],\n width: s.width / s.transform[2],\n height: s.height / s.transform[2],\n };\n return {\n viewBB,\n boundingRect: s.nodeLookup.size > 0\n ? getBoundsOfRects(getInternalNodesBounds(s.nodeLookup, { filter: filterHidden }), viewBB)\n : viewBB,\n rfId: s.rfId,\n panZoom: s.panZoom,\n translateExtent: s.translateExtent,\n flowWidth: s.width,\n flowHeight: s.height,\n ariaLabelConfig: s.ariaLabelConfig,\n };\n};\nconst ARIA_LABEL_KEY = 'react-flow__minimap-desc';\nfunction MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, \n/*\n * We need to rename the prop to be `CapitalCase` so that JSX will render it as\n * a component properly.\n */\nnodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5, }) {\n const store = useStoreApi();\n const svg = useRef(null);\n const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, shallow);\n const elementWidth = style?.width ?? defaultWidth;\n const elementHeight = style?.height ?? defaultHeight;\n const scaledWidth = boundingRect.width / elementWidth;\n const scaledHeight = boundingRect.height / elementHeight;\n const viewScale = Math.max(scaledWidth, scaledHeight);\n const viewWidth = viewScale * elementWidth;\n const viewHeight = viewScale * elementHeight;\n const offset = offsetScale * viewScale;\n const x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset;\n const y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset;\n const width = viewWidth + offset * 2;\n const height = viewHeight + offset * 2;\n const labelledBy = `${ARIA_LABEL_KEY}-${rfId}`;\n const viewScaleRef = useRef(0);\n const minimapInstance = useRef();\n viewScaleRef.current = viewScale;\n useEffect(() => {\n if (svg.current && panZoom) {\n minimapInstance.current = XYMinimap({\n domNode: svg.current,\n panZoom,\n getTransform: () => store.getState().transform,\n getViewScale: () => viewScaleRef.current,\n });\n return () => {\n minimapInstance.current?.destroy();\n };\n }\n }, [panZoom]);\n useEffect(() => {\n minimapInstance.current?.update({\n translateExtent,\n width: flowWidth,\n height: flowHeight,\n inversePan,\n pannable,\n zoomStep,\n zoomable,\n });\n }, [pannable, zoomable, inversePan, zoomStep, translateExtent, flowWidth, flowHeight]);\n const onSvgClick = onClick\n ? (event) => {\n const [x, y] = minimapInstance.current?.pointer(event) || [0, 0];\n onClick(event, { x, y });\n }\n : undefined;\n const onSvgNodeClick = onNodeClick\n ? useCallback((event, nodeId) => {\n const node = store.getState().nodeLookup.get(nodeId).internals.userNode;\n onNodeClick(event, node);\n }, [])\n : undefined;\n const _ariaLabel = ariaLabel ?? ariaLabelConfig['minimap.ariaLabel'];\n return (jsx(Panel, { position: position, style: {\n ...style,\n '--xy-minimap-background-color-props': typeof bgColor === 'string' ? bgColor : undefined,\n '--xy-minimap-mask-background-color-props': typeof maskColor === 'string' ? maskColor : undefined,\n '--xy-minimap-mask-stroke-color-props': typeof maskStrokeColor === 'string' ? maskStrokeColor : undefined,\n '--xy-minimap-mask-stroke-width-props': typeof maskStrokeWidth === 'number' ? maskStrokeWidth * viewScale : undefined,\n '--xy-minimap-node-background-color-props': typeof nodeColor === 'string' ? nodeColor : undefined,\n '--xy-minimap-node-stroke-color-props': typeof nodeStrokeColor === 'string' ? nodeStrokeColor : undefined,\n '--xy-minimap-node-stroke-width-props': typeof nodeStrokeWidth === 'number' ? nodeStrokeWidth : undefined,\n }, className: cc(['react-flow__minimap', className]), \"data-testid\": \"rf__minimap\", children: jsxs(\"svg\", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, className: \"react-flow__minimap-svg\", role: \"img\", \"aria-labelledby\": labelledBy, ref: svg, onClick: onSvgClick, children: [_ariaLabel && jsx(\"title\", { id: labelledBy, children: _ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx(\"path\", { className: \"react-flow__minimap-mask\", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z\n M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: \"evenodd\", pointerEvents: \"none\" })] }) }));\n}\nMiniMapComponent.displayName = 'MiniMap';\n/**\n * The `<MiniMap />` component can be used to render an overview of your flow. It\n * renders each node as an SVG element and visualizes where the current viewport is\n * in relation to the rest of the flow.\n *\n * @public\n * @example\n *\n * ```jsx\n *import { ReactFlow, MiniMap } from '@xyflow/react';\n *\n *export default function Flow() {\n * return (\n * <ReactFlow nodes={[...]} edges={[...]}>\n * <MiniMap nodeStrokeWidth={3} />\n * </ReactFlow>\n * );\n *}\n *```\n */\nconst MiniMap = memo(MiniMapComponent);\n\nconst scaleSelector = (calculateScale) => (store) => calculateScale ? `${Math.max(1 / store.transform[2], 1)}` : undefined;\nconst defaultPositions = {\n [ResizeControlVariant.Line]: 'right',\n [ResizeControlVariant.Handle]: 'bottom-right',\n};\nfunction ResizeControl({ nodeId, position, variant = ResizeControlVariant.Handle, className, style = undefined, children, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, resizeDirection, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) {\n const contextNodeId = useNodeId();\n const id = typeof nodeId === 'string' ? nodeId : contextNodeId;\n const store = useStoreApi();\n const resizeControlRef = useRef(null);\n const isHandleControl = variant === ResizeControlVariant.Handle;\n const scale = useStore(useCallback(scaleSelector(isHandleControl && autoScale), [isHandleControl, autoScale]), shallow);\n const resizer = useRef(null);\n const controlPosition = position ?? defaultPositions[variant];\n useEffect(() => {\n if (!resizeControlRef.current || !id) {\n return;\n }\n if (!resizer.current) {\n resizer.current = XYResizer({\n domNode: resizeControlRef.current,\n nodeId: id,\n getStoreItems: () => {\n const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, domNode } = store.getState();\n return {\n nodeLookup,\n transform,\n snapGrid,\n snapToGrid,\n nodeOrigin,\n paneDomNode: domNode,\n };\n },\n onChange: (change, childChanges) => {\n const { triggerNodeChanges, nodeLookup, parentLookup, nodeOrigin } = store.getState();\n const changes = [];\n const nextPosition = { x: change.x, y: change.y };\n const node = nodeLookup.get(id);\n if (node && node.expandParent && node.parentId) {\n const origin = node.origin ?? nodeOrigin;\n const width = change.width ?? node.measured.width ?? 0;\n const height = change.height ?? node.measured.height ?? 0;\n const child = {\n id: node.id,\n parentId: node.parentId,\n rect: {\n width,\n height,\n ...evaluateAbsolutePosition({\n x: change.x ?? node.position.x,\n y: change.y ?? node.position.y,\n }, { width, height }, node.parentId, nodeLookup, origin),\n },\n };\n const parentExpandChanges = handleExpandParent([child], nodeLookup, parentLookup, nodeOrigin);\n changes.push(...parentExpandChanges);\n /*\n * when the parent was expanded by the child node, its position will be clamped at\n * 0,0 when node origin is 0,0 and to width, height if it's 1,1\n */\n nextPosition.x = change.x ? Math.max(origin[0] * width, change.x) : undefined;\n nextPosition.y = change.y ? Math.max(origin[1] * height, change.y) : undefined;\n }\n if (nextPosition.x !== undefined && nextPosition.y !== undefined) {\n const positionChange = {\n id,\n type: 'position',\n position: { ...nextPosition },\n };\n changes.push(positionChange);\n }\n if (change.width !== undefined && change.height !== undefined) {\n const setAttributes = !resizeDirection ? true : resizeDirection === 'horizontal' ? 'width' : 'height';\n const dimensionChange = {\n id,\n type: 'dimensions',\n resizing: true,\n setAttributes,\n dimensions: {\n width: change.width,\n height: change.height,\n },\n };\n changes.push(dimensionChange);\n }\n for (const childChange of childChanges) {\n const positionChange = {\n ...childChange,\n type: 'position',\n };\n changes.push(positionChange);\n }\n triggerNodeChanges(changes);\n },\n onEnd: ({ width, height }) => {\n const dimensionChange = {\n id: id,\n type: 'dimensions',\n resizing: false,\n dimensions: {\n width,\n height,\n },\n };\n store.getState().triggerNodeChanges([dimensionChange]);\n },\n });\n }\n resizer.current.update({\n controlPosition,\n boundaries: {\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n },\n keepAspectRatio,\n resizeDirection,\n onResizeStart,\n onResize,\n onResizeEnd,\n shouldResize,\n });\n return () => {\n resizer.current?.destroy();\n };\n }, [\n controlPosition,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n keepAspectRatio,\n onResizeStart,\n onResize,\n onResizeEnd,\n shouldResize,\n ]);\n const positionClassNames = controlPosition.split('-');\n return (jsx(\"div\", { className: cc(['react-flow__resize-control', 'nodrag', ...positionClassNames, variant, className]), ref: resizeControlRef, style: {\n ...style,\n scale,\n ...(color && { [isHandleControl ? 'backgroundColor' : 'borderColor']: color }),\n }, children: children }));\n}\n/**\n * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons).\n * @public\n *\n */\nconst NodeResizeControl = memo(ResizeControl);\n\n/**\n * The `<NodeResizer />` component can be used to add a resize functionality to your\n * nodes. It renders draggable controls around the node to resize in all directions.\n * @public\n *\n * @example\n *```jsx\n *import { memo } from 'react';\n *import { Handle, Position, NodeResizer } from '@xyflow/react';\n *\n *function ResizableNode({ data }) {\n * return (\n * <>\n * <NodeResizer minWidth={100} minHeight={30} />\n * <Handle type=\"target\" position={Position.Left} />\n * <div style={{ padding: 10 }}>{data.label}</div>\n * <Handle type=\"source\" position={Position.Right} />\n * </>\n * );\n *};\n *\n *export default memo(ResizableNode);\n *```\n */\nfunction NodeResizer({ nodeId, isVisible = true, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) {\n if (!isVisible) {\n return null;\n }\n return (jsxs(Fragment, { children: [XY_RESIZER_LINE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: lineClassName, style: lineStyle, nodeId: nodeId, position: position, variant: ResizeControlVariant.Line, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position))), XY_RESIZER_HANDLE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: handleClassName, style: handleStyle, nodeId: nodeId, position: position, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position)))] }));\n}\n\nconst selector = (state) => state.domNode?.querySelector('.react-flow__renderer');\nfunction NodeToolbarPortal({ children }) {\n const wrapperRef = useStore(selector);\n if (!wrapperRef) {\n return null;\n }\n return createPortal(children, wrapperRef);\n}\n\nconst nodeEqualityFn = (a, b) => a?.internals.positionAbsolute.x !== b?.internals.positionAbsolute.x ||\n a?.internals.positionAbsolute.y !== b?.internals.positionAbsolute.y ||\n a?.measured.width !== b?.measured.width ||\n a?.measured.height !== b?.measured.height ||\n a?.selected !== b?.selected ||\n a?.internals.z !== b?.internals.z;\nconst nodesEqualityFn = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, node] of a) {\n if (nodeEqualityFn(node, b.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst storeSelector = (state) => ({\n x: state.transform[0],\n y: state.transform[1],\n zoom: state.transform[2],\n selectedNodesCount: state.nodes.filter((node) => node.selected).length,\n});\n/**\n * This component can render a toolbar or tooltip to one side of a custom node. This\n * toolbar doesn't scale with the viewport so that the content is always visible.\n *\n * @public\n * @example\n * ```jsx\n *import { memo } from 'react';\n *import { Handle, Position, NodeToolbar } from '@xyflow/react';\n *\n *function CustomNode({ data }) {\n * return (\n * <>\n * <NodeToolbar isVisible={data.toolbarVisible} position={data.toolbarPosition}>\n * <button>delete</button>\n * <button>copy</button>\n * <button>expand</button>\n * </NodeToolbar>\n *\n * <div style={{ padding: '10px 20px' }}>\n * {data.label}\n * </div>\n *\n * <Handle type=\"target\" position={Position.Left} />\n * <Handle type=\"source\" position={Position.Right} />\n * </>\n * );\n *};\n *\n *export default memo(CustomNode);\n *```\n * @remarks By default, the toolbar is only visible when a node is selected. If multiple\n * nodes are selected it will not be visible to prevent overlapping toolbars or\n * clutter. You can override this behavior by setting the `isVisible` prop to `true`.\n */\nfunction NodeToolbar({ nodeId, children, className, style, isVisible, position = Position.Top, offset = 10, align = 'center', ...rest }) {\n const contextNodeId = useNodeId();\n const nodesSelector = useCallback((state) => {\n const nodeIds = Array.isArray(nodeId) ? nodeId : [nodeId || contextNodeId || ''];\n const internalNodes = nodeIds.reduce((res, id) => {\n const node = state.nodeLookup.get(id);\n if (node) {\n res.set(node.id, node);\n }\n return res;\n }, new Map());\n return internalNodes;\n }, [nodeId, contextNodeId]);\n const nodes = useStore(nodesSelector, nodesEqualityFn);\n const { x, y, zoom, selectedNodesCount } = useStore(storeSelector, shallow);\n // if isVisible is not set, we show the toolbar only if its node is selected and no other node is selected\n const isActive = typeof isVisible === 'boolean'\n ? isVisible\n : nodes.size === 1 && nodes.values().next().value?.selected && selectedNodesCount === 1;\n if (!isActive || !nodes.size) {\n return null;\n }\n const nodeRect = getInternalNodesBounds(nodes);\n const nodesArray = Array.from(nodes.values());\n const zIndex = Math.max(...nodesArray.map((node) => node.internals.z + 1));\n const wrapperStyle = {\n position: 'absolute',\n transform: getNodeToolbarTransform(nodeRect, { x, y, zoom }, position, offset, align),\n zIndex,\n ...style,\n };\n return (jsx(NodeToolbarPortal, { children: jsx(\"div\", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, \"data-id\": nodesArray.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) }));\n}\n\nconst zoomSelector = (state) => state.transform[2];\n/**\n * This component can render a toolbar or tooltip to one side of a custom edge. This\n * toolbar doesn't scale with the viewport so that the content stays the same size.\n *\n * @public\n * @example\n * ```jsx\n * import { EdgeToolbar, BaseEdge, getBezierPath, type EdgeProps } from \"@xyflow/react\";\n *\n * export function CustomEdge({ id, data, ...props }: EdgeProps) {\n * const [edgePath, centerX, centerY] = getBezierPath(props);\n *\n * return (\n * <>\n * <BaseEdge id={id} path={edgePath} />\n * <EdgeToolbar edgeId={id} x={centerX} y={centerY} isVisible>\n * <button onClick={() => console.log('edge', id, 'click')}}>Click me</button>\n * </EdgeToolbar>\n * </>\n * );\n * }\n * ```\n */\nfunction EdgeToolbar({ edgeId, x, y, children, className, style, isVisible, alignX = 'center', alignY = 'center', ...rest }) {\n const edgeSelector = useCallback((state) => state.edgeLookup.get(edgeId), [edgeId]);\n const edge = useStore(edgeSelector, shallow);\n const isActive = typeof isVisible === 'boolean' ? isVisible : edge?.selected;\n const zoom = useStore(zoomSelector);\n if (!isActive) {\n return null;\n }\n const zIndex = (edge?.zIndex ?? 0) + 1;\n const transform = getEdgeToolbarTransform(x, y, zoom, alignX, alignY);\n return (jsx(EdgeLabelRenderer, { children: jsx(\"div\", { style: {\n position: 'absolute',\n transform,\n zIndex,\n pointerEvents: 'all',\n transformOrigin: '0 0',\n ...style,\n }, className: cc(['react-flow__edge-toolbar', className]), \"data-id\": edge?.id ?? '', ...rest, children: children }) }));\n}\n\nexport { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, EdgeToolbar, Handle, MiniMap, MiniMapNode, NodeResizeControl, NodeResizer, NodeToolbar, Panel, index as ReactFlow, ReactFlowProvider, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, applyEdgeChanges, applyNodeChanges, experimental_useOnEdgesChangeMiddleware, experimental_useOnNodesChangeMiddleware, getSimpleBezierPath, isEdge, isNode, useConnection, useEdges, useEdgesState, useHandleConnections, useInternalNode, useKeyPress, useNodeConnections, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };\n","import dagre from '@dagrejs/dagre';\nimport {\n Background,\n ConnectionLineType,\n Controls,\n type Edge,\n MiniMap,\n type Node,\n type NodeProps,\n Position,\n ReactFlow,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useReactFlow,\n} from '@xyflow/react';\nimport { type ComponentType, type ReactNode, useCallback, useEffect, useMemo } from 'react';\n\nimport '@xyflow/react/dist/style.css';\nimport './hierarchy-graph.css';\n\n// Computes dagre layout positions for nodes arranged as a top-down tree\nfunction getLayoutedElements<T extends Record<string, unknown>>(\n nodes: Node<T>[],\n edges: Edge[],\n nodeWidth: number,\n nodeHeight: number,\n direction: 'TB' | 'LR' = 'TB',\n) {\n const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n const isHorizontal = direction === 'LR';\n\n dagreGraph.setGraph({ rankdir: direction, nodesep: 40, ranksep: 80 });\n\n for (const node of nodes) {\n dagreGraph.setNode(node.id, { width: nodeWidth, height: nodeHeight });\n }\n for (const edge of edges) {\n dagreGraph.setEdge(edge.source, edge.target);\n }\n\n dagre.layout(dagreGraph);\n\n const layoutedNodes: Node[] = nodes.map((node) => {\n const pos = dagreGraph.node(node.id);\n return {\n ...node,\n targetPosition: isHorizontal ? Position.Left : Position.Top,\n sourcePosition: isHorizontal ? Position.Right : Position.Bottom,\n position: {\n x: pos.x - nodeWidth / 2,\n y: pos.y - nodeHeight / 2,\n },\n };\n });\n\n return { nodes: layoutedNodes, edges };\n}\n\nexport interface HierarchyItem {\n id: string;\n parentId: string | null;\n [key: string]: unknown;\n}\n\nexport interface HierarchyGraphProps<T extends HierarchyItem> {\n items: T[];\n nodeComponent: ComponentType<NodeProps<Node<T>>>;\n nodeWidth?: number;\n nodeHeight?: number;\n direction?: 'TB' | 'LR';\n onNodeClick?: (item: T) => void;\n toolbar?: ReactNode;\n className?: string;\n showMiniMap?: boolean;\n showControls?: boolean;\n}\n\n// Transforms flat hierarchical data into React Flow nodes and edges\nfunction itemsToFlow<T extends HierarchyItem>(items: T[]) {\n const nodes: Node<T>[] = items.map((item) => ({\n id: item.id,\n type: 'hierarchyNode',\n data: item,\n position: { x: 0, y: 0 },\n }));\n\n const edges: Edge[] = items\n .filter((item) => item.parentId)\n .map((item) => ({\n id: `e-${item.parentId}-${item.id}`,\n source: item.parentId!,\n target: item.id,\n type: 'smoothstep',\n animated: false,\n style: { stroke: 'var(--color-border)', strokeWidth: 2 },\n }));\n\n return { nodes, edges };\n}\n\n// Inner component that uses useReactFlow (must be inside ReactFlowProvider)\nfunction HierarchyGraphInner<T extends HierarchyItem>({\n items,\n nodeComponent,\n nodeWidth = 280,\n nodeHeight = 120,\n direction = 'TB',\n onNodeClick,\n toolbar,\n className,\n showMiniMap = false,\n showControls = true,\n}: HierarchyGraphProps<T>) {\n const { fitView } = useReactFlow();\n\n const nodeTypes = useMemo(() => ({ hierarchyNode: nodeComponent as ComponentType<NodeProps> }), [nodeComponent]);\n\n const { nodes: rawNodes, edges: rawEdges } = useMemo(() => itemsToFlow(items), [items]);\n\n const { nodes: layoutedNodes, edges: layoutedEdges } = useMemo(\n () => getLayoutedElements(rawNodes, rawEdges, nodeWidth, nodeHeight, direction),\n [rawNodes, rawEdges, nodeWidth, nodeHeight, direction],\n );\n\n const [nodes, setNodes, onNodesChange] = useNodesState(layoutedNodes);\n const [edges, setEdges, onEdgesChange] = useEdgesState(layoutedEdges);\n\n // Re-layout when items change\n useEffect(() => {\n setNodes(layoutedNodes);\n setEdges(layoutedEdges);\n setTimeout(() => fitView({ padding: 0.3, maxZoom: 0.85, duration: 300 }), 50);\n }, [layoutedNodes, layoutedEdges, setNodes, setEdges, fitView]);\n\n // Handles node click by finding the item and calling the callback\n const handleNodeClick = useCallback(\n (_: React.MouseEvent, node: Node) => {\n if (!onNodeClick) return;\n const item = items.find((i) => i.id === node.id);\n if (item) onNodeClick(item);\n },\n [items, onNodeClick],\n );\n\n return (\n <div className={`h-[600px] w-full border rounded-lg bg-background ${className ?? ''}`}>\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodeClick={handleNodeClick}\n nodeTypes={nodeTypes}\n connectionLineType={ConnectionLineType.SmoothStep}\n fitView\n fitViewOptions={{ padding: 0.3, maxZoom: 0.85 }}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n proOptions={{ hideAttribution: true }}\n >\n {showControls && <Controls showInteractive={false} />}\n {showMiniMap && <MiniMap />}\n <Background gap={16} size={1} />\n {toolbar && <div className=\"absolute top-3 right-3 z-10\">{toolbar}</div>}\n </ReactFlow>\n </div>\n );\n}\n\n// Main exported component — wraps in ReactFlowProvider\nexport const HierarchyGraph = <T extends HierarchyItem>(props: HierarchyGraphProps<T>) => {\n return (\n <ReactFlowProvider>\n <HierarchyGraphInner {...props} />\n </ReactFlowProvider>\n );\n};\n\nHierarchyGraph.displayName = 'HierarchyGraph';\n"],"names":["identity","number","parseTypenames","get","set","Selection","constant","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","styleRemove","styleConstant","styleFunction","textConstant","textFunction","nopropagation","noevent","defaultFilter","defaultTouchable","nodrag","timeout","interpolateTransform","style","easeCubicInOut","dragEnable","zoomIdentity","interpolate","transform","zoomTransform","initPrevValues","createStore","ReactExports","shallow","dagre","ReactFlow"],"mappings":"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AC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OA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AC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CA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C,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAA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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,G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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]}
|